3

長方形のMxNグリッド用に定義されたRGBA配列imshowであるMxNx4配列の入力を使用して画像をプロットしています。Aこの色付けはV、これらの各ポイントのスカラー値を示すMxN配列から生成されました。fつまり、スカラー値を取り、RGBAタプルを返す関数があります。f(V) = A

入力として受け取るカラーバーを作りたいですf,V。これは可能ですか?

4

1 に答える 1

4

カラーマップを作成するには、線形スケール全体で赤/緑/青のコンポーネントがどのように変化するかを指定する必要があります。fr / 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ます:

map1

そしてここにありますmap2.png

map2

お役に立てれば。

于 2012-10-23T09:00:59.080 に答える