2017-02-01 5 views
0

私はmatplotlibで独自のカラーマップを作成しようとしていますが、正しく動作するようには見えません。出力している色は期待していた色ではありません。質問の答えは無用ですが、私は自分のcdictのタプルを正しく設定することはできません。matplotlibのカスタムカラーマップ

強度が0から1になるグラフがあります。ゼロ強度に(0,99,136)のRBG、(0.59)の強度が(159,161,97)、1強度に(170 、43,74)

これは私が現在試みていることですが、私はそれをどのように使用するのか誤解しています。

from matplotlib.colors import LinearSegmentedColormap 

cdict1 = {'blue': ((0.0, 0.0, 0.0), 
        (0.5, 159/255, 159/255), 
        (1.0, 170/255, 170/255)), 

     'green': ((0.0, 99/255, 99/255), 
        (0.5, 161/255, 161/255), 
        (1.0, 43/255, 43/255)), 

     'red': ((0.0, 136/255, 136/255), 
        (0.5, 97/255, 97/255), 
        (1.0, 74/255, 74/255)) 
     } 

cm = LinearSegmentedColormap('cm', cdict1) 

私はこれは私が現在

Colourmap I get currently

を取得し、これは私が Colourmap I want

を達成したいものである出力であるように

plt.subplot(1, 2, 1) 
matplotlib.rcParams.update({'font.size': 24}) 
plt.imshow(abs(store(0))**2, interpolation='none', extent=[-MaxMin, MaxMin, 0, N*dt], aspect=7, cmap=cm, vmin=0, vmax=1) 
plt.xlabel(r'$x$') 
plt.ylabel(r'$t$') 
'cbar = plt.colorbar()' 
plt.subplot(1, 2, 2) 
plt.imshow(abs(store(4*x*x))**2, interpolation='none', extent=[-MaxMin, MaxMin, 0, N*dt], aspect=8, cmap=cm, vmin=0, vmax=1) 
plt.xlabel(r'$x$') 
plt.ylabel(r'$t$') 
cbar = plt.colorbar() 
cbar.set_label(r'$|\psi(x,t)|^{2}$', fontsize=24) 
plt.show() 

でそれを実装しています

+0

「私はそれが仕事を得るように見えることはできません」十分な問題の説明ではありません。これらの値を使うとき、正確に何を得ていますか?また、どのように正確にそれらを使用していますか?つまり、どのようにそれらの値からカラーマップを作成しますか? – ImportanceOfBeingErnest

答えて

0

私はあなたが欲しいと思うCこの複雑な辞書を使用するよりはるかに簡単に達成できます。

最初の行には最初の色のRGB値があり、2番目の色は中間色のRGB値、最後の行は最終色の値です。
次に、matplotlib.colors.LinearSegmentedColormap.from_list関数を使用してカラーマップを取得します。

import numpy as np 
import matplotlib.colors 

colors = np.array([(0,99,136), (159,161,97), (170,43,74)])/255. 
cm = matplotlib.colors.LinearSegmentedColormap.from_list('cm', colors) 

enter image description here