Wie kann man in Matplotlib nur die Größe des „Zeichnungs“-Bereichs korrigieren (Titel und Beschriftungen ignorieren)?Python

Python-Programme
Guest
 Wie kann man in Matplotlib nur die Größe des „Zeichnungs“-Bereichs korrigieren (Titel und Beschriftungen ignorieren)?

Post by Guest »

Ich erstelle Diagramme für eine Forschungsarbeit mit Pythons Matplotlib und möchte, dass alle Diagramme die genau gleiche Größe für den „inneren“ Datenbereich haben (wo das Diagramm oder Bild tatsächlich gezeichnet wird). . Standardmäßig legt figsize die Gesamtabmessungen der Figur fest, einschließlich Ränder für Titel, Achsenbeschriftungen, Teilstrichbeschriftungen, Farbbalken usw. Wenn ich also eine Imshow mit Titel/Beschriftungen/Farbleiste und eine andere ohne habe Bei ihnen ändert sich der tatsächliche zeichenbare Bereich – d. h. der Bereich, in dem die Daten gerendert werden, ist zwischen den beiden Figuren nicht gleich groß.
Das wird noch anspruchsvoller mit Nebenhandlungen. Wenn ich beispielsweise plt.subplots(1, 1) mit einem Titel, Achsenbeschriftungen und einer Farbleiste verwende und es mit plt.subplots(4, 4) (16 Unterplots in a Raster), ist es ziemlich schwierig, jeden dieser Nebenplot-Zeichnungsbereiche durch einfaches Anpassen von figsize auf exakt die gleiche Größe zu bringen. Oftmals verändert der von der Farbleiste, den Achsenmarkierungen/-beschriftungen und den Unterplotabständen beanspruchte Platz den verfügbaren Datenbereich auf eine Art und Weise, die nur schwer zu standardisieren ist.
Gibt es eine Möglichkeit, die Daten festzulegen? Bereich auf eine feste Abmessung (z. B. 2 Zoll x 2 Zoll) unabhängig von Titeln, Beschriftungen, Farbbalken oder Nebenplotkonfiguration? Im Idealfall möchte ich sicherstellen, dass, wenn ich Titel oder Achsenbeschriftungen aus einer Abbildung entferne – oder die Anzahl der Unterplots ändere –, der Datenbereich jeder Achse die gleiche Größe behält wie in einer anderen Abbildung, die nicht hat Titel/Beschriftungen oder verwendet ein anderes Nebenplot-Layout.
Für Vorschläge oder Codebeispiele wäre ich sehr dankbar. Vielen Dank!
Beispiele:

Code: Select all

## No title, axis labels, or colorbar
fig, ax = plt.subplots(figsize=(4, 2))
ax.imshow(np.sin(np.linspace(0, 10, 100)).reshape(-1, 1),
aspect='auto',
cmap='Spectral')
plt.tight_layout()
plt.show()
Image

Code: Select all

## Same plot as above with title, axis labels, and colorbar
fig, ax = plt.subplots(figsize=(4, 2))
im = ax.imshow(np.sin(np.linspace(0, 10, 100)).reshape(-1, 1),
aspect='auto',
cmap='Spectral')
ax.set_title('Sine Wave', fontsize=16, fontfamily='monospace')
ax.set_xlabel('Time', fontsize=16, fontfamily='monospace')
ax.set_ylabel('Amplitude', fontsize=16, fontfamily='monospace')
plt.colorbar(im, ax=ax, aspect=3)
plt.tight_layout()
plt.show()
Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post