Speichern Sie ein Pandas.Series-Histogramm in einer Datei

82

Erstellen Sie in ipython Notebook zuerst ein Pandas Series-Objekt. Anschließend ruft der Browser die Abbildung auf, indem Sie die Instanzmethode .hist () aufrufen.

Ich frage mich, wie ich diese Figur in einer Datei speichern kann (ich meine nicht durch Rechtsklick und Speichern unter, sondern die im Skript benötigten Befehle).

GeauxEric
quelle

Antworten:

165

Verwenden Sie die Figure.savefig()Methode wie folgt:

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

Es muss nicht enden pdf, es gibt viele Möglichkeiten. Lesen Sie die Dokumentation .

Alternativ können Sie die pyplotSchnittstelle verwenden und einfach savefigals Funktion aufrufen , um die zuletzt erstellte Figur zu speichern:

import matplotlib.pyplot as plt
s.hist()
plt.savefig('path/to/figure.pdf')  # saves the current figure
Phillip Cloud
quelle
5
Wenn Sie diesen Fehler erhalten AttributeError: 'numpy.ndarray' object has no attribute 'get_figure', ist es wahrscheinlich, dass Sie mehrere Spalten zeichnen, z s.hist(columns=['colA', 'colB']). In diesem Fall ist axein Array aller Achsen. Sie können versuchen ax[0].get_figure()oderax[0][0].get_figure()
toto_tico
1
Ich speichere zwei Grundstücke wiederholt. Aber es überschreibt die erste Handlung und die zweite sieht aus wie die Summe von zwei Handlungen. Weiß jemand, wie man dieses Problem löst?
Capan
1
@bukowski Hinzufügen import matplotlib.pyplot as pltund plt.close().
Acumenus
Wenn man eine Schleife und mehrere Figuren macht, kann man fig.clf()die Figur löschen.
tommy.carstensen
7

Sie können verwenden ax.figure.savefig():

import pandas as pd

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

Dies hat keinen praktischen Vorteil gegenüber dem, ax.get_figure().savefig()wie in der Antwort von Philip Cloud vorgeschlagen, sodass Sie die Option auswählen können, die Sie am ästhetischsten finden. In der Tat get_figure()einfach zurückself.figure :

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
joelostblom
quelle