从 seaborn 中保存情节

Saving plot from seaborn

当我尝试保存使用 seaborn 的绘图时,如下所示:

import seaborn as sn
import pandas as pd
import matplotlib.pyplot as plt
from pylab import savefig

array = [[100,0], 
        [33,67]]

df_cm = pd.DataFrame(array)

svm = sn.heatmap(df_cm, annot=True,cmap='coolwarm', linecolor='white', linewidths=1)

svm.savefig('svm_conf.png', dpi=400)

我收到这个错误

AttributeError                            Traceback (most recent call last)
<ipython-input-71-5c0ae9cda020> in <module>()
----> 1 svm.savefig('svm_conf.png', dpi=400)

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

我以前也保存过一些箱线图,用同样的代码,但是这次,它不起作用。

实际上你需要做的是:

  • sn.heatmap
  • 返回的对象中检索图形
  • 然后,然后才保存图

查看下面的最后两行:

import seaborn as sn
import pandas as pd
import matplotlib.pyplot as plt
from pylab import savefig

array = [[100,0], 
        [33,67]]

df_cm = pd.DataFrame(array)

svm = sn.heatmap(df_cm, annot=True,cmap='coolwarm', linecolor='white', linewidths=1)

figure = svm.get_figure()    
figure.savefig('svm_conf.png', dpi=400)

最简单的方法是使用

plt.savefig('svm_conf.png', dpi=400)

而不是

svm.savefig('svm_conf.png', dpi=400)

保存当前图形的命令是

plt.savefig()

因为这显然会引起一些混淆,所以这里是完整的工作示例:

import seaborn as sn
import pandas as pd
import matplotlib.pyplot as plt

array = [[100,0], 
        [33,67]]

df_cm = pd.DataFrame(array)

svm = sn.heatmap(df_cm, annot=True,cmap='coolwarm', linecolor='white', linewidths=1)

plt.savefig('svm_conf.png', dpi=400)