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

如何为已创建的Seaborn FacetGrid添加汇总子图并调整轴标签?

解决方案

1. 统一全局轴标签

默认FacetGrid会给每个子图添加独立轴标签,要实现所有子图共享同一行的全局标签,按以下步骤操作:

  • 先清空所有子图的本地标签
  • 用图表的全局标签方法添加统一的x、y轴标签
import seaborn as sns
import matplotlib.pyplot as plt

# 生成初始FacetGrid
facetgrid = sns.lmplot(data=file_to_plot, col="count", col_wrap=3, x='measured_data', y='y_data')

# 清空所有子图的本地轴标签
facetgrid.set(xlabel='', ylabel='')
# 添加全局x轴标签(位于所有子图底部中间)
facetgrid.fig.supxlabel('measured_data', y=0.02)
# 添加全局y轴标签(位于所有子图左侧中间)
facetgrid.fig.supylabel('y_data', x=0.08)

2. 在右下角添加汇总子图

col_wrap=3时10组数据会生成4行3列布局(共12个位置,仅前10个被使用),直接利用右下角空白位置(第4行第3列,索引(3,2))添加汇总子图:

  • 获取图表的网格布局对象gridspec
  • 在目标位置添加新轴对象
  • 在新轴上绘制汇总回归曲线
# 获取图表的网格布局
gs = facetgrid.fig.gridspec
# 在右下角位置添加轴
ax_summary = facetgrid.fig.add_subplot(gs[3, 2])
# 绘制汇总回归曲线(隐藏散点)
sns.regplot(data=file_to_plot, x='measured_data', y='y_data', scatter_kws={"alpha": 0}, ax=ax_summary)
# 给汇总子图加标题
ax_summary.set_title('All Data')

# 调整布局避免元素重叠
plt.tight_layout()

# 保存并关闭图表
plt.savefig(f'{dir}{name}.png')
plt.close()

完整整合代码

import seaborn as sns
import matplotlib.pyplot as plt

# 生成FacetGrid
facetgrid = sns.lmplot(data=file_to_plot, col="count", col_wrap=3, x='measured_data', y='y_data')

# 统一全局轴标签
facetgrid.set(xlabel='', ylabel='')
facetgrid.fig.supxlabel('measured_data', y=0.02)
facetgrid.fig.supylabel('y_data', x=0.08)

# 添加汇总子图
gs = facetgrid.fig.gridspec
ax_summary = facetgrid.fig.add_subplot(gs[3, 2])
sns.regplot(data=file_to_plot, x='measured_data', y='y_data', scatter_kws={"alpha": 0}, ax=ax_summary)
ax_summary.set_title('All Data')

# 调整布局并保存
plt.tight_layout()
plt.savefig(f'{dir}{name}.png')
plt.close()

内容的提问来源于stack exchange,提问作者Alexander Mutz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:40:10