imshow () figürü çok küçük


101

Matlab'daki imagesc () ile benzer olduğu için, imshow () kullanarak uyuşmuş bir dizi görselleştirmeye çalışıyorum.

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

Ortaya çıkan şekil gri pencerenin ortasında çok küçükken, alanın çoğu boştur. Şekli büyütmek için parametreleri nasıl ayarlayabilirim? Figsize = (xx, xx) denedim ve istediğim bu değil. Teşekkürler!


1
Sadece benim gibi başkalarının bu gönderiye inmek için mücadele etmesi durumunda bu yorumu eklemek --- sorun (en görünür şekilde) x ve y verileri farklı büyüklük sıralarında olduğunda ortaya çıkar; @ bmu'nun cevabı sorunu düzeltir
mwarrior

Yanıtlar:


151

Bir aspectargüman vermezseniz , sizin imshowiçin değerini kullanacaktır . Yeni bu değer için varsayılan olduğunu . Böylece dizinizi eşit en boy oranıyla çizeceksiniz.image.aspectmatplotlibrcmatplotlibrcequalimshow

Eğer ayarlayabilirsiniz eşit yönü gerekmiyorsa aspectiçinauto

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

aşağıdaki şekli veren

imshow-auto

Eşit bir en boy oranı istiyorsanız, en boy oranına figsizegöre ayarlamanız gerekir.

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

bu size verir:

imshow-eşit


En boy oranını tanımlamanın yanı sıra, renkli karoların boyutunu elde etmek (tanımlamak) mümkün mü?
Alexander Cska

40

Bu garip, kesinlikle benim için çalışıyor:

from matplotlib import pyplot as plt

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

"MacOSX" arka ucunu kullanıyorum, btw.


5
Açık olmak plt.figure(figsize = (x_new, y_new))gerekirse , öyle olmalı ve imgshow () için şimdi ioimage'ı içe aktarmalısınız çünkü SciPy resim gösterisi () yakında kullanımdan kaldırılacak
Agile Bean

1
@AgileBean, ya bu yazıyı bu bilgilerle düzenlerseniz ya da bu soruya bir cevap olarak eklerseniz yararlı olacaktır
baxx

2

Ben de python'da yeniyim. İşte istediğinizi yapacak gibi görünen bir şey

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

Bunun tuvalin büyüklüğüne karar verdiğine inanıyorum.


1

2020 Güncellemesi

@baxxx tarafından talep edildiği gibi, random.randbu arada kullanımdan kaldırıldığı için burada bir güncelleme var .

Bu matplotlip 3.2.1 ile çalışır:

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

Bu araziler:

görüntü açıklamasını buraya girin

Rastgele sayıyı değiştirmek için deney yapabilirsiniz np.random.normal(0,1,(8,90))(burada ortalama = 0, standart sapma = 1).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.