2014-10-13 1 views
2

내 데이터에 대한 히트 맵을 생성 중입니다.matplotlib, pyplot : 특정 데이터 값의 사용자 정의 색

모든 것이 제대로 작동하지만 약간 문제가 있습니다. 내 데이터 (숫자)는 0에서 10.000까지입니다.

0은 아무 것도 없음 (데이터 없음)을 의미하며 0이 표시된 필드는 내 색상 스칼라 중 가장 낮은 색상을 사용합니다. (미리보기

enter image description here

내 코드를 : 내 문제는

그냥 더 나은 내가 무엇을 의미하는지 이해하기 위해 그림을 참조하십시오 (예 : 검은 색 또는 흰색) 총 다른 색상을 0으로 데이터를 만드는 방법입니다)은 다음과 같습니다

 matplotlib.pyplot.imshow(results, interpolation='none') 
    matplotlib.pyplot.colorbar(); 
    matplotlib.pyplot.xticks([0, 1, 2, 3, 4, 5, 6, 7, 8], [10, 15, 20, 25, 30, 35, 40, 45, 50]); 
    matplotlib.pyplot.xlabel('Population') 
    matplotlib.pyplot.yticks([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 'serial']); 
    matplotlib.pyplot.ylabel('Communication Step'); 
    axis.xaxis.tick_top(); 
    matplotlib.pyplot.savefig('./results_' + optimisationProblem + '_dim' + str(numberOfDimensions) + '_' + statisticType + '.png'); 
    matplotlib.pyplot.close(); 
+0

, 당신은'for' 루프를 사용하여'0''nan'으로 변경 될 수 있습니다. 'imshow'에서'nan' 값은 항상'white'로 표시됩니다. 그러나,이 경우에는 매끄러운 전이가 없을 것이다. 즉, '0.0001'값은 여전히 ​​'딥 블루 - 틱'이다. 이 변환을 원할 경우 [자신의 colorbar] (http://stackoverflow.com/questions/16834861/create-own-colormap-using-matplotlib-and-plot-color-scale)를 만들 수 있습니다. –

+0

고맙습니다. 단지'0'을'nan'으로 바꾸면 내 문제가 해결됩니다. 이 의견을 답으로 입력하면 정답으로 표시됩니다. – rshuka

답변

1

당신이 값 00.0001 사이의 원활한 전환에 관심이없는 경우, 당신은 단지 0t 동일 모든 값을 설정할 수 있습니다 o NaN. 그러면 0.0001은 여전히 ​​deep blue-ish이됩니다.

다음 코드에는 예제가 포함되어 있습니다. 나는 무작위로 데이터를 생성한다. 따라서 배열에서 하나의 요소를 선택하고 NaN으로 설정하십시오. 색상이 흰색이됩니다. 또한 모든 데이터 포인트를 0에서 NaN까지 설정할 수있는 라인이 포함되었습니다.

import numpy 
import matplotlib.pyplot as plt 

#Random data 
data = numpy.random.random((10, 10)) 

#Set all data points equal to zero to NaN 
#data[data == 0.] = float("NaN") 

#Set single data value to nan 
data[2][2] = float("NaN") 

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1) 

ax.imshow(data, interpolation = "nearest") 

plt.show() 
만 다른 색을 가진`0`과 동일한 데이터 포인트를 가지고에 관심이 있다면

enter image description here

관련 문제