guardar un gráfico de histograma de pandas.Series en un archivo


82

En ipython Notebook, primero cree un objeto Pandas Series, luego, llamando al método de instancia .hist (), el navegador muestra la figura.

Me pregunto cómo guardar esta figura en un archivo (no me refiero a hacer clic derecho y guardar como, sino a los comandos necesarios en el script).

Respuestas:


165

Usa el Figure.savefig()método, así:

ax = s.hist()  # s is an instance of Series
fig = ax.get_figure()
fig.savefig('/path/to/figure.pdf')

No tiene por qué terminar en pdf, hay muchas opciones. Consulte la documentación .

Alternativamente, puede usar la pyplotinterfaz y simplemente llamar a savefigcomo función para guardar la figura creada más recientemente:

import matplotlib.pyplot as plt
s.hist()
plt.savefig('path/to/figure.pdf')  # saves the current figure

5
si AttributeError: 'numpy.ndarray' object has no attribute 'get_figure'recibe este error , es probable que esté trazando varias columnas, por ejemplo s.hist(columns=['colA', 'colB']). En este caso, axserá una matriz de todos los ejes. Puedes probar ax[0].get_figure()oax[0][0].get_figure()
toto_tico

1
Estoy guardando dos parcelas repetidamente. Pero sobrescribe el primer gráfico y el segundo parece la suma de dos gráficos. ¿Alguien sabe cómo solucionar este problema?
Capan

1
@bukowski Agregar import matplotlib.pyplot as plty plt.close().
Acumenus

Si uno está haciendo un bucle y varias figuras, entonces puede hacerlo fig.clf()para borrar la figura.
tommy.carstensen

7

Puede utilizar ax.figure.savefig():

import pandas as pd

s = pd.Series([0, 1])
ax = s.plot.hist()
ax.figure.savefig('demo-file.pdf')

Esto no tiene ningún beneficio práctico ax.get_figure().savefig()como se sugiere en la respuesta de Philip Cloud, por lo que puede elegir la opción que le resulte más agradable estéticamente. De hecho, get_figure()simplemente devuelveself.figure :

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.