博客
关于我
python制作甘特图的基本知识(附Demo)
阅读量:799 次
发布时间: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函数绘制水平条形图,Start和End字段用于确定任务的时间范围。日期轴通过DateLocator和DateFormatter设置为每天一个刻度,确保时间轴清晰易读。

如果需要更复杂的甘特图,例如带有不同的颜色来区分任务,可以在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固定后缀(名物化词汇)词频统计:抽取+统计+可视化
查看>>
python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
查看>>
python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
查看>>
python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
查看>>
Python哪个版本最稳定好用2023.10.19
查看>>
Python和黑客技术的渊源
查看>>
Python和RF编写接口自动化
查看>>
Python和RF编写web自动化
查看>>
python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
查看>>
python和java哪个更值得学——来自知乎高赞回答
查看>>
python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
查看>>
python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
查看>>
Python命名中尾随下划线有什么好处?
查看>>
Python启动脚本
查看>>
Python听写汇总结果
查看>>
python吊打Excel?屁!那是你不会用!
查看>>
Python合并两张图片 | 先叠透明度再合并 (附Demo)
查看>>
python各进制的表述与转换
查看>>
python各种库安装
查看>>
python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
查看>>