Matplotlib savefig()-Funktion
Matplotlib-Referenzdokumentation
savefig()Dient zum Speichern der aktuellen Figure als Bilddatei; unterstützt PNG, PDF, SVG, EPS und andere Formate.
Es ist die zentrale Methode, um Matplotlib-Diagramme in Dateien zu exportieren, die gemeinsam genutzt und in Dokumente eingebettet werden können.
Funktionsdefinition
pyplot-Schnittstelle
matplotlib.pyplot.savefig(fname, *, dpi='figure', format=None,
metadata=None, bbox_inches=None, pad_inches=0.1, facecolor='auto',
edgecolor='auto', backend=None, **kwargs)
Figure-Methode
Figure.savefig(fname, *, dpi='figure', format=None, metadata=None,
bbox_inches=None, pad_inches=0.1, facecolor='auto',
edgecolor='auto', backend=None, **kwargs)
Parameterbeschreibung
| Parameter | Type | Beschreibung |
|---|---|---|
| fname | str oder Path oder dateiähnlich | Ausgabedateiname oder Dateiobjekt. Die Erweiterung bestimmt automatisch das Format, z. B. 'plot.png', 'plot.pdf', 'plot.svg' |
| dpi | float oder 'figure' | Ausgabeauflösung (dots per inch). 'figure' verwendet den eigenen dpi-Wert der Figure. Übliche Werte: 72 (Bildschirm), 150 (allgemein), 300 (Druck) |
| format | str | Ausgabeformat, z. B. 'png', 'pdf', 'svg', 'eps', 'jpg'. Wenn nicht angegeben, wird es aus dem Dateinamen abgeleitet |
| bbox_inches | str oder Bbox | Zuschneidegrenzen: 'tight' (enges Zuschneiden, entfernt überschüssigen Weißraum), None (verwendet die ursprüngliche Größe der Figure) |
| pad_inches | float | Abstand (in Zoll), wenn bbox_inches='tight', Standard 0.1 |
| facecolor | color oder 'auto' | Hintergrundfarbe des Ausgabebilds; 'auto' verwendet die facecolor der Figure |
| edgecolor | color oder 'auto' | Rahmenfarbe des Ausgabebilds |
| transparent | bool | Wenn True, wird der Hintergrund transparent gesetzt (nur png/svg) |
| metadata | dict | Metadaten, die in die Datei geschrieben werden (von einigen Formaten unterstützt) |
Muss sein
plt.show()zuvor aufgerufensavefig(), weil show() die Figure löscht. Oder verwenden Siefig.savefig()Geben Sie das Figure-Objekt an.
Unterstützte Dateiformate
| Format | Erweiterung | Funktionen |
|---|---|---|
| PNG | .png | Bitmap, unterstützt Transparenz, am häufigsten verwendet |
| Vektorgrafik, geeignet für Publikationen, kann in LaTeX eingebettet werden | ||
| SVG | .svg | Vektorgrafik, bearbeitbar in Browsern/Editoren |
| EPS | .eps | Vektorgrafik, traditionelles Publikationsformat |
| JPEG | .jpg / .jpeg | Bitmap, verlustbehaftete Komprimierung, kleine Dateigröße, unterstützt aber keine Transparenz |
| TIFF | .tiff / .tif | Bitmap, verlustfrei, für die Archivierung geeignet |
Anwendungsbeispiele
Beispiel 1: Grundlegendes Speichern
Beispiel
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(x, np.sin(x), label='sin(x)')
ax.set_title('Save Figure Demo')
ax.legend()
# Als PNG speichern
fig.savefig('example_plot.png')
print("Beispiel: gespeichert als example_plot.png")
# Als PDF speichern (Vektor)
fig.savefig('example_plot.pdf')
print("Beispiel: gespeichert als example_plot.pdf")
plt.show()
Beispiel 2: Hochauflösende Ausgabe + Enges Zuschneiden
Beispiel
import numpy as np
fig, ax = plt.subplots(figsize=(8, 4))
x = np.linspace(0, 2*np.pi, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
ax.set_title('Hochauflösende Ausgabe')
ax.set_xlabel('Winkel (rad)')
ax.legend(loc='outside') # Legende außerhalb platzieren
# dpi=300: hochauflösende Qualität (für den Druck geeignet)
# bbox_inches='tight': automatisches Zuschneiden, um sicherzustellen, dass die Legende die Grenze nicht überschreitet
fig.savefig('example_hires.png', dpi=300, bbox_inches='tight')
print("Beispiel: hochauflösendes Bild gespeichert")
plt.show()
Beispiel 3: Transparenter Hintergrund + Verschiedene Formate
Beispiel
import numpy as np
fig, ax = plt.subplots(figsize=(6, 4))
# Dunklen Hintergrund festlegen, um den Transparenzeffekt zu demonstrieren
fig.patch.set_facecolor('#2c3e50')
ax.set_facecolor('#34495e')
ax.plot(np.random.randn(100).cumsum(),
color='#1A6BBC', linewidth=2)
ax.set_title('Transparenter Hintergrund',
color='white', fontsize=14)
ax.tick_params(colors='white')
# Transparenter Hintergrund PNG
fig.savefig('example_transparent.png',
transparent=True, # Transparenter Hintergrund
dpi=150, bbox_inches='tight')
# SVG kann auch transparent sein
fig.savefig('example_transparent.svg',
transparent=True,
bbox_inches='tight')
print("Beispiel: transparente Bilder gespeichert")
plt.show()
Beispiel 4: Stapelweises Speichern mehrerer Subplots
Beispiel
import numpy as np
# Eine große Abbildung mit mehreren Diagrammen erstellen
data = np.random.randn(4, 100)
for i in range(4):
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(data[i].cumsum(), color=f'C{i}', linewidth=2)
ax.set_title(f'Serie {i+1}')
ax.set_xlabel('Schritt')
ax.set_ylabel('Kumulative Summe')
ax.grid(True, alpha=0.3)
# Stapelweises Speichern, Dateiname enthält Index
fig.savefig(f'example_series_{i+1}.png',
dpi=200, bbox_inches='tight')
plt.close(fig) # Schließen, um die Anzeige zu vermeiden
print("Beispiel: 4 Abbildungen gespeichert (series_1 bis series_4)")
FAQ
Das gespeicherte Bild ist leer?
Prüfen Sie, ob savefig() nach show() aufgerufen wird. show() kann die Figure leeren.
Lösung: Rufen Sie savefig() vor show() auf, oder verwenden Siefig.savefig()Geben Sie das Figure-Objekt an.
Sind Text/Beschriftungen im Bild abgeschnitten?
Verwenden Siebbox_inches='tight'automatisches Zuschneiden, um sicherzustellen, dass alle Elemente innerhalb des Bildes liegen.
Wenn das Problem weiterhin besteht, können Sie denpad_inchesParameterwert erhöhen.
Andere Erweiterungen