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()
截图如下:

相关文章:
python制作甘特图的基本知识(附Demo)
目录 前言1. matplotlib2. plotly 前言 甘特图是一种常见的项目管理工具,用于表示项目任务的时间进度 直观地看到项目的各个任务在时间上的分布和进度 常用的绘制甘特图的工具是 matplotlib 和 plotly 主要以Demo的形式展示 1. matplotlib 功能强大的绘图库&a…...
javascript设计模式总结
参考 通过设计模式可以增加代码的可重用性、可扩展性、可维护性 设计模式五大设计原则 单一职责:一个程序只需要做好一件事,如果结构过于复杂就拆分开,保证每个部分独立 开放封闭原则:对扩展开放,对修改封闭。增加需…...
gpt-4o看图说话-根据图片回答问题
问题:中国的人口老龄化究竟有多严重? 代码下实现如下:(直接调用openai的chat接口) import os import base64 import requests def encode_image(image_path): """ 对图片文件进行 Base64 编码 输入…...
【MySQL】7.MySQL 的内置函数
MySQL的内置函数 一.日期函数二.字符串函数三.数学函数四.其它函数 一.日期函数 函数名称说明current_date()当前日期current_time()当前时间current_timestamp当前时间戳(日期时间)date(datetime)截取 datetime 的日期部分date_add(date, interval d_value_type)给 date 添加…...
爬虫:Sentry-Span参数逆向
在抓某眼查数据太过频繁时会出现极验的验证码。极验的教程有很多,主要是发现在这里获取验证码的时候需要携带参数Sentry-Span。在这里记录一下逆向的主要过程,直接上补环境的代码。 window global; location {}; my_log console.log;(function () {l…...
音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现
一、引言 在上一节《音视频入门基础:H.264专题(11)——计算视频分辨率的公式》中,讲述了通过SPS中的属性计算H.264编码的视频的分辨率的公式。本文讲解FFmpeg源码中计算视频分辨率的实现。 二、FFmpeg源码中计算视频分辨率的实现…...
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将FPGA仿真结果导入到matlab显示结果: 测试样本1 测试样本2 测试样本3 2.算法运行软件版本 vivado2019.2 …...
golang json反序列化科学计数法的坑
问题背景 func CheckSign(c *gin.Context, signKey string, singExpire int) (string, error) {r : c.Requestvar formParams map[string]interface{}if c.Request.Body ! nil {bodyBytes, _ : io.ReadAll(c.Request.Body)defer c.Request.Body.Close()if len(bodyBytes) >…...
罗技K380无线键盘及鼠标:智慧互联,一触即通
目录 1. 背景2. K380无线键盘连接电脑2.1 键盘准备工作2.2 电脑配置键盘的连接 3. 无线鼠标的连接3.1 鼠标准备工作3.2 电脑配置鼠标的连接 1. 背景 有一阵子经常使用 ipad,但是对于我这个习惯于键盘打字的人来说,慢慢在 ipad 上打字,实在是…...
卸载wps office的几种方法收录
第一种方法: 1.打开【任务管理器】,找到相关程序,点击【结束任务】。任务管理器可以通过左下角搜索找到。 2.点击【开始】-【设置】-【应用】-下拉找到WPS应用,右键卸载,不保留软件配置 …...
SpringCloud第一篇Docker基础
文章目录 一、常见命令二、数据卷三、数据挂载四、自定义镜像五、网络 一、常见命令 Docker最常见的命令就是操作镜像、容器的命令,详见官方文档: https://docs.docker.com/ 需求: 在DockerHub中搜索Nginx镜像,查看镜像的名称 …...
从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)
目录 文章目录 目录摘要1.将PX4源码上传至腾讯工蜂2.从腾讯工蜂克隆源码到本地ubuntu3.如何查看自己源码的版本信息 摘要 本节主要记录从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)及如何查看PX4的固件版本信息,欢迎批评指正! PX4源码版本V1.…...
Docker Compose 启动容器例子
Docker Compose 启动容器例子 Docker Compose 文件 (docker-compose.yml) version: 3.8services:web:image: nginx:latestports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmlnetworks:- webnetdb:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: exam…...
守护服务之门:Eureka中分布式认证与授权的实现策略
守护服务之门:Eureka中分布式认证与授权的实现策略 引言 在微服务架构中,服务间的通信安全至关重要。Eureka作为Netflix开源的服务发现框架,虽然本身提供了服务注册与发现的功能,但并不直接提供认证与授权机制。为了实现服务的分…...
核密度估计KDE和概率密度函数PDF(深入浅出)
目录 1. 和密度估计(KDE)核密度估计的基本原理核密度估计的公式核密度估计的应用Python中的KDE实现示例代码 结果解释解释结果 总结 2. 概率密度函数(PDF)概率密度函数(PDF)是怎么工作的:用图画…...
免开steam 脱离steam 进行游戏的小工具
链接:https://pan.baidu.com/s/1k2C8b4jEqKIGLtLZp8YCgA?pwd6666 提取码:6666 我们只需选择游戏根目录 然后输入AppID 点击底部按钮 进行就可以了 关于AppID在:...
深度学习--系统配置流程
Win10系统配置双系统Ubuntu18.04 深度学习台式服务器自装练手1.win10磁盘管理2.下载系统镜像制作U盘3.系统安装4. 安装后的系统设置工作5.配置CUDA环境CUDNN安装 深度学习台式服务器自装练手 写在最前 CUDA最高支持11.4 显卡3060 1.win10磁盘管理 首先对原有磁盘进行分区整理…...
把Docker的虚拟磁盘文件移动到别的盘符
今天清理C盘空间,发现一个很大的文件 ext4.vhdx 足有 15G 之多,发现这个是Docker的虚拟磁盘文件,于是在网上找到移到它的办法,使用 PowerShell 执行下面命令 查看Docker状态和版本 wsl -l -v 关闭Docker服务 wsl --shutdown …...
Oracle 19c RAC 心跳异常处理
客户机房异常断电后,启动19c集群报错如下 2024-07-05 17:43:27.934 [GIPCD(5964292)]CRS-42216: No interfaces are configured on the local node for interface definition en3(:.*)?:100.100.100.0: available interface definitions are [en0(:.*)?:10.88.0.…...
微信小程序引入自定义子组件报错,在 C:/Users/***/WeChatProjects/miniprogram-1/components/路径下***
使用原生小程序开发时候,会报下面的错误, [ pages/button/button.json 文件内容错误] pages/button/button.json: [“usingComponents”][“second-component”]: “…/…/components/second-child/index”,在 C:/Users/***/WeChatProjects/m…...
Emacs verilog-mode实战:5分钟搞定AUTOARG自动参数生成(附避坑指南)
Emacs verilog-mode实战:5分钟掌握AUTOARG高效参数生成技巧 在数字电路设计领域,Verilog作为主流硬件描述语言,其模块化开发方式虽然提高了代码复用性,却也带来了大量重复性工作。模块接口定义中的参数列表维护就是典型痛点——每…...
编程技巧:模式切换程序框架
目录 1.模式切换程序框架 2.实现思路 3.模式切换程序框架 4.模式切换每个模式模块化流程 5.代码 Mode1.c Mode2.c Mode3.c Global.c main.c 1.模式切换程序框架 Init:进入模式前,执行一遍,用于初始化工作 Loop:执行完In…...
共享图书借阅系统 Java 源码 + 数据库设计完整方案
以下是一个共享图书借阅系统的Java源码与数据库设计的完整方案,涵盖系统架构、核心功能实现、数据库设计以及安全防护措施等方面:一、系统架构技术栈:后端:Spring Boot 2.x MyBatis-Plus(简化数据库操作)前…...
Java学习——String 类的不可变性、底层实现(JDK1.8+)
目录 一、核心定义与设计思想 1. 核心定义 2. 核心设计思想 二、底层实现原理(含 JDK 源码分析 / 反编译验证) 1. JDK1.8 String 核心源码解析 2. 字符串常量池(JDK1.8 底层) 3. 反编译验证(不可变性 编译器优…...
MacOS/Linux双平台实测:Ollama一键部署千问大模型避坑指南(附WebUI汉化技巧)
MacOS/Linux双平台实测:Ollama一键部署千问大模型避坑指南(附WebUI汉化技巧) 在开源大模型生态中,Ollama凭借其轻量化部署能力成为开发者本地运行AI模型的首选工具。本文将基于MacOS(M系列芯片/Intel)和Lin…...
java篇26-Java匿名内部类、invoke方法、动态代理
一、匿名内部类 匿名内部类一般作为方法的参数,这个方法的形参为接口,而实参为匿名内部类(可以理解为接口的对象)并且重写了接口中的方法。 书写形式: new <接口名>(){ Overvide //重写方法 }例如: 定…...
gh_mirrors/eg/eggs深度解析:一站式解决所有服务器部署难题
gh_mirrors/eg/eggs深度解析:一站式解决所有服务器部署难题 【免费下载链接】eggs Service eggs for the pterodactyl panel 项目地址: https://gitcode.com/gh_mirrors/eg/eggs 在服务器管理领域,快速部署和高效运维一直是开发者和管理员面临的核…...
Qwen3.5-2B部署教程:Conda+Supervisor环境一键拉起,告别手动配置
Qwen3.5-2B部署教程:CondaSupervisor环境一键拉起,告别手动配置 1. 前言:认识Qwen3.5-2B轻量化模型 Qwen3.5-2B是Qwen3.5系列中的轻量化多模态基础模型,仅有20亿参数规模,专为低功耗、低门槛部署场景设计。这个模型特…...
探索声发射 b 值:Matlab 程序之旅
声发射b值,Matlab程序在材料科学和岩石力学等领域,声发射(Acoustic Emission,AE)技术是研究材料内部损伤演化的重要手段。而声发射 b 值作为其中一个关键参数,能反映材料内部微破裂的特征。今天,…...
springboot+vue基于web的校园商铺摊位管理系统
目录功能模块分析技术实现要点扩展功能建议数据库设计关键表项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作##同行可拿货,招校园代理 ,本人源头供货商功能模块分析 后台管理模块(SpringBoot) 管理员登…...
