我有3个1-D ndarray:x,y,z
和以下代码:
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来的。我试过转换为带掩码的数组,但无济于事-情节仍然是空白。你能告诉我我做错了吗?谢谢。
最佳答案
得到它了。这似乎是回旋的,但这是解决方案:
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))
关于numpy - 缺少值的pcolormesh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778343/