2017-07-03 9 views
0

matplotlibで使用していた古いカラーマップを複製するのに問題があります。元のコードでは、カラーマップが指定されていないため、デフォルトのカラーマップと同じように見えます。指定色と測定色の違い、matplotlibカラーマップ

私が作った古い人物を見て、私はcolorbarの色をgpickで測定しました。次のように私は、カスタムカラーマップにこれらを入力しました:私は再びgpickで出力色を測定する際

blue_red1 = LinearSegmentedColormap.from_list('mycmap', [ 
    (0,  '#6666de'), 
    (0.1428, '#668cff'), 
    (0.2856, '#66d9ff'), 
    (0.4284, '#92ffce'), 
    (0.5712, '#d0ff90'), 
    (0.714, '#ffe366'), 
    (0.8568, '#ff9b66'), 
    (1,  '#db6666')]) 

CS = plt.contourf(H, temps, diff_list, cmap=blue_red1) 
plt.savefig('out.png') 

はまだ彼らは異なる進値を持っている(と私は、彼らが異なっている伝えることができます)。

この原因は何ですか?あなたが使用して、所望の結果にかなり近づくこと

original

replicate

答えて

1

私は複製しようとしている元、およびカスタムカラーマップからの出力は下にリンクされています以下。 カラーバーの各色は、その間隔の平均に対応する値です。

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.colors import LinearSegmentedColormap 

X,Y=np.meshgrid(np.linspace(0,1),np.linspace(0,1)) 
Z = X+Y 

blue_red1 = LinearSegmentedColormap.from_list('mycmap', [ 
    (0.0000, '#6666de'), 
    (0.0625, '#6666de'), 
    (0.1875, '#668cff'), 
    (0.3125, '#66d9ff'), 
    (0.4375, '#92ffce'), 
    (0.5625, '#d0ff90'), 
    (0.6875, '#ffe366'), 
    (0.8125, '#ff9b66'), 
    (0.9375, '#db6666'), 
    (1.0000, '#db6666')]) 

CS = plt.contourf(X,Y,Z, cmap=blue_red1) 
plt.colorbar() 
plt.show() 

enter image description here

他のオプションは、ListedColormapを使用することです。これにより、正確な色が得られます。

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.colors import ListedColormap 

X,Y=np.meshgrid(np.linspace(0,1),np.linspace(0,1)) 
Z = X+Y 

blue_red1 = ListedColormap(['#6666de','#668cff','#66d9ff','#92ffce','#d0ff90', 
          '#ffe366','#ff9b66','#db6666'],'mycmap') 

CS = plt.contourf(X,Y,Z, cmap=blue_red1) 
plt.colorbar() 
plt.show() 

enter image description here

関連する問題