Wie man Plots als Bilddatei speichert, ohne sie in Matplotlib anzuzeigen

Suraj Joshi 30 Januar 2023
  1. Matplotlib savefig() Methode zum Speichern des Bildes
  2. matplotlib.pyplot.imsave() Methode zur Bildspeicherung
Wie man Plots als Bilddatei speichert, ohne sie in Matplotlib anzuzeigen

Wir können von Matplotlib generierte Plots einfach mit den Methoden savefig() und imsave() speichern. Wenn wir uns im interaktiven Modus befinden, wird der Plot möglicherweise angezeigt. Um die Anzeige des Plots zu vermeiden, verwenden wir die Methoden close() und ioff().

Matplotlib savefig() Methode zum Speichern des Bildes

Wir können von Matplotlib generierte Plots mit matplotlib.pyplot.savefig() speichern. Wir können den Pfad und das Format in savefig() angeben, in dem der Plot gespeichert werden soll.

Die Syntax:

matplotlib.pyplot.savefig(
    fname,
    dpi=None,
    facecolor="w",
    edgecolor="w",
    orientation="portrait",
    papertype=None,
    format=None,
    transparent=False,
    bbox_inches=None,
    pad_inches=0.1,
    frameon=None,
    metadata=None,
)

Hier steht fname für den Dateinamen relativ zum Pfad in Bezug auf das aktuelle Verzeichnis.

Plot speichern ohne Anzeige im interaktiven Modus

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.savefig("Plot generated using Matplotlib.png")

Dadurch wird der generierte Plot unter dem Namen Plot generated using Matplotlib.png im aktuellen Arbeitsverzeichnis gespeichert.

Wir können Plotts auch in anderen Formaten wie png, jpg, svg, pdf und vielen anderen speichern. In ähnlicher Weise können wir verschiedene Argumente der figsave() Methode verwenden, um das Bild anzupassen.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.savefig("Customed Plot.pdf", dpi=300, bbox_inches="tight")

Dies speichert den Plot als Customed Plot.pdf innerhalb des Arbeitsverzeichnisses. Hier repräsentiert dpi=300 300 dots per inch im gespeicherten Bild, und bbox_inches='tight' repräsentiert keinen Begrenzungsrahmen um das Ausgabebild.

Plot speichern ohne Anzeige im nicht-interaktiven Modus

Wenn wir uns jedoch im interaktiven Modus befinden, wird die Abbildung immer angezeigt. Um dies zu vermeiden, schließen wir das Abbildungsfenster gewaltsam, um die Anzeige des Plots mit den Methoden close() und ioff() zu verhindern. Der interaktive Modus wird wegen der ion() Methode eingeschaltet.

Anzeige mit close() Methode vermeiden

matplotlib.pyplot.close kann zum Schließen des Abbildungsfensters verwendet werden.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
fig = plt.figure()
plt.ion()
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.close(fig)
plt.savefig("Plot generated using Matplotlib.png")

Anzeige mit der Methode ioff() vermeiden

Wir können den interaktiven Modus mit den Methoden matplotlib.pyplot.ioff()ausschalten. Dadurch wird verhindert, dass die Abbildung angezeigt wird.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 100)
y = np.sin(x)
fig = plt.figure()
plt.ion()
plt.plot(x, y)
plt.title("Plot generated using Matplotlib")
plt.xlabel("x")
plt.ylabel("sinx")
plt.ioff()
plt.savefig("Plot generated using Matplotlib.png")

matplotlib.pyplot.imsave() Methode zur Bildspeicherung

Wir können matplotlib.pyplot.imsave() verwenden, um Arrays als Bilddateien in der Matplotlib zu speichern.

import numpy as np
import matplotlib.pyplot as plt

image = np.random.randn(100, 100)
plt.imsave("new_1.png", image)
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn