如何将DataFrame的百分比差值文本添加到Seaborn relplot各子图
Seaborn relplot 多子图添加对应指标差值文本解决方案
问题原因
存在两个核心错误:
- 最初调用
p.fig.text()是向整个画布添加文本,传入的坐标是整个画布的相对坐标,因此所有文本都会被放在画布的同一个位置,无法对应到各个子图 - 第二次尝试的代码存在两处问题:一是你定义的绘图对象名为
p,却调用了不存在的g.axes变量,二是依旧使用了画布级别的fig.text方法,没有调用子图自身的文本添加接口
正确实现
替换你原来的添加文本的代码段为以下内容即可:
# 遍历所有子图和对应的百分比差值 for ax, diff_val in zip(p.axes, dfp['Difference']): # 子图相对坐标:(0.5, 0.95)对应子图顶部居中位置 ax.text( x=0.5, y=0.95, s=f"{diff_val}%", fontsize=12, ha="center", va="top", transform=ax.transAxes )
参数说明
transform=ax.transAxes:指定坐标使用子图自身的相对比例坐标,(0,0)对应子图左下角,(1,1)对应右上角,不会随子图坐标轴的数值范围变化,适配不同指标的y轴范围ha="center":设置文本水平居中对齐va="top":设置文本顶部对齐传入的y坐标,避免文本挡住下方的散点- 你可以根据需求调整x、y的数值,修改文本在子图中的位置。
内容的提问来源于stack exchange,提问作者John Conor
相关产品推荐
相关产品推荐

