101

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

我想知道如何将此图保存到文件中(我的意思不是右键单击并另存为,而是脚本中需要的命令)。

4

4 回答 4

212

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

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

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

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

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

来自多列的图

  • 添加自 2018-05-11 发表的评论toto_tico
  • 如果您收到此错误AttributeError: 'numpy.ndarray' object has no attribute 'get_figure',则很可能您正在绘制多列。
    • 在这种情况下,ax将是所有轴的数组。
ax = s.hist(columns=['colA', 'colB'])

# try one of the following
fig = ax[0].get_figure()
fig = ax[0][0].get_figure()

fig.savefig('figure.pdf')
于 2013-09-24T21:14:24.980 回答
14

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

import pandas as pd

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

正如 Philip Cloud 的回答所建议的那样,这并没有实际的好处ax.get_figure().savefig(),因此您可以选择您认为最美观的选项。实际上,get_figure()只需返回self.figure

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
于 2020-01-22T12:21:27.603 回答
1

您可以像这样简单地保存您的(例如直方图)图:

df.plot.hist().get_figure().savefig('name')
于 2022-01-12T12:52:30.550 回答
0

只是想补充一点,默认分辨率是 100dpi,这对屏幕来说很好,但如果你想放大或打印它就不起作用了。您可以传递“dpi”参数来获取高分辨率文件:

ax = s.hist()  # s is an instance of Series
ax.figure.savefig('/path/to/figure.png', dpi=300)
于 2021-11-19T15:04:50.840 回答