You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用seaborn绘制多张lmplot图分别保存时出现报错如何解决

问题成因
  • matplotlib.pyplot 模块仅提供标准的savefig()方法,不存在你自定义的savefig_1、savefig_2这类方法,这是触发属性报错的直接原因。
  • seaborn的lmplot()会返回独立的FacetGrid对象,调用plt.savefig()默认只会保存最后创建的、处于激活状态的画布,所以你原代码里只有最后生成的4阶拟合图(fig_2)能够保存。
解决方法

直接调用每个FacetGrid对象自带的savefig()方法,分别保存两幅图像即可,修正后的代码如下:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

T = np.array([10.03,100.348,1023.385])
power = np.array([44000,63000,89000])

df= pd.DataFrame(data = {'Size': T, 'Time': power})
    
# 生成两张图
fig_1= sns.lmplot(x='Size', y='Time', data=df, ci=None, lowess=True, truncate=False)
fig_2= sns.lmplot(x='Size', y='Time', data=df, ci=None, order=4, truncate=False)

# 分别调用各自的savefig方法保存
fig_1.savefig('exp1.png')
fig_2.savefig('exp2.png')
plt.show()

如果要使用pyplot的全局方法保存,也可以在每次保存前手动切换到对应画布:

# 切换到fig_1的画布再保存
plt.figure(fig_1.fig.number)
plt.savefig('exp1.png')
# 切换到fig_2的画布再保存
plt.figure(fig_2.fig.number)
plt.savefig('exp2.png')

内容的提问来源于stack exchange,提问作者Vaibhav Tyagi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:57:03