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

如何将水平条形图的Y轴标签移至X=0位置而非左侧边缘?

实现水平条形图Y轴标签移至X=0位置

问题背景

当前使用以下代码绘制水平条形图时,Y轴标签位于图表最左侧,希望将其移至X=0(坐标轴中间)的位置:

Rate  = ['Total',"10+","20+","30+","40+","50+","60+"]
NetAmount = [4,2,5,-4,8,-6,7][::-1]
df = pd.DataFrame(NetAmount,index=Rate,columns=['Value'])

fig,ax = plt.subplots()
df.plot(ax=ax,kind='barh',legend=None,title='Value')
ax.set_ylabel('Rate',fontsize=12)

解决方案

通过Matplotlib的yaxis.set_label_coords()方法,结合坐标轴变换和对齐设置,可精准将Y轴标签移至X=0位置:

修改后的完整代码:

import pandas as pd
import matplotlib.pyplot as plt

Rate  = ['Total',"10+","20+","30+","40+","50+","60+"]
NetAmount = [4,2,5,-4,8,-6,7][::-1]
df = pd.DataFrame(NetAmount,index=Rate,columns=['Value'])

fig,ax = plt.subplots()
df.plot(ax=ax,kind='barh',legend=None,title='Value')

# 设置Y轴标签
ax.set_ylabel('Rate', fontsize=12)
# 利用X轴坐标系统定位标签,x=0对应X轴原点,y=0.5实现垂直居中
ax.yaxis.set_label_coords(0, 0.5, transform=ax.get_xaxis_transform())
# 设置标签右对齐,避免与坐标轴重叠
ax.yaxis.label.set_ha('right')

plt.show()

关键说明

  • ax.get_xaxis_transform():使用X轴的坐标系统计算标签位置,确保x=0对应图表的X轴原点(水平条形图的中间线)。
  • set_ha('right'):将标签的右边缘对齐X=0位置,保证标签紧贴坐标轴且不遮挡内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:45:49