如何在无y坐标参数的情况下为Matplotlib横向柱状图添加指定位置文本
横向柱状图指定位置添加文本解决方案
解决该问题不需要依赖实际数据坐标系的y值,直接切换坐标参考系即可实现,具体方案如下:
方案1:添加文本到坐标轴区域左上角
直接调用plt.text()时指定坐标参考系为轴相对坐标系即可,该坐标系取值范围固定为0~1,(0,0)对应坐标轴左下角,(1,1)对应坐标轴右上角,完全不需要用到横向柱状图的实际y轴数值:
import matplotlib.pyplot as plt # 此处保留你原有的横向柱状图绘制代码 # ... # 直接添加左上角文本 ax = plt.gca() plt.text( x=0.02, y=0.98, s="你需要展示的文本内容", transform=ax.transAxes, # 关键参数:切换为轴相对坐标系 ha="left", va="top", # 对齐方式设置,避免文本超出显示区域 fontsize=12 ) plt.show()
方案2:添加文本到整个画布左上角
如果需要文本固定在整张图的左上角,不受坐标轴范围影响,使用plt.figtext()即可:
plt.figtext( x=0.05, y=0.95, s="你需要展示的文本内容", ha="left", va="top", fontsize=12 )
附加:给单个柱子添加标注
如果你需要给每个横向柱子加标注,也可以直接通过bar对象获取坐标,不需要提前知道y值:
# bars是你调用barh绘制横向柱状图返回的对象 bars = ax.barh(y_pos, value_list) for bar in bars: bar_width = bar.get_width() bar_y_center = bar.get_y() + bar.get_height() / 2 ax.text(bar_width, bar_y_center, f"{bar_width}", ha="left", va="center")
效果参考
当前绘图效果:
目标实现效果:
内容的提问来源于stack exchange,提问作者AliStonks
相关产品推荐
相关产品推荐

