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

如何修改Matplotlib水平条形图的起始值为负无穷

让Matplotlib水平条形图从右侧起始的解决方案

你当前的水平条形图默认以0为起点绘制,需要调整为所有条形从图表最右侧开始(无论数值正负),实现类似从右向左延伸的效果。

解决方案

核心操作是反转x轴,通过ax.invert_xaxis()实现。反转后x轴方向颠倒,所有条形会从右侧(原x轴最大值方向)开始绘制,负值向左延伸,正值也从右往左展开,完全匹配你期望的效果。

修改后的完整代码

import matplotlib.pyplot as plt
import numpy as np

rssi     = []
srn      = [-25,-30,-5]
freq     = []
sf       = []
messages = ['kitchen', 'garage', 'living room']

# plot
plt.style.use('_mpl-gallery')
plt.rcdefaults()

fig, ax = plt.subplots()

y_pos = np.arange(len(messages))
performance = srn

ax.barh(y_pos, performance, align='center')
ax.set_yticks(y_pos, labels=messages)

ax.invert_yaxis()  # 保持y轴标签从上到下的阅读顺序
ax.invert_xaxis()  # 反转x轴,让条形从右侧起始
ax.set_xlabel('dBm')
ax.set_title('SRN')
ax.grid(axis='x', color='dimgray', linestyle='dotted', linewidth=0.75)

plt.show()

关键修改说明

  • 添加ax.invert_xaxis():直接反转x轴方向,将原x轴的最大值移到左侧、最小值移到右侧,强制所有条形从右侧开始绘制。
  • 保留ax.invert_yaxis():维持y轴标签从上到下的排版逻辑,不干扰条形的起始方向设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:02:13