将pandas.Series直方图保存到文件


82

在ipython Notebook中,首先创建一个pandas Series对象,然后通过调用实例方法.hist(),浏览器将显示该图。

我想知道如何将该图形保存到文件中(不是通过右键单击另存为,而是脚本中所需的命令)。

Answers:


165

使用Figure.savefig()方法,如下所示:

ax = s.hist()  # s is an instance of Series
fig = ax.get_figure()
fig.savefig('/path/to/figure.pdf')

它不必以结尾结尾pdf,有很多选择。查看文档

或者,您可以使用该pyplot接口,并仅savefig作为函数调用来保存最近创建的图形:

import matplotlib.pyplot as plt
s.hist()
plt.savefig('path/to/figure.pdf')  # saves the current figure

5
如果遇到此错误AttributeError: 'numpy.ndarray' object has no attribute 'get_figure',则可能正在绘制多个列,例如s.hist(columns=['colA', 'colB'])。在这种情况下,ax将是所有轴的数组。您可以尝试ax[0].get_figure()ax[0][0].get_figure()
toto_tico

1
我要反复保存两个地块。但是它会覆盖第一个图,第二个图看起来像两个图的总和。有谁知道如何解决这个问题?
卡潘

1
@bukowski添加import matplotlib.pyplot as pltplt.close()
Acumenus

如果一个人在做一个循环并且有多个图形,那么可以fig.clf()清除该图形。
tommy.carstensen

7

您可以使用ax.figure.savefig()

import pandas as pd

s = pd.Series([0, 1])
ax = s.plot.hist()
ax.figure.savefig('demo-file.pdf')

ax.get_figure().savefig()与Philip Cloud的答案中所建议的相比,这没有实际的好处,因此您可以选择最美观的选项。实际上,get_figure()只需返回self.figure

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.