2012-05-29 2 views
1

나는 float의 n 행렬 (np.array)을 가지고 있으며 imshow를 사용하여 함께 그려야하지만 각각의 값은 다른 색상 범위를 가지고 있습니다. 예 : n = 흰색 → 파란색, n + 1 = 흰색 → 빨간색 등 이 방법이 있습니까?Matplotlib imshow - 다른 색상 표시

매트릭스의 크기는 동일하며 서로의 색칠은 매트릭스의 값의 대부분이 0 (흰색이되기를 바랍니다)이므로 문제가되지 않습니다.

내가 좋아하는 뭔가 생각 :

1 매트릭스

000 
010 
000 

000 
000 
001 

은 그래서 어쩌면 내가으로 두 번째 행렬을 변환 할 수 있다고 생각 2 매트릭스 :

222 
222 
223 

을 입력 한 다음 0 -> 1을 흰색에서 파란색으로, 2 -> 3에서 흰색을 빨간색으로 만듭니다.

필자는 불행히도 matplotlib 색상 표를 사용하여이 작업을 수행하는 방법을 모릅니다.

+0

이 도움이 될 수 있습니다 지금까지 내가 말할 수있는 http://stackoverflow.com/questions/3373256/set-colorbar-range-in-matplotlib –

+0

는 적용되지 않습니다 하지만 어쨌든 – Anake

+0

첫 번째 행렬을 가져 와서 vmap과 vmin을 사용하여 색상 표를 사용하여 그래프를 그립니다. 2 행렬을 변환하고 이전 vmax를 vmin으로 사용하고 더 큰 vmax를 사용하여 플롯합니다. –

답변

5

imshowNone으로 설정된 값을 플롯하지 않습니다. 데이터가 너무 적 으면 서로 위에 놓을 수 있습니다.

import numpy as np 
import pylab as plt 

# Your example data 
A1 = np.zeros((3,3)) 
A2 = np.zeros((3,3)) 
A1[1,1] = 1 
A2[2,2] = 1 

# Apply a mask to filter out unused values 
A1[A1==0] = None 
A2[A2==0] = None 

# Use different colormaps for each layer 
pwargs = {'interpolation':'nearest'} 
plt.imshow(A1,cmap=plt.cm.jet,**pwargs) 
plt.imshow(A2,cmap=plt.cm.hsv,**pwargs) 
plt.show() 

enter image description here

+0

정말 고마워요. – Anake