9

imshow()で表示される画像、輪郭、および で設定されるベクトル フィールドで構成される図がありますquiver()。別のスカラー量に基づいてベクトル フィールドに色を付けました。私の図の右側には、colorbar(). これcolorbar()は、によって表示される値を表しますimshow()(私の場合は、正と負の可能性があります)。ベクトルの色が基づいているスカラー量の値に基づいて、別のカラーバーを設定する方法を知りたいです。誰もそれを行う方法を知っていますか?

これが私が作ることができた画像の例です。ベクトルの色が青から赤に変わることに注意してください。現在のカラーバーによると、青は負を意味します。ただし、ベクトルの色で表される量は常に正であることはわかっています。

ここに画像の説明を入力

4

2 に答える 2

7

colorbar各プロット呼び出しの直後に、2 回呼び出すだけです。Pylab は、最新のプロットに一致する新しいカラーバーを作成します。あなたの例のように、震えの値の範囲は 0,1 ですが、 imshow は負の値を取ることに注意してください。わかりやすくするために (この例には示されていません)、異なるカラーマップを使用して 2 種類のプロットを区別します。

import numpy as np
import pylab as plt

# Create some sample data
dx = np.linspace(0,1,20)
X,Y = np.meshgrid(dx,dx)
Z  = X**2 - Y
Z2 = X

plt.imshow(Z)
plt.colorbar()

plt.quiver(X,Y,Z2,width=.01,linewidth=1)
plt.colorbar() 

plt.show()

ここに画像の説明を入力

于 2012-08-15T15:23:59.840 に答える
4

矢筒を実行しても、必ずしも必要なマップ可能なオブジェクトのタイプが返されるとは限りませんcolorbar()。ヘイムダルが言ったように、私が明示的に「別のスカラー量に基づいてベクトル場に色を付けた」ためかもしれないと思います。したがって、Hookedの答えは私にはうまくいきませんでした。

カラーバーが読み取れるように、独自のマッピング可能ファイルを作成する必要がありました。これは、矢筒ベクトルの色付けに使用Normalizematplotlib.colorsたいデータ(、、、、、Cと同じ形状の配列である、とX呼びYます)を使用してU行いVました。

私の矢筒の呼び出しは次のようになります。

import matplotlib.pyplot as pl
import matplotlib.cm as cm
import matplotlib.colors as mcolors
import matplotlib.colorbar as mcolorbar
pl.figure()

nz = mcolors.Normalize()
nz.autoscale(C)

pl.quiver(X, Y, U, V, color=cm.jet(nz(C)))
cax,_ = mcolorbar.make_axes(pl.gca())
cb = mcolorbar.ColorbarBase(cax, cmap=cm.jet, norm=nz)
cb.set_label('color data meaning')

カラーバー関数に他の引数を指定すると、さまざまなエラーが発生しました。

私の例では、ベクトルの色は3番目のデータ軸を示しています

于 2013-01-30T15:04:17.720 に答える