2017-09-29 19 views
0

最近、私はこのメソッドを使って、基本的に6つの等しい値をこのカラーマップに沿って選択していました。matplotlibカラーマップに二重の値を与える

import matplotlib.pyplot as plt 
import numpy as np 
ints = np.linspace(0,255,6) 
ints = [int(x) for x in ints] 
newcm = plt.cm.Accent(ints) 

これは通常、カラーマップの値は問題ありません。私はこれを実行すると、私はnewcmのために取得する出力がされています。だから今、物事は右のプロットされていない

Out[25]: 
array([[ 0.49803922, 0.78823529, 0.49803922, 1.  ], 
     [ 0.4  , 0.4  , 0.4  , 1.  ], 
     [ 0.4  , 0.4  , 0.4  , 1.  ], 
     [ 0.4  , 0.4  , 0.4  , 1.  ], 
     [ 0.4  , 0.4  , 0.4  , 1.  ], 
     [ 0.4  , 0.4  , 0.4  , 1.  ]]) 

。私もbytes=Trueを試しましたが、動作は同じです。他の人たちが同じ結果を得ているのですか、それとも私のmatplotlibの面白い設定が間違っていますか?

さらに、アクセントカラーマップでは特にそうだが、必ずしもそうではないようだ。

答えて

2

一般に、カラーマップの範囲は0〜1です。np.linspace(0,255,6)では、最初の値を除くすべての値が1より大きいため、そのリストの最初の項目を除くすべての値が最大値1に対応します。

代わりにnumbers = np.linspace(0,1,6)を使用すると、そのカラーマップから6つの異なる値が得られます。

import matplotlib.pyplot as plt 
import numpy as np 

numbers = np.linspace(0,1,6) 
newcm = plt.cm.Accent(numbers) 
print(newcm) 

私はこれを試していたと思う悲しいかなはい、これは、真である

[[ 0.49803922 0.78823529 0.49803922 1.  ] 
[ 0.74509804 0.68235294 0.83137255 1.  ] 
[ 1.   1.   0.6   1.  ] 
[ 0.21960784 0.42352941 0.69019608 1.  ] 
[ 0.74901961 0.35686275 0.09019608 1.  ] 
[ 0.4   0.4   0.4   1.  ]] 
+0

を生成します。私はまだ問題がありますが、上記のものではありません...ありがとう – dreab

+0

問題はmpl 1.5から2.0に変わり、離散化されたカラーマップが処理される方法... – dreab

関連する問題