zapisz pandas.Series histogram plot do pliku


85

W ipython Notebook najpierw utwórz obiekt serii pandy, a następnie wywołując metodę instancji .hist (), przeglądarka wyświetli figurę.

Zastanawiam się jak zapisać tę figurę do pliku (mam na myśli nie kliknięcie prawym przyciskiem i zapisanie jako, ale polecenia potrzebne w skrypcie).

Odpowiedzi:


173

Skorzystaj z takiej Figure.savefig()metody:

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

To nie musi się kończyć pdf, jest wiele opcji. Sprawdź dokumentację .

Alternatywnie możesz użyć pyplotinterfejsu i po prostu wywołać funkcję savefigjako, aby zapisać ostatnio utworzoną figurę:

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

7
jeśli otrzymujesz ten błąd AttributeError: 'numpy.ndarray' object has no attribute 'get_figure', prawdopodobnie rysujesz wiele kolumn, np s.hist(columns=['colA', 'colB']). W tym przypadku axbędzie tablicą wszystkich osi. Możesz spróbować ax[0].get_figure()lubax[0][0].get_figure()
toto_tico

1
Kilkakrotnie oszczędzam dwie działki. Ale nadpisuje pierwszy wykres, a drugi wygląda jak suma dwóch wykresów. Czy ktoś wie, jak rozwiązać ten problem?
Capan

1
@bukowski Dodaj import matplotlib.pyplot as plti plt.close().
Acumenus

Jeśli ktoś robi pętlę i wiele figur, można zrobić, fig.clf()aby wyczyścić figurę.
tommy.carstensen

7

Możesz użyć ax.figure.savefig():

import pandas as pd

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

Nie ma to praktycznej korzyści w porównaniu z ax.get_figure().savefig()sugestią Philipa Clouda, więc możesz wybrać opcję, którą uważasz za najbardziej estetyczną. W rzeczywistości get_figure()po prostu zwracaself.figure :

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.