如何将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用户,所以我不知道这是否是由于更新。 我想提一下,以防其他人遇到同样的问题。