2011-10-15 4 views
18

I 3 1-D의 ndarrays이값이 누락 된 pcolormesh? X, Y, Z</p> <p>다음 코드 :

import numpy as np 
import matplotlib.pyplot as plt 
import scipy.interpolate as spinterp 

## define data 
npoints = 50 
xreg = np.linspace(x.min(),x.max(),npoints) 
yreg = np.linspace(y.min(),y.max(),npoints) 
X,Y = np.meshgrid(xreg,yreg) 
Z = spinterp.griddata(np.vstack((x,y)).T,z,(X,Y), 
         method='linear').reshape(X.shape) 

## plot 
plt.close() 
ax = plt.axes() 
col = ax.pcolormesh(X,Y,Z.T) 
plt.draw() 

내 플롯 밖으로 비어 온다 및 I는 방법 때문에 = '직선'보간 의심 nans와 함께 나옵니다. 마스크 된 배열로 변환하려고 시도했지만 아무 소용이 없습니다 - 여전히 음모가 비어 있습니다. 내가 뭘 잘못하고 있는지 말해 줄 수 있니? 감사.

답변

24

알 수 있습니다. 그것은 대안 적으로, ma.masked_where로 만들 수 있고, 또는 pcolormesh위한 마스크 배열로 가지고

import numpy.ma as ma 

Zm = ma.masked_where(np.isnan(Z),Z) 
plt.pcolormesh(X,Y,Zm.T) 

의 Z 매트릭스 nan 년대 있으면 : 이것은 둥근 약 보이지만,이 용액이었다

Zm = ma.array(Z,mask=np.isnan(Z)) 
14

선택된 답에 약간 개선

import numpy.ma as ma 
Zm = ma.masked_invalid(Z) 
plt.pcolormesh(X, Y, Zm.T) 

masked_invalid 마스크 모두의 NaN 값함으로써 N 절약 EED 배열이 자동으로 내부적으로 마스킹으로 명시 적 마스킹가 더 이상하기 matplotlib 마스터의 필요가 없음을

mask = np.isnan(Z) 
관련 문제