2024年07月14日 matplotlib绘制甘特图 极客笔记
甘特图是一种项目进度管理工具,用于展示项目任务的开始和结束时间以及任务之间的依赖关系。甘特图通常以条形图的形式展示,横轴表示时间线,纵轴表示任务名称,条形的长度表示任务的起止时间,不同任务之间用箭头表示依赖关系。
甘特图适用于展示项目计划、任务进度、资源分配等信息,是项目管理中常用的一种工具。
在Python中,我们可以使用matplotlib库来绘制甘特图。matplotlib是一个常用的数据可视化库,提供了各种绘图功能,包括直方图、折线图、散点图等。通过matplotlib,我们可以很方便地绘制出美观的甘特图来展示项目进度。
下面我们来演示如何使用matplotlib绘制一个简单的甘特图。
首先,我们需要导入matplotlib库和datetime库,用于处理日期时间数据。
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime
接着,我们定义一些任务数据,包括任务名称、开始时间和结束时间。
tasks = [
{"task": "Task 1", "start": datetime(2022, 1, 1), "end": datetime(2022, 1, 5)},
{"task": "Task 2", "start": datetime(2022, 1, 3), "end": datetime(2022, 1, 8)},
{"task": "Task 3", "start": datetime(2022, 1, 6), "end": datetime(2022, 1, 10)},
{"task": "Task 4", "start": datetime(2022, 1, 9), "end": datetime(2022, 1, 15)}
]
接下来,我们创建一个画布和坐标轴,并设置日期格式。
fig, ax = plt.subplots()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
然后,我们遍历任务数据,将每个任务表示为一个条形,并添加到图中。
for i, task in enumerate(tasks):
ax.broken_barh([(task["start"], (task["end"] - task["start")).days)], (i, 1), edgecolor='black')
ax.text(task["start"], i + 0.5, task["task"], ha='right', va='center')
最后,我们设置图的标题和坐标轴标签,并显示图形。
plt.title('Gantt Chart')
plt.xlabel('Date')
plt.yticks(range(len(tasks)), [task["task"] for task in tasks])
plt.ylim(0, len(tasks))
plt.show()
运行以上代码,我们可以得到一个简单的甘特图,展示了四个任务的开始和结束时间,并且任务之间的依赖关系。
通过matplotlib库,我们可以灵活地自定义甘特图的样式和布局,实现更加丰富和复杂的项目进度展示。
在本文中,我们介绍了甘特图的概念及其在项目管理中的应用,以及如何使用matplotlib库来绘制甘特图。通过示例代码,我们演示了如何创建一个简单的甘特图,并展示了项目任务的起止时间和依赖关系。
本文链接:http://so.lmcjl.com/news/8458/