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

如何消除plotly.express.timeline中连续相邻日期之间的间隔

问题原因

该间隔由Plotly时间线的「左闭右开」时间范围规则导致:
你通过.date()获取的日期对象对应当日00:00:00的时间戳,第一个时间段的结束时间为2010-11-05 00:00:00,第二个时间段的开始时间为2010-11-06 00:00:00,中间空出了整个11月5日的宽度,因此出现了明显间隔。

解决方案

只需将结束日期的时间调整为当日23:59:59,无需修改其他逻辑即可实现无缝衔接,且不会出现日期重叠:

  1. 调整日期解析逻辑,给结束日期补充当日最晚时间:
from dateutil import parser

start_date_1 = parser.parse("2010-08-01")
# 结束日期设置为当日23:59:59
end_date_1 = parser.parse("2010-11-05 23:59:59")
start_date_2 = parser.parse("2010-11-06")
end_date_2 = parser.parse("2010-11-12 23:59:59")

如果是批量处理日期,可以直接拼接时间字符串:

end_date_str = "2010-11-05"
end_date_1 = parser.parse(f"{end_date_str} 23:59:59")
  1. 原有绘图代码无需修改,运行后即可得到无缝衔接的效果:
    可视化效果示例

可选优化:统一日期显示格式

如果需要hover提示里的日期统一只显示年月日,不需要显示时间,可以添加hover_data参数自定义显示内容:

fig = px.timeline(df,
                x_start="Start",
                x_end="Finish",
                y="Stack",
                color="Task",
                hover_name="Task",
                # 自定义hover显示的日期格式
                hover_data={
                    "Start": "|%Y-%m-%d",
                    "Finish": "|%Y-%m-%d"
                },
                opacity=.7,
                width=1000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:06