📜  Python|使用 Matplotlib 的基本甘特图(1)

📅  最后修改于: 2023-12-03 14:46:25.810000             🧑  作者: Mango

Python | 使用 Matplotlib 的基本甘特图

甘特图是一种流程图,通常用于展示项目的时间安排表和进度。在项目管理、生产制造和其他领域中都有广泛应用。在 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()
代码解析

上述代码的主要部分包括以下内容:

  • 导入 Matplotlib 库:import matplotlib.pyplot as plt
  • 导入 datetime 模块: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 表示任务条形的高度。
  • 设置 y 轴标签和网格线:ax.set_yticks(range(len(tasks))),使用 set_yticks() 函数设置 y 轴刻度,使用 set_yticklabels() 函数设置 y 轴标签,使用 grid() 函数设置网格线。
  • 设置 x 轴 ticks 和标签:ax.set_xticks(xticks),使用 set_xticks() 函数设置 x 轴刻度,使用 set_xticklabels() 函数设置 x 轴标签。
  • 设置标题和 x 轴标签:ax.set_title('Gantt Chart'),使用 set_title() 函数设置图形的标题,使用 set_xlabel() 函数设置 x 轴标签。
  • 显示图形:plt.show(),执行 show() 函数,显示甘特图。
结论

本文介绍了使用 Matplotlib 库创建基本甘特图的示例代码。使用 Python 和 Matplotlib 库可以轻松创建甘特图,并展示项目的时间安排表和进度。