2

セットアップ... 2D 空間 (つまり、f(x,y) = (z,w)) にマップされたペア値 (z,w) のセットがあり、そこからイメージ マップを作成しています。これを行う私の好ましい方法は、各ポイントのRGBカラーが次のように与えられることです: (r,g,b) = (z' w', z' (1-w'), z'), z' and w' 0 から 1 の間になるように正規化されます (カラーマッピングの目的で)。このように、z 値は点の明度を効果的に決定し、w 値は赤青の色相を決定します。

ここに問題があります...この画像マップを作成できますが、カラーバーは(どういうわけか)虹色のカラーマップであり、あまり役に立ちません。代わりに、2 つの独立したカスタム カラーバーが必要です。私が望むのは、右側に白黒で z の範囲にスケーリングされた垂直カラーバーがあり、下部に青赤で w の範囲にスケーリングされた水平カラーバーがあることです。

誰もこれを行う方法を知っていますか?

4

1 に答える 1

2

imscが私の質問へのコメントで指摘したように、答えは彼がリンクしたmatplotlibの例にあります。リンクされた例に従って、私が使用しているコードは次のとおりです。これは、私の質問の状況を具体的に解決します。

import matplotlib as mpl

ax_cb1 = fig.add_axes((0.85, 0.125, 0.03, 0.75))
BW_cdict = {
    'red':    ((0.0, 0.0, 0.0),
               (1.0, 1.0, 1.0)),
     'green': ((0.0, 0.0, 0.0),
               (1.0, 1.0, 1.0)),
     'blue': ((0.0, 0.0, 0.0),
               (1.0, 1.0, 1.0))
    }
black_white = mpl.colors.LinearSegmentedColormap('BlackWhite', BW_cdict)
norm = mpl.colors.Normalize(vmin=z_min, vmax=z_max)
cb1 = mpl.colorbar.ColorbarBase(
    ax_cb1, cmap=black_white, norm=norm, orientation='vertical'
)

ax_cb2 = fig.add_axes((0.125, 0.95, 0.75, 0.03))
BR_cdict = {
    'red':    ((0.0, 0.0, 0.0),
               (1.0, 1.0, 1.0)),
     'green': ((0.0, 0.0, 0.0),
               (1.0, 0.0, 0.0)),
     'blue':  ((0.0, 1.0, 1.0),
               (1.0, 0.0, 0.0))
    }
blue_red = mpl.colors.LinearSegmentedColormap('BlueRed', BR_cdict)
norm = mpl.colors.Normalize(vmin=w_min, vmax=w_max)
cb2 = mpl.colorbar.ColorbarBase(
    ax_cb2, cmap=blue_red, norm=norm, orientation='horizontal'
)
于 2012-07-11T22:38:22.650 に答える