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

📅  最后修改于: 2022-05-13 01:55:27.038000             🧑  作者: Mango

Python|使用 Matplotlib 的基本甘特图

先决条件: Matplotlib 介绍
在本文中,我们将讨论如何使用 Matplotlib 在Python中绘制甘特图
甘特图是项目计划或任务计划(在 OS 中)的图形描述。它是一种条形图,显示项目的几个元素的开始和完成日期,包括资源或截止日期。第一张甘特图是在 1890 年代中期由波兰工程师 Karol Adamiecki 设计的,他在波兰南部经营一家钢铁厂,并对管理理念和技术产生了兴趣。在 Adamiecki 大约 15 年后,美国工程师兼项目管理顾问亨利甘特设计了他自己的图表版本,并以“甘特图”而闻名。
甘特图的一些用途:

  • 项目调度。
  • 处理器上的任务调度

用于任务调度的示例甘特图如下所示:

我们将使用 matplotlib 中可用的 broken_barh 类型的图形来绘制甘特图。
下面是生成上述甘特图的代码:

Python3
# Importing the matplotlib.pyplot
import matplotlib.pyplot as plt
 
# Declaring a figure "gnt"
fig, gnt = plt.subplots()
 
# Setting Y-axis limits
gnt.set_ylim(0, 50)
 
# Setting X-axis limits
gnt.set_xlim(0, 160)
 
# Setting labels for x-axis and y-axis
gnt.set_xlabel('seconds since start')
gnt.set_ylabel('Processor')
 
# Setting ticks on y-axis
gnt.set_yticks([15, 25, 35])
# Labelling tickes of y-axis
gnt.set_yticklabels(['1', '2', '3'])
 
# Setting graph attribute
gnt.grid(True)
 
# Declaring a bar in schedule
gnt.broken_barh([(40, 50)], (30, 9), facecolors =('tab:orange'))
 
# Declaring multiple bars in at same level and same width
gnt.broken_barh([(110, 10), (150, 10)], (10, 9),
                         facecolors ='tab:blue')
 
gnt.broken_barh([(10, 50), (100, 20), (130, 10)], (20, 9),
                                  facecolors =('tab:red'))
 
plt.savefig("gantt1.png")


让我们一一了解不同的代码:

fig, gnt = plt.subplots()
  • 在这里,我们声明了一个用于绘制图表的图形“gnt”。
gnt.set_ylim(0, 50)
gnt.set_xlim(0, 160)
  • 在这里,我们声明了图表的 X 轴和 Y 轴的界限。默认情况下,X 轴和 Y 轴的下限为 0,两个轴的上限为 X 轴和 Y 轴最高值的 5 个单位。
gnt.set_xlabel('seconds since start')
gnt.set_ylabel('Processor')
  • 在这里,我们为轴添加了标签。默认情况下,没有标签。
gnt.set_yticks([15, 25, 35])
gnt.set_yticklabels(['1', '2', '3'])
  • 在这里,我们在 Y 轴上添加了刻度。我们也可以给它们贴上标签。默认情况下,轴在范围内均匀划分。
gnt.grid(True)
  • 在这里,我们将 grid() 设置为 True 以显示网格。默认情况下,它是 False。
gnt.broken_barh([(40, 50)], (30, 9), facecolors=('tab:orange'))
  • 在这里,我们在图表中添加了一个条形图。在此示例中,此条表示操作持续时间为 40 到 (40+50)= 90 秒。
    基本论点:
gnt.broken_barh([(start_time, duration)],
                 (lower_yaxis, height),
                 facecolors=('tab:colours'))
  • 默认情况下,颜色设置为蓝色。
    我们可以同时声明多个 bar:
gnt.broken_barh([(10, 50), (100, 20), (130, 10)], (20, 9),
                                  facecolors=('tab:red'))
  • 我们还可以通过将“edgecolor”属性设置为任何颜色来添加边缘颜色。
plt.savefig("gantt1.png")
  • 我们将形成的图形保存在 png 文件中。

参考: Broken Barh 示例 Matplotlib 文档