【Seaborn 学习笔记】P2. FacetGrid 的整体调整与布局控制
2026/7/25 8:10:56 网站建设 项目流程

一些绘图函数如 relplot() 返回的不是一个 Axes,而是一个 FacetGrid,无法使用 Axes 的方法来调整,需要用到 FacetGrid 的调整方式


FacetGrid 的结构

g = sns.relplot(...) # 返回一个 FacetGrid 对象赋给 g

有如下属性:

g.fig:Figure 对象(整张画布)

g.axes:Axes 数组,二维 ndarray,shape = (n_row, n_col)

若仅使用 col、无 row则shape = (1, n_col)

若使用 col_wrap,则 g.axes 为扁平的一维 ndarray,需通过 g.axes.flat[索引] 或 list(g.axes.flat)[索引] 访问子图

g.legend:Legend 对象(若存在)


FacetGrid 常用调整方法

1. 设置轴标签 g.set_axis_labels

g.set_axis_labels('x轴标签名', 'y轴标签名')

同时作用于所有子图

2. 设置子图标题 g.set_titles

g.set_titles('{row_name} | {col_name}')

其中 {row_name} 与 {col_name} 为占位符,分别为 row 与 col 指定的特征在当前子图对应的取值,字符串其余内容可以任意修改

3. 设置总标题 g.fig.suptitle

g.fig.suptitle('总标题', y=1.02)

设置 y=1.02 避免与子图标题重叠

4. 图例 g.legend

g.legend.set_title('图例标题') # 设置图例的标题 g.legend.set_bbox_to_anchor((1.02, 0.5)) # 对齐坐标,右侧中部 g.legend.loc = 'center left' # 图例左边框中部用于与对齐坐标对齐

配合 g.tight_layout 使用

5. 布局收紧 g.tight_layout

g.tight_layout()

通常不需要 rect 参数,若图例外置后仍被裁剪,可改用 plt.tight_layout(rect=...)

6. 访问单个子图 g.axes[行, 列]

ax = g.axes[行, 列]

将 [行, 列] 索引的子图赋给 ax,之后可按 ax 的方法单独对该子图进行调整

例如:

有使用col_wrap 时访问第一个子图

ax = g.axes.flat[0]

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询