2011-10-15 87 views
18

我有3個1-d ndarrays:X,Y,Zpcolormesh缺失值?

和以下代碼:

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() 

我的情節出來空白,我懷疑這是因爲該方法= '線性' 內插與nans出來。我試圖轉換爲蒙面數組,但無濟於事 - 情節仍然是空白的。你能告訴我我做錯了什麼嗎?謝謝。

回答

24

明白了。這似乎迂迴的,但這是溶液:

import numpy.ma as ma 

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

如果z矩陣包含nan的,它必須是用於pcolormesh掩蔽陣列,其具有與ma.masked_where創建,或者,可替換地,

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指定

mask = np.isnan(Z)