结合 AI 生成 mermaid、plantuml 等图表
AI 画图
AI 画图并不是真的让 AI 画一个图片,而是让 AI 根据你的需求,生成对应的需求文本,再根据 “文本画图” 来生成图片。
Mermaid
mermaid 支持流程图、时序图、架构图等等多种图片绘制。当然最终生成的效果和样式会根据不同的“文本代码”渲染编辑器而不同。
流程图示例
举一个例子,先把如下需求告诉 AI (比如我这里使用 ChatGPT):
请用Mermaid语法帮我画一个用户登录流程图,包含以下步骤:
1.用户输入账号密码
2.前端校验格式
3.发送请求到后端
4.后端验证用户信息
5.如果验证成功,生成token返回
6.如果失败,返回错误信息
7.前端根据结果跳转页面或显示错误
然后 AI 会生成代码(文本代码):
graph TDA[用户输入账号密码] --> B[前端校验格式]B -->|格式正确| C[发送请求到后端]B -->|格式错误| H[前端提示格式错误]C --> D[后端验证用户信息]D -->|验证成功| E[生成 Token 并返回]D -->|验证失败| F[返回错误信息]E --> G[前端跳转页面]F --> I[前端显示错误信息]
然后把 mermaid 代码放到渲染工具中。
markdown 文本中使用:将 markdown 代码格式标注为 mermaid 语言,即可看到对应图片:
飞书中 mermaid 使用步骤:先输入 /
,唤出快捷指令,然后输入搜索并选择文本绘图,将代码写到左侧,右侧即可生成所需图片,之后根据需要导出即可。
语雀中用法和飞书基本相同:
如果想要修改 AI 生成的图片,那么只需要对文本代码进行修改,图片也会跟着改变。
时序图示例
AI 提示词:
请用Mermaid画一个订单支付的时序图,展示用户、前端、后端、支付网关之间的交互。
然后把生成的代码渲染一下,即可获得图片:
PlantUML
PlantUML 最擅长绘制 uml 图,绘制的图片更加专业规范(当然不同的文本代码编辑器,生成效果也是不同的,可以从上网众多生成图片中找到自己满意的)。此外,时序图、结构图等等,plantuml 都是支持的。
依旧是举一个例子,ai 提示词如下:
请用PlantUML语法帮我画一个订单系统的类图,包含:
-Order类:订单D、用户ID、总金额、状态、创建时间
-Orderltem类:商品ID、数量、单价
-User类:用户ID、用户名、邮箱
-Product类:商品ID、名称、价格、库存
展示它们之间的关联关系
然后生成代码:
@startuml
class Order {
- orderId: String
- userId: String
- totalAmount: Float
- status: String
- createdAt: DateTime
}class OrderItem {
- productId: String
- quantity: int
- unitPrice: Float
}class User {
- userId: String
- username: String
- email: String
}class Product {
- productId: String
- name: String
- price: Float
- stock: int
}' 关联关系
User "1" -- "0..*" Order : places
Order "1" -- "1..*" OrderItem : contains
OrderItem "*" -- "1" Product : refers to
@enduml
draw.io
drawio 和之前的两种类似,都可以根据文本代码绘图,只是文本代码所需的格式不同而已。
这里我想要根据我之前写的文章 https://blog.csdn.net/XiugongHao/article/details/136355713 ,来生成对应的图片。然后我给ai提示词为:
根据下列内容,生成一个 draw.io 格式的 《节流防抖学习流程图》代码:// 这里直接把原文的 md 格式文本粘贴上去。。。
然后ai 给我生成了一个 xml 格式的代码:
<mxfile host="app.diagrams.net"><diagram name="节流防抖学习流程图" id="NQJhnU1h2lAv_GsA7Ybg"><mxGraphModel dx="1562" dy="752" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><!-- 开始 --><mxCell id="start" value="节流防抖学习流程图" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=16;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="300" y="20" width="300" height="50" as="geometry"/></mxCell><!-- 防抖 --><mxCell id="debounce" value="防抖 debounce" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=14;" vertex="1" parent="1"><mxGeometry x="100" y="100" width="200" height="60" as="geometry"/></mxCell><!-- 防抖适用场景 --><mxCell id="debounce_scenario" value="适用场景:\n- resize/input事件\n- 操作DOM/发请求\n- 最后一次触发才执行" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="100" y="180" width="200" height="100" as="geometry"/></mxCell><!-- 防抖实现方式 --><mxCell id="debounce_method" value="实现方式:\n1. 清除旧定时器\n2. 设置新定时器\n\n使用库: lodash.debounce(func, wait, options)" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="100" y="300" width="200" height="120" as="geometry"/></mxCell><!-- 节流 --><mxCell id="throttle" value="节流 throttle" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=14;" vertex="1" parent="1"><mxGeometry x="500" y="100" width="200" height="60" as="geometry"/></mxCell><!-- 节流适用场景 --><mxCell id="throttle_scenario" value="适用场景:\n- scroll/timeupdate等高频事件\n- 每隔一段时间执行一次" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="500" y="180" width="200" height="100" as="geometry"/></mxCell><!-- 节流实现方式 --><mxCell id="throttle_method" value="实现方式:\n1. 是否存在定时器\n2. 无则设置定时器\n3. 执行后重置标记\n\n使用库: lodash.throttle(func, wait, options)" style="shape=note;whiteSpace=wrap;html=1;" vertex="1" parent="1"><mxGeometry x="500" y="300" width="200" height="120" as="geometry"/></mxCell><!-- 箭头连接 --><mxCell id="edge1" style="endArrow=block;html=1;" edge="1" parent="1" source="start" target="debounce"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge2" style="endArrow=block;html=1;" edge="1" parent="1" source="start" target="throttle"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge3" style="endArrow=open;html=1;" edge="1" parent="1" source="debounce" target="debounce_scenario"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge4" style="endArrow=open;html=1;" edge="1" parent="1" source="debounce_scenario" target="debounce_method"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge5" style="endArrow=open;html=1;" edge="1" parent="1" source="throttle" target="throttle_scenario"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="edge6" style="endArrow=open;html=1;" edge="1" parent="1" source="throttle_scenario" target="throttle_method"><mxGeometry relative="1" as="geometry"/></mxCell></root></mxGraphModel></diagram>
</mxfile>
然后将代码直接粘贴到 drawio 中,没错,就是直接粘贴,然后他会自动生成所需的图:
其他
当然,还有很多可以绘图的工具,比如 xmind 绘制思维导图 等等,还有 svg,canvas 等格式的图片也可以自由生成 logo、图片。
相关文章:

结合 AI 生成 mermaid、plantuml 等图表
AI 画图 AI 画图并不是真的让 AI 画一个图片,而是让 AI 根据你的需求,生成对应的需求文本,再根据 “文本画图” 来生成图片。 Mermaid mermaid 支持流程图、时序图、架构图等等多种图片绘制。当然最终生成的效果和样式会根据不同的“文本代…...
行列式详解:从定义到应用
行列式详解:从定义到应用 引言 行列式是线性代数中的核心概念之一,它不仅是矩阵理论的重要组成部分,更是解决线性方程组、计算向量空间体积、判断矩阵可逆性等问题的关键工具。本文将从行列式的基本定义出发,系统地介绍其性质、…...

R语言使用随机过采样(Random Oversampling)平衡数据集
随机过采样(Random Oversampling)是一种用于平衡数据集的技术,常用于机器学习中处理类别不平衡问题。当某个类别的样本数量远少于其他类别时(例如二分类中的正负样本比例悬殊),模型可能会偏向多数类&#x…...
HertzBeat的安装和使用教程
以下是HertzBeat的安装和使用教程: 安装 • Docker安装:执行命令docker run -d -p 1157:1157 -p 1158:1158 --name hertzbeat apache/hertzbeat。启动后,访问http://localhost:1157,默认账号密码是admin/hertzbeat。 • 包安装…...

【Kotlin】高阶函数Lambda内联函数
【Kotlin】简介&变量&类&接口 【Kotlin】数字&字符串&数组&集合 【Kotlin】高阶函数&Lambda&内联函数 【Kotlin】表达式&关键字 文章目录 函数还是属性高阶函数抽象和高阶函数实例: 函数作为参数的需求方法引用表达式更多使用场…...

从0开始学vue:vue3和vue2的关系
一、版本演进关系1. 继承关系2. 版本生命周期 二、核心差异对比三、关键演进方向1. Composition API2. 性能优化 四、迁移策略1. 兼容构建模式2. 关键破坏性变更 五、生态演进1. 官方库升级2. 构建工具链 六、选型建议1. 新项目2. 现有项目 七、未来展望 一、版本演进关系 1. …...

MySQL关系型数据库学习
学习参考链接:https://www.runoob.com/mysql/mysql-tutorial.html Windows 安装MYSQL服务端的步骤:https://www.runoob.com/w3cnote/windows10-mysql-installer.html 1. 概念学习 MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不…...

嵌入式硬件篇---龙芯2k1000串口
针对串口错误 “device reports readiness to read but returned no data (Device disconnected or multiple access on port?)” 的排查和解决方法 硬件方面 检查连接 确认串口设备(如串口线、连接的模块等)与龙芯设备之间的物理连接是否牢固…...
4-C#的不同窗口传值
C#的不同窗口传值 1.通过构造函数传值 this.Hide(); Form1 form01 new Form1(textBox2.Text); //Application.Run(form01); form01.Show();public Form1(string aaa) {InitializeComponent();label12.Text aaa; }2.全局类传值 namespace WindowsFormsApp1 {public class G…...

谷歌地图苹果版v6.138.2 - 前端工具导航
谷歌地图(Google maps)苹果版是是由谷歌官方推出的一款手机地图应用。软件功能强大,支持本地搜索查找世界各地的地址、地点和商家;支持在街景视图中查看世界各地的360度全景图;支持查找乘坐火车、公交车和地铁的路线,或者查找步行…...

NSSCTF [LitCTF 2025]test_your_nc
[复现]绕过学的还是太差了,多积累吧 题目 题目: 给了一个python文件 #!/bin/python3 import osprint("input your command")blacklist [cat,ls, ,cd,echo,<,${IFS},sh,\\]while True:command input()for i in blacklist:if i in com…...
第十九章 正则表达式
第十九章 正则表达式 文本型数据在所有的类UNIX系统(如 Linux)中会扮演着重要角色,在完全领会这些工具的全部特征之前,要先了解一下工具最为复杂的用法和相关技术:正则表达式。 什么是正则表达式 简单地说,正则表达式是一种用于…...
browser-use Agent 日志链路分析
browser-use Agent 日志链路分析 本节详细梳理 browser-use Agent 的日志输出,从 Agent 初始化到每一步的行为日志,帮助理解其行为轨迹。 1. Agent 初始化阶段 日志点: logger.info(🧠 Starting a browser-use agent ...) 记录 …...

Qwen3高效微调
高效微调 场景、模型、数据、算力 高效微调的应用场景 对话风格微调:高效微调可以用于根据特定需求调整模型的对话风格。例如,针对客服系统、虚拟助理等场景,模型可以通过微调来适应不同的 语气、礼貌程度 或 回答方式,从而在与…...

Gitee Wiki:重塑关键领域软件研发的知识管理范式
在数字化转型浪潮席卷全球的当下,关键领域软件研发正面临前所未有的知识管理挑战。传统文档管理模式的局限性日益凸显,知识传承的断层问题愈发严重,团队协作效率的瓶颈亟待突破。Gitee Wiki作为新一代知识管理平台,正在通过技术创…...

redis的哨兵模式和Redis cluster
目录 一. redis的主从复制 二. 哨兵模式 2.1 定义 2.2 作用 2.3 配置实例 三. Redis cluster 3.1 定义 3.2 作用 3.3 配置实例 1. 新建集群文件目录 2. 准备可执行文件到每个文件夹 3. 开启群集功能 4. 启动redis节点 5. 查看是否启动成功 6. 启动集群 7. 测试…...
MySQL计算精度计算加减乘除取模方式和方法总计
以下是 MySQL 中常用计算方式和方法 的总结,涵盖不同场景下的使用方式及示例说明: 1. 基本算术运算 适用场景: 对表中的字段或数值进行基础数学运算(加、减、乘、除、取模)。适用于单条记录的字段计算(如单价+税金、折扣后的价格等)。运算符: 运算符描述示例+加法SELE…...

农业机器人的开发
农业机器人的开发 喷农药机器人 番茄采摘机器人 葡萄采摘机器人 黄瓜采摘机器人 西瓜采摘机器人 蘑菇采摘机器人 草莓采摘机器人 草莓采摘机器人综述 视觉系统 CCD摄像机,距离传感器,PC计算机 其中CCD摄像机的作用是进行彩色图像的采集和进行果…...

Swift 解锁 LeetCode 热门难题:不改数组也能找出重复数字?
文章目录 摘要描述题解答案题解代码分析解读: 示例测试及结果时间复杂度空间复杂度总结实际场景类比可运行 Demo(Swift Playground)未来展望 摘要 在数组中找出唯一的重复数字,听起来像一道简单的题目,但如果你不能修…...
2025年微信小程序开发:趋势、最佳实践与AI整合
引言 微信小程序自2017年推出以来,已成为中国互联网生态中不可或缺的一部分。根据最新数据,截至2024年,微信小程序的日活跃用户超过4.5亿,总数超过430万个,95%的中国企业拥有自己的小程序(WeChat Mini Pro…...

【深度学习】15. Segment Anything Model (SAM) :基于提示的分割新时代
Segment Anything Model (SAM) :基于提示的分割新时代 基本介绍 The first foundation model for promptable segmentation. Segment Anything Model(简称 SAM)是 Meta AI 于 2023 年提出的一种通用型图像分割基础模型。与以往分割模型不同&…...

Java从入门到精通 - 常用API(一)
常用 API 此笔记参考黑马教程,仅学习使用,如有侵权,联系必删 文章目录 常用 API1. 包代码演示 2. String2.1 String 概述代码演示总结 2.2 String 的常用方法代码演示 2.3 String 使用时的注意事项第一点第二点代码演示 总结题目 2.4 String…...
SQL 筛选出在表1但不在表2中的数据
SQL 筛选出在表1但不在表2中的数据 在SQL中,要筛选出存在于表1但不存在于表2中的数据,有几种常见的方法: 方法1:使用LEFT JOIN WHERE IS NULL SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.join_key t2.join_key W…...
MATLAB实战:实现数字调制解调仿真
以下是使用MATLAB实现BPSK和QPSK数字调制解调仿真的完整代码。该代码包括调制、AWGN信道、匹配滤波/相关解调、星座图绘制以及误码率计算与理论值比较。 %% 清理环境 clear all; close all; clc; %% 参数设置 numBits 100000; % 传输比特数 EbN0_dB 0:2:10; …...
ccf中学生计算机程序设计入门篇课后题p164页test(1)-2 输入一个数,统计这个数二进制中1的个数
include <iostream> using namespace std;int main() {int x;int n 0;// 输入数据cin >> x;// 统计x二进制中1的个数for (n 0; x ! 0; x & x - 1) {n;}// 输出结果cout << n << endl;return 0; }程序解释: 输入:程序从标…...

实现Cursor + Pycharm 交互
效果演示: 直接可以在cursor或Pycharm中点击右键点击,然后就可以跳转到另一个应用的对应位置了 使用方法: 分别在两个应用中安装插件【Switch2Cursor Switch2IDEA,这两个插件分别安装在 IDEA 和 Cursor 中】: Switc…...

C++标准模板库
C标准库参考: C 标准库-CSDN博客 标准模板库STL C 标准库 和 STL 的关系 1. 严格来说,STL ≠ C 标准库 STL(Standard Template Library) 是 C 标准库的一个子集,主要提供泛型编程相关的组件(如容器、迭代器…...

dvwa6——Insecure CAPTCHA
captcha:大概是“我不是机器人”的一个勾选框或者图片验证 LOW: 先输入密码正常修改试一下(123),发现报错 查看源码: <?phpif( isset( $_POST[ Change ] ) && ( $_POST[ step ] 1 ) ) {// Hide the C…...
【机器学习及深度学习】机器学习模型的误差:偏差、方差及噪声
机器学习模型的误差分析 V1.0机器学习模型的衡量准则概念引入机器学习模型误差分析误差出现的原因及消除 V1.0 机器学习模型的衡量准则 衡量机器学习模型的好坏可以考虑以下几个方面: 偏差(Bias): 在充分训练的情况下࿰…...

【学习笔记】On the Biology of a Large Language Model
On the Biology of a Large Language Model 1 Introduction 目标是对这些模型的内部工作机制进行逆向工程,从而更好地理解它们,并评估它们是否适合特定用途。 正如细胞是生物系统的基本构建单元,我们假设特征是模型内部计算的基本单位。仅仅…...