4

私は、matplotlib でバーブ ベクトル プロットを作成し、いくつかの色を特定の大きさにマッピングしようとしています。等々。barbs および quiver 関数 (類似している) のドキュメントには、C 入力引数が記載されています。


barb(X, Y, U, V, C, **kw)

引数:

X、Y: バーブの位置の x および y 座標 (デフォルトはバーブの頭です。ピボット kwarg を参照してください)

U、V: バーブ シャフトの x 成分と y 成分を指定します。

C: 色をとげにマッピングするために使用されるオプションの配列


ただし、これは非常にあいまいです。Google で検索した後、このカラー配列を特定の方法で使用する方法を理解することはできません。以下のコード例のように、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 に答える