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

news2024/12/28 3:28:10

目录

  • 前言
  • 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.coloradmin.cn/o/1923325.html

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

相关文章

江苏职教高考 计算机 C语言 复习资料

江苏职教高考计算机专业考试内容为 文化课专业课 其中专业课包含: 计算机原理45分 计算机组维45分 计算机网络60分 C语言 6080分 电子电工90分 具体资料可查看链接 链接:https://pan.baidu.com/s/1OXD-zK4V3NsLLDMwfXcTlA?pwd2822 提取码&…

风华绝代林徽因

林徽因 ◉ 卡西莫多 风华绝代林家女,呕心依护古胜迹 短暂一生半百余,忆念至今两甲子 山河有恙因她彩,窈窕淑女众倾慕 不只因她姿颜色,更因巾帼硬风骨 2024年7月12日

Anaconda+Pycharm 项目运行保姆级教程(附带视频)

最近很多小白在问如何用anacondapycharm运行一个深度学习项目,进行代码复现呢?于是写下这篇文章希望能浅浅起到一个指导作用。 附视频讲解地址:AnacondaPycharm项目运行实例_哔哩哔哩_bilibili 一、项目运行前的准备(软件安装&…

【C++深入学习】类和对象(一)

欢迎来到HarperLee的学习笔记! 博主主页传送门:HarperLee博客主页! 欢迎各位大佬交流学习! 本篇本章正式进入C的类和对象部分,本部分知识分为三小节。复习: 结构体复习–内存对齐编译和链接函数栈桢的创建…

如何用码上飞解决企微上真实需求来接单赚米

在企微的工作台中有一个「需求模块」,所有的企微用户都可以在上面提出自己的需求。 例如张三说“在企微上我怎么样才可以把一个客户发的语音,转给另一个客户听?” 李四说“我需要一个能每天在工作群里定时发布信息并能自动修改日期的功能。…

240713-Xinference模型下载、管理及测试

Step 1. 安装Xinference 安装 — Xinference Step 2. 下载模型 方式1: UI界面下载 命令行启动Xinference: xinference-local --host 0.0.0.0 --port 9997在localhost:9997中,通过左侧的Launch Model 配置并下载模型如果模型已下载或配置好&#xff…

好莱坞级别AI视频工具Odyssey亮相!AI世界动态回顾

好莱坞级别的视觉AI:Odyssey 首先,我们要提到的就是Odyssey——一款新晋AI视频工具,它以其好莱坞级别的视觉AI能力引起了广泛关注。奥德赛展示的一些片段令人印象深刻,包括精美的无人机镜头、风景画面以及专业级的B-roll素材。虽…

2024年公司电脑屏幕监控软件推荐|6款好用的屏幕监控软件盘点!

在当今的商业环境中,确保员工的工作效率和数据安全是每个企业管理者的重要任务。屏幕监控软件通过实时监控和记录员工的电脑活动,帮助企业有效地管理和优化工作流程。 1.固信软件 固信软件https://www.gooxion.com/ 主要特点: 实时屏幕监控…

python web自动化测试

安装 seleinum # 设置镜像 pip install statsmodels -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install selenium安装chrome driver 1、查看chrome的版本 2、https://googlechromelabs.github.io/chrome-for-testing/#stable 上面下载对应版本的chrome driver 只要…

Python | Leetcode Python题解之第230题二叉搜索树中第K小的元素

题目: 题解: class AVL:"""平衡二叉搜索树(AVL树):允许重复值"""class Node:"""平衡二叉搜索树结点"""__slots__ ("val", "parent&quo…

快速理解java的volatile关键字

volatile有啥用呢? volatile是 JVM 提供的 轻量级 的同步机制(有三大特性) 保证可见性 不保证原子性 禁止指令重排 好汉你别激动,同步机制说白了就是 syhconized,这种机制你可以这样理解就是在一段时间内有序的发生操作。假如一…

创建SpringBoot聚合项目

创建SpringBoot聚合项目 需求&#xff1a;以仓库管理系统(warehouse management system)wms为例创建聚合项目 1、创建空项目文件夹 2、创建父工程 删掉src&#xff0c;配置夫工程的pom配置 <properties><maven.compiler.source>8</maven.compiler.source><…

【C++】C++入门实战教程(打造属于自己的C++知识库)

目录 目录 写在前面 1.C学习路线 2.本教程框架介绍 一.C基础部分 1.程序编码规范 2.程序运行与编译 3.关键字 4.常用数据类型 5.运算符相关 二.C进阶部分 1.面向对象编程 2.函数编程 3.模板编程 4.多线程与并发 5.STL介绍及使用 6.内存模型与优化 三.C实战部…

【vue教程】一. 环境搭建与代码规范配置

目录 引言Vue 框架概述起源与设计理念核心特性优势 Vue 开发环境搭建环境要求安装 Vue CLI创建 Vue 项目项目结构介绍运行与构建 组件实例基础模板响应式更新 代码规范为什么要使用代码规范在 Vue 项目中使用 ESLint 、PrettierESLint配置 ESLintrules 自定义错误级别 Prettier…

【Linux杂货铺】3.程序地址空间

1.程序地址空间的引入 fork(&#xff09;函数在调用的时候子如果是子进程则返回0&#xff0c;如果是父进程则返回子进程的pid&#xff0c;在代码中我们分别在子进程和父进程读取全局变量g_val的时候居然出现了俩个不同的值。如下&#xff1a; #include<stdio.h> #includ…

【Linux信号】阻塞信号、信号在内核中的表示、信号集操作函数、sigprocmask、sigpending

我们先来了解一下关于信号的一些常见概念&#xff1a; 实际执行 信号的处理动作 称为信号递达。 信号从产生到递达的之间的状态称为信号未决。 进程可以选择阻塞(Block)某个信号。 被阻塞的信号产生时是处于未决状态的&#xff0c;知道进程解除对该信号的阻塞&#xff0c;该…

01. 课程简介

1. 课程简介 本课程的核心内容可以分为三个部分&#xff0c;分别是需要理解记忆的计算机底层基础&#xff0c;后端通用组件以及需要不断编码练习的数据结构和算法。 计算机底层基础可以包含计算机网络、操作系统、编译原理、计算机组成原理&#xff0c;后两者在面试中出现的频…

FGF14:脑部疾病新潜力靶标

成纤维细胞生长因子14&#xff08;FGF14&#xff09;是FGF11亚家族成员&#xff0c;在神经元的所有基本特性&#xff08;内在放电、兴奋性和抑制性神经元的突触传递和可塑性&#xff09;中发挥作用。 &#xff08;数据来源AlphaFold&#xff09; FGF14由247个氨基酸组成&#x…

一键运行 ComfyUI SD3!大规模医学 VQA 评测数据集上线,涉及超 20 个人体器官和部位

为了进一步推进 AI4S 的普适化&#xff0c;HyperAI超神经策划了「Meet AI4S」系列直播栏目。第一期直播将于 7 月 17 日 19:00 准时上线&#xff01; 我们邀请到了浙江大学遥感与地理信息系统博士生丁佳乐&#xff0c;他的分享主题为「神经网络为房价的空间异质性提供新解释」&…

c# 容器变换

List<Tuple<int, double, bool>> 变为List<Tuple<int, bool>>集合 如果您有一个List<Tuple<int, double, bool>>并且您想要将其转换为一个List<Tuple<int, bool>>集合&#xff0c;忽略double值&#xff0c;您可以使用LINQ的S…