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

如何让Matplotlib子图的X轴刻度标签从右侧起始以匹配横向条形图

解决X轴刻度与横向条形图匹配的问题

问题根源

你当前手动设置set_xticklabels(labels=state_commod_Df['Total'])的方式存在错误:默认X轴刻度是从左到右数值递增的,但你把降序的Total列表直接套作为标签,导致标签顺序和轴的数值方向完全相反,最终出现刻度和条形不匹配的情况。

两种可行解决方案

方案1:反转X轴,让刻度从右侧开始递增

如果希望条形从右向左延伸(最上方的最长条形对应左侧的最大数值),直接给子图添加X轴反转的代码即可,这样刻度会从右侧开始,数值从右到左变大,和你降序排列的条形结构完全匹配:

# 在绘图自定义代码末尾添加
ax[index].invert_xaxis()

方案2:将X轴刻度标签移到右侧显示

如果保持条形从左向右延伸的方向不变,只是希望刻度标签显示在子图右侧,用tick_params调整标签位置:

# 在绘图自定义代码末尾添加
ax[index].tick_params(axis='x', labelright=True, labelleft=False)

这样最上方的最长条形会对应右侧的最大刻度值,和降序的条形结构匹配。

修正后的完整代码示例

sns.barplot(x=state_commod_Df['Total'], y=state_commod_Df.index, orient='h', ax=ax[index], palette="winter_r", edgecolor='black')

# 绘图自定义设置
ax[index].set_xlabel('Total NO.', color='maroon', fontweight='bold', fontsize=13.5, labelpad=20)
ax[index].set_ylabel('Commodities', color='maroon', fontweight='bold', fontsize=13.5, labelpad=20)

ax[index].set_yticklabels(labels=state_commod_Df.index, color='darkolivegreen', fontsize=13.5, fontweight='bold')

# 二选一:使用方案1或方案2
# 方案1:反转X轴
ax[index].invert_xaxis()
# 方案2:移标签到右侧
# ax[index].tick_params(axis='x', labelright=True, labelleft=False)

补充:如果需要显示Total的具体数值作为刻度

若你一定要把Total的数值作为X轴刻度,不要直接覆盖标签,先设置刻度位置再匹配标签:

# 设置刻度位置为Total的数值
ax[index].set_xticks(state_commod_Df['Total'])
# 设置对应的刻度标签
ax[index].set_xticklabels(state_commod_Df['Total'], color='darkolivegreen', fontsize=10, fontweight='bold')
# 再配合方案1或方案2调整刻度方向/位置
ax[index].invert_xaxis()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:05:13