如何将Seaborn情节保存到文件中

我尝试了下面的代码( test_seaborn.py ):

 import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt matplotlib.style.use('ggplot') import seaborn as sns sns.set() df = sns.load_dataset('iris') sns_plot = sns.pairplot(df, hue='species', size=2.5) fig = sns_plot.get_figure() fig.savefig("output.png") #sns.plt.show() 

但是我得到这个错误:

  Traceback (most recent call last): File "test_searborn.py", line 11, in <module> fig = sns_plot.get_figure() AttributeError: 'PairGrid' object has no attribute 'get_figure' 

我期望最终output.png将存在,看起来像这样:

在这里输入图像说明

我该如何解决这个问题?

删除get_figure ,只使用sns_plot.savefig('output.png')

 df = sns.load_dataset('iris') sns_plot = sns.pairplot(df, hue='species', size=2.5) sns_plot.savefig("output.png") 

build议的解决scheme与Seaborn 0.7.1不兼容

提供以下错误,因为Seaborn接口已更改:

 AttributeError: 'AxesSubplot' object has no attribute 'fig' When trying to access the figure AttributeError: 'AxesSubplot' object has no attribute 'savefig' when trying to use the savefig directly as a function 

以下调用允许您访问图(与Seaborn 0.7.1兼容):

 swarm_plot = sns.swarmplot(...) fig = swarm_plot.get_figure() fig.savefig(...) 

正如之前在这个答案中所见。

更新:我最近使用seaborn的PairGrid对象来生成一个类似于这个例子中的一个。 在这种情况下,由于GridPlot不是像sns.swarmplot这样的绘图对象,所以它没有get_figure()函数。 可以通过直接访问matplotlib图

 fig = myGridPlotObject.fig 

像以前在这个线程中的其他post中所build议的。

你应该可以直接使用savefig方法。

 sns_plot.savefig("output.png") 

为了清楚你的代码,如果你确实想访问sns_plot驻留的matplotlib图,那么你可以直接

 fig = sns_plot.fig 

在这种情况下,代码假定没有get_figure方法。

上面的一些解决scheme并不适合我。 当我尝试,没有find.fig属性,我无法直接使用.savefig() 。 但是,工作是什么:

 sns_plot.figure.savefig("output.png") 

我是一个较新的Python用户,所以我不知道这是否是由于更新。 我想提一下,以防其他人遇到同样的问题。