Python甘特图制作指南

甘特图是一种项目管理工具,用于展示项目进度、任务依赖和时间安排。本文将介绍如何使用Pythonmatplotlib和plotly库来创建甘特图,并有效展示项目时间线和任务依赖关系。

甘特图简介

甘特图是一种以亨利·甘特(Henry L. Gantt)命名的图表,它通过水平条形图来表示各个任务或事件,以及它们的开始和结束日期,从而为项目的成功提供了一条清晰的路线图。通过甘特图,可以发现任务之间的关系,识别依赖关系,并创建一个符合项目进度的实际时间表。

使用Python的matplotlib库创建甘特图

matplotlib库是Python中一个强大的绘图工具,可以用来创建甘特图。以下是使用matplotlib创建甘特图的步骤和代码示例。

import matplotlib.pyplot as plt import pandas as pd import matplotlib.dates as mdates # 定义数据 df = pd.DataFrame([ dict(Task="任务A", Start='2009-01-01', Finish='2009-02-28'), dict(Task="任务B", Start='2009-03-05', Finish='2009-04-15'), dict(Task="任务C", Start='2009-02-20', Finish='2009-05-30') ]) # 将开始和结束日期转换为datetime df['Start'] = pd.to_datetime(df['Start']) df['Finish'] = pd.to_datetime(df['Finish']) # 计算持续时间 df['Duration'] = df['Finish'] - df['Start'] # 创建图形和轴 fig, ax = plt.subplots() # 为每个任务创建条形图 for i, row in df.iterrows(): ax.barh(row['Task'], row['Duration'].days, left=row['Start']) # 将x轴格式化为日期 ax.xaxis_date() ax.xaxis.set_major_locator(mdates.MonthLocator()) ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) # 设置标签 ax.set_xlabel('日期') ax.set_ylabel('任务') ax.set_title('甘特图') # 反转y轴,以便任务从上到下列出 ax.invert_yaxis() # 旋转日期标签以提高可读性 plt.xticks(rotation=45) # 显示图表 plt.tight_layout() plt.show()

在上述代码中,matplotlib的`subplots`函数用于创建一个图形和一个轴。循环遍历DataFrame的每一行,为每个任务创建一个水平条形图(h-bar),使用matplotlib的`barh`函数。每个条形图的高度设置为任务的持续时间,每个条形图的左边缘设置为任务的开始日期。

使用Python的plotly库创建甘特图

plotly库是另一个Python绘图库,它提供了创建甘特图的更简单语法和时间框架的定制。以下是使用plotly创建甘特图的步骤和代码示例。

import plotly.figure_factory as ff df = [ dict(Task="任务A", Start='2009-01-01', Finish='2009-02-28'), dict(Task="任务B", Start='2009-03-05', Finish='2009-04-15'), dict(Task="任务C", Start='2009-02-20', Finish='2009-05-30') ] fig = ff.create_gantt(df) fig.show()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485