imshow () का आंकड़ा बहुत छोटा है


96

मैं matlab में imagesc () के समान होने के बाद से imshow () का उपयोग करते हुए एक सुस्पष्ट सरणी की कल्पना करने की कोशिश कर रहा हूं।

imshow(random.rand(8, 90), interpolation='nearest')

परिणामी आंकड़ा ग्रे विंडो के केंद्र में बहुत छोटा है, जबकि अधिकांश स्थान अप्रकाशित है। मैं आकृति को बड़ा बनाने के लिए पैरामीटर कैसे सेट कर सकता हूं? मैंने अंजीर की कोशिश की = (xx, xx) और यह वह नहीं है जो मैं चाहता हूं। धन्यवाद!


1
इस पोस्ट को मेरे जैसे अन्य लोगों द्वारा इस पोस्ट पर उतरने के लिए संघर्ष करने पर --- इस समस्या को सबसे अधिक देखा जाता है जब x और y डेटा परिमाण के विभिन्न आदेशों के होते हैं; @ bmu का जवाब इसे ठीक करता है
द्वापर

जवाबों:


139

यदि आप एक aspectतर्क नहीं देते हैं imshow, तो यह image.aspectआपके लिए मूल्य का उपयोग करेगा matplotlibrc। एक नया में इस मान की डिफ़ॉल्ट matplotlibrcहै equal। तो imshowआपके एरे को समान पहलू अनुपात के साथ प्लॉट करेगा।

क्या आप सेट कर सकते हैं एक समान पहलू की जरूरत नहीं है aspectकरने के लिएauto

imshow(random.rand(8, 90), interpolation='nearest', aspect='auto')

जो निम्नलिखित आंकड़ा देता है

imshow-ऑटो

यदि आप एक समान पहलू अनुपात चाहते हैं तो आपको पहलू के figsizeअनुसार अपना अनुकूलन करना होगा

fig, ax = subplots(figsize=(18, 2))
ax.imshow(random.rand(8, 90), interpolation='nearest')
tight_layout()

जो आपको देता है:

imshow-बराबर


पहलू अनुपात को परिभाषित करने के अलावा, क्या रंगीन टाइलों का आकार प्राप्त करना (परिभाषित करना) संभव है?
अलेक्जेंडर सीस्का

36

यह अजीब है, यह निश्चित रूप से मेरे लिए काम करता है:

from matplotlib import pyplot as plt

plt.figure(figsize = (20,2))
plt.imshow(random.rand(8, 90), interpolation='nearest')

मैं "macOSX" बैकेंड, btw का उपयोग कर रहा हूँ।


4
स्पष्ट होने के लिए, यह होना चाहिए plt.figure(figsize = (x_new, y_new))और imgshow () के लिए अब आपको ioimage आयात करना होगा क्योंकि SciPy imageshow () को जल्द ही हटा दिया जाएगा
Agile Bean

1
@AgileBean यह उपयोगी होगा यदि आप या तो इस पोस्ट को उस जानकारी के साथ संपादित करते हैं या इस प्रश्न के उत्तर के रूप में इसे जोड़ते हैं
baxx

2

मैं अजगर के लिए भी नया हूं। यहाँ कुछ ऐसा है जो दिखता है कि आप क्या करना चाहते हैं

axes([0.08, 0.08, 0.94-0.08, 0.94-0.08]) #[left, bottom, width, height]
axis('scaled')`

मेरा मानना ​​है कि यह कैनवास के आकार को तय करता है।


1

अद्यतन 2020

जैसा कि @baxxx द्वारा अनुरोध किया गया है, यहां एक अपडेट है क्योंकि random.randइस बीच पदावनत किया गया है।

यह matplotlip 3.2.1 के साथ काम करता है:

from matplotlib import pyplot as plt
import random
import numpy as np

random = np.random.random ([8,90])

plt.figure(figsize = (20,2))
plt.imshow(random, interpolation='nearest')

यह भूखंड:

यहां छवि विवरण दर्ज करें

यादृच्छिक संख्या को बदलने के लिए, आप np.random.normal(0,1,(8,90))(यहां का मतलब = 0, मानक विचलन = 1) के साथ प्रयोग कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.