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

Python matplotlib添加自定义level后colorbar刻度位置异常如何解决

问题原因

matplotlib的colorbar针对contour、contourf输出的结果,默认采用等宽分段展示规则:不管你自定义的levels之间数值差是多少,每个level区间对应的色块在colorbar上都会占用相同的长度,所以你会看到1和1.1之间的间距和其他差为1的区间长度一致。

解决方法

调用plt.colorbar()时添加spacing='proportional'参数即可,该参数会强制colorbar按照levels的实际数值差比例分配展示长度。

修正后代码

只需要修改colorbar生成的那一行即可,完整代码如下:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-2.0, 3.0, 0.025)
y = np.arange(-2.0, 3.0, 0.025)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2

levels = np.arange(-2,3,1)
levels=np.append(levels,1.1)
levels=np.sort(levels)

fig, ax = plt.subplots()
c = plt.contourf(X, Y, Z, levels=levels,alpha=0.15)
cs = plt.contour(X, Y, Z, levels=levels)
ax.clabel(cs, inline=1, fontsize=10)
# 仅修改这一行,添加spacing参数
cbar=plt.colorbar(c, spacing='proportional')
plt.show()

修改后运行即可看到1~1.1对应的色块在colorbar上的长度仅为其他1单位间隔长度的1/10,符合实际数值比例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:39:03