前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AI生成图表化:深入探索Mermaid

AI生成图表化:深入探索Mermaid

作者头像
码事漫谈
发布于 2024-12-20 05:08:39
发布于 2024-12-20 05:08:39
3.1K00
代码可运行
举报
文章被收录于专栏:设计模式设计模式
运行总次数:0
代码可运行

引言

在使用生成式AI时,只要你提出让AI帮你生成mermaid图,AI的生成就会出现丰富的图形!

在现代文档编写中,图表的使用不仅能增强文档的可读性,还能更直观地表达复杂的概念和流程。Mermaid 作为一款开源的图表绘制工具,凭借其简洁的语法和强大的功能,逐渐成为技术文档、博客、项目管理等领域的宠儿。本文将详细介绍 Mermaid 的使用方法,并推荐一些相关的资源和工具。

Mermaid 是什么?

Mermaid 是一个基于 JavaScript 的图表绘制工具,它允许用户通过简单的文本语法来创建流程图、序列图、甘特图、类图等多种类型的图表。它的设计理念是让图表的创建变得像编写代码一样简单和直观。

Mermaid 的优势
  • 简洁的语法:Mermaid 使用类似 Markdown 的语法,易于学习和使用。
  • 跨平台兼容:可以在任何支持 JavaScript 的环境中运行,包括网页、Markdown 编辑器、笔记应用等。
  • 多种图表支持:支持多种图表类型,满足不同场景的需求。
  • 开源与社区支持:作为开源项目,Mermaid 拥有活跃的社区,持续更新和改进。
图表类型

Mermaid 支持的图表类型包括但不限于:

  • 流程图 (Flowchart):用于展示流程和决策逻辑。
  • 序列图 (Sequence Diagram):用于描述对象之间的交互。
  • 甘特图 (Gantt Chart):用于项目管理和时间线规划。
  • 类图 (Class Diagram):用于展示类之间的关系和结构。
  • 状态图 (State Diagram):用于描述系统或对象的状态变化。
  • 实体关系图 (ER Diagram):用于数据库设计和数据模型。
  • 饼图 (Pie Chart):用于展示数据的比例分布。
集成到 Markdown

Mermaid 可以很容易地集成到 Markdown 中,很多 Markdown 编辑器和平台都支持 Mermaid 语法。例如,在 StackEdit 中,你可以直接使用 Mermaid 语法来绘制图表。

深入使用 Mermaid

流程图

流程图是 Mermaid 中最常用的图表类型之一。下面是一个更复杂的流程图示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TD
    A[开始] --> B{判断}
    B -->|| C[操作1]
    B -->|| D[操作2]
    C --> E[判断2]
    D --> E
    E -->|| F[操作3]
    E -->|| G[操作4]
    F --> H[结束]
    G --> H

这个流程图展示了如何处理多个决策点和分支。

序列图

序列图用于展示对象之间的交互。以下是一个简单的序列图示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    participant Alice
    participant Bob
    Alice->>Bob: Hello Bob, how are you?
    alt is sick
        Bob->>Alice: Not so good :(
    else is well
        Bob->>Alice: Feeling fresh like a daisy
    end

这个序列图展示了 Alice 和 Bob 之间的对话,包含了条件分支。

甘特图

甘特图在项目管理中非常有用。下面是一个项目时间线的甘特图示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gantt
    title 项目时间线
    dateFormat  YYYY-MM-DD
    section 项目阶段
        需求分析       :done,    des1, 2024-12-01, 2024-12-07
        设计阶段       :active,  des2, after des1, 7d
        开发阶段       :         des3, after des2, 14d
        测试阶段       :         des4, after des3, 7d
        上线准备       :         des5, after des4, 3d

这个甘特图展示了一个项目的时间线,帮助团队成员了解项目进度。

类图

类图用于展示类之间的关系和结构。以下是一个简单的类图示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
classDiagram
    class Animal {
        +String name
        +int age
        +eat()
        +sleep()
    }
    class Dog {
        +String breed
        +bark()
    }
    Animal <|-- Dog

这个类图展示了 AnimalDog 之间的继承关系。

饼图

饼图用于展示数据的比例分布。以下是一个简单的饼图示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pie
    title 市场份额
    "Chrome" : 60
    "Firefox" : 20
    "Safari" : 10
    "Edge" : 5
    "Others" : 5

这个饼图展示了不同浏览器的市场份额。

推荐资源

支持 Mermaid 的笔记本

强烈推荐阅读 oioihoii 的博文,其中详细介绍了如何在 StackEdit 中使用 Mermaid。StackEdit 是一个基于浏览器的 Markdown 编辑器,支持 Mermaid 语法,并且可以将笔记内容存储在 Gitee 或 GitHub 上,实现多平台同步和在线共享。

Mermaid 图转 PNG 工具

如果你需要将 Mermaid 图表转换为 PNG 格式,可以使用 Min2k 的 Mermaid 图转 PNG 工具。这个工具支持中文输入,非常方便。

实践应用

示例:项目管理甘特图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gantt
    title 项目时间线
    dateFormat  YYYY-MM-DD
    section 项目阶段
        需求分析       :done,    des1, 2024-12-01, 2024-12-07
        设计阶段       :active,  des2, after des1, 7d
        开发阶段       :         des3, after des2, 14d
        测试阶段       :         des4, after des3, 7d
        上线准备       :         des5, after des4, 3d

这个甘特图展示了一个项目的时间线,帮助团队成员了解项目进度。

示例:系统状态图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stateDiagram-v2
    [*] --> 启动
    启动 --> 运行中
    运行中 --> 暂停 : 暂停按钮
    运行中 --> 停止 : 停止按钮
    暂停 --> 运行中 : 恢复按钮
    停止 --> [*]

这个状态图展示了一个系统的基本状态转换。

结论

Mermaid 不仅简化了图表的创建过程,还增强了文档的表达能力。无论你是技术文档作者、项目经理还是博主,Mermaid 都能为你的工作带来便利和效率。通过本文推荐的资源和工具,你可以更深入地探索和应用 Mermaid,提升文档的专业性和可读性。

参考文献:

希望这篇博客能为你提供有价值的信息,欢迎在评论区分享你的使用心得或问题。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
回溯算法:电话号码的字母组合
示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
代码随想录
2020/11/03
1.3K2
回溯算法:电话号码的字母组合
组合问题——LeetCode题目17:电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
二环宇少
2020/08/13
6150
组合问题——LeetCode题目17:电话号码的字母组合
【leetcode刷题】20T12-电话号码的字母组合
https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
木又AI帮
2020/02/16
3780
【leetcode刷题】20T12-电话号码的字母组合
Leetcode 17. 电话号码的字母组合 (dfs)
17. 电话号码的字母组合 难度中等653收藏分享切换为英文关注反馈 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任
glm233
2020/09/28
3040
Leetcode 17. 电话号码的字母组合 (dfs)
电话号码的字母组合 C++ 回溯递归
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
叶茂林
2023/07/30
2000
电话号码的字母组合 C++ 回溯递归
打卡群刷题总结0623——电话号码的字母组合
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
木又AI帮
2020/06/28
2920
【LeetCode】(No.017)电话号码的字母组合
刷题模块的初衷是恶补数据结构和算法,不管自己的公众号怎样变化,刷题这个模块一定会保留下去,期待自己能成为offer收割机。LeetCode 第十六题传输门:【LeetCode】(No.016)最接近的三数之和今天给大家分享的是LeetCode 第十七题:电话号码的字母组合,为面试而生,期待你的加入。
PM小王
2019/07/02
4890
【LeetCode】(No.017)电话号码的字母组合
【力扣刷题】17. 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
jayjay
2022/11/02
2050
【力扣刷题】17. 电话号码的字母组合
​LeetCode刷题实战17: 电话号码的字母组合
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/16
2840
​LeetCode刷题实战17: 电话号码的字母组合
电话号码的字母组合
难度:中等 来源:17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:
用户4456933
2021/06/01
4660
电话号码的字母组合
LeetCode-17-电话号码的字母组合
# LeetCode-17-电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 # 解题思路 方法1、回溯: 首先需要建立一个map,存储数字到字符串的映射 排列组合问题一般想
benym
2022/07/14
2640
【回溯+剪枝】电话号码的字母组合 && 括号生成
​ 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
利刃大大
2025/02/02
630
【回溯+剪枝】电话号码的字母组合 && 括号生成
LeetCode动画 | 17.电话号码的字母组合
今天分享一个LeetCode题,题号是17,题目是电话号码的字母组合,题目标签是字符串和回溯算法。
我脱下短袖
2020/02/25
6290
打卡群刷题总结0824——电话号码的字母组合
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
木又AI帮
2020/09/01
2900
电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下,即与电话按键相同。注意1不对应任何字母。
WindRunnerMax
2020/08/27
4460
17. 电话号码的字母组合
示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 示例 2: 输入:digits = "" 输出:[] 示例 3: 输入:digits = "2" 输出:["a","b","c"]
编程张无忌
2021/06/22
2950
17. 电话号码的字母组合
【LeetCode热题100】【回溯】电话号码的字母组合
组合的过程是一个长树的过程,可以用深度遍历实现,每一个数字对应的字符串都是一层,一种字母组合就是一条路径,当递归的深度达到层数就找到了一种字母组合
叶茂林
2024/04/13
860
LeetCode 17. 电话号码的字母组合(搜索)(回溯)
用DFS挨个搜索,把几个数字代表的字母存放到一个数组里,数组前两个为空让数组的值对应2~9。
SakuraTears
2022/01/13
1450
LeetCode 17. 电话号码的字母组合(搜索)(回溯)
leetcode:17 电话号码的字母组合
题目理解: 2~9相对应的映射到的字母,获得它所能组成的(((所有的)))字母组合.注意,1什么都没有,1不用算. 比如输入的是23,就是2与3进行组合,并且组合成的数组每一个数组的下标是两个字符的。。。。。 例如输入234,那就是先23进行组合,组合成的数组又与4进行组合,然后输出的每一个数组1的下标是3个。以此类推。。。。。
贵哥的编程之路
2020/10/28
5680
leetcode 17. 电话号码的字母组合----回溯算法
其实上面的DFS的思路就是先选取第一个数字对应的第一个字母,然后去下一层与第二个数字的三个字母分别进行组合,组合完后,再取第一个数字对应的第二个字母,同样去下一层与第二个数字的三个字母进行组合,接着是第一个数字对应的第三个字母…
大忽悠爱学习
2021/11/15
2560
推荐阅读
相关推荐
回溯算法:电话号码的字母组合
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验