2012-02-09 1 views
3

마스크 된 배열에서 pcolor를 사용하려고합니다. 마스크 된 요소 을 특수한 색으로 표시하고 싶습니다. 나는 몇 가지 코드를 작성했습니다,하지만 작동하지 않습니다 pcolormesh에 대한cmap.set_bad()가 pcolor()를 사용하여 효과를 나타내지 않음

import matplotlib as mpl 
import matplotlib.pyplot as plt 

from numpy import linspace 
from numpy.random import randn 
from numpy.ma import masked_invalid 

D = randn(12*72).reshape((12,72)) 
D[4,:] = nan 
D[6,6] = nan 

D = masked_invalid(D) 

cmap = mpl.cm.bwr 
c map.set_bad('k', 1.) 

xbin = linspace(0, 12, 13) 
ybin = linspace(-90, 90, 73) 

fig = plt.figure() 
spl = fig.add_subplot(111) 
pl = spl.pcolor(xbin, ybin, D.T, cmap=cmap, edgecolors='none', 
       vmin=-5, vmax=5) 
+0

는 당신이이 코드를 실행 발생하면? 그 결과는 어떨까요? – Yann

답변

7

워드 프로세서 말 :

마스크 배열 지원 이 cmap를하고 규범을 통해 구현됩니다

; 반대로 인 경우 인 경우 pcolor()는 마스크 된 색상 또는 정점이있는 사각형을 그립니다.

그래서 그 대신 pcolormesh를 사용

import matplotlib.pyplot as plt 
import numpy as np 

D = np.random.randn(12*72).reshape((12, 72)) 
D[4, :] = np.nan 
D[6, 6] = np.nan 

D = np.ma.masked_invalid(D) 

cmap = plt.get_cmap('bwr') 
cmap.set_bad(color = 'k', alpha = 1.) 

xbin = np.linspace(0, 12, 13) 
ybin = np.linspace(-90, 90, 73) 

fig = plt.figure() 
ax = fig.add_subplot(111) 
pl = ax.pcolormesh(xbin, ybin, D.T, cmap = cmap, edgecolors = 'None', 
       vmin = -5, vmax = 5) 
plt.show() 

enter image description here

+0

감사합니다. 하지만 pcolor와 함께 작동하지 않는 이유는 무엇입니까? 둘의 차이점은 무엇입니까? –

+2

'pcolor'가 마스킹 된 색상을 가진 사변형을 그리지 않는다고 경고하는 문서에서 스 니펫을 추가했습니다. 그리고 그 차이를 제외하고는 이 설명서에 나와 있습니다 (예 :'pcolor'는'PolyCollection' kwargs를 허용하고, 'pcolormesh'는'QuadMesh' kwargs를 허용합니다). 나는 사용시기에 대한 의견을 작성하지 않았습니다. – unutbu

관련 문제