Ich arbeite an einem Projekt, bei dem ich ein Diagrammraster aus 10 Zeilen und 3 Spalten erstellen muss. Obwohl ich in der Lage war, die Plots zu erstellen und die Subplots zu arrangieren, war ich nicht in der Lage, ein schönes Plot ohne Leerraum wie diesen unten von gridspec documentation . .
Ich habe die folgenden Posts ausprobiert, konnte aber den weißen Bereich nicht vollständig entfernen, wie im Beispielbild. Kann mir bitte jemand eine Anleitung geben? Vielen Dank!
Unten ist mein Code. Das vollständige Skript ist hier auf GitHub . Hinweis: images_2 und images_fool sind beide numpy Arrays von abgeflachten Bildern mit Shape (1032, 10), während delta ein Bild Array von Shape (28, 28) ist.
%Vor% Eine Anmerkung am Anfang: Wenn Sie die volle Kontrolle über den Abstand haben wollen, vermeiden Sie plt.tight_layout()
, da es versuchen wird, die Plots in Ihrer Figur so zu verteilen, dass sie gleichmäßig und schön verteilt sind. Dies ist meistens in Ordnung und erzeugt angenehme Ergebnisse, passt aber den Abstand nach Belieben an.
Der Grund, warum das GridSpec-Beispiel, das Sie aus der Matplotlib-Beispielgalerie zitieren, so gut ist, liegt daran, dass der Aspekt der Unterplots nicht vordefiniert ist. Das heißt, die Unterplots werden einfach auf dem Gitter erweitert und belassen den festgelegten Abstand (in diesem Fall wspace=0.0, hspace=0.0
) unabhängig von der Figurengröße.
Im Gegensatz dazu zeichnen Sie Bilder mit imshow
und der Aspekt des Bildes ist standardmäßig gleich (entspricht ax.set_aspect("equal")
). Das heißt, Sie könnten natürlich set_aspect("auto")
auf jedes Plot setzen (und zusätzlich wspace=0.0, hspace=0.0
als Argumente zu GridSpec hinzufügen, wie im Beispiel der Galerie), was zu einem Plot ohne Abstände führen würde.
Bei der Verwendung von Bildern ist es jedoch sehr sinnvoll, ein gleiches Seitenverhältnis beizubehalten, so dass jedes Pixel so breit wie hoch und ein quadratisches Array als quadratisches Bild dargestellt wird.
Was Sie dann tun müssen, ist mit der Bildgröße und den Bildrändern zu spielen, um das erwartete Ergebnis zu erhalten. Das figsize
Argument zur Zahl ist die Zahl (Breite, Höhe) in Zoll und hier kann das Verhältnis der beiden Zahlen mit gespielt werden. Und die Subplot-Parameter wspace, hspace, top, bottom, left
können manuell angepasst werden, um das gewünschte Ergebnis zu erzielen.
Unten ist ein Beispiel:
Bearbeiten:
Es ist natürlich wünschenswert, die Parameter nicht manuell anpassen zu müssen. So könnte man nach der Anzahl der Zeilen und Spalten einige optimale berechnen.
Tags und Links python matplotlib numpy