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

如何向Seaborn现有图例中手动添加自定义图例条目

解决方案

不需要创建第二个独立图例,直接把垂直参考线的条目追加到seaborn生成的原有图例中即可,完全省去手动对齐位置的操作,代码如下:

import seaborn as sns
import matplotlib.pyplot as plt

# 原分布绘制代码无需改动
gfg = sns.displot(hist_dat, x="Outcome", hue="Group", kind="kde", fill = True,
                  palette="tab10", height=10.5, aspect=18.5/10.5, legend=True)
gfg._legend.set_title("Group")
plt.setp(gfg._legend.get_title(), fontsize=20) 

# 绘制垂直参考线时,保存返回的线对象
ate_line = plt.axvline(x=0, color='b', label='ATE')

# 提取原有图例的句柄和标签
handles = gfg._legend.legend_handles
labels = [t.get_text() for t in gfg._legend.texts]

# 追加参考线对应的条目
handles.append(ate_line)
labels.append('ATE')

# 替换原有图例,位置参数和你之前单图例的设置保持一致即可,不需要反复调试对齐
gfg._legend.remove()
gfg.ax.legend(
    handles=handles,
    labels=labels,
    bbox_to_anchor=(1.02, 1),
    loc="upper left",
    frameon=False,
    title="Group",
    title_fontsize=20
)

注意点

  • 所有图例条目属于同一个图例容器,不存在两个独立图例错位的问题
  • 仅需要在绘制参考线时多保存一步线对象,不需要改动原有绘图逻辑
  • 如果想要在图例里区分分组条目和参考线,可以在追加ATE条目之前插入空白占位符调整排版

当前实现效果


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:27:52