Matplotlib savefig()-Funktion


Matplotlib 参考文档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

ParameterTypeBeschreibung
fnamestr oder Path oder dateiähnlichAusgabedateiname oder Dateiobjekt. Die Erweiterung bestimmt automatisch das Format, z. B. 'plot.png', 'plot.pdf', 'plot.svg'
dpifloat oder 'figure'Ausgabeauflösung (dots per inch). 'figure' verwendet den eigenen dpi-Wert der Figure. Übliche Werte: 72 (Bildschirm), 150 (allgemein), 300 (Druck)
formatstrAusgabeformat, z. B. 'png', 'pdf', 'svg', 'eps', 'jpg'. Wenn nicht angegeben, wird es aus dem Dateinamen abgeleitet
bbox_inchesstr oder BboxZuschneidegrenzen: 'tight' (enges Zuschneiden, entfernt überschüssigen Weißraum), None (verwendet die ursprüngliche Größe der Figure)
pad_inchesfloatAbstand (in Zoll), wenn bbox_inches='tight', Standard 0.1
facecolorcolor oder 'auto'Hintergrundfarbe des Ausgabebilds; 'auto' verwendet die facecolor der Figure
edgecolorcolor oder 'auto'Rahmenfarbe des Ausgabebilds
transparentboolWenn True, wird der Hintergrund transparent gesetzt (nur png/svg)
metadatadictMetadaten, die in die Datei geschrieben werden (von einigen Formaten unterstützt)

Muss seinplt.show()zuvor aufgerufensavefig(), weil show() die Figure löscht. Oder verwenden Siefig.savefig()Geben Sie das Figure-Objekt an.

Unterstützte Dateiformate

FormatErweiterungFunktionen
PNG.pngBitmap, unterstützt Transparenz, am häufigsten verwendet
PDF.pdfVektorgrafik, geeignet für Publikationen, kann in LaTeX eingebettet werden
SVG.svgVektorgrafik, bearbeitbar in Browsern/Editoren
EPS.epsVektorgrafik, traditionelles Publikationsformat
JPEG.jpg / .jpegBitmap, verlustbehaftete Komprimierung, kleine Dateigröße, unterstützt aber keine Transparenz
TIFF.tiff / .tifBitmap, verlustfrei, für die Archivierung geeignet

Anwendungsbeispiele

Beispiel 1: Grundlegendes Speichern

Beispiel

import matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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.


Matplotlib 参考文档Matplotlib-Referenzdokumentation

Andere Erweiterungen