長方形のMxNグリッド用に定義されたRGBA配列imshow
であるMxNx4配列の入力を使用して画像をプロットしています。A
この色付けはV
、これらの各ポイントのスカラー値を示すMxN配列から生成されました。f
つまり、スカラー値を取り、RGBAタプルを返す関数があります。f(V) = A
入力として受け取るカラーバーを作りたいですf,V
。これは可能ですか?
長方形のMxNグリッド用に定義されたRGBA配列imshow
であるMxNx4配列の入力を使用して画像をプロットしています。A
この色付けはV
、これらの各ポイントのスカラー値を示すMxN配列から生成されました。f
つまり、スカラー値を取り、RGBAタプルを返す関数があります。f(V) = A
入力として受け取るカラーバーを作りたいですf,V
。これは可能ですか?
カラーマップを作成するには、線形スケール全体で赤/緑/青のコンポーネントがどのように変化するかを指定する必要があります。f
r / g/bコンポーネントを設定する関数がすでにあるようです。難しい部分は、4番目のチャネルであるアルファチャネルです。で指定されたRGBカラーマップを指定して、アルファチャネルを設定しますf
。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
# some data
a = np.sort(np.random.randn(10, 10))
# use the default 'jet' colour map for showing the difference later
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.imshow(a, cmap=cm.get_cmap('jet'))
fig.savefig('map1.png')
# let's use jet and modify the alpha channel
# you would use your own colour map specified by f
my_cmap = cm.get_cmap('jet')
# this is a hack to get at the _lut array, which stores RGBA vals
my_cmap._init()
# use some made-up alphas, you would use the ones specified by f
alphas = np.abs(np.linspace(-1.0, 1.0, my_cmap.N))
# overwrite the alpha channel of the jet colour map
my_cmap._lut[:-3,-1] = alphas
# plot data with our modified colour map
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.imshow(a, cmap=my_cmap)
fig.savefig('map2.png')
ここにありmap1.png
ます:
そしてここにありますmap2.png
:
お役に立てれば。