Skip to content

图表设计风格指南 (Style Guide)

本指南规范技术架构图、流程图及各类工程图表的视觉表达。设计核心原则为 专业、清晰、理性,以蓝色系为主色调,强调信息层级与阅读体验。


1. 设计原则

  1. 功能优先:视觉服务于信息传递,避免过度装饰
  2. 清晰层级:通过颜色深浅、线条粗细区分重要程度
  3. 一致性:统一的形状、字体与配色语言
  4. 蓝调美学:传递科技、稳重、信任的视觉感受

2. 配色方案

2.1 颜色克制原则

默认使用中性色,主色仅用于强调。 避免流程图大面积使用蓝色。

状态边框填充线条
默认#8C8C8C#D9D9D9#FFFFFF#FAFAFA#595959
强调#1890FF#E6F7FF#1890FF

2.2 核心蓝

名称色值用途
主色 Primary#1890FF核心节点边框、标题
深蓝 Dark#0050B3极重要强调、页眉
浅蓝 Light#E6F7FF节点背景填充
边框蓝 Stroke#91D5FF一般节点边框

2.3 架构图分层配色

架构图采用蓝色系四档渐变,从上到下由深到浅:

档位适用层级填充边框
第1档入口/页面层#E6F7FF#1890FF
第2档业务功能模块层#F0F5FF#91D5FF
第3档组件/服务层#F5FAFF#BAE7FF
第4档基础支撑/后端服务#F0F5FF#ADC6FF

内部子节点统一白底灰边:fill="#FFFFFF" stroke="#8C8C8C"

2.4 中性色

名称色值用途
文本深灰#262626主要文字
文本浅灰#595959辅助说明、注释
边框灰#D9D9D9辅助容器、泳道分隔
背景灰#FAFAFA / #F5F5F5子系统背景

2.5 功能色

仅在表达特定状态时使用:

状态边框/文字背景
成功#52C41A#F6FFED
警告#FAAD14#FFFBE6
错误#F5222D#FFF1F0

3. 排版与字体

font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif
用途字号字重
图表主标题24px - 32pxbold
节点标题16px - 18pxbold
节点正文12px - 14pxnormal
注释/标签10px - 11pxnormal

主标题颜色使用 #1890FF#0050B3不使用灰色


4. 图形元素

边框宽度

场景宽度
默认0.5px
辅助线/虚线1px
强调/核心路径1.5px - 2px

⚠️ 严禁边框重叠:多个图形的边框不应重叠绘制。内部元素使用 stroke="none" 或保持间距。

⚠️ 连线不得穿越节点框:所有连线路径必须绕开节点框内部区域。并行分叉连线应走节点框顶边上方或底边下方的空白区域。

⚠️ 连线标注文字不得压线:标注文字必须放在连线旁边的空白区域(上方或下方 ≥ 6px),不得直接压在线条上。若空间不足,应增加容器高度而非压缩标注位置。

圆角

场景圆角
标准节点rx="4"
容器rx="8"
开始/结束节点rx="22"(胶囊形)

阴影

推荐不使用阴影(Flat Design)。


5. 布局与间距

5.1 布局方向

图表类型推荐方向
架构图自顶向下
流程图(时间轴/数据流)左至右
流程图(审批/层级)自顶向下

5.2 间距规范

场景间距
并列框间距10px
层间垂直间距60px
容器内边距≥ 20px
模块间外边距30px - 50px
整体虚线框距边缘15px

5.3 整体虚线框

xml
<rect x="15" y="10" width="{W-30}" height="{H-20}" rx="8" ry="8"
      fill="none" stroke="#8C8C8C" stroke-width="0.5" stroke-dasharray="4,4"/>

5.4 对齐规则

  • 同级元素严格水平/垂直对齐
  • 标题与内容框中心点 x 坐标必须一致
  • 禁止随意摆放,使用 10px/20px 网格对齐

6. 连线与箭头

箭头标记定义

xml
<defs>
  <!-- 灰色实心箭头(默认) -->
  <marker id="arrow-gray" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
    <polygon points="0 0, 10 3.5, 0 7" fill="#595959"/>
  </marker>
  <!-- 蓝色实心箭头(强调) -->
  <marker id="arrow-blue" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
    <polygon points="0 0, 10 3.5, 0 7" fill="#1890FF"/>
  </marker>
  <!-- 空心箭头(异步/返回) -->
  <marker id="arrow-open" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
    <polygon points="0 0, 10 3.5, 0 7" fill="none" stroke="#595959" stroke-width="1"/>
  </marker>
</defs>

连线类型

类型样式语义
实线灰色stroke="#595959" stroke-width="0.5"默认调用、依赖
实线蓝色stroke="#1890FF" stroke-width="1"核心路径强调
虚线灰色stroke-dasharray="4,3"异步、返回、弱依赖

贴边原则

箭头终点坐标必须精确等于目标节点的边框坐标:

节点 rect: x=260, y=110, width=120, height=70
→ 左边界 x=260,右边界 x=380
→ 上边界 y=110,下边界 y=180
→ 水平中心 y=145,垂直中心 x=320

从左侧连入:line x2="260" y2="145"  ✓
从右侧连出:line x1="380" y1="145"  ✓

正交路径

连线使用水平/垂直折线,禁止斜线:

xml
<polyline points="x1,y1 xm,y1 xm,y2 x2,y2"
          fill="none" stroke="#595959" stroke-width="0.5"
          marker-end="url(#arrow-gray)"/>

7. 常用图形组件

7.1 基础组件

组件形状语义
服务/模块矩形 rx="4"微服务、应用模块
容器/子系统虚线矩形 rx="8"逻辑分组、VPC
数据库圆柱体持久化存储
缓存/队列横向圆柱Redis、Kafka
用户/角色人形图标最终用户、管理员

7.2 流程控制组件

组件形状语义
开始/结束胶囊形 rx="22"流程起止点
判断/网关菱形 <polygon>条件分支
输入/输出平行四边形数据输入输出

8. 图例(Legend)规范

8.1 图例放置原则

图例必须放在画布的固定安全区域,不得与任何内容重叠。

优先级位置适用场景
首选右下角,距画布底边 20px,距右边 20px大多数图表
备选左下角,距画布底边 20px,距左边 20px右下角有内容时
备选右上角,标题下方 10px内容集中在左侧时

⚠️ 严禁将图例放在内容区域中间或与节点框重叠。

8.2 图例尺寸与间距

  • 图例容器:fill="#FAFAFA" stroke="#D9D9D9" stroke-width="0.5" rx="4"
  • 图例标题:font-size="11" font-weight="bold" fill="#595959"
  • 图例条目:每条高度 20px,图标宽 16px,文字间距 8px
  • 容器内边距:≥ 10px
  • 图例条目间距:4px

8.3 图例容器尺寸计算

图例宽度 = max(条目文字宽度) + 16(图标) + 8(间距) + 20(内边距×2)
图例高度 = 标题行(20px) + 条目数 × 24px + 内边距×2(20px)

放置坐标(右下角):
  legend_x = W - legend_width - 20
  legend_y = H - legend_height - 20

⚠️ 画布高度必须为内容区域高度 + 图例高度 + 足够间距,确保图例不压在内容上。

8.4 图例代码模板

xml
<!-- 图例容器(右下角) -->
<!-- legend_x = W-160-20=820, legend_y = H-110-20=470(示例:W=1000, H=600) -->
<rect x="820" y="470" width="160" height="110" rx="4" ry="4"
      fill="#FAFAFA" stroke="#D9D9D9" stroke-width="0.5"/>
<text x="830" y="488" font-size="11" font-weight="bold" fill="#595959"
      font-family="PingFang SC, Microsoft YaHei, Arial, sans-serif">图例</text>

<!-- 条目1:实线箭头 -->
<line x1="830" y1="504" x2="846" y2="504"
      stroke="#595959" stroke-width="0.5" marker-end="url(#arrow-gray)"/>
<text x="854" y="508" font-size="11" fill="#595959"
      font-family="PingFang SC, Microsoft YaHei, Arial, sans-serif">同步调用</text>

<!-- 条目2:虚线箭头 -->
<line x1="830" y1="528" x2="846" y2="528"
      stroke="#595959" stroke-width="0.5" stroke-dasharray="4,3" marker-end="url(#arrow-gray)"/>
<text x="854" y="532" font-size="11" fill="#595959"
      font-family="PingFang SC, Microsoft YaHei, Arial, sans-serif">异步/返回</text>

<!-- 条目3:色块说明 -->
<rect x="830" y="544" width="16" height="12" rx="2"
      fill="#E6F7FF" stroke="#1890FF" stroke-width="0.5"/>
<text x="854" y="554" font-size="11" fill="#595959"
      font-family="PingFang SC, Microsoft YaHei, Arial, sans-serif">核心节点</text>

8.5 图例与内容区域隔离

当图表内容较多时,必须预留图例区域,内容布局时主动避开:

内容区域可用宽度 = W - 图例宽度 - 图例右边距 - 内容左边距 - 间隔(≥20px)

若图例放在底部,则:

内容区域可用高度 = H - 图例高度 - 图例底边距 - 标题高度 - 间隔(≥20px)

9. QA 检查清单

输出前逐项检查:

  • [ ] 颜色克制:流程图避免大面积蓝色,只用 1-2 个强调节点
  • [ ] 分层配色:架构图各层按四档渐变,内部子节点白底灰边
  • [ ] 标题突出:主标题使用主色或深蓝,不用灰色
  • [ ] 字体统一:所有文字使用规定字体族
  • [ ] 边框统一:默认 0.5px,无边框重叠
  • [ ] 贴边检查:所有箭头精确接触目标边框,无悬空或穿模
  • [ ] 连线绕行检查:所有连线路径绕开节点框内部,并行分叉连线走节点框顶边上方或底边下方
  • [ ] 标注文字检查:连线上的标注文字放在线旁空白区域,不压在线上;若空间不足应增加容器高度
  • [ ] 布局检查:元素间距 ≥ 10px,无重叠
  • [ ] 对齐检查:同级元素严格对齐,标题与内容框居中对齐
  • [ ] 留白检查:容器内边距 ≥ 20px
  • [ ] 扁平化:无阴影和高光效果
  • [ ] 虚线框:整体图表有虚线框,距边缘 15px
  • [ ] 图例位置检查:图例放在右下角/左下角等安全区域,不与任何节点框、连线、标注文字重叠
  • [ ] 图例区域预留:画布高度/宽度已为图例预留足够空间,内容布局未侵入图例区域
  • [ ] 图例容器完整:图例有背景容器框,条目图标与文字对齐,字号 11px

10. SVG 代码片段参考

默认节点

xml
<rect x="10" y="10" width="120" height="50" rx="4" ry="4"
      fill="#FFFFFF" stroke="#8C8C8C" stroke-width="0.5"/>
<text x="70" y="40" text-anchor="middle" font-size="13" fill="#262626"
      font-family="PingFang SC, Microsoft YaHei, Arial, sans-serif">普通步骤</text>

强调节点

xml
<rect x="150" y="10" width="120" height="50" rx="4" ry="4"
      fill="#E6F7FF" stroke="#1890FF" stroke-width="0.5"/>
<text x="210" y="40" text-anchor="middle" font-size="13" fill="#262626"
      font-family="PingFang SC, Microsoft YaHei, Arial, sans-serif">核心步骤</text>

连线(精确贴边)

xml
<!-- 从节点A右边界(x=130,y=35) → 节点B左边界(x=150,y=35) -->
<line x1="130" y1="35" x2="150" y2="35"
      stroke="#595959" stroke-width="0.5" marker-end="url(#arrow-gray)"/>

虚线框容器

xml
<rect x="40" y="80" width="300" height="200" rx="8" ry="8"
      fill="#FAFAFA" stroke="#D9D9D9" stroke-width="0.5" stroke-dasharray="4,4"/>
<text x="52" y="98" font-size="11" fill="#595959"
      font-family="PingFang SC, Microsoft YaHei, Arial, sans-serif">子系统名称</text>

整体虚线框

xml
<rect x="15" y="10" width="870" height="500" rx="8" ry="8"
      fill="none" stroke="#8C8C8C" stroke-width="0.5" stroke-dasharray="4,4"/>