使用Python优雅的绘制甘特图

news2024/12/26 23:12:56

简介

Gantt图表是一种条形图,用于描绘项目进度。图表在垂直轴上列出要执行的任务,在水平轴上列出时间间隔。图中水平条的宽度显示每个活动的持续时间。在Python中,我们可以使用Plotly库来创建和展示Gantt图表。

基础的Gantt图表

首先,我们来创建一个基础的Gantt图表,展示几个任务的开始和结束时间。

# coding=gbk
"""
作者:川川
@时间  : 202210/05 16:05
"""
import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start='2022-01-01', Finish='2022-02-28'),
    dict(Task="Job B", Start='2022-03-05', Finish='2022-04-15'),
    dict(Task="Job C", Start='2022-02-20', Finish='2022-05-30')
])
# 这几个参数固定
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task")
fig.update_yaxes(autorange="reversed")
fig.show()

运行结果如下:
在这里插入图片描述
在这个例子中,我们定义了三个任务,每个任务都有一个开始和结束的日期。我们使用plotly.express的timeline函数来创建图表,并使用update_yaxes来反转y轴的顺序。

为Gantt图表添加颜色

我们可以通过添加一个颜色参数来区分不同的资源或任务状态。

# coding=gbk
"""
作者:川川
@时间  : 202210/05 16:05
"""
import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"),
    dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Resource="Alex"),
    dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Resource="Max")
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
fig.show()

如下:
在这里插入图片描述

在这个例子中,我们添加了一个“Resource”列来表示任务的资源,并将其用作颜色参数。

使用百分比完成度来着色

我们还可以使用任务的完成百分比来为Gantt图表着色。

import plotly.express as px
import pandas as pd

df = pd.DataFrame([
    dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Completion_pct=50),
    dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Completion_pct=25),
    dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Completion_pct=75)
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Completion_pct")
fig.update_yaxes(autorange="reversed")
fig.show()

运行如下:
在这里插入图片描述

按资源展示

也可以在同一水平线上有多个条形,例如按资源:
在这里插入图片描述

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

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

相关文章

beego-简单项目写法--路径已经放进去了

Beego案例-新闻发布系统 1.注册 后台代码和昨天案例代码一致。,所以这里面只写一个注册的业务流程图。 **业务流程图 ** 2.登陆 业务流程图 登陆和注册业务和我们昨天登陆和注册基本一样,所以就不再重复写这个代码 但是我们遇到的问题是如何做代码的迁移&…

计算机专业毕业设计项目推荐12-志愿者管理系统(Spring+Js+Mysql)

志愿者管理系统(SpringJsMysql) **介绍****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及模式,在编写的过程…

[NISACTF 2022]join-us - 报错注入无列名注入

点击登录,找到注入点 这种框,可以直接爆破关键字,看是否拦截,也可以手动尝试,发现、union、and、or、substr、database等关键字都拦截了 1、学到了:可以用数据库中不存在的表名或者不存在的自定义函数名爆…

面试高频手撕算法 - 01背包系列

1. 前言 为什么要专门去搞一下这个背包问题呢 ? 因为作者已经在两场面试中吃了这个亏, 尤其是在面深信服的测开岗的时候, 一面的难度适中, 加上面试官也没为难我, 侥幸让我过了. (以下是一面问题) 二面的时候, 主要问了项目和手撕算法. 当时项目个人觉得面的还不错, 因为本人是…

Mac下docker安装MySQL8.0.34

学习并记录一下如何用docker部署MySQL 在Docker中搜索并下载MySQL8.0.x的最新版本 下载好后,在Images中就可以看到MySQL的镜像了 通过下面的命令也可以查看docker images启动镜像,使用下面的命令就可以启动镜像了docker run -itd --name mysql8.0.34 -…

java项目log4j2单独为某个类配置日志文件

在项目中,一般都是把日志记录到一个日志文件中。 对应的log4j2.xml内容如下图所示:只有一个RollingFile节点,整个系统只会生成一个log日志文件。 生成的日志文件如下图: 当系统不断扩大,业务越来越复杂,所…

spark on hive

需要提前搭建好hive,并对hive进行配置。 1、将hive的配置文件添加到spark的目录下 cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf2、开启hive的hivemetastore服务 提前创建好启动日志存放路径 mkdir $HIVE_HOME/logStart nohup /usr/local/lib/apache-hi…

阶段五-Day02-jQuery

一、jQuery入门 1. 定义和特点 目前最流行的JavaScript函数库之一,对JavaScript进行了封装。 并不是一门新语言,而是将常用的、复杂的JavaScript操作进行函数化封装,封装后可以直接调用,大大降低了使用JavaScript的难度&#xf…

Dism软件安装指南:优化Windows系统的必备利器

主旨 有没有发现,自己的电脑时间一长,是不是就会变得越来越慢,越来越卡,当你去网上查资料的时候,都是说什么磁盘碎片清理,禁止程序自启动什么的,不是说这些方式没用,反而很有用&…

四、【选区】

文章目录 为什么使用选区?选区的用途:抠图、修图、调色、合成等怎么对选区进行操作?1.如何建立选区并对选区进行建立?2.加选和减选与交叉选区?3.选区前先调整羽化值: 为什么使用选区? 是我们在一个图片里面选中一个区…

基于Java的培训学校课程资源网站设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

gin 框架的 JSON Render

gin 框架的 JSON Render gin 框架默认提供了很多的渲染器,开箱即用,非常方便,特别是开发 Restful 接口。不过它提供了好多种不同的 JSON Render,那么它们的区别是什么呢? // JSON contains the given interface obje…

5分钟入门卷积算法

大家好啊,我是董董灿。 深度学习算法中,尤其是计算机视觉,卷积是无论如何都绕不过去的槛。 初学者看到这个算法后,很多是知其然不知其所以然,甚至不知道这个算法是做什么的,或者很疑惑,为什么…

Mysql数据库 3.SQL.DDL语句

DDL数据库基本操作 查询所有数据库 show databases; 创建数据库 create database[if not exists]数据库名[default charset 字符集][collate 排序规则] 判断如果已经存在就加入[if not exists] 删除数据库 drop database [if exists] 数据库名 使用数据库 use 数据库名;…

STM32CubeMX学习笔记-USB接口使用(HID自定义设备)

STM32CubeMX学习笔记-USB接口使用(HID自定义设备) 一、USB简介二、新建工程三、USB3.1 参数配置3.2 引脚配置3.3 配置时钟3.4 USB Device 四、生成代码五、修改报告描述符六、修改端点大小七、修改发送缓冲区大小和报告描述符大小八、添加串口打印九、增…

VC6 WIN32,Dialog为主窗口编程

VC6是Microsoft非常经典的开发环境,尤其是Windows API方式开发,自从Quick C for win以来基本保持着同样的风格和API,在它上面做习练很不错。下面是习练完成的界面,它是在自动创建的WIN32 application模板下,增加一个Di…

微服务的初步使用

环境说明 jdk1.8 maven3.6.3 mysql8 idea2022 spring cloud2022.0.8 微服务案例的搭建 新建父工程 打开IDEA,File->New ->Project,填写Name(工程名称)和Location(工程存储位置),选…

git提交代码实际操作

1.仓库的代码 2.克隆代码下存在的分支 git clobe https://gitee.com/sadsadasad/big-event-11.git 3.查看当下存在的分支 git branch -a 在很多情况下,我们是要围绕着dev分支进行开发,所以我们可以在开发之前问明白围绕那个分支进行开发。 4.直接拉去dev分支代码 5.如果没在…

LabVIEW开发教学实验室自动化INL和DNL测试系统

LabVIEW开发教学实验室自动化INL和DNL测试系统 如今,几乎所有的测量仪器都是基于微处理器的设备。模拟输入量在进行数字处理之前被转换为数字量。对于参加电气和电子测量课程的学生来说,了解ADC以及如何欣赏其性能至关重要。ADC的不确定性可以根据其传输…

2.3 Node2vec(图神经网络笔记)

BFS:广度优先 DFS:深度优先 描述,当前已从 t 节点到达 V 节点,可以选择 x1、x2、x3、t任意一个节点 dtx 0 ,从t - v - t ,回到原点 dtx 1 ,还是说从t出发,离t节点距离为1,有z、x…