📜  plotly 中的甘特图(1)

📅  最后修改于: 2023-12-03 15:33:43.054000             🧑  作者: Mango

plotly 中的甘特图

甘特图是一种项目管理工具,用于视觉化项目中的任务和时间安排。在 plotly 中,我们可以利用其甘特图库轻松地创建和自定义甘特图。

安装

安装 plotly 库:

!pip install plotly
基础用法

首先,我们需要导入相应的库:

import plotly.express as px

创建一个 DataFrame:

import pandas as pd

df = pd.DataFrame([
    dict(Task="任务1", Start='2021-09-01', Finish='2021-09-05'),
    dict(Task="任务2", Start='2021-09-03', Finish='2021-09-08'),
    dict(Task="任务3", Start='2021-09-05', Finish='2021-09-10'),
    dict(Task="任务4", Start='2021-09-09', Finish='2021-09-14')
])

然后,我们可以使用 fig = px.timeline() 函数创建一个甘特图,然后将 DataFrame 中的任务名称和开始时间、结束时间以及颜色字段传递给函数。

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task")
fig.show()

甘特图将被绘制出来,以清晰地显示每个任务的时间长度和排列。

自定义

我们可以使用多种属性进一步自定义甘特图。例如,我们可以自定义时间轴的名称和格式:

fig.update_xaxes(title_text='时间', dtick="D")

我们还可以更改甘特图的大小、位置和背景颜色:

fig.update_layout(
    title_text='任务时间安排',
    title_font_size=24,
    title_font_family="Arial",
    height=400,
    margin=dict(l=20, r=20, t=60, b=10),
    plot_bgcolor='rgb(240,240,240)'
)

此外,我们还可以更改任务的颜色和标签,以便更好地区分它们:

colors = [
    "rgb(200, 20, 20)", "rgb(120, 200, 20)",
    "rgb(20, 120, 200)", "rgb(200, 120, 20)"
]
labels = ["紧急任务", "高优先级任务", "中优先级任务", "低优先级任务"]

fig.update_traces(
    hovertemplate="<b>%{y}</b><br>开始时间: %{x}<br>结束时间: %{x2}",
    marker=dict(color=colors),
)

fig.update_yaxes(categoryorder='array', categoryarray=labels)

这些自定义将使我们的甘特图更具可读性和易用性。

结论

使用 plotly 中的甘特图库,我们可以轻松地创建和自定义项目管理工具,以视觉化项目中的任务和时间安排。为了更好地满足我们的需求,我们可以使用许多属性来自定义甘特图的外观和功能。