2011-10-15 16 views
18

मैं 3 1-डी ndarrays है: एक्स, वाई, जेडगुम मूल्यों के साथ pcolormesh?

और निम्नलिखित कोड:

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

मेरे भूखंड बाहर खाली आता है, और मुझे लगता है यह क्योंकि विधि = 'रैखिक' प्रक्षेप है नैन के साथ बाहर आता है। मैंने एक मुखौटा सरणी में कनवर्ट करने का प्रयास किया है, लेकिन कोई फायदा नहीं हुआ - साजिश अभी भी खाली है। क्या आप मुझे बता सकते हैं कि मैं क्या गलत कर रहा हूं? धन्यवाद।

उत्तर

24

समझ गया। इस राउंड के बारे में लगता है, लेकिन इस समाधान था:

import numpy.ma as ma 

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

जेड मैट्रिक्स 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) 
6

ध्यान दें कि स्पष्ट मास्किंग अब matplotlib मास्टर के लिए आवश्यक है के रूप में सरणियों अब स्वचालित रूप से आंतरिक रूप से छुपाया जाता है। Matplotlib> 2.1 में शामिल किया जाएगा। तो अब मेरी विलय कर दिया पुल अनुरोध https://github.com/matplotlib/matplotlib/pull/5451

देखें यह उतना ही आसान

रूप
plt.pcolormesh(X,Y,Z.T) 
है
संबंधित मुद्दे