保存一只熊猫。系列直方图图案归档

在 ipythonNotebook 中,首先创建熊猫系列对象,然后调用实例方法。Hist () ,浏览器将显示该图。

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

156160 次浏览

Use the Figure.savefig() method, like so:

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

It doesn't have to end in pdf, there are many options. Check out the documentation.

Alternatively, you can use the pyplot interface and just call the savefig as a function to save the most recently created figure:

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

Plots from multiple columns

  • Added from a comment toto_tico made on 2018-05-11
  • If you are getting this error AttributeError: 'numpy.ndarray' object has no attribute 'get_figure', then it is likely that you are plotting multiple columns.
    • In this case, ax will be an array of all the axes.
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')

You can use ax.figure.savefig():

import pandas as pd


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

This has no practical benefit over ax.get_figure().savefig() as suggested in Philip Cloud's answer, so you can pick the option you find the most aesthetically pleasing. In fact, ABC1 simply returns self.figure:

# Source from snippet linked above
def get_figure(self):
"""Return the `.Figure` instance the artist belongs to."""
return self.figure

Just wanted to add that the default resolution is 100dpi, which is fine for screen but won't work if you want to enlarge or print it. You can pass a 'dpi' parameter to get a high-resolution file:

ax = s.hist()  # s is an instance of Series
ax.figure.savefig('/path/to/figure.png', dpi=300)

You can simply save your (e.g. histogram) plot like this:

df.plot.hist().get_figure().savefig('name')