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

如何使用Plotly基于时间步而非日期绘制甘特图

问题:Plotly是否支持基于时间步(非日期时间)的甘特图绘制?

我在网上找到一段可生成甘特图的代码(如下):

import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"),
    dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Resource="Alex"),
    dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Resource="Max")
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
fig.show()

但我希望不使用日期时间,而是采用从0开始的时间步来绘制,预期代码如下:

import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start=0, Finish=10, Resource="Alex"),
    dict(Task="Job B", Start=12, Finish=24, Resource="Alex"),
    dict(Task="Job C", Start=5, Finish=20, Resource="Max")
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
fig.show()

请问Plotly是否支持这种基于时间步的甘特图绘制?我偏好Plotly的简洁图表样式,但查阅其官方文档后未找到相关转换方法。


回答

Plotly的px.timeline默认针对日期时间类型数据设计,但可以通过强制修改x轴类型实现基于数值时间步的甘特图绘制,无需转换数据格式。

只需在你的预期代码中添加一行配置,将x轴设置为线性数值类型:

import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start=0, Finish=10, Resource="Alex"),
    dict(Task="Job B", Start=12, Finish=24, Resource="Alex"),
    dict(Task="Job C", Start=5, Finish=20, Resource="Max")
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
# 强制将x轴设置为数值线性类型
fig.update_xaxes(type='linear')
fig.show()

这样修改后,x轴会直接以你设置的数值时间步展示,完全匹配需求。原因是px.timeline会自动把输入的数值识别为时间戳并转换为日期轴,通过手动指定x轴为线性类型,就能覆盖默认的日期解析逻辑,保留原始数值维度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:45:25