Python matplotlib barbs / quiver将颜色映射到不同的值集

时间:2012-07-13 19:02:25

标签: python vector colors matplotlib

我正在尝试在matplotlib中创建倒钩矢量图并将某些颜色映射到特定的幅度:例如,将幅度在10到20之间的矢量绘制为蓝色,将20到30之间的矢量绘制为rgb(0,15, 40),等等。倒钩和箭袋功能的文档(它们相似)提到了C输入arg:


倒钩(X,Y,U,V,C,** kw)

参数:

X,Y: 倒钩位置的x和y坐标(默认为倒钩头;参见枢轴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()

结果情节图片链接:(抱歉无法直接发布图片)

http://i49.tinypic.com/xombmc.jpg

1 个答案:

答案 0 :(得分:2)

你可以通过离地图来获得它。

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

enter image description here