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

一周学会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.xdnf.cn/news/17932.html

相关文章:

  • 跑实验记录
  • Python Day30 CSS 定位与弹性盒子详解
  • python---内置函数
  • 微服务之注册中心与ShardingSphere关于分库分表的那些事
  • 【手撕JAVA多线程】1.从设计初衷去看JAVA的线程操作
  • Camera相机人脸识别系列专题分析之十九:MTK ISP6S平台FDNode原生代码
  • 【自动化运维神器Ansible】Ansible比较操作符详解:从基础到实战应用
  • 笔试——Day40
  • AI生成视频开源模型技术解析
  • 算法题打卡力扣第42题接雨水(hard)
  • OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制
  • 拒绝造轮子(C#篇)ZLG CAN卡驱动封装应用
  • 贺雨禾《梨花往事》北京首映,“野草型演员”深耕走出新赛道
  • 第4问 常见的指标有哪些?
  • 【CVPR2025】计算机视觉|GIFNet:一个模型实现所有图像融合任务!还能增强画质?!
  • [1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
  • 【Qt开发】常用控件(四)
  • 《深度解构:构建浏览器端Redis控制台的WebSocket协议核心技术》
  • 开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
  • Flink Stream API 源码走读 - window 和 sum
  • 前端开发入门书籍推荐:Vue.js 3与前端基础的完美组合
  • 九尾狐未来机械锂晶核
  • 数据结构:满二叉树 (Full Binary Tree) 和 完全二叉树 (Complete Binary Tree)
  • Three.js三大组件:场景(Scene)、相机(Camera)、渲染器(Renderer)
  • tree组件(几种不同分叉树Vue3)
  • 免费万能电子书格式转换器!Neat Converter支持 ePub、Azw3、Mobi、Doc、PDF、TXT 文件的相互转换。
  • 【图像算法 - 15】智能行李识别新高度:基于YOLO12实例分割与OpenCV的精准检测(附完整代码)
  • React手撕组件和Hooks总结
  • springboot项目单独对数据源配置加解密
  • 编程基础之字符串——过滤多余的空格