Matplotlib ist eine leistungsstarke Python-Bibliothek zum Erstellen von Visualisierungen. Das Speichern von Plots als Bilddateien ist eine gängige Aufgabe, aber das Standardverhalten, den Plot vor dem Speichern anzuzeigen, kann ineffizient sein. Dieser Artikel zeigt, wie man Matplotlib-Plots effizient direkt in Bilddateien speichert, ohne den Zwischenschritt der Anzeige.
Inhaltsverzeichnis
Plots mit savefig()
speichern
Die Methode savefig()
ist die vielseitigste Option zum Speichern von Matplotlib-Plots. Sie bietet Kontrolle über das Dateiformat, die Auflösung und die Figurengröße. Um die Anzeige des Plots zu vermeiden, rufen Sie savefig()
*vor* allen Befehlen auf, die den Plot anzeigen würden (wie plt.show()
). Denken Sie daran, die Figur mit plt.close()
zu schließen, um Speicher freizugeben, insbesondere wenn Sie mit zahlreichen Plots arbeiten.
import matplotlib.pyplot as plt
import numpy as np
# Beispiel-Daten
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Plot erstellen
plt.plot(x, y)
plt.xlabel("X-Achse")
plt.ylabel("Y-Achse")
plt.title("Sinuswelle")
# Figur speichern, OHNE sie anzuzeigen
plt.savefig("sine_wave.png", dpi=300, bbox_inches='tight') # dpi steuert die Auflösung, bbox_inches stellt sicher, dass alle Elemente enthalten sind
plt.close()
Dieser Code speichert den Plot als sine_wave.png
mit 300 DPI. Das Argument bbox_inches='tight'
stellt sicher, dass der gesamte Plot, einschließlich Beschriftungen und Titel, im gespeicherten Bild erfasst wird. Sie können das Dateiformat einfach ändern (z. B. „.pdf“, „.svg“, „.jpg“). Die vollständige Liste der unterstützten Formate finden Sie in der Matplotlib-Dokumentation.
Bild-Arrays mit imsave()
speichern
Zum direkten Speichern von Bild-Arrays bietet imsave()
einen prägnanteren Ansatz. Dies ist besonders nützlich, wenn Sie bereits Bilddaten als NumPy-Array generiert haben, wodurch die Erstellung eines Matplotlib-Figurenobjekts entfällt.
import matplotlib.pyplot as plt
import numpy as np
# Ein Beispiel-Bild-Array erstellen (Graustufen)
image_array = np.random.rand(256, 256)
# Das Bild-Array in eine Datei speichern
plt.imsave("random_image.png", image_array, cmap='gray')
Dieser Code erstellt und speichert ein 256×256 Graustufenbild. Das Argument cmap
gibt die Farbkarte an; hier wird ‚gray‘ verwendet. Es stehen andere Farbtabellen zur Verfügung. imsave()
ist effizient, da die Figurenhandhabung umgangen wird.
Zusammenfassend bieten sowohl savefig()
als auch imsave()
effiziente Möglichkeiten, Matplotlib-Ausgaben zu speichern, ohne sie anzuzeigen. Die beste Wahl hängt davon ab, ob Sie mit einer vollständigen Figur oder einem Rohbild-Array arbeiten. Die Priorisierung von savefig()
vor plt.show()
und die Verwendung von plt.close()
verbessern die Effizienz, insbesondere bei der Generierung vieler Bilder.