Guardar gráficos en matplotlib

Cuando tu gráfico esté listo puedes exportarlo a un archivo con savefig. Este tutorial explica los argumentos más importantes para obtener la imagen exactamente como quieres.

Guardar una figura con savefig

Llama a plt.savefig o a fig.savefig con el nombre del archivo. El formato se deduce de la extensión.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.pie([45, 30, 15, 10], labels = ["A", "B", "C", "D"], autopct = "%1.0f%%")
ax.set_title("mi_grafico.png", family = "monospace")
# plt.show()

Gráfico guardado con savefig en matplotlib

fig.savefig("mi_grafico.png")

Importante: llama a savefig antes de plt.show(). En algunos entornos show limpia la figura y el archivo guardado estará vacío.

Formatos de archivo

Matplotlib admite formatos de mapa de bits como PNG y JPG y formatos vectoriales como PDF, SVG y EPS. Los formatos vectoriales se pueden escalar sin perder calidad, por lo que son la mejor opción para publicaciones y documentos.

fig.savefig("mi_grafico.png")
fig.savefig("mi_grafico.jpg")
fig.savefig("mi_grafico.pdf")
fig.savefig("mi_grafico.svg")

Resolución con dpi

En los formatos de mapa de bits el argumento dpi establece la resolución. Un valor de 300 suele ser suficiente para imprimir. El tamaño en píxeles del archivo es el tamaño de la figura en pulgadas multiplicado por los DPI.

fig.savefig("mi_grafico.png", dpi = 300)

Eliminar el espacio en blanco o evitar elementos recortados

Con bbox_inches = "tight" matplotlib ajusta el área guardada al contenido de la figura. Así se elimina el espacio en blanco sobrante y se evita recortar elementos situados fuera de los ejes, como una leyenda fuera del gráfico. pad_inches controla el margen restante.

fig.savefig("mi_grafico.png", bbox_inches = "tight", pad_inches = 0.1)

Fondo transparente

Establece transparent = True para guardar la imagen sin fondo, por ejemplo para colocarla sobre una diapositiva de color. Utiliza facecolor para guardarla con un color de fondo diferente.

fig.savefig("mi_grafico.png", transparent = True)
fig.savefig("mi_grafico.png", facecolor = "lightyellow")

Varias figuras en un solo PDF

PdfPages permite guardar varias figuras como páginas de un mismo archivo PDF.

import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

with PdfPages("informe.pdf") as pdf:
    for i in range(3):
        fig, ax = plt.subplots()
        ax.plot(range(10), [v ** (i + 1) for v in range(10)])
        pdf.savefig(fig)
        plt.close(fig)

Si creas muchas figuras en un bucle, cierra cada una con plt.close(fig) después de guardarla para liberar memoria. Para controlar el tamaño de la imagen guardada consulta el tutorial sobre el tamaño de la figura en matplotlib.

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon

También te puede interesar