当前位置: 首页 > news >正文

一周学会Matplotlib3 Python 数据可视化-绘制绘制甘特图

锋哥原创的Matplotlib3 Python数据可视化视频教程:

2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

课程介绍


本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置,绘图参数及主要函数,以及Matplotlib基础绘图,和Matplotlib高级绘图。

绘制绘制甘特图

甘特图(Gantt Chart)是一种常用的项目管理工具,用于可视化项目进度、任务安排和时间线。Matplotlib 提供了灵活的方式来创建专业的甘特图。

基本概念

  • 任务条:表示任务持续时间的水平条形

  • 里程碑:表示关键时间点的标记

  • 依赖关系:任务之间的先后顺序关系

  • 时间轴:显示项目时间范围的坐标轴

基础甘特图示例

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime, timedelta
import numpy as np
​
# 设置中文字体支持
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
​
# 任务数据
tasks = [{'name': '需求分析', 'start': '2023-01-01', 'duration': 7},{'name': '系统设计', 'start': '2023-01-08', 'duration': 10},{'name': '开发实施', 'start': '2023-01-18', 'duration': 15},{'name': '测试阶段', 'start': '2023-02-02', 'duration': 8},{'name': '部署上线', 'start': '2023-02-10', 'duration': 5}
]
​
# 将日期字符串转换为datetime对象
for task in tasks:task['start'] = datetime.strptime(task['start'], '%Y-%m-%d')task['end'] = task['start'] + timedelta(days=task['duration'])
​
# 创建图形
fig, ax = plt.subplots(figsize=(12, 6))
​
# 颜色映射
colors = plt.cm.tab10(np.linspace(0, 1, len(tasks)))
​
# 绘制任务条
for i, task in enumerate(tasks):start = task['start']end = task['end']ax.barh(task['name'],width=(end - start).days,left=start,height=0.6,color=colors[i],edgecolor='black',alpha=0.8)
​# 添加任务持续时间标签mid_date = start + (end - start) / 2ax.text(mid_date, i, f"{task['duration']}天",va='center', ha='center', color='white', fontweight='bold')
​
# 设置日期格式
date_format = mdates.DateFormatter('%m/%d')
ax.xaxis.set_major_formatter(date_format)
ax.xaxis.set_major_locator(mdates.DayLocator(interval=5))
​
# 添加网格
ax.grid(axis='x', linestyle='--', alpha=0.7)
​
# 设置标题和标签
plt.title('项目开发甘特图', fontsize=14, pad=20)
plt.xlabel('时间', fontsize=12)
plt.ylabel('任务', fontsize=12)
​
# 自动调整日期显示
fig.autofmt_xdate()
​
# 添加图例
from matplotlib.patches import Patch
​
legend_elements = [Patch(facecolor=colors[i], label=tasks[i]['name'])for i in range(len(tasks))]
ax.legend(handles=legend_elements, loc='best', title='任务列表')
​
plt.tight_layout()
plt.show()

http://www.dtcms.com/a/334831.html

相关文章:

  • EXTI外部中断的执行逻辑|以对射式红外传感器计次为例
  • 广东省省考备考(第七十八天8.16)——资料分析、判断推理(强化训练)
  • 力扣(最小覆盖子串)
  • Hana IDE 安装吧报错
  • 【数据分析】比较SparCC、Pearson和Spearman相关性估计方法在合成组学数据上的表现
  • Reading Coach-微软推出的免费AI阅读教练
  • linux I2C核心、总线与设备驱动
  • 扫地机器人(2025蓝桥杯省A组 H题)
  • [系统架构设计师]系统架构设计基础知识(七)
  • Conda创建py3.10环境(股票),并且安装程序包的命令
  • 《设计模式》装饰模式
  • python日志新姿势,Loguru库的应用
  • 后台管理系统-3-vue3之左侧菜单栏和头部导航栏的静态搭建
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-用户管理
  • 力扣(LeetCode) ——142. 环形链表 II(C语言)
  • [Python]PTA:实验2-3-1-for 求1到100的和
  • ComfyUI-3D-Pack:3D创作的AI神器
  • 深度强化学习是否违背样本独立原则?
  • 使用IntersectionObserver实现页面右侧运营位区域固定,和页面列表数据分页加载
  • CSS复习
  • Euler 采样器在扩散模型中的原理解析:从数学公式到实践应用
  • Apereo CAS靶场渗透练习
  • 【Linux系统】进程间通信:System V IPC——共享内存
  • Flink 源码系列 - 前言
  • 如何使用5个时间步长创建移动平均特征
  • 自动驾驶中的传感器技术33——Lidar(8)
  • Leetcode 14 java
  • 数论之普通判别法、埃氏筛与线性筛的应用及其对比
  • PowerShell 第11章:过滤和比较(下)
  • 深度剖析Redisson分布式锁项目实战