gantt-chart-creator
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGantt 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 GanttChartCreatorpython
from scripts.gantt_creator import GanttChartCreatorSimple 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")
undefinedgantt = 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")
undefinedFeatures
功能特性
- 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
undefinedpython
undefinedFrom 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")
undefinedgantt.add_milestone("项目启动", "2024-01-01")
gantt.add_milestone("Beta版本发布", "2024-02-15", color="#e74c3c")
undefinedDependencies
任务依赖
python
undefinedpython
undefinedAdd 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
undefinedgantt.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") # 开始-完成
undefinedStyling
样式设置
python
undefinedpython
undefinedTitle
标题
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
undefinedgantt.grid(show=True, style='weekly') # daily, weekly, monthly
undefinedGeneration and Export
生成与导出
python
undefinedpython
undefinedGenerate 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()
undefinedgantt.show()
undefinedData 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,Davecsv
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,DaveTask 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):
- (ISO format, recommended)
YYYY-MM-DD MM/DD/YYYYDD/MM/YYYYYYYY/MM/DD
支持的日期格式(自动识别):
- (ISO格式,推荐)
YYYY-MM-DD MM/DD/YYYYDD/MM/YYYYYYYY/MM/DD
CLI Usage
CLI 用法
bash
undefinedbash
undefinedBasic usage
基础用法
python gantt_creator.py --input tasks.csv
--task name --start start_date --end end_date
--output gantt.png
--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
--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
--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
--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
--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
--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
--task name --start start --end end
--show-today
--output current_status.png
undefinedpython gantt_creator.py --input tasks.csv
--task name --start start --end end
--show-today
--output current_status.png
--task name --start start --end end
--show-today
--output current_status.png
undefinedCLI Arguments
CLI 参数
| Argument | Description | Default |
|---|---|---|
| Input CSV file | Required |
| Task name column | Required |
| Start date column | Required |
| End date column | Required |
| Progress % column | - |
| Category column (for coloring) | - |
| Assignee column (for coloring) | - |
| Output file path | |
| Chart title | - |
| Generate interactive HTML | False |
| Show today marker | False |
| Show progress bars | False |
| Chart width | 12 |
| Chart height | 6 |
| 参数 | 描述 | 默认值 |
|---|---|---|
| 输入CSV文件 | 必填 |
| 任务名称列 | 必填 |
| 开始日期列 | 必填 |
| 结束日期列 | 必填 |
| 进度百分比列 | - |
| 分类列(用于颜色编码) | - |
| 负责人列(用于颜色编码) | - |
| 输出文件路径 | |
| 图表标题 | - |
| 生成交互式HTML | False |
| 显示今日标记 | False |
| 显示进度条 | False |
| 图表宽度 | 12 |
| 图表高度 | 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")
undefinedgantt.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")
undefinedColor-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")
undefinedgantt.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")
undefinedDependencies
依赖项
matplotlib>=3.7.0
plotly>=5.15.0
pandas>=2.0.0
kaleido>=0.2.0matplotlib>=3.7.0
plotly>=5.15.0
pandas>=2.0.0
kaleido>=0.2.0Limitations
局限性
- 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个任务