gantt-chart-creator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Gantt Chart Creator

甘特图生成工具

Create professional project timeline Gantt charts with task dependencies, milestones, progress tracking, and customizable styling. Perfect for project management, sprint planning, and timeline visualization.
创建具备任务依赖、里程碑、进度跟踪及自定义样式的专业项目时间线甘特图,适用于项目管理、迭代规划与时间线可视化场景。

Quick Start

快速开始

python
from scripts.gantt_creator import GanttChartCreator
python
from scripts.gantt_creator import GanttChartCreator

Simple task list

简单任务列表

gantt = GanttChartCreator() gantt.add_task("Research", "2024-01-01", "2024-01-07") gantt.add_task("Design", "2024-01-08", "2024-01-14") gantt.add_task("Development", "2024-01-15", "2024-01-28") gantt.add_task("Testing", "2024-01-29", "2024-02-04") gantt.generate().save("project.png")
gantt = GanttChartCreator() gantt.add_task("调研", "2024-01-01", "2024-01-07") gantt.add_task("设计", "2024-01-08", "2024-01-14") gantt.add_task("开发", "2024-01-15", "2024-01-28") gantt.add_task("测试", "2024-01-29", "2024-02-04") gantt.generate().save("project.png")

From CSV with progress

从CSV导入并包含进度

gantt = GanttChartCreator() gantt.from_csv("tasks.csv", task="name", start="start_date", end="end_date", progress="pct") gantt.title("Q1 Roadmap").show_today().generate().save("roadmap.png")
undefined
gantt = GanttChartCreator() gantt.from_csv("tasks.csv", task="name", start="start_date", end="end_date", progress="pct") gantt.title("Q1 路线图").show_today().generate().save("roadmap.png")
undefined

Features

功能特性

  • Multiple Input Sources: CSV, JSON, dict, or programmatic
  • Task Properties: Name, dates, progress, assignee, category
  • Dependencies: Finish-to-start and other dependency types
  • Milestones: Diamond markers for key dates
  • Progress Tracking: Visual progress bars within tasks
  • Today Marker: Vertical line showing current date
  • Color Coding: By category, assignee, or status
  • Output Formats: PNG, SVG, PDF (matplotlib) or HTML (interactive)
  • 多输入源支持:CSV、JSON、字典或程序化创建
  • 任务属性:名称、日期、进度、负责人、分类
  • 任务依赖:支持完成-开始等多种依赖类型
  • 里程碑:关键日期使用菱形标记
  • 进度跟踪:任务内的可视化进度条
  • 今日标记:显示当前日期的垂直线
  • 颜色编码:按分类、负责人或状态区分颜色
  • 输出格式:PNG、SVG、PDF(基于matplotlib)或交互式HTML

API Reference

API 参考

Initialization

初始化

python
gantt = GanttChartCreator()
python
gantt = GanttChartCreator()

Data Input Methods

数据输入方法

python
undefined
python
undefined

From CSV file

从CSV文件导入

gantt.from_csv( filepath="tasks.csv", task="task_name", # Task name column start="start_date", # Start date column end="end_date", # End date column progress="completion", # Optional: progress % column category="category", # Optional: for color coding assignee="owner" # Optional: for color coding )
gantt.from_csv( filepath="tasks.csv", task="task_name", # 任务名称列 start="start_date", # 开始日期列 end="end_date", # 结束日期列 progress="completion", # 可选:进度百分比列 category="category", # 可选:用于颜色编码 assignee="owner" # 可选:用于颜色编码 )

From list of task dictionaries

从任务字典列表导入

gantt.from_tasks([ {'name': 'Task 1', 'start': '2024-01-01', 'end': '2024-01-07'}, {'name': 'Task 2', 'start': '2024-01-08', 'end': '2024-01-14', 'progress': 50}, {'name': 'Task 3', 'start': '2024-01-15', 'end': '2024-01-21', 'category': 'Dev'} ])
gantt.from_tasks([ {'name': '任务1', 'start': '2024-01-01', 'end': '2024-01-07'}, {'name': '任务2', 'start': '2024-01-08', 'end': '2024-01-14', 'progress': 50}, {'name': '任务3', 'start': '2024-01-15', 'end': '2024-01-21', 'category': 'Dev'} ])

Add individual tasks

添加单个任务

gantt.add_task( name="Research Phase", start="2024-01-01", end="2024-01-14", progress=100, # Optional: 0-100% category="Planning", # Optional: for coloring assignee="Alice" # Optional: for coloring )
gantt.add_task( name="调研阶段", start="2024-01-01", end="2024-01-14", progress=100, # 可选:0-100% category="规划", # 可选:用于颜色区分 assignee="Alice" # 可选:用于颜色区分 )

Add milestones

添加里程碑

gantt.add_milestone("Project Kickoff", "2024-01-01") gantt.add_milestone("Beta Release", "2024-02-15", color="#e74c3c")
undefined
gantt.add_milestone("项目启动", "2024-01-01") gantt.add_milestone("Beta版本发布", "2024-02-15", color="#e74c3c")
undefined

Dependencies

任务依赖

python
undefined
python
undefined

Add task dependencies (finish-to-start by default)

添加任务依赖(默认完成-开始类型)

gantt.add_dependency("Design", "Development") # Development starts after Design gantt.add_dependency("Development", "Testing")
gantt.add_dependency("设计", "开发") # 开发在设计完成后开始 gantt.add_dependency("开发", "测试")

Dependency types

依赖类型

gantt.add_dependency("Task A", "Task B", type="FS") # Finish-to-Start (default) gantt.add_dependency("Task A", "Task B", type="SS") # Start-to-Start gantt.add_dependency("Task A", "Task B", type="FF") # Finish-to-Finish gantt.add_dependency("Task A", "Task B", type="SF") # Start-to-Finish
undefined
gantt.add_dependency("任务A", "任务B", type="FS") # 完成-开始(默认) gantt.add_dependency("任务A", "任务B", type="SS") # 开始-开始 gantt.add_dependency("任务A", "任务B", type="FF") # 完成-完成 gantt.add_dependency("任务A", "任务B", type="SF") # 开始-完成
undefined

Styling

样式设置

python
undefined
python
undefined

Title

标题

gantt.title("Project Timeline") gantt.title("Q1 2024 Roadmap", font_size=16)
gantt.title("项目时间线") gantt.title("2024年Q1路线图", font_size=16)

Color by category

按分类设置颜色

gantt.color_by("category") gantt.color_by("category", colors={ 'Planning': '#3498db', 'Development': '#2ecc71', 'Testing': '#e74c3c' })
gantt.color_by("category") gantt.color_by("category", colors={ '规划': '#3498db', '开发': '#2ecc71', '测试': '#e74c3c' })

Color by assignee

按负责人设置颜色

gantt.color_by("assignee")
gantt.color_by("assignee")

Show progress bars

显示进度条

gantt.show_progress(True)
gantt.show_progress(True)

Show today marker

显示今日标记

gantt.show_today(True) gantt.show_today(True, color='red', label='Today')
gantt.show_today(True) gantt.show_today(True, color='red', label='今日')

Date range (auto-calculated by default)

日期范围(默认自动计算)

gantt.date_range("2024-01-01", "2024-03-31")
gantt.date_range("2024-01-01", "2024-03-31")

Grid lines

网格线

gantt.grid(show=True, style='weekly') # daily, weekly, monthly
undefined
gantt.grid(show=True, style='weekly') # daily, weekly, monthly
undefined

Generation and Export

生成与导出

python
undefined
python
undefined

Generate static chart (matplotlib)

生成静态图表(基于matplotlib)

gantt.generate()
gantt.generate()

Generate interactive chart (plotly)

生成交互式图表(基于plotly)

gantt.generate(interactive=True)
gantt.generate(interactive=True)

Save static image

保存静态图片

gantt.save("chart.png") gantt.save("chart.svg") gantt.save("chart.pdf")
gantt.save("chart.png") gantt.save("chart.svg") gantt.save("chart.pdf")

Save interactive HTML

保存交互式HTML

gantt.save("chart.html")
gantt.save("chart.html")

Get figure object for customization

获取图表对象以进行自定义

fig = gantt.get_figure()
gantt.get_figure()

Show in window/notebook

在窗口/笔记本中显示

gantt.show()
undefined
gantt.show()
undefined

Data Formats

数据格式

CSV Format

CSV格式

csv
task,start_date,end_date,progress,category,assignee
Research,2024-01-01,2024-01-07,100,Planning,Alice
Design,2024-01-08,2024-01-14,100,Planning,Bob
Backend Dev,2024-01-15,2024-01-28,75,Development,Alice
Frontend Dev,2024-01-15,2024-01-21,50,Development,Carol
Testing,2024-01-29,2024-02-04,0,QA,Dave
csv
task,start_date,end_date,progress,category,assignee
调研,2024-01-01,2024-01-07,100,规划,Alice
设计,2024-01-08,2024-01-14,100,规划,Bob
后端开发,2024-01-15,2024-01-28,75,开发,Alice
前端开发,2024-01-15,2024-01-21,50,开发,Carol
测试,2024-01-29,2024-02-04,0,QA,Dave

Task Dictionary Format

任务字典格式

python
tasks = [
    {
        'name': 'Research',
        'start': '2024-01-01',
        'end': '2024-01-07',
        'progress': 100,
        'category': 'Planning',
        'assignee': 'Alice'
    },
    {
        'name': 'Design',
        'start': '2024-01-08',
        'end': '2024-01-14',
        'progress': 75,
        'category': 'Planning'
    }
]
python
tasks = [
    {
        'name': '调研',
        'start': '2024-01-01',
        'end': '2024-01-07',
        'progress': 100,
        'category': '规划',
        'assignee': 'Alice'
    },
    {
        'name': '设计',
        'start': '2024-01-08',
        'end': '2024-01-14',
        'progress': 75,
        'category': '规划'
    }
]

Date Formats

日期格式

Supported date formats (auto-detected):
  • YYYY-MM-DD
    (ISO format, recommended)
  • MM/DD/YYYY
  • DD/MM/YYYY
  • YYYY/MM/DD
支持的日期格式(自动识别):
  • YYYY-MM-DD
    (ISO格式,推荐)
  • MM/DD/YYYY
  • DD/MM/YYYY
  • YYYY/MM/DD

CLI Usage

CLI 用法

bash
undefined
bash
undefined

Basic usage

基础用法

python gantt_creator.py --input tasks.csv
--task name --start start_date --end end_date
--output gantt.png
python gantt_creator.py --input tasks.csv
--task name --start start_date --end end_date
--output gantt.png

With progress and categories

包含进度与分类

python gantt_creator.py --input project.csv
--task task --start begin --end finish
--progress pct --category type
--title "Project Timeline"
--output timeline.png
python gantt_creator.py --input project.csv
--task task --start begin --end finish
--progress pct --category type
--title "项目时间线"
--output timeline.png

Interactive HTML

交互式HTML

python gantt_creator.py --input tasks.csv
--task name --start start --end end
--interactive
--output gantt.html
python gantt_creator.py --input tasks.csv
--task name --start start --end end
--interactive
--output gantt.html

With today marker

显示今日标记

python gantt_creator.py --input tasks.csv
--task name --start start --end end
--show-today
--output current_status.png
undefined
python gantt_creator.py --input tasks.csv
--task name --start start --end end
--show-today
--output current_status.png
undefined

CLI Arguments

CLI 参数

ArgumentDescriptionDefault
--input
Input CSV fileRequired
--task
Task name columnRequired
--start
Start date columnRequired
--end
End date columnRequired
--progress
Progress % column-
--category
Category column (for coloring)-
--assignee
Assignee column (for coloring)-
--output
Output file path
gantt.png
--title
Chart title-
--interactive
Generate interactive HTMLFalse
--show-today
Show today markerFalse
--show-progress
Show progress barsFalse
--width
Chart width12
--height
Chart height6
参数描述默认值
--input
输入CSV文件必填
--task
任务名称列必填
--start
开始日期列必填
--end
结束日期列必填
--progress
进度百分比列-
--category
分类列(用于颜色编码)-
--assignee
负责人列(用于颜色编码)-
--output
输出文件路径
gantt.png
--title
图表标题-
--interactive
生成交互式HTMLFalse
--show-today
显示今日标记False
--show-progress
显示进度条False
--width
图表宽度12
--height
图表高度6

Examples

示例

Simple Project Timeline

简单项目时间线

python
gantt = GanttChartCreator()
gantt.add_task("Planning", "2024-01-01", "2024-01-14")
gantt.add_task("Development", "2024-01-15", "2024-02-15")
gantt.add_task("Testing", "2024-02-16", "2024-02-28")
gantt.add_task("Deployment", "2024-03-01", "2024-03-07")
gantt.title("Project Alpha")
gantt.generate().save("project_alpha.png")
python
gantt = GanttChartCreator()
gantt.add_task("规划", "2024-01-01", "2024-01-14")
gantt.add_task("开发", "2024-01-15", "2024-02-15")
gantt.add_task("测试", "2024-02-16", "2024-02-28")
gantt.add_task("部署", "2024-03-01", "2024-03-07")
gantt.title("Alpha项目")
gantt.generate().save("project_alpha.png")

With Dependencies and Milestones

包含依赖与里程碑

python
gantt = GanttChartCreator()
python
gantt = GanttChartCreator()

Add tasks

添加任务

gantt.add_task("Requirements", "2024-01-01", "2024-01-07") gantt.add_task("Design", "2024-01-08", "2024-01-14") gantt.add_task("Backend", "2024-01-15", "2024-01-28") gantt.add_task("Frontend", "2024-01-15", "2024-01-21") gantt.add_task("Integration", "2024-01-29", "2024-02-04") gantt.add_task("Testing", "2024-02-05", "2024-02-11")
gantt.add_task("需求分析", "2024-01-01", "2024-01-07") gantt.add_task("设计", "2024-01-08", "2024-01-14") gantt.add_task("后端开发", "2024-01-15", "2024-01-28") gantt.add_task("前端开发", "2024-01-15", "2024-01-21") gantt.add_task("集成", "2024-01-29", "2024-02-04") gantt.add_task("测试", "2024-02-05", "2024-02-11")

Add milestones

添加里程碑

gantt.add_milestone("Kickoff", "2024-01-01") gantt.add_milestone("Code Freeze", "2024-02-04") gantt.add_milestone("Launch", "2024-02-12")
gantt.add_milestone("项目启动", "2024-01-01") gantt.add_milestone("代码冻结", "2024-02-04") gantt.add_milestone("上线", "2024-02-12")

Add dependencies

添加依赖

gantt.add_dependency("Requirements", "Design") gantt.add_dependency("Design", "Backend") gantt.add_dependency("Design", "Frontend") gantt.add_dependency("Backend", "Integration") gantt.add_dependency("Frontend", "Integration") gantt.add_dependency("Integration", "Testing")
gantt.title("Development Timeline") gantt.generate().save("dev_timeline.png")
undefined
gantt.add_dependency("需求分析", "设计") gantt.add_dependency("设计", "后端开发") gantt.add_dependency("设计", "前端开发") gantt.add_dependency("后端开发", "集成") gantt.add_dependency("前端开发", "集成") gantt.add_dependency("集成", "测试")
gantt.title("开发时间线") gantt.generate().save("dev_timeline.png")
undefined

Color-Coded by Category

按分类颜色编码

python
gantt = GanttChartCreator()
gantt.from_csv("tasks.csv", task="name", start="start", end="end", category="type")

gantt.color_by("category", colors={
    'Backend': '#3498db',
    'Frontend': '#2ecc71',
    'DevOps': '#9b59b6',
    'QA': '#e74c3c'
})

gantt.title("Sprint 5 Tasks")
gantt.show_today()
gantt.generate().save("sprint5.png")
python
gantt = GanttChartCreator()
gantt.from_csv("tasks.csv", task="name", start="start", end="end", category="type")

gantt.color_by("category", colors={
    '后端': '#3498db',
    '前端': '#2ecc71',
    'DevOps': '#9b59b6',
    'QA': '#e74c3c'
})

gantt.title("第5迭代任务")
gantt.show_today()
gantt.generate().save("sprint5.png")

Progress Tracking

进度跟踪

python
gantt = GanttChartCreator()

gantt.add_task("Research", "2024-01-01", "2024-01-07", progress=100)
gantt.add_task("Design", "2024-01-08", "2024-01-14", progress=100)
gantt.add_task("Development", "2024-01-15", "2024-01-28", progress=60)
gantt.add_task("Testing", "2024-01-29", "2024-02-04", progress=0)

gantt.show_progress(True)
gantt.show_today(True)
gantt.title("Project Status")
gantt.generate().save("status.png")
python
gantt = GanttChartCreator()

gantt.add_task("调研", "2024-01-01", "2024-01-07", progress=100)
gantt.add_task("设计", "2024-01-08", "2024-01-14", progress=100)
gantt.add_task("开发", "2024-01-15", "2024-01-28", progress=60)
gantt.add_task("测试", "2024-01-29", "2024-02-04", progress=0)

gantt.show_progress(True)
gantt.show_today(True)
gantt.title("项目状态")
gantt.generate().save("status.png")

Interactive HTML Chart

交互式HTML图表

python
gantt = GanttChartCreator()
gantt.from_csv("project.csv", task="task", start="start", end="end",
               progress="pct", category="team")

gantt.color_by("team")
gantt.show_progress(True)
gantt.title("Interactive Project View")
gantt.generate(interactive=True)
gantt.save("project.html")
python
gantt = GanttChartCreator()
gantt.from_csv("project.csv", task="task", start="start", end="end",
               progress="pct", category="team")

gantt.color_by("team")
gantt.show_progress(True)
gantt.title("交互式项目视图")
gantt.generate(interactive=True)
gantt.save("project.html")

Team Workload

团队工作量

python
gantt = GanttChartCreator()
python
gantt = GanttChartCreator()

Alice's tasks

Alice的任务

gantt.add_task("Alice: Research", "2024-01-01", "2024-01-07", assignee="Alice") gantt.add_task("Alice: Backend", "2024-01-08", "2024-01-21", assignee="Alice")
gantt.add_task("Alice: 调研", "2024-01-01", "2024-01-07", assignee="Alice") gantt.add_task("Alice: 后端开发", "2024-01-08", "2024-01-21", assignee="Alice")

Bob's tasks

Bob的任务

gantt.add_task("Bob: Design", "2024-01-01", "2024-01-14", assignee="Bob") gantt.add_task("Bob: Frontend", "2024-01-15", "2024-01-28", assignee="Bob")
gantt.add_task("Bob: 设计", "2024-01-01", "2024-01-14", assignee="Bob") gantt.add_task("Bob: 前端开发", "2024-01-15", "2024-01-28", assignee="Bob")

Carol's tasks

Carol的任务

gantt.add_task("Carol: Testing", "2024-01-22", "2024-02-04", assignee="Carol")
gantt.color_by("assignee", colors={ 'Alice': '#3498db', 'Bob': '#2ecc71', 'Carol': '#e74c3c' }) gantt.title("Team Workload - January") gantt.generate().save("team_workload.png")
undefined
gantt.add_task("Carol: 测试", "2024-01-22", "2024-02-04", assignee="Carol")
gantt.color_by("assignee", colors={ 'Alice': '#3498db', 'Bob': '#2ecc71', 'Carol': '#e74c3c' }) gantt.title("1月团队工作量") gantt.generate().save("team_workload.png")
undefined

Dependencies

依赖项

matplotlib>=3.7.0
plotly>=5.15.0
pandas>=2.0.0
kaleido>=0.2.0
matplotlib>=3.7.0
plotly>=5.15.0
pandas>=2.0.0
kaleido>=0.2.0

Limitations

局限性

  • Static charts (matplotlib) have limited interactivity
  • Complex dependency networks may be hard to visualize
  • Date granularity is daily (no hour-level precision)
  • Maximum ~50 tasks for readable charts
  • 静态图表(基于matplotlib)交互性有限
  • 复杂依赖网络可能难以可视化
  • 日期粒度为天(不支持小时级精度)
  • 可读图表最多支持约50个任务