4

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


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

生成的情节图片链接:(抱歉不能直接发布图片)

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

4

1 回答 1

3

您可以通过离散化地图来获得它。

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

在此处输入图像描述

于 2012-07-13T22:11:14.943 回答