2012-09-07 46 views
14

मैं matplotlib.pyplot.scatter का उपयोग कर यूटीएम निर्देशांक का एक गुच्छा प्लॉट कर रहा हूं। मेरे पास एक पृष्ठभूमि एयर फोटो भी है जो मुझे पता है कि आंकड़े की सीमा से बिल्कुल मेल खाता है। जब मैं अपना डेटा प्लॉट करता हूं और अक्ष सेट करता हूं तो मैं स्कैटर को सही तरीके से प्रदर्शित कर सकता हूं। अगर मैं imshow का उपयोग कर एयर फोटो प्लॉट करता हूं तो यह अक्ष स्थान के रूप में पिक्सेल नंबर का उपयोग करता है। मुझे छवि (numpy सरणी) को अपनी सही यूटीएम स्थिति में स्थानांतरित करने की आवश्यकता है। कोई विचार? मैं matplotlib और numpy के लिए काफी नया हूँ।Matplotlib imshow अक्ष से मिलान करने के लिए imshow?

उदाहरण के लिए: मुझे पता है कि छवि के शीर्ष बाएं कोने (imshow समन्वय: 0,0) में यूटीएम समन्वय (26 9 658.4, 538318.2) है। मैं एक ही चीज़ को कैसे दिखा सकता हूं?

मुझे यह भी कहना चाहिए कि मैंने बेसमैप की जांच की लेकिन यह अभी तक पूरी तरह से यूटीएम का समर्थन नहीं करता है। मेरा अध्ययन क्षेत्र बहुत छोटा है।

उत्तर

18

आपको extent कीवर्ड तर्क का उपयोग करने की आवश्यकता है imshow।

एक त्वरित उदाहरण के रूप में:

import numpy as np 
import matplotlib.pyplot as plt 

# Random points between 50000 and 51000 
x, y = 1000 * np.random.random((2, 10)) + 50000 

# A 10x10 "image"... 
image = np.arange(100).reshape((10,10)) 

# In a lot of cases, image data will be "flipped" vertically, so you may need 
# use the `origin` kwarg, as well (or just swap the ymin and ymax ordering). 
plt.imshow(image, extent=[x.min(), x.max(), y.min(), y.max()]) 
plt.plot(x, y, 'ro') 

plt.show() 

enter image description here

+0

धन्यवाद! यह वही था जो मैं चाहता था! मुझे यकीन नहीं है कि मुझे एपीआई में वह कीवर्ड क्यों नहीं मिला। –

+0

विभिन्न matplotlib कार्यों में सभी कीवर्ड तर्कों में खो जाना आसान है। यह दस्तावेज़ों में है, हालांकि, मैं वादा करता हूँ! :) किसी भी दर पर मदद करने के लिए खुशी हुई। –