Draw.io 图表技能 是做什么的?
创建专业、可编辑的 draw.io 原生 XML 格式图表文件。
输出格式
Draw.io 文件采用 XML 格式,结构如下:
<mxfile host="app.diagrams.net" modified="DATE" agent="Claude" version="21.0.0" type="device">
<diagram name="DIAGRAM_NAME" id="UNIQUE_ID">
<mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- 所有图表元素放置在此处 -->
</root>
</mxGraphModel>
</diagram>
</mxfile>
核心元素类型
基本形状
<!-- 矩形 -->
<mxCell id="unique-id" value="标签文本" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="120" height="60" as="geometry" />
</mxCell>
<!-- 圆角矩形 -->
<mxCell id="unique-id" value="标签" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="120" height="60" as="geometry" />
</mxCell>
<!-- 圆柱体(数据库) -->
<mxCell id="unique-id" value="数据库" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="80" height="80" as="geometry" />
</mxCell>
<!-- 椭圆 -->
<mxCell id="unique-id" value="节点" style="ellipse;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="80" height="80" as="geometry" />
</mxCell>
容器和组
<!-- 泳道(带标题的容器) -->
<mxCell id="unique-id" value="区域标题" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="200" height="150" as="geometry" />
</mxCell>
<!-- 标题栏(使用品牌主色) -->
<mxCell id="unique-id" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0066CC;strokeColor=#0066CC;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="400" height="40" as="geometry" />
</mxCell>
连接器和箭头
<!-- 基本箭头 -->
<mxCell id="unique-id" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#666666;" edge="1" parent="1" source="source-id" target="target-id">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- 双向箭头 -->
<mxCell id="unique-id" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;strokeWidth=2;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="200" y="200" as="sourcePoint" />
<mxPoint x="400" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<!-- 块状箭头 -->
<mxCell id="unique-id" value="" style="shape=flexArrow;endArrow=classic;html=1;fillColor=#FFB800;strokeColor=#cc9400;width=20;endSize=8;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="200" y="200" as="sourcePoint" />
<mxPoint x="400" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
<!-- 虚线 -->
<mxCell id="unique-id" value="" style="endArrow=classic;html=1;dashed=1;dashPattern=8 8;strokeColor=#999999;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="200" y="200" as="sourcePoint" />
<mxPoint x="400" y="200" as="targetPoint" />
</mxGeometry>
</mxCell>
文本元素
<!-- 纯文本 -->
<mxCell id="unique-id" value="标签文本" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="100" height="30" as="geometry" />
</mxCell>
<!-- 粗体标题 -->
<mxCell id="unique-id" value="标题" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontStyle=1;fontColor=#333333;" vertex="1" parent="1">
<mxGeometry x="100" y="20" width="300" height="40" as="geometry" />
</mxCell>
<!-- 多行文本(使用 
 进行换行) -->
<mxCell id="unique-id" value="第1行
第2行
第3行" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=10;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="150" height="60" as="geometry" />
</mxCell>
常见样式属性
颜色(使用十六进制代码)
| 属性 | 用途 | 示例 |
|---|---|---|
fillColor | 背景色 | fillColor=#dae8fc |
strokeColor | 边框色 | strokeColor=#6c8ebf |
fontColor | 文本色 | fontColor=#333333 |
标准调色板
蓝色: fillColor=#dae8fc;strokeColor=#6c8ebf
绿色: fillColor=#d5e8d4;strokeColor=#82b366
黄色: fillColor=#fff2cc;strokeColor=#d6b656
橙色: fillColor=#ffe6cc;strokeColor=#d79b00
红色: fillColor=#f8cecc;strokeColor=#b85450
紫色: fillColor=#e1d5e7;strokeColor=#9673a6
灰色: fillColor=#f5f5f5;strokeColor=#666666
排版
| 属性 | 值 | 示例 |
|---|---|---|
fontSize | 数字 | fontSize=12 |
fontStyle | 0=常规,1=粗体,2=斜体,3=粗斜体 | fontStyle=1 |
align | left, center, right | align=center |
verticalAlign | top, middle, bottom | verticalAlign=middle |
边框和效果
| 属性 | 值 | 示例 |
|---|---|---|
rounded | 0 或 1 | rounded=1 |
strokeWidth | 数字 | strokeWidth=2 |
dashed | 0 或 1 | dashed=1 |
dashPattern | 模式 | dashPattern=8 8 |
shadow | 0 或 1 | shadow=1 |
公司品牌定制
此技能支持公司特定品牌定制。编辑 references/branding.md 以设置您组织的颜色和样式。
默认品牌占位符(请替换为您自己的):
主色: fillColor=#0066CC;strokeColor=#0052a3;fontColor=#FFFFFF
辅色: fillColor=#FFB800;strokeColor=#cc9400;fontColor=#333333
深色: fillColor=#1a1a2e;strokeColor=#1a1a2e;fontColor=#FFFFFF
浅背景:fillColor=#f0f4f8;strokeColor=#0066CC
有关完整定制说明,请参阅 references/branding.md。
图表模式
架构图布局
- 标题栏 位于顶部(全宽,品牌颜色)
- 主要区域 作为泳道或圆角容器
- 组件 作为区域内的圆角矩形
- 数据库 作为圆柱体
- 外部系统 位于左/右边缘
- 箭头 显示数据/控制流
- 图例 在角落解释颜色/符号
- 页脚 包含元数据
分层架构(自上而下)
┌─────────────────────────────────────┐
│ 用户 / 客户端 │ ← 顶层
├─────────────────────────────────────┤
│ API / 接口 │
├─────────────────────────────────────┤
│ 业务逻辑 │
├─────────────────────────────────────┤
│ 数据 / 存储 │ ← 底层
└─────────────────────────────────────┘
自左向右的流程
┌──────┐ ┌──────────┐ ┌──────────┐
│ 源 │ ──► │ 处理 │ ──► │ 目标 │
└──────┘ └──────────┘ └──────────┘
最佳实践
- 唯一 ID:每个 mxCell 都需要唯一的
id属性 - 父级层次结构:顶层元素设置
parent="1" - 定位:使用
mxGeometry的 x、y、width、height 属性 - 分层:后面定义的元素将显示在前
- 对齐:使用一致的 x/y 间距(10-20px 网格)
- 颜色:使用调色板中协调的填充/边框组合
- 标签:保持文本简洁;对描述使用单独的文本元素
- 留白:在容器内留出边距(20-40px 内边距)
工作流程
- 确定图表类型和布局模式
- 在
mxGraphModel中设置页面尺寸(pageWidth, pageHeight) - 创建容器结构(泳道、组)
- 使用唯一 ID 添加组件
- 添加连接器,引用 source/target ID
- 添加标签和注释
- 如果使用颜色编码,添加图例
- 保存为
.drawio文件 - 复制到
/mnt/user-data/outputs/并呈现给用户
云提供商图标(AWS、Azure、GCP)
Draw.io 包含主要云提供商的内置形状库。使用官方图标使架构图更专业。
AWS 图标(快速参考)
AWS 使用 shape=mxgraph.aws4.resourceIcon,其中 resIcon=mxgraph.aws4.SERVICE:
<mxCell id="lambda-1" value="Lambda" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="78" height="78" as="geometry" />
</mxCell>
常用 AWS resIcon 值:
- 计算:
ec2、lambda、ecs、eks、fargate - 存储:
s3、elastic_block_store、elastic_file_system - 数据库:
rds、dynamodb、aurora、elasticache、redshift - 网络:
vpc、cloudfront、route_53、api_gateway、elastic_load_balancing - 安全性:
iam、cognito、secrets_manager、kms、waf
AWS 类别颜色:
- 计算:
#ED7100 - 存储:
#7AA116 - 数据库:
#C925D1 - 网络:
#8C4FFF - 安全性:
#DD344C
Azure 图标(快速参考)
Azure 使用 image=img/lib/azure2/CATEGORY/SERVICE.svg:
<mxCell id="vm-1" value="VM" style="aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/azure2/compute/Virtual_Machine.svg;verticalLabelPosition=bottom;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="100" y="100" width="68" height="68" as="geometry" />
</mxCell>
常用 Azure image 路径:
compute/Virtual_Machine.svg、compute/Function_Apps.svgcontainers/Kubernetes_Services.svgstorage/Storage_Accounts.svg、storage/Blob_Storage.svgdatabases/SQL_Database.svg、databases/Azure_Cosmos_DB.svgnetworking/Virtual_Networks.svg、networking/Load_Balancers.svgsecurity/Key_Vaults.svg、identity/Azure_Active_Directory.svg
AWS 组容器
<!-- VPC -->
<mxCell id="vpc" value="VPC" style="sketch=0;outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;dashed=0;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="400" height="300" as="geometry" />
</mxCell>
<!-- 公有子网 -->
grIcon=mxgraph.aws4.group_public_subnet;strokeColor=#7AA116;fillColor=#E9F3E6
<!-- 私有子网 -->
grIcon=mxgraph.aws4.group_private_subnet;strokeColor=#00A4A6;fillColor=#E6F6F7
参考
有关高级模式和完整的图标列表,请参阅:
references/architecture-patterns.md- 常见架构图布局references/style-guide.md- 扩展样式选项和图标放置references/cloud-icons.md- 完整的 AWS、Azure、GCP 图标参考references/branding.md- 公司品牌定制指南