Markdown中甘特图的使用

Markdown中甘特图的使用

  • [1. 前言](#1. 前言)
  • [2. 语法详解](#2. 语法详解)
    • [2.1 甘特图语法](#2.1 甘特图语法)
  • [3. 使用场景及实例](#3. 使用场景及实例)
  • [4. 小结](#4. 小结)
  • [5. 其他文章](#5. 其他文章)
  • 快来试试吧🖊️

Markdown中甘特图的使用👈点击这里也可查看

1. 前言

Markdown 的原生语法不支持绘制图形,但通过扩展模块,我们可以将一些格式化的文字渲染成我们需要的图形。常用的图形有 "流程图"、"时序图"、"类图"、"状态图"、"甘特图"、"饼图" 等。

本节将重点介绍如何通过 Mermaid 绘制「甘特图」。

甘特图 (Gantt chart) 也被称为横道图、条状图(Bar chart)。通常用于展示项目进度,它的核心对象是「时间 」,并在时间的基础上,展示了「成本 」和「范围」之间的联系。

2. 语法详解

2.1 甘特图语法

2.1.1 一个基本的甘特图

基本上的甘特图由标题,日期格式约定,分组及任务三部分组成。

实例一:

一个基本的甘特图。

代码:

​```mermaid
 gantt
 苹果 :a, 2017-07-20, 1w
 香蕉 :crit, b, 2017-07-23, 1d
 樱桃 :active, c, after b a, 1d
​```

渲染:
2017-07-20 2017-07-21 2017-07-22 2017-07-23 2017-07-24 2017-07-25 2017-07-26 2017-07-27 2017-07-28 苹果 香蕉 樱桃

2.1.2 规定日期格式

通过设置dateFotmat属性,可以指定甘特图定义日期时的解析方式。

日期的格式支持以下情形。

表达式 取值示例 描述
YYYY 2025 4 位数年
YY 14 2 位数年
Q 1...4 季度数
M MM 1...12 月份数
MMM MMMM January...Dec 月份名称
D DD 1...31 月中天数
Do 1st...31st 月中第几天
DDD DDDD 1...365 年中天数
X 1410715640.579 Unix 时间戳(秒)
x 1410715640579 Unix 时间戳(毫秒)
H HH 0...23 24 小时制小时数
h hh 1...12 12 小时制小时数
a A am pm 上午、下午
m mm 0...59 分钟数
s ss 0...59 秒钟数
S 0...9 十分之一秒
SS 0...99 百分之一秒
SSS 0...999 千分之一秒
Z ZZ +12:00 时区
2.1.3 任务的定义
Mermaid甘特图中,每个人物隶属于一个分组,一个分组内可以定义多个任务,一张甘特图表中可以包含多个分组。
甘特图中的任务定义格式形如:<任务名>:[crit], [active], [任务ID], [前置任务], <周期>,其中「任务名」和「周期」两项是必要项。

实例二:

在甘特图中定义任务。

代码:

​```mermaid
gantt
    title A Gantt Diagram
    section Section
    A task           :a1, 2024-01-01, 30d
    Another task     :after a1  , 20d
    section Another
    Task in sec      :2024-02-12  , 12d
    another task    : 24d
​```

渲染:
2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 A task Another task Task in sec another task Section Another A Gantt Diagram

2.1.4 定义对象的生命周期

甘特图上的对象都是以时间为基础而存在的,对于时间,我们可能有非常多的定义需求,比如精度上的「年」、「月」、「日」、「时」等,又比如「24H」或者 「12H」这样写法上的不同等。Mermaid 为时间提供了丰富的语法支持。

完整的定义语法如下:

python 复制代码
%a - 周维度名称(简写形式)。
%A - 周维度名称(完整形式)。
%b - 月维度名称(简写形式)。
%B - 月维度名称(完整形式).
%c - 日期时间,相当于"%a %b %e %H:%M:%S %Y"。
%d - 月中日期固定宽度写法,取值范围 [01,31].
%e - 月中日期变动宽度写法,取值范围 [ 1,31];等同于 %_d.
%H - 小时数(24小时制)取值范围 [00,23]。
%I - 小时数(12小时制)取值范围 [01,12]。
%j - 年中日期固定宽度写法,取值范围 [001,366]。
%m - 年中月份固定宽度写法,取值范围 [01,12]。
%M - 分钟数固定宽度写法,取值范围 [00,59]。
%L - 毫秒数固定宽度写法,取值范围 [000, 999]。
%p - 上午 \ 下午。
%S - 秒数固定宽度写法,取值范围 [00,61]。
%U - 年中周数的固定宽度写法,以周日为每周第一天,取值范围 [00,53]。
%w - 周中日期写法,取值范围 [0(周日),6]。
%W - 年中周数的固定宽度写法,以周一为每周第一天,取值范围 [00,53]。
%x - 日期,等同于 "%m/%d/%Y"。
%X - 时间,等同于 "%H:%M:%S"。
%y - 年,仅后两位,取值范围 [00,99]。
%Y - 年,完整四位。
%Z - 时区,例如:"-0700"。
%% - 用于输出百分号 "%" 。

3. 使用场景及实例

实例三:

代码:

​```mermaid
gantt
 dateFormat :YYYY-MM-DD
 title :甘特图实例

 section 基本任务
 已完成任务 :done, des1, 2024-01-06,2024-01-08
 进行中任务 :active, des2, 2024-01-09, 3d
 未开始任务1 : des3, after des2, 5d
 未开始任务2 : des4, after des3, 5d

 section 紧急任务
 已完成的紧急任务 :crit, done, 2024-01-06,24h
 已完成紧急任务1 :crit, done, after des1, 2d
 进行中紧急任务2 :crit, active, 3d
 未开始紧急任务3 :crit, 5d
 未开始一般任务4 :2d
 未开始一般任务5 :1d

 section 文档编写
 进行中文档任务1 :active, a1, after des1, 3d
 未开始文档任务2 :after a1 , 20h
 未开始文档任务3 :doc1, after a1 , 48h

 section 其他部分
 其他任务1 :after doc1, 3d
 其他任务2 :20h
 其他任务3 :48h

​```

渲染:
2025-01-12 2025-01-13 2025-01-14 2025-01-15 2025-01-16 2025-01-17 2025-01-18 2025-01-19 2025-01-20 2025-01-21 2025-01-22 2025-01-23 2025-01-24 已完成任务 进行中任务 已完成的紧急任务 已完成紧急任务1 进行中文档任务1 进行中紧急任务2 未开始任务1 未开始文档任务2 未开始文档任务3 未开始紧急任务3 其他任务1 未开始任务2 其他任务2 其他任务3 未开始一般任务4 未开始一般任务5 基本任务 紧急任务 文档编写 其他部分 :甘特图实例

4. 小结

  • Mermaid 为 Markdown 扩展了使用普通文本生成甘特图的语法及渲染支持;
  • Mermaid 可以用文本形式描述甘特图中的「标题」、「日期格式约定」、「分组及任务」;
  • Mermaid 甘特图支持自定义节点样式,使其具备更丰富的表现力。

如果对您有帮助,请您点赞、收藏、关注、转发,让更多的人看到。

5. 其他文章

Markdown文章集合
👉Markdown中状态图的用法
👉Markdown时序图的使用方法
👉Markdown中类图的用法
👉Markdown中流程图的用法
👉Markdown表格的使用
👉Markdown如何导出Html文件Markdown文件
👉Markdown是什么?.md文件是什么?
👉Markdown段落的空行缩进用法
👉Markdown表格的使用
👉Markdown语法字体字号讲解
👉Markdown如何填充前景色、背景色
👉Markdown代码块,超链接,图片的插入
👉Markdown如何添加任务列表-复选框的添加
👉Markdown中特殊符号的使用
👉Markdown实现代码高亮,注释代码
👉Markdown注释的用法

快来试试吧🖊️

相关推荐
张声录136 分钟前
Redis Exporter 安装与配置指南(v1.67.0)
数据库·redis·缓存
人总该做点什么1 小时前
【数据库】一、数据库系统概述
数据库·sql·mysql·sqlserver
头发多的码农2 小时前
mysql、postgresql、druid链接池踩坑记录
数据库·mysql·postgresql
leegong231112 小时前
PostgreSQL 中级学习
数据库·学习·postgresql
LifeEnjoyer2 小时前
数据库汇总3(SQL with 关系代数)
数据库·sql·oracle
曹二7472 小时前
MySQL 视图 存储过程与存储函数
数据库·mysql
DanceDonkey3 小时前
基于wait/notify方法 实现生产/消费者模型
java·数据库·中间件
宇宙李3 小时前
微服务中熔断和降级的区别,具体使用场景有哪些?
java·数据库·微服务
等一场春雨3 小时前
MySQL 主从同步中间件
数据库·mysql·中间件