python - 如何在 Matplotlib 中设置颜色条范围?

标签 python matplotlib range colorbar

我使用 Matplotlib 中的 quiver 函数绘制了不同的向量场。

plt.figure()

x, y = numpy.mgrid[-x_dim/2:x_dim/2:x_steps*1j, -y_dim/2:y_dim/2:y_steps*1j]

m = numpy.sqrt(numpy.power(vector_field_x, 2) + numpy.power(vector_field_y, 2))

fig = plt.quiver(x, y, vector_field_x, vector_field_y, m)
cb = plt.colorbar(fig)

# Add some margin
l, r, b, t = plt.axis()
dx, dy = r-l, t-b
plt.axis([l-0.1*dx, r+0.1*dx, b-0.1*dy, t+0.1*dy])

plt.savefig(file_path + '.png', dpi=Vc.dpi)
plt.close()

它们都是相关的,我需要能够对它们进行比较。

如果我只是绘制它们,我会得到如下图表:

enter image description here enter image description here

可以看出,由于它们的最大幅度不同,因此它们以不同的尺度表示(使用不同的边界)。因此,我的第一个方法是将它们一起标准化(即考虑所有矢量场的最大幅度)。

之后,我只绘制向量,比例发生了一些变化。然而,边界仍然根据每个图的最小值和最大值进行调整。

然后,我尝试添加:

cb.set_clim(vmin=0, vmax=1)

使用这段代码,我得到了这样的颜色条:

enter image description here

也就是说,我的颜色条范围固定为 0 到 1,因此所有图中的橙色均为 0.8。这就是我想要的。但是,我想绘制“完整”颜色条,表示从 0 到 1。

如果不创建自定义颜色条,这可能吗?

谢谢。

最佳答案

quiver 有一个可选参数 clim:

fig = plt.quiver(x, y, vector_field_x, vector_field_y, m, clim=[-2,2])

这应该有效。 :)

关于python - 如何在 Matplotlib 中设置颜色条范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25270661/

相关文章:

python - matplotlib.widgets.TextBox : change color

matplotlib - 我可以使用 matplotlib.units 在图表上显示的单位之间切换吗?

python - 如何更改 Pandas DataFrame 面积图上的年份间隔?

excel - 如何将范围的终点定义为数据的最后一行?

python - SQLAlchemy:如果某些记录和关系数据尚不存在,则插入记录

python - 手动假设日期 - 使用自己的假设更新日期

python - 查找python列表之间的交集/差异

python - 如何在 python 中检查文件是否打开以在 Windows 上写入?

excel - Sub Excel VBA的可选范围

python - Julia 的范围内是否有 skip 参数?