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

如何让Matplotlib水平条形图在X轴不同位置起始?

实现Matplotlib水平条形图从指定X轴位置开始

不需要额外绘制白色段,直接用barh函数的**left参数**就能搞定,这是最简洁的方案,完全不用折腾broken_barh。

barh的left参数专门用来设置每个水平条形在X轴的起始坐标,你只需要把每个项目的「启动延迟天数」传给这个参数,条形就会自动从对应位置开始,前面的空白就是你要的延迟区间。

举个实际代码例子:

import matplotlib.pyplot as plt

# 项目列表
projects = ["项目A", "项目B", "项目C", "项目D"]
# 每个项目的启动延迟天数(X轴起始位置)
start_delays = [0, 3, 5, 2]
# 每个项目的持续时长(条形宽度)
durations = [7, 5, 4, 6]
y_positions = range(len(projects))

fig, ax = plt.subplots()
# 核心:通过left参数指定条形的X轴起始点
ax.barh(y_positions, durations, left=start_delays, height=0.6)

# 配置图表标签
ax.set_yticks(y_positions)
ax.set_yticklabels(projects)
ax.set_xlabel("天数")
ax.set_title("项目时间进度")

plt.tight_layout()
plt.show()

这段代码里,start_delays就是你想要的「条形开头空白天数」,durations是项目的持续时间。运行后每个条形会从对应的X轴位置开始绘制,完美实现你的需求,比用broken_barh高效得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:22:02