使用 Contourf 设置颜色条范围

set colorbar range with contourf

提问人:ClimateUnboxed 提问时间:12/6/2018 最后编辑:Trenton McKinneyClimateUnboxed 更新时间:10/6/2023 访问量:20162

问:

这似乎是这个问题的重复:

在 matplotlib 中设置颜色条范围

从本质上讲,我想设置范围以设置限制,例如 0 到 2。当我使用 和 时,颜色范围设置正确,但颜色条仅显示剪裁范围,即链接中的解决方案在使用 时似乎不起作用。我是否遗漏了一些明显的东西?colorbarvminvmaxcontourfcontourf

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

如何强制颜色条范围为 0 到 2?contourf

python matplotlib colorbar 轮廓

评论

0赞 Khalil Al Hooti 12/6/2018
np.random.rand将生成 0-1 范围内的随机统一数。'np.random.rand(10, 10)*2' 会将范围更改为 0-2。
0赞 ClimateUnboxed 12/6/2018
谢谢,是的,这就是可重现示例的想法,我有 0-1 的数据范围,但想以更大的范围绘制。我的实际问题涉及大量地图,我想在每张地图上使用相同的颜色条进行比较,因此问题来了。

答:

21赞 ImportanceOfBeingErnest 12/6/2018 #1

contourf确实与其他 S 的工作方式略有不同。如果指定级别数(在本例中为 20 个),则它们将介于最小和最大数据之间(大约)。如果要在两个特定值之间设置级别,并且需要将这些值提供给轮廓函数ScalarMappablenvminvmax

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()

enter image description here