2017-09-29 2 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을 시도했지만 그 행동은 동일합니다. 다른 사람들도 동일한 결과를 얻지 않습니까, 아니면 제 매트 플롯의 위화감이 생기는 재미있는 설정입니까?

또한 특히 액센트 색상 맵에서는 이러한 현상이 일어나고 있지만 반드시 그렇지는 않은 것으로 보입니다.

답변

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으로 변하고 discretized colormaps가 처리되는 방식입니다 ... – dreab