📅  最后修改于: 2023-12-03 14:46:25.810000             🧑  作者: Mango
甘特图是一种流程图,通常用于展示项目的时间安排表和进度。在项目管理、生产制造和其他领域中都有广泛应用。在 Python 中,我们可以使用 Matplotlib 库来创建基本的甘特图。
在创建甘特图之前,需要先安装 Matplotlib 库。在命令行窗口中,运行以下命令:
pip install matplotlib
下面是一个使用 Matplotlib 库创建基本甘特图的示例代码:
import matplotlib.pyplot as plt
import datetime
tasks = ['Task 1', 'Task 2', 'Task 3'] # 任务名称
start_dates = [datetime.date(2021, 7, 1), datetime.date(2021, 7, 10), datetime.date(2021, 7, 15)] # 开始时间
end_dates = [datetime.date(2021, 7, 5), datetime.date(2021, 7, 20), datetime.date(2021, 7, 25)] # 结束时间
# 计算任务持续时间
durations = []
for i in range(len(tasks)):
durations.append((end_dates[i] - start_dates[i]).days + 1)
# 创建甘特图
fig, ax = plt.subplots(figsize=(8, 3), dpi=100)
start = min(start_dates)
pos = 0
for i in range(len(tasks)):
ax.barh(pos, durations[i], left=start_dates[i] - start, height=0.5)
pos += 1
# 设置 y 轴标签和网格线
ax.set_yticks(range(len(tasks)))
ax.set_yticklabels(tasks)
ax.grid(True)
# 设置 x 轴 ticks 和标签
xticks = []
xticklabels = []
for i in range(min(start_dates).day, max(end_dates).day + 1):
if i % 2 == 0:
xticks.append((datetime.date(2021, 7, i) - start).days)
xticklabels.append(str(i))
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels)
# 设置标题和 x 轴标签
ax.set_title('Gantt Chart')
ax.set_xlabel('Day')
# 显示图形
plt.show()
上述代码的主要部分包括以下内容:
import matplotlib.pyplot as plt
。import datetime
,用于处理日期时间数据。durations = []
,遍历任务列表,计算每个任务的持续时间,并将结果保存在列表中。fig, ax = plt.subplots(figsize=(8, 3), dpi=100)
,使用 Matplotlib 的 subplots() 函数创建画布和图形对象,并设置图形大小和分辨率。ax.barh(pos, durations[i], left=start_dates[i] - start, height=0.5)
,使用 barh() 函数绘制水平条形图表示甘特图,其中 pos 表示任务的垂直位置,durations[i] 表示任务持续的时间长度,left 表示任务开始的日期相对于图形起点的距离,height 表示任务条形的高度。ax.set_yticks(range(len(tasks)))
,使用 set_yticks() 函数设置 y 轴刻度,使用 set_yticklabels() 函数设置 y 轴标签,使用 grid() 函数设置网格线。ax.set_xticks(xticks)
,使用 set_xticks() 函数设置 x 轴刻度,使用 set_xticklabels() 函数设置 x 轴标签。ax.set_title('Gantt Chart')
,使用 set_title() 函数设置图形的标题,使用 set_xlabel() 函数设置 x 轴标签。plt.show()
,执行 show() 函数,显示甘特图。本文介绍了使用 Matplotlib 库创建基本甘特图的示例代码。使用 Python 和 Matplotlib 库可以轻松创建甘特图,并展示项目的时间安排表和进度。