2013-01-14 19 views
17

मैं स्कैटर के साथ कुछ डेटा प्लॉट करने की कोशिश कर रहा था। मेरे कोडMatplotlib imshow: डेटा घुमाया गया?

import matplotlib.pyplot as plt 
import matplotlib as mpl 
import numpy as np 
from scipy.interpolate import griddata 
data = np.loadtxt('file1.txt') 
x = data[:,0] 
y = data[:,1] 
z = data[:,2] 
plt.scatter(x, y, c=z, s=100, cmap=mpl.cm.spectral) 
cbar=plt.colorbar() 
s=18 
plt.ylabel(r"$a_v$", size=s) 
plt.xlabel(r"$a_{\rm min}$", size=s) 
plt.xlim([x.min(),x.max()]) 
plt.ylim([y.min(),y.max()]) 
plt.show() 

है परिणाम enter image description here

अब मैं विचार कुछ डेटा, soince साथ imshow कोशिश करने के लिए मैं बिखराव के हलकों पसंद नहीं आया पर आया है। तो मैं इस

from matplotlib.mlab import griddata 
import matplotlib.pyplot as plt 
data = np.loadtxt('file1.txt') 
x = data[:,0] 
y = data[:,1] 
z = data[:,2] 

N = 30j 
extent = (min(x), max(x), min(y), max(y)) 

xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N] 

resampled = griddata(x, y, z, xs, ys) 

plt.imshow(resampled.T, extent=extent) 
s=18 
plt.ylabel(r"$a_v$", size=s) 
plt.xlabel(r"$a_{\rm min}$", size=s) 
plt.xlim([x.min(),x.max()]) 
plt.ylim([y.min(),y.max()]) 
cbar=plt.colorbar() 
plt.show() 
इस परिणाम के साथ

की कोशिश की: enter image description here

मेरे समस्या obviosly कारण है कि imshow() डेटा को उलटने करता है? वास्तव में यहाँ क्या होता है?

पुनश्च: यहाँ data कर रहे हैं, इस मामले में कोई उन्हें

उत्तर

31

imshow के कीवर्ड तर्कों को देखें। origin है। डिफ़ॉल्ट "ऊपरी" है, लेकिन आप "निचला" चाहते हैं।

डिफॉल्ट छवियों की साजिश के लिए डिफ़ॉल्ट बनाता है, जो आम तौर पर शीर्ष-बाएं कोने में शुरू होता है। अधिकांश मैट्रिक्स-प्लॉटिंग के लिए, आप origin="lower"

+0

ने अपना जीवन बचाया और मुझे "संभवतः" झूठी फ़ंक्शन को डिबग करने के घंटे खर्च किए – n3rd

4

साथ खेलने के लिए यह उलटा नहीं कर रहा है, बस फ़्लिप करना चाहते हैं। imshow के लिए मूल निचले बाएं के बजाए ऊपरी बाईं ओर स्थित है। imshow में मूल निर्दिष्ट करने के लिए पैरामीटर है, इसका नाम मूल है। वैकल्पिक रूप से आप अपने matplotlib.conf में डिफ़ॉल्ट सेट कर सकते हैं।

+0

वैश्विक स्तर पर डिफ़ॉल्ट रूप से बदलना एक बुरा विचार जैसा लगता है यदि आप अन्य लोगों के कोड को चलाने के लिए चाहते हैं। – Mark

1

बीटीडब्लू, आप मार्कर = 'एस' का उपयोग सर्कल के बजाय अपने स्कैटर प्लॉट में वर्गों को आकर्षित करने के लिए कर सकते हैं और फिर अपना मूल कोड रखें।

2

pcolormesh या contourf का उपयोग करने पर विचार करें यदि आप f(X, Y) = Z फॉर्म का डेटा प्लॉट करना चाहते हैं। imshow बस प्लॉट डेटा Z, स्केलिंग और रीसाम्पलिंग मैन्युअल रूप से किया जाना है।

संबंधित मुद्दे