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

Seaborn Objects无法设置统一标题,子图各显标题求解决方案

解决Seaborn Objects分面图全局标题问题

在Seaborn Objects框架中,.label(title=...)会为每个分面子图单独添加标题,要设置统一的全局标题,无需使用.share(label=True),可通过以下两种符合框架要求的方法实现:

方法1:通过.theme()配置全局标题

直接在链式调用中用.theme()设置全局标题,还能同步调整标题样式:

(
    so.Plot(df, x="sepal_length", y="sepal_width")
    .add(so.Dot(alpha=.5, pointsize=1), col=None)
    .add(so.Dot(alpha=.5, pointsize=3, color='darkblue'), legend=False)
    .add(so.Line(color="r"), so.PolyFit(1))
    .facet("species", wrap=2)
    .share(x=True, y=True)
    .theme(figure={"suptitle": {"text": "花萼长度与花萼宽度的散点图", "fontsize": 14}})
)

方法2:通过.on_plot()调用matplotlib全局标题接口

如果需要更灵活的位置调整(比如避免和子图标题重叠),可以用.on_plot()钩子调用matplotlib的suptitle:

(
    so.Plot(df, x="sepal_length", y="sepal_width")
    .add(so.Dot(alpha=.5, pointsize=1), col=None)
    .add(so.Dot(alpha=.5, pointsize=3, color='darkblue'), legend=False)
    .add(so.Line(color="r"), so.PolyFit(1))
    .facet("species", wrap=2)
    .share(x=True, y=True)
    .on_plot(lambda p: p.figure.suptitle("花萼长度与花萼宽度的散点图", y=1.02, fontsize=14))
)

说明

.label(title=...)的作用是为每个子图设置标题,而全局标题需要依赖matplotlib的suptitle实现,上述两种方法均未脱离Seaborn Objects框架,可直接集成到链式调用中。

内容的提问来源于stack exchange,提问作者Pritom Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:33:09