我使用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()
它们都是相关的,我需要能够比较它们。
如果我只绘制它们,我会得到这样的图形:
可以看出,由于它们的最大幅度不同,它们以不同的比例表示(使用不同的边界)。因此,我的第一种方法是将它们一起归一化(即,考虑所有矢量场的最大幅度)。
在那之后,我只是绘制矢量并且比例改变了一点点。但是,边界仍然根据每个图的最小值和最大值进行调整。
然后,我尝试添加:
cb.set_clim(vmin=0, vmax=1)
使用此代码,我得到了这样的颜色条:
也就是说,我的颜色条范围从0到1固定,因此所有图中橙色都是0.8。这就是我想要的。但是,我想绘制" full"颜色条,表示从0到1.
这可以在不创建自定义颜色条的情况下实现吗?
谢谢。
答案 0 :(得分:2)
quiver
有一个可选参数clim
:
fig = plt.quiver(x, y, vector_field_x, vector_field_y, m, clim=[-2,2])
这应该有效。 :)