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

标签 python vector colors matplotlib

我正在尝试在 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()

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

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

最佳答案

可以通过将 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()

enter image description here

关于Python matplotlib barbs/quiver 将颜色映射到不同的值集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476752/

相关文章:

python - 将枕头 Gif 复制到 Windows 剪贴板

python - 使用 PyMongo 从 MongoDB 数据库中检索所有集合的所有文档

matlab - 如何在matlab中制作三对角矩阵?

vector - 试图从法线计算平面的斜率

r - 更改条形图 R 中标签子集的颜色

将RYB颜色转换为RGB颜色的php函数

r - 为 geom_bar 分配连续的填充颜色

python - 导入 pyodbc 失败 mac os

python - 在这种特殊情况下,哪个内置函数应该首先出现?

ios - 需要帮助说明有关法向矢量SceneKit