首页 > 解决方案 > Matplotlib 颜色栏 - 更改限制的行为

问题描述

我尝试使用 matplotlib 限制颜色条的范围。旧的行为是,可以使用plot 函数的关键字vmin来缩放颜色条。vmax这影响了颜色本身和颜色条的标签。

现在的行为似乎是,只有颜色被缩放,而标签仍然是自动的。

import numpy
import numpy.random
import matplotlib.pyplot as plt

# create somehing to plot, maximum value should be much large than 10
z = numpy.random.rand(20, 20) * 57.8412
t = numpy.linspace(0, 1, 20)
x, y = numpy.meshgrid(t, t)

# this is supposed to be the maximum value of the plot
max_value = 25 # or 100

fig = plt.figure()
axis = fig.add_subplot(1, 1, 1)

plot = axis.contourf(x, y, z, 100, cmap=None, vmin=0, vmax=max_value)
cbar = plt.colorbar(plot)

plt.show(block=False)

两张图片的颜色条标签保持相同(最多 58 个),即使第一张图片的最大值应为 25,第二张图片的最大值应为 100。

如何恢复保持行为并缩放彩条的标签。

最大值 = 100

最大值 = 25

标签: pythonmatplotlibcolorbar

解决方案


我不确定我是否理解预期的结果,但我认为您会想要明确设置级别。

import numpy as np
import matplotlib.pyplot as plt

# create somehing to plot, maximum value should be much large than 10
z = np.random.rand(20, 20) * 57.8412
t = np.linspace(0, 1, 20)
x, y = np.meshgrid(t, t)

# this is supposed to be the maximum value of the plot
max_value = 25 # or 100

fig, ax = plt.subplots()
ax.set_title(f"max_value={max_value}")
cntr = ax.contourf(x, y, z, levels=np.arange(max_value+1), vmin=0, vmax=max_value)
cbar = fig.colorbar(cntr)

plt.show()

在此处输入图像描述

在此处输入图像描述


推荐阅读