文章目录
一、基础操作
1、链接
两中链接的区别在于点绿色的点还是蓝色的箭头。
1.1、自动连接图形
鼠标放在图形上,点击出现的箭头,会自动出常用图形
1.2、两种连接类型
(1)、固定连接
如果拖动其中一个图形的话,固定链接的形状会是曲线连过去。
方法:不要点击左边图形+鼠标放在边框上面左边出现绿圆点+鼠标左键点击图形的绿圆点不放+拖动链接另外一个图形的绿圆点。
(2)浮动连接
如果拖动其中一个图形的话,固定链接的形状会自动变为直线连接。
实现方法1:鼠标放在图形边缘等待出现蓝色箭头,鼠标左键点击图形上的箭头不放+拖动链接到另外一个图形+再往前靠一点另外一个图形会变成蓝框+松手。
实现方法2:将两个图形靠近,点箭头自动连过去。
2、等比例变形
shift+小蓝点
3、复制
ctrl+d 快速复制
ctrl+拖动鼠标 快速复制
ctrl+c/v 复制+粘贴
4、插入表格
点击表格图标选择插入图表形状。
点击第二张图中红圈的黄点,改变成图标的形状。
在右边的设置框里调整图表的大小
5、改变文字方向
方法1:插入文本框,然后缩小文本框的宽度,类似PPT。
拉圆点缩小文本,即可竖排。
方法2:直接插入文字,然后调整方向。缺点只能逆时针转90°,文字是倒的。
点击箭头
6、批量翻转箭头等图形的方向
全选要翻转的图形——点击邮件—在下拉列表靠近底部的位置找到“翻转”选项—点击
7、全选各种图像
全选连接线:Ctrl+Shift+E,全选后在右侧设置,例如可以把曲线改直线等。
8、替换形状
9、 翻转箭头
右侧设置框—调整图形——翻转(在第三行)
二、在线打开
三、插入—功能聚集地
1、插入图片
调整图形—插入—图片
2、插入画笔
插入—自由绘图
3、对齐/等距分布和对齐到网格
方法1:
先选中图形
调整图形——对齐/等距分布
方法2:
选中图形—右键
对齐到网格在最下面。
4、美化样式
不选中图形 —样式,注意:不能选中某个图形,选中图形右边的设置部分会针对某个具体的图形设置,无法对全面流程图美化样式。
5、修改画布大小
方法1:文件—页面设置
方法2:右边设置框——最下面页面尺寸
6、导出
使用draw.io导出的png或者svg等均含有xml信息,占用存储较大,但是可以再次导入draw.io进行编辑。
7、删除形状
保留连接线:直接选中形状,点击Delete或者Backspace
同时删除连接线:选中形状后,点击Ctrl + Delete/Backspace
四、图码转换——高效画图
可以和大模型结合,由大模型生成代码,人工修改代码或图形,高效画图。
draw.io支持mxGraph的标记语言(Markup Language),用于在draw.io中描述图形模型的结构和属性。mxGraphModel是draw.io内部使用的一种格式,用于保存和加载图形模型数据。
1、通用图码转换
功能启用
(1)、点击 其他—编辑绘图
(2)、弹出代码框
2、流程图生成:使用mermaid语言生成图:
插入 —> 高级:支持插入txt、mermaid、sql、csv等格式的内容
3、大模型生成流程图mermaid语言画图代码—高可用
流程图mermaid语言画图代码相对简单,大模型可以较好的生成。
4、大模型生成mxGraph 库画图代码—低可用
代码生成的mxGraphModel画图功能丰富但bug较多,可用性交底。
Prompt :
使用mxGraphModel的标记语言在draw.io画一个网络图,其中包含3个思科交换机和一个网关,交换机都连接到网关上。请生成代码,其中交换机对象使用为xx
这个对象ID可以选一个交换机到画布,然后查看代码获取。一般在这一句style="shape=mxgraph.cisco.directors.content_engine_(cache_director)
四、大模型生成mxGraph 画图—重要
技术进步真快,在我24年写这篇文章的时候,大模型生成的mxGraphModel的xml代码bug非常多,可用性很低,但是在25年,随着技术的进步,使用大模型生成代码自动生成流程图已经是draw.io的重要功能。
第一步:使用deepseek、文心等大模型生成流程图的描述。直接上传流程图模板+语言描述想要的流程图,生成较为规范的图表描述或创建需求。
第二步:生成代码。将下面的prompt模板+画图规范+第一步生成的图表描述或创建需求,一起提交给大模型生成代码。
prompt模板
# 角色
你是一个 DrawIO 代码生成器。可以将我的需求或者图片转化为对应的xml代码。
语言:中文
## 核心能力
1. 根据视觉描述/需求直接生成可运行的draw.io代码
2. 校验机制保证代码准确性
3. 输出标准化代码块
4. 生成过程中要遵守规则 「DrawIO 图形规范指南(完整版)」
## 处理流程
① 接收输入 → ② 要素解析 → ③ 结构建模 → ④ 语法生成 → ⑤ 完整性校验 → ⑥ 输出结果(用artifacts 输出)
## 输出规范
<!-- 经过校验的draw.io代码 -->
<mxfile>
[生成的核心代码]
</mxfile>
## 交互规则
- 收到图片描述时:"正在解析结构关系(进行描述图片细节)...(校验通过)"
- 收到创建需求时:"建议采用[布局类型],包含[元素数量]个节点,是否确认?"
- 异常处理:"第X层节点存在连接缺失,已自动补全"
## 优势特性
- 元素定位精度:±5px等效坐标
- 支持自动布局优化(可禁用)
- 内置语法修正器(容错率<0.3%)
DrawIO 图形规范指南(完整版)
# DrawIO 图形规范指南(完整版)
drawio文件是基于mxGraph的XML结构
## 基础要求
- 展示在A4纸上,选择合适的字体大小
- 字体必须全部加粗,标题等关键元素字号加大处理
- 线段统一使用3pt宽度,保证在论文打印后依然清晰可见
- 所有文本格式(加粗、下标上标、公式代码)必须正确实现
- 使用标准drawio文件格式,保证兼容性
- 组件必须完全容纳文字,避免文字溢出
- 所有线条必须设置jumpstyle=arc和jumpsize=6,确保交叉处清晰可辨
- 所有连接线拐点必须设置rounded=1保证美观
## 布局规范
- 组件间垂直和水平间距保持统一(30-50px为宜)
- 将相关的组件放入容器或组中,以提高图表的可读性和组织性
- 对齐方式使用center,保持一致性
- 使用网格对齐(gridSize=10)辅助布局
- 避免组件和连接线重叠,特别是避免线条穿过文字
## 连接线规范
- 所有箭头样式必须统一(endArrow=classic)
- 多条连接线汇入同一组件时,应从不同方向进入(如左、中、右)
- 同一起点的多条连接线应适当分散起点位置
- 为所有交叉的连接线添加跳跃样式(jumpStyle=arc)
- 长距离连接线应适当设置航点(waypoints)引导路径
- 绝对禁止连接线遮挡文字和组件标签
## 组件连接设计
- 组件使用浮动连接点,而非固定连接点
- 相关组件应放置在合理的相对位置,减少连线复杂度
- 复杂流程应分层次展示,避免连线交叉过多
## 文本与组件规范
- 所有组件内文本必须加粗(fontstyle=1)
- 数学公式使用HTML格式:h<sup>v</sup>和h<sub>inter</sub> 不要使用latex格式
- 公式可以根据条件更换字体
- 数学符号如点乘必须使用正确格式:◎应写为⊙
- 合理使用waypoints:在需要精确控制连接路径时,可以使用固定的waypoints来避免线条交叉和文字遮挡
- 组件大小应根据内容自适应,保持适当留白
## 命名与结构规范
- diagram name必须命名为有意义的名称(如"多模态特征融合流程")
- 组件ID必须反映其功能(如query-network)
- 连接线ID应反映实际连接关系(如edge-visual-query)
- 相关元素应放在一起,提高代码可读性
## 实践检查清单
- 连接线交叉检查:所有交叉处是否设置了jumpstyle=arc
- 文本遮挡检查:是否有连接线穿过文本或遮挡组件
- 格式一致性检查:字体、线条宽度、箭头样式是否统一
- 连接美观性检查:连接线是否从合适的方向进入组件
- 留白空间检查:组件之间是否有足够间距(30-50px)
- 代码健壮性检查:代码是否符合drawio开发规范,是否可以运行
## 特殊场景处理
- 复杂图表应考虑分层或分区域展示
- 多条平行连接线应保持一致的间距和样式
- 长路径连接应使用中间节点或分段处理
- 双向连接使用两条独立的连接线而非双向箭头
## 参考资源
- DrawIO官方文档:https://www.drawio.com/
- DrawIO学习教程:https://www.drawzh.com/
- 在线编辑器:https://app.diagrams.net/
- MxGraph语法:https://jgraph.github.io/mxgraph/docs/tutorial.html
五、批量操作图形
这是个代码框用于调用mxGraphModel的标记语言(Markup Language),在draw.io中描述图形模型的结构和属性。mxGraphModel是draw.io内部使用的一种格式,用于保存和加载图形模型数据。
1、批量修改所有的字体/线条/颜色—常用功能
draw.io并没有提供全部选择一类对象,如线条、字体然后修改的功能。可以通过图形生成代码,然后修改对应的代码来快速完成。
其中代码修改可以由大模型修改代码,然后再讲代码粘贴回draw.io中修改。
案例1、批量将矩形的高度改为50
方法一:如果矩形能全部选择到,则全选修改右边的配置框的调整图形。
方法二:如果矩阵不能全部选择到。
1、提取代码
2、粘贴到txt
3、ctrl+h 替换为 height=“50”
2、批量插入图形
这是drawio的绘图语言,请在其中插入一个菱形,
注意:插入的图像代码要放在倒数第二行 前。
<mxGraphModel dx="977" dy="588" 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="5TlSNR0lOvDpRwltdClC-1" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="200" y="280" width="120" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
案例2、批量将线条的宽度改为2
1、语法:edge=“1” 表示这是一条线,因此通过<mxCell id=开头,edge=“1”>来搜索线, strokeWidth=2表示线的宽度,要想改线条的形状要改style=中的内容。这里我们在html=1的分号和双引号之间插入strokeWidth=2,来修改格式。
<mxCell id="GWXnRPhZYhOlK_d6dPAx-4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="GWXnRPhZYhOlK_d6dPAx-2" target="GWXnRPhZYhOlK_d6dPAx-3" edge="1">
<mxGeometry relative="1" as="geometry" />
2、用python的re模块来完成。
import re
def replace_html_attribute(content):
# 查找所有匹配的元素
pattern = r'<mxCell id=.*?edge="1">'
matches = re.findall(pattern, content)
# 对每个匹配的元素进行修改
for match in matches:
# 将修改后的内容替换原始匹配项
content = content.replace('html=1;', 'html=1;strokeWidth=2;')
return content
content = '''
在这里写入mxgraph语言
'''
# 执行插入操作
result = replace_html_attribute(content)
print(result)
案例3、批量将所有图形的边框改为填充色
1、语法:
fillColor属性是填错的图像颜色,borderColor和strokeColor在不同的情况下指边框的颜色,一般是strokeColor起作用。通过正则表达式在fillColor后增加borderColor和strokeColor,他们的值和fillColor一致来实现边框和填充色一样。
注:纯白色填充色无法修改边框为白色,因为白色填充时mxGraphModel代码中没有fillColor字段。
2、代码
将输出的代码粘贴到draw.io中编辑语言部分
import re
# 输入的代码
code = '''
<mxGraphModel dx="1050" dy="629" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="1654" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
xxxxx
</root>
</mxGraphModel>
'''
# 使用正则表达式找到所有包含fillColor的行,并在其后面添加borderColor和strokeColor
pattern = r'(?<=fillColor=)([^;]+)(?=;)'
new_code = re.sub(pattern,
lambda match: match.group() + ';borderColor=' + match.group() + ';strokeColor=' + match.group(), code)
# 输出新的代码
print(new_code)
六、Diagrams 库
diagrams 库可以用来画架构图。画好的图片可以插入draw.io或者生成xml导入draw.io。
安装:
Diagrams库依赖于开源的图可视化工具Graphviz,安装Graphviz后,通过pip 安装diagrams。
pip install diagrams
安装 graphviz2drawio库 ,将保存的graph转为xml,然后在drawio中导入。
from graphviz2drawio import graphviz2drawio
xml = graphviz2drawio.convert(graph_to_convert)
print(xml)
七、嵌入WPS/office
1、复制为图像
选中需要复制的部分,然后鼠标右键-复制为图像,然后到Office中进行Ctrl + V粘贴即可,粘贴后的图依旧是可以变换大小,且清晰度比直接导出的要好。
注意:不可直接ctrl+c/v
八、分页
在页面的左下角有分页功能,类似excel点击可以加页。
九、流程图自动布局
在高级选型中的下半部分
其他
1、将内容在html打开
注意:实际内容和菜单是反的,嵌入图片是网页,嵌入网页是图片。
1、文件—嵌入——图片/SVG。 会生成代码,将代码复制到txt,该后缀为html则会在页面打开,点击打开的页面上的图形则会在网页中呈现。
2、1、文件—嵌入——图片。 会生成代码,将代码复制到txt,该后缀为html则会在页面打开,页面上会有一个图形。
2、输入数学公式
1、打开 其他—数学排版
2、点击插入文本框
3、在文本框中输入公式 a^2+b^2=c^2
注意单引号要用键盘Tab 上面的键输入(即ESC键下面TAB键上面的~和单引号键)。
4、点击空白,文本框自动渲染为数学公式。
3、插件
draw如何对图中的形状进行编号
https://www.drawzh.com/2663.html