Barplot savefig()返回一个AttributeError

时间:2015-11-09 19:21:33

标签: python matplotlib seaborn

我将iPython笔记本转换为python脚本,只是尝试将一对Seaborn图的结果输出为png文件。代码:

import seaborn as sns

...

sns.set_style("whitegrid")
ax = sns.barplot(x=range(1,11), y=[ (x/nrows)*100 for x in addr_pop ], palette="Blues_d")
ax.savefig("html/addr_depth.png")

不要担心变量,它们按预期填充,我在iPyNB中获得了一张好看的图表。但是,在脚本中运行代码会产生RuntimeError: Invalid DISPLAY variable

在另一个线程之后,我修改了代码,将它放在脚本的顶部:

import matplotlib
matplotlib.use('Agg')

再次尝试。这一次,似乎savefig()方法似乎不适用于该情节:

AttributeError: 'AxesSubplot' object has no attribute 'savefig'

搜索此错误的所有结果都与pandas和已经显示的绘图有关。我只想让Seaborn将无花果输出到文件中,理想情况下根本不显示它。

感谢任何帮助。

2 个答案:

答案 0 :(得分:22)

我通过更改

解决了这个问题
ax.savefig('file.png')

ax.figure.savefig('file.png')

我想直接访问数字是获取条形图的savefig()方法的一种方法。

@WoodChopper也有一个可行的解决方案,但它需要另一个import语句,并直接使用pyplot的savefig()

这两种解决方案都需要设置matplotlib.use('Agg')来绕过DISPLAY变量错误。正如referenced post所指出的,必须在导入其他matplotlib库之前设置它。

答案 1 :(得分:7)

我猜你应该导入pyplot。

import matplotlib.pyplot as plt
plt.savefig()