使用contourf函数设置colorbar范围。

18
这似乎是一个重复的问题: 在matplotlib中设置Colorbar范围 基本上,我想要设置colorbar的范围限制,例如从0到2。当我使用vmin和vmax时,contourf中的颜色范围被正确设置,但colorbar只显示被剪切的范围,即当使用contourf时,链接中的解决方案似乎不起作用。我是否忽略了一些明显的东西?
import numpy as np
import matplotlib.pyplot as plt
fld=np.random.rand(10,10)
img=plt.contourf(fld,20,cmap='coolwarm',vmin=0,vmax=2)
plt.colorbar(img)

导致的结果

enter image description here

如何使用contourf强制设置色条范围为0到2?

np.random.rand 会生成在0-1范围内的随机均匀数。np.random.rand(10, 10)*2 将范围改变为0-2。 - Khalil Al Hooti
谢谢,是的,这就是可重现示例的想法。我的数据范围在0-1之间,但我想用更大的范围绘制图形。我的实际问题涉及大量地图,我希望使用相同的色条比较每个地图,因此提出了这个问题。 - ClimateUnboxed
1个回答

20

contourf 的确与其他 ScalarMappable 有点不同。如果您指定级别数量(在此情况下为20),它将在最小和最大数据之间取值(大约)。如果您想在特定值 vminvmax 之间有 n 级别,您需要将这些值提供给制图函数。

levels = np.linspace(vmin, vmax, n+1)
plt.contourf(fld,levels=levels,cmap='coolwarm')

完整代码:

import numpy as np
import matplotlib.pyplot as plt
fld=np.random.rand(10,10)
levels = np.linspace(0,2,21)
img=plt.contourf(fld,levels=levels,cmap='coolwarm')
plt.colorbar(img)
plt.show()

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接