J'utilise pandas pour générer un tracé à partir d'un cadre de données, que je voudrais enregistrer dans un fichier:
dtf = pd.DataFrame.from_records(d,columns=h)
fig = plt.figure()
ax = dtf2.plot()
ax = fig.add_subplot(ax)
fig.savefig('~/Documents/output.png')
Il semble que la dernière ligne, utilisant la sauvegarde de matplotlib, devrait faire l'affaire. Mais ce code produit l'erreur suivante:
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
Alternativement, essayer d'appeler savefig directement sur le graphe entraîne également une erreur:
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'
Je pense que je dois en quelque sorte ajouter la sous-parcelle renvoyée par plot () à une figure afin d'utiliser savefig. Je me demande également si cela a peut-être à voir avec magie derrière la classe AxesSubPlot.
MODIFIER:
les travaux suivants (ne soulevant aucune erreur), mais me laisse avec une image de page vierge ....
fig = plt.figure()
dtf2.plot()
fig.savefig('output.png')
EDIT 2: Le code ci-dessous fonctionne aussi bien
dtf2.plot().get_figure().savefig('output.png')
La méthode gcf est obsolète en V 0.14, le code ci-dessous fonctionne pour moi:
plot = dtf.plot()
fig = plot.get_figure()
fig.savefig("output.png")
Donc, je ne suis pas tout à fait sûr de savoir pourquoi cela fonctionne, mais cela enregistre une image avec mon intrigue:
dtf = pd.DataFrame.from_records(d,columns=h)
dtf2.plot()
fig = plt.gcf()
fig.savefig('output.png')
J'imagine que le dernier extrait de mon message d'origine a été sauvegardé en blanc, car la figure ne recevait jamais les axes générés par les pandas. Avec le code ci-dessus, l'objet figure est renvoyé d'un état global magique par l'appel de gcf () (obtenir le chiffre actuel), qui se met automatiquement dans les axes tracés dans la ligne ci-dessus.
Il me semble facile d’utiliser la fonction plt.savefig()
après la fonction plot()
:
import matplotlib.pyplot as plt
dtf = pd.DataFrame.from_records(d,columns=h)
dtf.plot()
plt.savefig('~/Documents/output.png')
cela peut être une approche plus simple:
(DesiredFigure) .get_figure (). Savefig ('figure_name.png')
c'est à dire.
dfcorr.hist(bins=50).get_figure().savefig('correlation_histogram.png')