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

使用create_gantt()生成甘特图时如何展示任务依赖关系

Plotly甘特图添加任务依赖箭头的解决方案

plotly.figure_factory.create_gantt()本身没有内置任务依赖线的渲染能力,你可以通过手动添加注释箭头的方式实现需求,完整实现代码如下:

import plotly.figure_factory as ff
from datetime import datetime

# 原始任务数据
df = [dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'),
      dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'),
      dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')]

# 生成甘特图
fig = ff.create_gantt(df)

# 构建任务坐标映射:key为任务名,value存储任务的y轴位置、结束时间、开始时间
task_info = {}
# create_gantt默认y轴顺序:第一个任务在最上方,3个任务的话Job A对应y=2,Job B对应y=1,Job C对应y=0
for idx, task in enumerate(df):
    y_val = len(df) - 1 - idx
    # 转换为plotly内部使用的毫秒级时间戳
    start_ts = datetime.strptime(task['Start'], '%Y-%m-%d').timestamp() * 1000
    finish_ts = datetime.strptime(task['Finish'], '%Y-%m-%d').timestamp() * 1000
    task_info[task['Task']] = {'y': y_val, 'start': start_ts, 'finish': finish_ts}

# 添加Job A到Job B的依赖箭头
fig.add_annotation(
    # 箭头起点:Job A的结束时间位置 + Job A的y轴坐标
    ax=task_info['Job A']['finish'],
    ay=task_info['Job A']['y'],
    # 箭头终点:Job B的开始时间位置 + Job B的y轴坐标
    x=task_info['Job B']['start'],
    y=task_info['Job B']['y'],
    xref='x',
    yref='y',
    axref='x',
    ayref='y',
    showarrow=True,
    arrowhead=3,  # 箭头样式等级
    arrowsize=1.5, # 箭头大小
    arrowwidth=2, # 箭头线宽
    arrowcolor='#FF4B4B' # 箭头颜色
)

fig.show()

补充说明

  • 若需添加多组依赖,仅需遍历依赖关系列表,重复调用add_annotation方法即可
  • 可根据实际需求调整箭头相关参数,匹配图表整体风格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:45:02