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

如何为Seaborn Jointplot的边际图添加均值线与标准差区间标记

解决方案

以下是修改后的代码,能在边际图中添加均值线和均值±1标准差的区间,同时保留Seaborn原有的风格:

import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style="darkgrid")
tips = sns.load_dataset("tips")

# 计算统计量:均值和标准差
x_mean = tips["total_bill"].mean()
x_std = tips["total_bill"].std()
y_mean = tips["tip"].mean()
y_std = tips["tip"].std()

# 生成jointplot
g = sns.jointplot(x="total_bill", y="tip", data=tips,
                  kind="reg", truncate=False,
                  xlim=(0, 60), ylim=(0, 12),
                  color="m", height=7)

# 处理顶部边际图(x轴)
# 添加均值竖线
g.ax_marg_x.axvline(x_mean, color="m", linestyle="--", linewidth=2)
# 添加±1标准差的填充区间
g.ax_marg_x.axvspan(x_mean - x_std, x_mean + x_std, color="m", alpha=0.1)

# 处理右侧边际图(y轴)
# 添加均值横线
g.ax_marg_y.axhline(y_mean, color="m", linestyle="--", linewidth=2)
# 添加±1标准差的填充区间
g.ax_marg_y.axhspan(y_mean - y_std, y_mean + y_std, color="m", alpha=0.1)

plt.show()

关键步骤说明:

  • 先计算total_bill和tip的均值、标准差,确定标记位置
  • 通过g.ax_marg_x和g.ax_marg_y获取jointplot的两个边际子图对象
  • 使用axvline/axhline绘制均值标记线,用虚线和匹配的颜色保持风格统一
  • 使用axvspan/axhspan绘制标准差区间的填充区域,低透明度设计避免遮挡原直方图
  • 所有元素颜色和主图保持一致(color="m"),保证整体视觉协调

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:15:40