我使用pandas从一个框架生成一个图,我想保存到一个文件中:
dtf = pd.DataFrame.from_records(d,columns=h)
fig = plt.figure()
ax = dtf2.plot()
ax = fig.add_subplot(ax)
fig.savefig('~/Documents/output.png')
看起来最后一行,使用matplotlib的savefig,应该可以做到这一点。但是这段代码产生了以下错误:
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
或者,尝试直接在图上调用savefig也会出错:
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'
我想我需要以某种方式将plot()返回的子图添加到一个图中,以便使用savefig。我还想知道这是否与AxesSubPlot类后面的magic有关。
编辑:
下面的工程(提高没有错误),但留给我一个空白页的形象..
fig = plt.figure()
dtf2.plot()
fig.savefig('output.png')
编辑2:下面的代码也可以正常工作
dtf2.plot().get_figure().savefig('output.png')
6条答案
按热度按时间u7up0aaq1#
gcf方法在V0.14中被删除,下面的代码对我来说很有效:
h22fl7wq2#
你可以使用
ax.figure.savefig()
,就像对这个问题的评论中建议的那样:与其他答案中建议的
ax.get_figure().savefig()
相比,这没有实际好处,因此您可以选择您认为最美观的选项。实际上,get_figure()
只是返回self.figure
:kulphzqa3#
所以我不完全确定为什么这是有效的,但它保存了一个图像与我的情节:
我猜我最初的帖子中的最后一个片段保存为空白,因为图从来没有得到pandas生成的轴。使用上面的代码,gcf()调用(get current figure)从一些神奇的全局状态返回图对象,它自动烘焙上面一行中绘制的轴。
aiqt4smr4#
对我来说,在
plot()
函数之后使用plt.savefig()
函数似乎很容易:qni6mghb5#
matplotlib.axes.Axes
的numpy.ndarray
使用
pandas.DataFrame.plot()
绘图kind='hist'
,但在指定'hist'
以外的内容时是相同的解决方案[0]
从数组中获取axes
之一,并使用.get_figure()
提取图形。使用
pandas.DataFrame.hist()
绘图1:
df.hist
分配给用plt.subplots
创建的Axes
,并保存fig
。4
和1
分别用于nrows
和ncols
,但是也可以使用其他配置,例如2
和2
。2:
.ravel()
来展平Axes
的数组ki0zmccv6#
这可能是一个更简单的方法:
(DesiredFigure).get_figure().savefig('figure_name.png')
即