python制作甘特图的基本知识(附Demo)

目录

  • 前言
  • 1. matplotlib
  • 2. plotly

前言

甘特图是一种常见的项目管理工具,用于表示项目任务的时间进度

直观地看到项目的各个任务在时间上的分布和进度

常用的绘制甘特图的工具是 matplotlib 和 plotly

主要以Demo的形式展示

1. 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"},
]# 将数据转换为 DataFrame
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()

截图如下:

在这里插入图片描述

带有不同颜色的甘特图

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"},
]# 将数据转换为 DataFrame
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()

截图如下:

在这里插入图片描述

2. plotly

交互式绘图库,适合制作动态甘特图

import plotly.express as px
import pandas as pd# 创建数据
tasks = [{"Task": "Task A", "Start": "2024-01-01", "Finish": "2024-01-05"},{"Task": "Task B", "Start": "2024-01-02", "Finish": "2024-01-07"},{"Task": "Task C", "Start": "2024-01-08", "Finish": "2024-01-10"},
]# 将数据转换为 DataFrame
df = pd.DataFrame(tasks)# 使用 plotly 绘制甘特图
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", title="Gantt Chart")
fig.update_yaxes(categoryorder="total ascending")# 显示图形
fig.show()

截图如下:

在这里插入图片描述

带有任务分组的甘特图

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"},
]# 将数据转换为 DataFrame
df = pd.DataFrame(tasks)# 使用 plotly 绘制甘特图
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()

截图如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网对抗-基石框架篇单域架构域内应用控制成员组成用户策略信息收集环境搭建

知识点: 1、基石框架篇-单域架构-权限控制-用户和网络 2、基石框架篇-单域架构-环境搭建-准备和加入 3、基石框架篇-单域架构-信息收集-手工和工具1、工作组(局域网) 将不同的计算机按照功能分别列入不同的工作组。想要访问某个部门的资源,只要在“网络…

Electron运行报错:Error Cannot find module ‘node_moduleselectroncli.js‘

Electron运行报错:Error: Cannot find module ‘node_modules\electron\cli.js’ 顾名思义,命令行执行Electron .时候,会优先从项目目录查找对应依赖,如果是报错显示是找不到项目目录下的依赖,我们可以从安装在全局的…

DAMA学习笔记(五)-数据存储和操作

1.引言 数据存储与操作包括对存储数据的设计、实施和支持,最大化实现数据资源的价值,贯穿于数据创建/获取到处置的整个生命周期。 数据存储与操作包含两个子活动(图6-1)。 图6-1 语境关系图:数据存储与操作 (1) 数据库…

记录vite项目中Cornerstone的兼容问题(持续更新)

🔎 在vite项目中打包提示错误 ESM integration proposal for Wasm" is not supported currently. ⛳️ 问题描述 Error: Could not load /home/xxx/xxx/node_modules/icr/polyseg-wasm/dist/ICRPolySeg.wasm (imported by node_modules/icr/polyseg-wasm/di…

【代码随想录】【算法训练营】【第66天】 [卡码95]城市间货物运输II [卡码96]城市间货物运输III

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 66,周五,ding ding~ [卡码95] 城市间货物运输II 题目描述 卡码95 城市间货物运输II 解题思路 前提: 思路: 重点: 代码实现 C语言 …

数据结构(Java):队列Queue集合力扣面试OJ题

1、队列 1.1 队列的概念 队列是一个特殊的线性表,只允许在一端(队尾)进行插入数据操作,在另一端(对头)进行删除数据。队列具有先进先出FIFO(First In First Out)的特性。 入队:数据只能从队尾…

有奖竞猜!斗牛士军团与法兰西骑士的终极之战,谁将笑傲欧洲之巅?

痛快看球,畅玩游戏,AGON爱攻带你进入酣畅淋漓的足球世界! 7月15日,绿茵赛场硝烟再起,两支身披荣光的王者之师,一路过关斩将,最终会师决赛。一场万众瞩目的巅峰对决即将拉开帷幕,究竟…

LabVIEW前面板占满整个屏幕(转)

希望在运行一个LabVIEW程序时,它的前面板能够占据整个屏幕,且不显示Windows的任务栏或其他任何的LabVIEW菜单选项。怎样才能实现这一功能? 您可以通过手动配置或编程的方式实现该功能。 手动配置VI属性 您可以通过以下操作,将…

导入项目,JAVA文件是咖啡杯图标

问题 从图中可以看到,JAVA文件是咖啡杯图标 原因 项目没有识别为MAVEN项目 解决办法 进入pom.xml文件,右键点击Add as Maven Project即可

Spring MVC入门3

看完这篇博客你能学到什么 理解JSON的使用理解注解PathVariable理解解注解RequestPart理解cookie和Session的基本概念理解cookie和Session的区别 如果想真正掌握,还需要自己勤加练习。 正文 JSON JSON概念 JSON:JavaScript Object Notation 【JavaS…

【YOLOv8】 用YOLOv8实现数字式工业仪表智能读数(一)

上一篇圆形表盘指针式仪表的项目受到很多人的关注,咱们一鼓作气,把数字式工业仪表的智能读数也研究一下。本篇主要讲如何用YOLOV8实现数字式工业仪表的自动读数,并将读数结果进行输出,若需要完整数据集和源代码可以私信。 目录 &…

gin源码分析

一、高性能 使用sync.pool解决频繁创建的context对象,在百万并发的场景下能大大提供访问性能和减少GC // ServeHTTP conforms to the http.Handler interface. // 每次的http请求都会从sync.pool中获取context,用完之后归还到pool中 func (engine *Engin…

c语言位操作符相关题目之交换两个数的值

文章目录 一、题目二、方法11,思路2,代码实现 三、方法21,思路2,代码实现 四、方法31,思路2,代码实现 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 实现两个变量的…

小米起诉“小米”商标侵权,索赔500万!

近日浙江丽水有家叫小米的公司,因为商标侵权被小米科技起诉索赔500万,需要变更企业名称,官网也不能用“小米智能大家居”等,还有其它的赔偿,普推知产商标老杨分析,“小米智能大家居”“小米”,后…

交易平台Zero Hash现已支持SUI交易

Zero Hash是一家领先的加密货币和稳定币基础设施平台,为包括Stripe、Shift4和Franklin Templeton在内的公司提供支持,现在也支持对SUI的访问。此举使Zero Hash的客户及其终端用户能够使用SUI。 提供API和SDK以及专注于无缝连接法币、加密货币和稳定币的…

读人工智能全传11人工智能会出什么错

1. 人工智能会出什么错 1.1. 一些报道是公正合理的,不过坦白地说,大部分报道都愚蠢得无可救药 1.2. 一些报道颇有知识性和引导性,而大部分则是杞人忧天式的恐吓 1.3. 滑稽的报道迎合了大众对人工智能的“终结者式恐惧” 1.3.1. 我们创造出…

html设计(两种常见的充电效果)

第一种 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

【FineGrip】全光学感知:一种新的通用遥感图像解释任务和细粒度数据集(IEEE TGRS 2024)

摘要 目前的遥感解译模型通常集中于单一的任务&#xff0c;如检测、分割或字幕。但是&#xff0c;针对特定任务设计的模型无法实现综合多层次解译。该领域也缺乏多任务联合解译数据集。本文提出Panoptic Perception&#xff0c;一个新的任务和一个新的细粒度数据集&#xff08…

GESP CCF C++ 二级认证真题 2024年6月

第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级&#xff0c;那他可以选择的认证语言有几种&#xff1f;&#xff08; &#xff09; A. 1 B. 2 C. 3 D. 4 第 2 题 下面流程图在yr输入2024时&#xff0c;可以判定yr代表闰年&#xff0c;并输出 2月…

介绍一款数据准实时复制(CDC)中间件 `Debezium`

简介 文章开头先介绍一下什么是CDC。数据准实时复制(CDC)是目前行内实时数据需求大量使用的技术。常用的中间件有Canal、Debezium、Flink CDC等 下面我们做一下对比 各有优缺点吧,本主要介绍一下Debezium中间件。 Debezium是什么 Debezium是一个为变更数据捕获(CDC)提供…