简介
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()
运行如下:
按资源展示
也可以在同一水平线上有多个条形,例如按资源: