用python写个甘特图
时间: 2023-11-19 21:04:17 浏览: 159
CSharpGantt.rar_C#实现甘特图_c# 甘特图_site:www.pudn.com_用c#做甘特图
5星 · 资源好评率100%
甘特图(Gantt Chart)是一种流程图,用于展示项目的时间计划和进度。在Python中,可以使用matplotlib库来绘制甘特图。下面是一个简单的示例:
```python
import matplotlib.pyplot as plt
import datetime
# 设置任务名称和起止时间
tasks = [
('Task 1', datetime.date(2021, 9, 1), datetime.date(2021, 9, 10)),
('Task 2', datetime.date(2021, 9, 11), datetime.date(2021, 9, 20)),
('Task 3', datetime.date(2021, 9, 21), datetime.date(2021, 9, 30))
]
# 创建一个画布
fig, ax = plt.subplots()
# 设置y轴范围
ax.set_ylim(0, len(tasks) * 5)
# 设置x轴范围
start_date = min(task[1] for task in tasks)
end_date = max(task[2] for task in tasks)
days = (end_date - start_date).days + 1
ax.set_xlim(start_date, end_date + datetime.timedelta(days=1))
# 绘制水平条形图
for i, task in enumerate(tasks):
y = i * 5 + 2.5
start_date, end_date = task[1], task[2]
duration = (end_date - start_date).days + 1
ax.broken_barh([(start_date, duration)], (y, 3), facecolors='blue')
ax.text(start_date, y + 1, task[0], fontsize=10)
# 设置标题和标签
ax.set_title('Gantt Chart')
ax.set_xlabel('Date')
ax.set_yticks([i * 5 + 5 for i in range(len(tasks))])
ax.set_yticklabels([task[0] for task in tasks])
# 显示图形
plt.show()
```
这个示例中,我们创建了一个包含三个任务的列表,每个任务都有一个名称和起止时间。然后,我们使用matplotlib的broken_barh函数绘制水平条形图,表示每个任务的时间范围。最后,我们设置了标题和标签,并显示了图形。
阅读全文