如何将水平条形图的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
相关产品推荐
相关产品推荐

