保存由Python pandas生成的带有matplotlib的savefig函数生成的绘图(AxesSubPlot)。

8 浏览
0 Comments

保存由Python pandas生成的带有matplotlib的savefig函数生成的绘图(AxesSubPlot)。

我正在使用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 
    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 
    dtf2.plot().savefig('~/Documents/output.png')
AttributeError: 'AxesSubplot' object has no attribute 'savefig'

我认为我需要以某种方式将plot()返回的subplot添加到一个图表中才能使用savefig。我还想知道这是否与AxesSubPlot类背后的magic有关。

编辑:

以下代码可以正常工作(没有引发错误),但是给我留下了一个空白页图像...

fig = plt.figure()
dtf2.plot()
fig.savefig('output.png')

编辑2:

下面的代码也可以正常工作

dtf2.plot().get_figure().savefig('output.png')

0
0 Comments

问题的原因是在保存图像时,原始代码中没有生成由pandas绘制的坐标轴。解决方法是使用`plt.gcf()`函数获取当前的Figure对象,并在此之前使用`dtf2.plot()`生成坐标轴。这样,通过调用`fig.savefig('output.png')`保存图像时,会将前一行代码中生成的坐标轴也包含在内。

0
0 Comments

问题的出现原因是因为在使用Python的pandas库和matplotlib库生成的图表中,想要保存图表时出现了困惑。可以通过ax.figure.savefig()的方式保存图表,代码示例如下:

import pandas as pd
df = pd.DataFrame([0, 1])
ax = df.plot.line()
ax.figure.savefig('demo-file.pdf')

这种保存方式和其他答案中提到的ax.get_figure().savefig()没有实际的区别,所以可以选择自己最喜欢的方式进行保存。实际上,get_figure()方法只是简单地返回self.figure

# 以上代码段链接到了上面的代码段
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure

解决方法就是使用ax.figure.savefig()或者ax.get_figure().savefig()来保存生成的图表。

0
0 Comments

问题出现的原因是在matplotlib的版本0.14中,gcf方法已被弃用。解决方法是使用以下代码:

plot = dtf.plot()
fig = plot.get_figure()
fig.savefig("output.png")

这段代码将生成的图表保存为output.png文件。

0