2017-12-16 8 views
2

Wenn der folgende CodeWie ändere ich das Subplot Breite/Höhe-Verhältnis mit Matplotlib.pyplot?

ausgeführt wird
import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
a=[[1,2,3],[4,4,4]] 
gridspec.GridSpec(2,1) 
plt.subplot2grid((2,1), (0,0), colspan=2, rowspan=1) 
plt.figure(figsize=(10, 5)) 
plt.imshow(a) 
plt.savefig('fig.png',bbox_inches='tight') 

ich das Bild unten bekam. Wie legt man das Verhältnis Breite/Höhe des Nebenplots als 1: 2 fest, so dass es länger sein kann?

enter image description here

Im Grunde, wie dies zu tun: enter image description here

Antwort

2

standardmäßig matplotlib zeigt Bilder mit einem 1: 1-Seitenverhältnis, d.h. jedes Pixel ist so breit wie hoch ist. Aspekt ist definiert als Höhe/Breite. Sie können aspect=2 setzen, um ein Bild mit doppelt so hohen wie hohen Pixeln zu erhalten.

plt.imshow(a, aspect=2) 
+0

vielen Dank. Es hat also nichts mit 'gridspec' und' figsize' zu ​​tun? – lanselibai

+0

Unabhängig vom Aspekt der Teilplots können Sie natürlich eine Rasterspezifikation verwenden, um das Teilplot zu positionieren oder die Größe der Figur zu ändern. Für das einfache Problem der Frage scheint es keine Beziehung zwischen Aspekt und Gitter- oder Feigengröße zu geben. (Abgesehen von der Tatsache, dass es sinnvoll ist, eine Figurgröße zu verwenden, die den Subplot des gewünschten Aspekts in der Leinwand irgendwie gut aussehen lässt.) – ImportanceOfBeingErnest

0

Diese Linie legt die Größe der Parzelle

plt.figure(figsize=(5, 10)) 

5 entspricht die Höhe und 10 zur Breite. Erhöhen Breite länger Grundstück zu lernen,

plt.figure(figsize=(5, 20)) 
+0

Vielen Dank, aber ich möchte die Größe der Subplot ändern, nicht die Figur. Ich wechselte jetzt zu "figsize = (10, 5)", aber immer noch dasselbe. – lanselibai