Cómo guardar gráficos como un archivo de imagen sin mostrar en Matplotlib

Suraj Joshi 30 enero 2023
  1. Matplotlib savefig() método para guardar la imagen
  2. Método matplotlib.pyplot.imsave() para guardar la imagen
Cómo guardar gráficos como un archivo de imagen sin mostrar en Matplotlib

Simplemente podemos guardar gráficos generados a partir de Matplotlib usando los métodos savefig() e imsave(). Si estamos en modo interactivo, la trama podría mostrarse. Para evitar la visualización de la trama, utilizamos los métodos close() e ioff().

Matplotlib savefig() método para guardar la imagen

Podemos guardar gráficos generados a partir de Matplotlib usando matplotlib.pyplot.savefig(). Podemos especificar la ruta y el formato en savefig() en el que se debe guardar el diagrama.

Sintaxis:

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,
)

Aquí, fname representa el nombre de archivo relativo a la ruta con respecto al directorio actual.

Guardar la trama sin mostrar en modo interactivo

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")

Esto guarda el diagrama generado con el nombre como Plot generated using Matplotlib.png en el directorio de trabajo actual.

También podemos guardar gráficos en otros formatos como png, jpg, svg, pdf y muchos más. Del mismo modo, podemos usar diferentes argumentos del método figsave() para personalizar la imagen.

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")

Esto guarda la trama como Customed Plot.pdf dentro del directorio de trabajo. Aquí, ppp = 300 representa 300 puntos por pulgada en la imagen guardada, y bbox_inches='tight' representa ningún cuadro delimitador alrededor de la imagen de salida.

Guardar la trama sin mostrar en modo no interactivo

Sin embargo, si estamos en modo interactivo, la figura siempre se muestra. Para evitar esto, cerramos con fuerza la ventana de la figura para evitar que se muestre el gráfico utilizando los métodos close() e ioff() El modo interactivo se activa debido al método ion().

Evite mostrar con el método close()

matplotlib.pyplot.close se puede usar para cerrar la ventana de la figura.

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")

Evite mostrar con el método ioff()

Podemos desactivar el modo interactivo utilizando los métodos matplotlib.pyplot.ioff(). Esto evita que se muestre la figura.

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")

Método matplotlib.pyplot.imsave() para guardar la imagen

Podemos usar matplotlib.pyplot.imsave() para guardar matrices como archivos de imagen en Matplotlib.

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