您的位置:

Markdown甘特图

一、Markdown甘特图语法

```mermaid
gantt
   title 任务列表
   dateFormat  YYYY-MM-DD
   section 项目立项
   需求调研                      :done,    des1, 2019-01-06,2019-01-09
   项目规划                      :active,  des2, 2019-01-09, 3d
   可行性分析                    :         des3, after des2, 5d
   section 项目开发
   框架搭建                      :         des4, after des3, 5d
   业务开发                      :         des5, after des4, 10d
   测试上线                      :         des6, after des5, 5d
```

Markdown甘特图语法主要使用mermaid语法进行书写,使用gantt标签作为甘特图的起始标识,dateFormat用来设定日期格式,section来分段,后面的文字则是各个任务的描述。在用冒号分隔后面的属性之后,可以使用done、active、critical来标识任务的状态。在本例中,样例任务的时间是固定的,也可以使用after,将每个任务的开始时间设置为前一个任务的结束时间加上一定天数。

甘特图在项目管理中应用广泛,视觉效果好,清晰明了,非常适合展示项目中各个任务之间的依赖关系和时间安排。Markdown的甘特图语法相对简单易用,能够快速生成各种类型的甘特图,帮助团队成员更加直观地了解项目的进度和计划。

在实际使用中,如果想要将甘特图嵌入到文档中,可以使用在线服务来生成png或svg格式的图片,然后将图片插入到Markdown文档中,从而形成完整的文档。

二、Markdown甘特图时间轴

```mermaid
gantt
    title 时间轴
    dateFormat YYYY-MM-DD
    axisFormat %m/%d
    section 清明节
    拜祭祖先       :done,  des1, 2019-04-05,2019-04-06
    补假日           :        des2,  2019-04-08, 2d
    section 端午节
    咏龙舟           :done,  des3, 2019-06-07,2019-06-08
    吃粽子          :       des4, after des3, 1d
    section 中秋节
    赏月            :       des5, 2019-09-13, 1d
    祈福             :      des6, 2019-09-13, 1d
```

Markdown甘特图时间轴主要是利用axisFormat属性来控制时间的显示格式。在该例中,我们使用%m/%d来显示月份和日数,方便读者更加清晰地了解甘特图轴上的各个时间点。在实际应用中,时间轴可以更好地表现时间的关系,使得读者对于任务的时间安排更加直观。

三、Markdown甘特图备注怎么打

```mermaid
gantt
  title 月度开发计划
  dateFormat YYYY-MM-DD
  section 需求评审
  听取需求            :done,    des1, 2019-01-01,2019-01-02
   定义需求            : active,  des2, 2019-01-03, 3d
   开始评审           :          des3, after des2, 1d
   完成评审           :          des4, after des3, 2d
   section 程序开发
   搭建开发环境       :         des5, after des4, 3d
   编写代码            :         des6, after des5, 10d
   调试中             :         des7, after des6, 5d
   初版完成           :         des8, after des7, 3d
   section 测试
   编写测试计划        :        des9, after des8, 3d
   测试中             :         des10, after des9, 7d
   测试修复           :         des11, after des10, 3d
   section 发布上线
   部署到服务器       :         des12, after des11, 2d
   发布稳定版         :         des13, after des12, 1d
  %% 备注部分
  section 备注
  发布过程需要控制风险,多次测试以保证稳定性。
```

Markdown甘特图备注主要是使用%%来进行标记,在%%之后的部分就是甘特图的备注。具体的内容可以是任何文字,可以作为对甘特图的额外说明,也可以在甘特图中添加各种tips,方便读者更加了解任务的详情。

四、Markdown画甘特图

除了使用mermaid语法来绘制甘特图以外,也可以借助在线服务直接画甘特图。

```
|{{ title }}|{{ start }}|{{ end }}|{{ duration }}|
| --- | --- | --- | --- |
{% for row in rows %}
|{{ row.title }}|{{ row.start }}|{{ row.end }}|{{ row.duration }}|
{% endfor %}
```

使用在线服务绘制甘特图的代码较为简单,只需要定义好每个任务的名称、开始时间、结束时间和持续时间,并结合表格语法展现即可。在实际应用中,我们可以根据需要自定义表格的样式来展现甘特图。值得注意的是,该方法在绘制甘特图的时候不能实现甘特图纵轴的展示,需要通过其他手段来实现类似功能。

五、Markdown甘特图日期重叠

```mermaid
gantt
title 字符串盒子自适应大小
dateFormat YYYY-MM-DD
section 项目
软件开发 :des1, 2019-01-01, 2019-02-02
硬件调试 :des2, 2019-02-02, 2019-03-02
上线发布 :des3, 2019-03-03, 2019-04-04
```

在使用Markdown绘制甘特图的过程中,可能会因为任务的开始和结束时间重叠而导致甘特图无法很好地展现。解决这个问题的方法就是将任务的持续时间设置为一小时或更短的时间,从而可以避免任务在甘特图中出现重叠。

六、rmarkdown特殊符号选取

```{r message=FALSE, warning=FALSE, cache=FALSE}
library(ganttR)
tasks <- data.frame(
  task=c(
    '需求评审', '需求定义', '开发环境搭建', '代码编写',
    '功能测试', '代码修复', '测试上线', '代码优化'
  ),
  start=c(
    '2022-01-01', '2022-01-06', '2022-01-12', '2022-01-18',
    '2022-01-24', '2022-01-30', NA, NA
  ),
  end=c(
    '2022-01-05', '2022-01-11', '2022-01-17', '2022-01-23',
    '2022-01-29', NA, '2022-02-01', '2022-02-05'
  ),
  duration=rep(NA, 8),
  percent_complete=c(10, 20, 0, 0, 0, 0, 0, 0),
  dependencies=c(NA, 1, 2, 3, 4, 5, 6, 7)
)
gantt(tasks, title='月度开发计划', palette='Set3', show_labels=F,
  bar_height=0.4, item_padding=10, label_size=4,
  includeweekends=TRUE, showgrid='week')
```

rmarkdown也可以通过特殊符号的选择操作来定义各个任务。例如,可以使用%>%连接各个任务。在实际绘制甘特图的时候,通过gantt函数来生成甘特图。