使用Python优雅的绘制甘特图

简介

Gantt图表是一种条形图,用于描绘项目进度。图表在垂直轴上列出要执行的任务,在水平轴上列出时间间隔。图中水平条的宽度显示每个活动的持续时间。在Python中,我们可以使用Plotly库来创建和展示Gantt图表。

基础的Gantt图表

首先,我们来创建一个基础的Gantt图表,展示几个任务的开始和结束时间。

# coding=gbk
"""
作者:川川
@时间  : 202210/05 16:05
"""
import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start='2022-01-01', Finish='2022-02-28'),
    dict(Task="Job B", Start='2022-03-05', Finish='2022-04-15'),
    dict(Task="Job C", Start='2022-02-20', Finish='2022-05-30')
])
# 这几个参数固定
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task")
fig.update_yaxes(autorange="reversed")
fig.show()

运行结果如下:
在这里插入图片描述
在这个例子中,我们定义了三个任务,每个任务都有一个开始和结束的日期。我们使用plotly.express的timeline函数来创建图表,并使用update_yaxes来反转y轴的顺序。

为Gantt图表添加颜色

我们可以通过添加一个颜色参数来区分不同的资源或任务状态。

# coding=gbk
"""
作者:川川
@时间  : 202210/05 16:05
"""
import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"),
    dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Resource="Alex"),
    dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Resource="Max")
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
fig.show()

如下:
在这里插入图片描述

在这个例子中,我们添加了一个“Resource”列来表示任务的资源,并将其用作颜色参数。

使用百分比完成度来着色

我们还可以使用任务的完成百分比来为Gantt图表着色。

import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Completion_pct=50),
    dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Completion_pct=25),
    dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Completion_pct=75)
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Completion_pct")
fig.update_yaxes(autorange="reversed")
fig.show()

运行如下:
在这里插入图片描述

按资源展示

也可以在同一水平线上有多个条形,例如按资源:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46211269/article/details/133564031