博客
关于我
python制作甘特图的基本知识(附Demo)
阅读量:797 次
发布时间:2023-03-07

本文共 3481 字,大约阅读时间需要 11 分钟。

甘特图是一种常见的项目管理工具,用于直观地展示项目任务的时间分布和进度。在项目管理中,甘特图通过将任务按时间轴排列,便于团队成员了解各个任务的时间安排和完成情况。常用的绘制工具包括matplotlib和plotly,这两种工具各有特点,适用于不同的需求。

matplotlib是一种功能强大的绘图库,尤其适合制作静态的甘特图。以下是使用matplotlib绘制甘特图的示例代码:

import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
tasks = [
{"Task": "Task A", "Start": "2024-01-01", "End": "2024-01-05"},
{"Task": "Task B", "Start": "2024-01-02", "End": "2024-01-07"},
{"Task": "Task C", "Start": "2024-01-08", "End": "2024-01-10"},
]
df = pd.DataFrame(tasks)
df["Start"] = pd.to_datetime(df["Start"])
df["End"] = pd.to_datetime(df["End"])
fig, ax = plt.subplots(figsize=(10, 6))
for index, row in df.iterrows():
ax.barh(row["Task"], (row["End"] - row["Start"]).days, left=row["Start"], color="skyblue")
ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
plt.title("Gantt Chart")
plt.xlabel("Date")
plt.ylabel("Tasks")
plt.show()

如上代码所示,matplotlib通过barh函数绘制水平条形图,StartEnd字段用于确定任务的时间范围。日期轴通过DateLocatorDateFormatter设置为每天一个刻度,确保时间轴清晰易读。

如果需要更复杂的甘特图,例如带有不同的颜色来区分任务,可以在tasks数据结构中添加Color字段:

tasks = [
{
"Task": "Task A",
"Start": "2024-01-01",
"End": "2024-01-05",
"Color": "skyblue"
},
{
"Task": "Task B",
"Start": "2024-01-02",
"End": "2024-01-07",
"Color": "lightgreen"
},
{
"Task": "Task C",
"Start": "2024-01-08",
"End": "2024-01-10",
"Color": "lightcoral"
}
]

修改后的代码如下:

import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
tasks = [
{
"Task": "Task A",
"Start": "2024-01-01",
"End": "2024-01-05",
"Color": "skyblue"
},
{
"Task": "Task B",
"Start": "2024-01-02",
"End": "2024-01-07",
"Color": "lightgreen"
},
{
"Task": "Task C",
"Start": "2024-01-08",
"End": "2024-01-10",
"Color": "lightcoral"
}
]
df = pd.DataFrame(tasks)
df["Start"] = pd.to_datetime(df["Start"])
df["End"] = pd.to_datetime(df["End"])
fig, ax = plt.subplots(figsize=(10, 6))
for index, row in df.iterrows():
ax.barh(row["Task"], (row["End"] - row["Start"]).days, left=row["Start"], color=row["Color"])
ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
plt.title("Gantt Chart with Different Colors")
plt.xlabel("Date")
plt.ylabel("Tasks")
plt.show()

如果你想使用交互式的甘特图工具,plotly是一个更好的选择。plotly可以生成动态的交互式图表,适合在线展示。

以下是使用plotly绘制甘特图的示例代码:

import plotly.express as px
import pandas as pd
tasks = [
{
"Task": "Task A1",
"Start": "2024-01-01",
"Finish": "2024-01-05",
"Group": "Group A"
},
{
"Task": "Task A2",
"Start": "2024-01-06",
"Finish": "2024-01-10",
"Group": "Group A"
},
{
"Task": "Task B1",
"Start": "2024-01-02",
"Finish": "2024-01-07",
"Group": "Group B"
},
{
"Task": "Task B2",
"Start": "2024-01-08",
"Finish": "2024-01-12",
"Group": "Group B"
}
]
df = pd.DataFrame(tasks)
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Group", title="Gantt Chart with Groups")
fig.update_yaxes(categoryorder="total ascending")
fig.show()

如上代码所示,plotly通过px.timeline函数绘制交互式甘特图,color参数用于指定不同的组别颜色,categoryorder参数用于设置y轴的分类顺序。

通过以上代码示例,可以轻松创建出美观且功能完善的甘特图,满足不同项目管理需求。

转载地址:http://ehofk.baihongyu.com/

你可能感兴趣的文章
Python编程:Tkinter图形界面设计(1)
查看>>
Python 基础语法:None
查看>>
Python 基础语法:基本数据类型(一)
查看>>
python编程读取写入excel_Python读取txt内容写入xls格式excel中的方法
查看>>
Python 基础语法:基本数据类型(字典)
查看>>
Python 基础语法:基本数据类型(字符串)
查看>>
Python 基础语法:基本数据类型(集合)
查看>>
Python编程的终极十大工具
查看>>
python 堆排序
查看>>
python编程方式之一-函数式编程
查看>>
python 复习计划
查看>>
Python 多处理 apply_async 永远不会在 Windows 7 上返回结果
查看>>
Python 多处理 Numpy 随机
查看>>
Python 多处理 >= 125 列表永远不会完成
查看>>
Python 多处理:在第一个子错误时中止映射
查看>>
Python 多处理不断产生 pythonw.exe 进程而不做任何实际工作
查看>>
Python 多处理从不加入
查看>>
Python 多处理如何优雅地退出?
查看>>
Python 多处理将子进程的标准输出重定向到 Tkinter 文本
查看>>
Python 多处理库错误(AttributeError:__exit__)
查看>>