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

GeauxEric
fuente

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
Phillip Cloud
fuente
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
joelostblom
fuente