我正在尝试在 matplotlib 中创建一个倒钩矢量图并将一些颜色映射到特定的幅度:例如,将幅度在 10 到 20 之间的向量绘制为蓝色,在 20 到 30 之间绘制为 rgb(0,15, 40), 等等。 barbs 和 quiver 函数的文档(它们很相似)提到了 C 输入参数:
倒钩(X, Y, U, V, C, **kw)
参数:
X, Y: 倒钩位置的 x 和 y 坐标(默认为倒钩头;参见 pivot kwarg)
U, V: 给出倒钩轴的x和y分量
C: 用于将颜色映射到倒钩的可选数组
然而,这是非常模糊的,在谷歌搜索之后,我并没有更深入地了解如何以特定方式使用这个颜色数组。我设法发现,通过将 C 设置为矢量幅度数组并指定“cmap”kwarg,它会将倒钩映射到指定的颜色图,如下面的示例代码所示。然而,这不是我想要的。我想控制特定数量级组的颜色。任何帮助将不胜感激。
示例代码:
from matplotlib import pyplot as plt
from numpy import arange,meshgrid,sqrt
u,v = arange(-50,51,10),arange(-50,51,10)
u,v = meshgrid(u,v)
x,y = u,v
C = sqrt(u**2 + v**2)
plt.barbs(x,y,u,v,C,cmap=plt.cm.jet)
plt.show()
生成的情节图像链接:(抱歉,还不能直接发布图像)
最佳答案
可以通过将 map 离散化得到。
import matplotlib as mpl
import pyplot as plt
from numpy import arange,meshgrid,sqrt
u,v = arange(-50,51,10),arange(-50,51,10)
u,v = meshgrid(u,v)
x,y = u,v
C = sqrt(u**2 + v**2)
cmap=plt.cm.jet
bounds = [10, 20, 40, 60]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
img=plt.barbs(x,y,u,v,C,cmap=cmap,norm=norm)
plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=bounds)
plt.show()
关于Python matplotlib barbs/quiver 将颜色映射到不同的值集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476752/