如何将Pandas饼图保存到文件?

28

我有以下代码:

import pandas as pd
import matplotlib
matplotlib.style.use('ggplot')
df = pd.DataFrame({ 'sample1':['foo','bar','bar','qux'], 'score':[5,9,1,7]})
sum_df = df.groupby("sample1").sum()
pie = sum_df.plot(kind="pie", figsize=(6,6), legend = False, use_index=False, subplots=True, colormap="Pastel1")

这是制作饼图的方法,我想要做的是将其保存到文件中。但为什么失败了呢?

fig = pie.get_figure()
fig.savefig("~/Desktop/myplot.pdf")

我遇到了这个错误:

'numpy.ndarray' object has no attribute 'get_figure'
2个回答

33

嗯,pie是一个numpy数组,因为DataFrame.plot()的返回类型是由matplotlib.AxesSubplot对象组成的numpy数组。

fig = pie[0].get_figure()
fig.savefig("~/Desktop/myplot.pdf")

1
声明:我的解决方案是保存当前绘图,这在这里可以工作,但这不是一个好的做法。@user3100115发布的是正确的方法。
使用matplotlib.pyplot.savefig来保存它:
import matplotlib.pyplot as plt
plt.savefig('pie')

你将会得到一个名为pie.png的图片,就像这样:

pie plot


@user3100115 显然“ndarray”没有“get_figure”函数,我认为他真正想要的是成功保存图像,对吗? - Kane Blueriver
2
不,他正在尝试使用DataFrame.plot()绘制一个DataFrame对象,并且我已经发布了正确的答案。 - styvane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接