Matplotlib水平条形图Y轴刻度标签移至条形内部左对齐方法
将Matplotlib水平条形图Y轴刻度标签移至条形内部并左对齐
当然可以实现这个需求!咱们只需要调整刻度标签的显示逻辑,用自定义文本替代默认的Y轴刻度标签即可,具体操作如下:
实现思路
- 先隐藏默认的Y轴刻度标签(我们会在条形内部重新添加自定义标签)
- 遍历每个条形,在对应位置添加左对齐的文本标签,确保标签落在条形内部
修改后的完整示例代码
import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots() # Example data people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim') y_pos = np.arange(len(people)) performance = 3 + 10 * np.random.rand(len(people)) error = np.random.rand(len(people)) # 绘制水平条形图 ax.barh(y_pos, performance, xerr=error, align='center', color='green', ecolor='black') # 隐藏默认的Y轴刻度标签和刻度线(若需保留刻度线,可去掉ax.set_yticks([])) ax.set_yticks([]) ax.tick_params(axis='y', labelleft=False) # 为每个条形添加内部左对齐的标签 for y_coord, name in zip(y_pos, people): # x=0.1 让标签和条形左边缘留一点空隙;va='center' 保证垂直方向与条形居中对齐 ax.text(0.1, y_coord, name, va='center', ha='left', color='white', fontsize=10) plt.tight_layout() plt.show()
参数细节说明
ax.text()的x参数设为0.1是为了避免标签紧贴条形左边缘,你可以根据条形的实际长度灵活调整这个值;va='center'确保文本在垂直方向和条形完美居中;ha='left'直接实现文本左对齐的效果;color='white'是为了和绿色条形形成鲜明对比,你可以根据自己的条形配色调整文本颜色;- 如果想保留Y轴的刻度线,只需要删除
ax.set_yticks([])这一行代码就行。
内容的提问来源于stack exchange,提问作者user7681751
相关产品推荐
相关产品推荐

