Ich verwende Pandas, um aus einem Datenrahmen einen Plot zu generieren, den ich in einer Datei speichern möchte:
dtf = pd.DataFrame.from_records(d,columns=h)
fig = plt.figure()
ax = dtf2.plot()
ax = fig.add_subplot(ax)
fig.savefig('~/Documents/output.png')
Es scheint, als sollte die letzte Zeile mit matplotlibs savefig den Trick machen. Dieser Code erzeugt jedoch den folgenden Fehler:
Traceback (most recent call last):
File "./testgraph.py", line 76, in <module>
ax = fig.add_subplot(ax)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 890, in add_subplot
assert(a.get_figure() is self)
AssertionError
Alternativ kann der Versuch, savefig direkt im Plot aufzurufen, auch folgende Fehler verursachen:
dtf2.plot().savefig('~/Documents/output.png')
File "./testgraph.py", line 79, in <module>
dtf2.plot().savefig('~/Documents/output.png')
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Ich denke, ich muss irgendwie die von plot () zurückgegebene Nebenhandlung zu einer Figur hinzufügen, um savefig zu verwenden. Ich frage mich auch, ob dies vielleicht mit der Magie hinter der AxesSubPlot-Klasse zu tun hat .
BEARBEITEN:
Das Folgende funktioniert (ohne Fehler), hinterlässt aber ein leeres Seitenbild ....
fig = plt.figure()
dtf2.plot()
fig.savefig('output.png')
EDIT 2: Der folgende Code funktioniert auch gut
dtf2.plot().get_figure().savefig('output.png')
ax.figure.savefig(...)