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.
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()

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.
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")
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)
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)
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")
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.
También te puede interesar