You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改matplotlib中contourf方法的色条刻度标签?

Matplotlib等高线色条刻度调整方案

问题背景

已生成的等高线效果:
等高线绘制效果

初始实现代码:

import matplotlib.pyplot as plt


def build_contour_plot(nu):
    plt.contourf(B, D, nu, 111)
    plt.colorbar()
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.show()


b = np.arange(0, 1.0, 0.001)
d = np.arange(0, 1.0, 0.001)
B, D = np.meshgrid(b, d)
nu = np.ceil(np.minimum(B, D)*5)/5
build_contour_plot(nu)

上述代码运行后,右侧色条默认刻度为[0.00, 0.11, ..., 0.99],需要调整为步长0.1的序列[0, 0.1, 0.2, ..., 1]。

原因说明

当给plt.contourf传入整数作为层级参数时,matplotlib会自动在数据的最小值、最大值区间内均匀切分对应数量的层级,自动生成的色条刻度无法和0.1步长的固定节点对齐,因此会出现偏移的刻度值。另外原代码缺少numpy库导入,直接运行会触发名称错误。

修正代码

调整逻辑:

  • 手动生成0到1区间、步长0.1的层级数组,显式传入contourf保证等高线分层和预期刻度对齐
  • 调用colorbar时通过ticks参数指定要显示的刻度值
  • 补全numpy导入,可选配置刻度标签格式,去掉无意义的末尾小数0
import matplotlib.pyplot as plt
import numpy as np


def build_contour_plot(nu):
    # 生成0-1区间步长0.1的层级,终止值设为1.1是因为np.arange为左闭右开区间
    levels = np.arange(0, 1.1, 0.1)
    plt.contourf(B, D, nu, levels=levels)
    # 指定色条刻度
    cbar = plt.colorbar(ticks=levels)
    # 取消下一行注释即可让刻度显示为0、0.1...1,而非0.0、0.1...1.0
    # cbar.ax.set_yticklabels([f'{val:g}' for val in levels])
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.show()


b = np.arange(0, 1.0, 0.001)
d = np.arange(0, 1.0, 0.001)
B, D = np.meshgrid(b, d)
nu = np.ceil(np.minimum(B, D)*5)/5
build_contour_plot(nu)

运行上述代码后,色条刻度将严格对齐0.1间隔的节点,不会出现0.11这类偏移值。

内容的提问来源于stack exchange,提问作者Corram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:57:23