2016-03-27 29 views
1

matplotlib numaralı telefondan imshow'u kullanarak bir şekil çizmek istiyorum, bunun için genişliğini ve yüksekliğini yararlı bir şekilde ayarlayabilirim. Bunu yapmak için figsize kullanabileceğimi düşündüm, ama düşündüğüm şekilde davranıyor. Aşağıdaki MWe kullanarak ÖrneğinBir imshow matplotlib görselleştirmesinin genişliğini değiştirmek mümkün mü?

: Burada

import matplotlib.pyplot as plt 
import numpy as np 

N = 100 
width = 20 
height = 20 
Z = np.random.random((width,height)) 

G = np.zeros((width,height,3)) 

# Here we set the RGB for each pixel 
G[Z>0.5] = [1,1,1] 
G[Z<0.5] = [0,0,0] 

plt.figure(figsize = (2, 5)) 
plt.imshow(G,interpolation='nearest') 
plt.grid(False) 
plt.show() 

ne alıyorum:

enter image description here

Ben figsize = (2, 5)figsize = (2, 2) değiştirirseniz, örneğin, oranlar değişiklik yok !

Birkaç farklı değer denedikten sonra bunun grafik bir dikdörtgen gibi bir kutu olarak işlenmesinden kaynaklandığını düşünüyorum: tek tek matris girişlerine figsize ayarlamam önemli değil sabit bir kutudur.

Örn. matplotlib öğesinin, örn. 800x400px?

cevap

2

imshow varsayılan davranışı, ana bilgisayar eksenlerinin en boy oranını 'eşit' olacak şekilde ayarlamaktır (yani veri birimlerindeki kareler, ekran alanında karelerdir). Bunu umursamıyorsanız, sadece yönü otomatik olarak ayarlayın.

import matplotlib.pyplot as plt 
import numpy as np 


N = 100 
width = 20 
height = 20 
Z = np.random.random((width, height)) 

G = np.zeros((width, height, 3)) 

# Here we set the RGB for each pixel 
G[Z > 0.5] = [1, 1, 1] 
G[Z < 0.5] = [0, 0, 0] 

fig, ax = plt.subplots(figsize=(2, 5)) 
ax.imshow(G, interpolation='nearest') 
ax.set_aspect('auto') 
plt.show() 
+0

Basit bir soru sorun, bir ekip tarafından müthiş bir yanıt alın --- teşekkürler, işiniz için teşekkürler! –

İlgili konular