2016-10-09 2 views
4

실리콘 웨이퍼의 2D 맵을 플롯하려고합니다. 따라서 단지 중앙 부분은 값과 모서리 나는 다음과 같이 간단한지도를 얻을하기 matplotlib의 plt.imshow를 사용하고 0 값이 있습니다2D 히트 맵에 제로 값 표시 안 함

data = np.array([[ 0. , 0. , 1. , 1. , 0. , 0. ], 
     [ 0. , 1. , 1. , 1. , 1. , 0. ], 
     [ 1. , 2. , 0.1, 2. , 2. , 1. ], 
     [ 1. , 2. , 2. , 0.1, 2. , 1. ], 
     [ 0. , 1. , 1. , 1. , 1. , 0. ], 
     [ 0. , 0. , 1. , 1. , 0. , 0. ]]) 

plt.figure(1) 
plt.imshow(data ,interpolation='none') 
plt.colorbar() 

을 그리고 난 다음지도를 구하십시오 enter image description here

을 '웨이퍼'(녹색, 적색 및 밝은 파란색 영역)의 모양을 유지하면서 값이 0 인 진한 파란색 영역을 제거 할 수있는 방법이 있습니까? 의미는 모서리가 공백이고 나머지는 색상 구성을 유지한다는 의미입니다.

또는이 기능을 사용할 수있는 더 나은 기능이 있습니까? 어두운 파란색 모서리를 제거하는 방법은 두 가지가 있습니다

답변

3

:

할 수 있습니다 플래그를 0 값으로 데이터 :

data[data == 0] = np.nan 
plt.imshow(data, interpolation = 'none', vmin = 0) 

아니면 imshow에 대한 마스크 배열을 만들 수 있습니다

data_masked = np.ma.masked_where(data == 0, data) 
plt.imshow(data_masked, interpolation = 'none', vmin = 0) 

위의 두 솔루션은 마스크 사용이 좀 더 일반적이지만 문제를 해결합니다.

정확한 색 구성을 유지하려면 이미지 플로팅을 위해 vmin/vmax 인수를 수동으로 설정해야합니다. 위의 vmin = 0plt.imshow으로 전달하면 삭제 된 0이 여전히 색상 막대에 표시됩니다. masked-imshow

+0

위대한 동료가됩니다. 이것은 float 값에도 적용됩니까? 아니면 정수일까요? – xplodnow

+0

수레도 사용할 수 있습니다. –