2012-11-14 18 views
61

मैं एक सॉफ्टवेयर सिस्टम लिख रहा हूं जो 3 डी डेटासेट के माध्यम से स्लाइस और अनुमानों को देखता है। मैं अपने विश्लेषण कोड से वापस आने वाले छवि बफर को देखने के लिए matplotlib और विशेष रूप से imshow का उपयोग कर रहा हूं।Imshow: सीमा और पहलू

चूंकि मैं प्लॉट अक्ष के साथ छवियों को एनोटेट करना चाहता हूं, इसलिए मैं डेटा स्पेस समन्वय प्रणाली में छवि बफर पिक्सेल निर्देशांक को मैप करने के लिए imshow आपूर्ति का उपयोग करता हूं।

असुविधाजनक, matplotlib इकाइयों के बारे में नहीं जानता है। कहें (एक कृत्रिम उदाहरण लेना) कि मैं 1000 m X 1 km के आयाम वाले चित्र को प्लॉट करना चाहता हूं। उस स्थिति में सीमा [0, 1000, 0, 1] की तरह कुछ होगी। यद्यपि छवि सरणी वर्ग है, चूंकि हद तक कीवर्ड का अनुमानित अनुपात अनुपात 1000 है, परिणामी प्लॉट अक्षों का भी 1000 का पहलू अनुपात होता है।

क्या अभी भी साजिश के पहलू अनुपात को मजबूर करना संभव है हद तक कीवर्ड का उपयोग कर स्वचालित रूप से जेनरेट किए गए प्रमुख टिक अंक और लेबल मुझे मिलते हैं?

उत्तर

103

आप छवि के पहलू को मैन्युअल रूप से सेट करके (या आकृति की सीमा को भरने के लिए इसे ऑटो-स्केल देकर) कर सकते हैं।

डिफ़ॉल्ट रूप से, imshow साजिश का पहलू 1 तक सेट करता है, क्योंकि अक्सर यह लोग छवि डेटा के लिए क्या चाहते हैं। - मुझे नहीं पता था कि मैं एक वर्ग खिड़की ठीक करने के लिए पहलू को संशोधित करने के लिए है कि

import matplotlib.pyplot as plt 
import numpy as np 

grid = np.random.random((10,10)) 

fig, (ax1, ax2, ax3) = plt.subplots(nrows=3, figsize=(6,10)) 

ax1.imshow(grid, extent=[0,100,0,1]) 
ax1.set_title('Default') 

ax2.imshow(grid, extent=[0,100,0,1], aspect='auto') 
ax2.set_title('Auto-scaled Aspect') 

ax3.imshow(grid, extent=[0,100,0,1], aspect=100) 
ax3.set_title('Manually Set Aspect') 

plt.tight_layout() 
plt.show() 

enter image description here

+3

बहुत बहुत शुक्रिया:

आपके मामले में, आप की तरह कुछ कर सकते हैं। मेरे भूखंड अब बिल्कुल सही लग रहे हैं! – ngoldbaum

+0

महान उत्तर - धन्यवाद! – zanbri

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