流程图设计标准 v4.0
范围:流程图的布局、美学和视觉设计原则。
符号形状、颜色、边类型 → 参见 std-flowchart-symbols-v1(唯一真理源)。
核心哲学:美化是手段,传递信息才是目的。
任何让读者无法在 3 秒内叙述主流程的装饰都是有害的。
1. 设计公理
流程图是信息传递的视觉语言。 每个设计决策只需回答一个问题:这是否帮助读者更快理解逻辑? 如果不是,删除它。
| 优先级 |
目标 |
衡量标准 |
| P0 |
3秒扫描 |
读者无需点击即可叙述主流程 |
| P1 |
直线 |
能直的线必须直——禁止不必要的曲线或绕路 |
| P2 |
无重叠 |
节点不重叠节点;边不穿过节点;边交叉最小化为零 |
| P3 |
形状=含义 |
每个节点的形状瞬间表明"它是什么"(参照符号标准) |
| P4 |
颜色=角色 |
相同语义角色→相同颜色,无猜测空间 |
| P5 |
线条层级 |
主流程线明显比其他所有线更粗/更深 |
| P6 |
一屏可见 |
fitView 显示所有节点,无需滚动、拖拽或缩放 |
2. 颜色原则
2.1 统一性
- 相同语义类型→相同颜色。 所有 Process 节点都是蓝色。所有 Decision 节点都是琥珀色。无例外。
- 调色板按符号类型固定(参见符号标准的颜色表)。禁止发明新色相。
- 如果节点不属于任何标准类型,默认使用
process(蓝色)。
2.2 对比度
- 填充 vs 描边:每个节点使用浅填充 + 饱和描边。描边承载身份;填充提供面积。
- 文字 vs 背景:最小亮度差 > 30%。使用标准中指定的
font-color。
- 主要 vs 次要边:主流程为 3px 黑色(透明度 0.85),其他边更细、更浅或虚线。视觉差距必须明显。
2.3 精简性
- 任何单个图表最多 3 个主色调。 其余为点缀色。
- 如果图表使用 6+ 种符号类型,调色板自然扩展——但读者仍然感知"蓝色=动作,琥珀色=决策",因为形状强化了颜色。
- 禁止用颜色编码第二维度(如"蓝色=过程且蓝色=确定性")。颜色仅编码符号类型。
2.4 场景适配
| 场景 |
建议 |
| 技术文档 |
直接使用标准调色板(低饱和度,高可读性) |
| 演示文稿 |
描边宽度+1px;稍大节点以适应投影仪 |
| 打印 / PDF |
确保所有虚线在黑白打印中可区分(靠虚线样式,非颜色) |
| 深色背景 |
反转填充/描边变体(需单独处理) |
3. 节点设计原则
3.1 尺寸标准化
| 属性 |
值 |
容差 |
| 最小宽度 |
120px |
— |
| 最大宽度 |
240px |
— |
| 最小高度 |
48px |
— |
| 最大高度 |
96px(2行) |
— |
| 圆角 |
8px(Process),16px(AI/Display),0(Diamond) |
按符号标准 |
| 描边宽度 |
2px(常规),3px(强调:AI、Internal Storage) |
按符号标准 |
- 同类型节点必须尺寸相同。 两个并排的 Process 节点大小完全一致。
- Decision 菱形因形状自然更高——保持文字区域紧凑。
3.2 内容密度
每个节点最多 3 个内容区域:
┌──────────────────────┐
│ 标题 │ ← 动词+宾语,≤ 24字符
│ 副标题 │ ← 结果/产物,≤ 36字符
│ [标签] [标签] [+N] │ ← 产物名称,≤ 3个标签
└──────────────────────┘
| 区域 |
规则 |
| 标题 |
祈使动词+宾语。如 解析PDF、训练模型、检查质量 |
| 副标题 |
描述输出或方法。如 解析章节 + 提取图表 |
| 标签 |
产物名称(最多3个),溢出显示 +N。 |
- 字体:仅无衬线字体(节点文字禁用衬线体和等宽体)。
- 对齐:居中。标题禁止换行到2+行——宁可缩短。
- 节点内无图标,除非完全替代文字(每节点最多1个图标)。
4. 边设计原则
4.1 视觉层级
读者应瞬间识别哪条线是"主干道":
| 层级 |
边类型 |
视觉权重 |
| 前景 |
主流程 |
3px,黑色,实线,透明度 0.85 |
| 中景 |
通过/失败门 |
2px,绿/红,实线/虚线,透明度 0.70–0.80 |
| 背景 |
数据/跳转/反馈 |
1.5px,柔和颜色,透明度 0.40–0.50 |
- 如果所有边看起来同等重要,图表就坏了。主流程必须主导。
4.2 直线规则(不可协商)
如果一条线能直,它就必须直。 对齐节点之间的弯曲线始终是bug。
| 规则 |
描述 |
| 对齐时必须直 |
如果源和目标共享相同X(垂直流)或Y(水平流),边必须是单段直线——零弯折。 |
| 偏移时直角 |
如果源和目标未对齐,使用恰好一个直角弯(L形)。主流程禁用贝塞尔曲线。 |
| 禁止多余曲线 |
主流程、通过门、失败门禁止贝塞尔/样条路由。仅跳转和反馈边可使用曲线,且仅在必要时。 |
| 布局产生直线 |
节点正确对齐时,边不需要路由技巧。先修布局,非修边。 |
4.3 路由规则
| 规则 |
描述 |
| 固定端口 |
L→R布局:左进右出。T→B布局:上进下出。 |
| 禁止自环 |
source === target 的边始终过滤掉——零例外。 |
| 总览无回边 |
除最多1条反馈边。所有循环放在详细视图中。 |
| 零交叉目标 |
重排节点以消除所有边交叉。如果真不可能,以直角交叉并留可见间隙。 |
| 边不穿过节点 |
边绝不可视觉上穿过或重叠未连接的节点。 |
5. 布局原则
5.1 主干优先
每个流程图必须有恰好一条主干(脊柱)。所有其他信息作为侧边栏、标签或详细视图挂在脊柱上。
5.2 方向规则
| 节点数 |
方向 |
布局方式 |
| ≤ 5 |
左→右 |
单行,direction: right |
| 6–10 |
网格(L→R, T→B) |
grid-rows: 2, grid-columns: 5 |
| > 10 |
分为总览+详细 |
总览 ≤ 10节点;多余作为下钻 |
5.3 换行规则(硬性规定)
- 每行最多5个节点。 超过5个就换行。
- 10个节点 = 2行 × 5列(标准总览布局)。
5.4 对齐(不可协商)
| 规则 |
描述 |
| 同行Y对齐 |
同行所有节点共享完全相同的Y坐标。容差:0px。 |
| 同列X对齐 |
同列所有节点共享完全相同的X坐标。 |
| 网格吸附 |
使用 grid-rows + grid-columns 机械强制对齐。 |
| 先对齐后路由 |
先对齐节点,再画边。直线是对齐节点的自然结果。 |
5.5 间距
| 指标 |
值 |
| 水平节点间距 |
60px |
| 垂直节点间距 |
40px |
| 同行Y容差 |
0px(精确对齐) |
| 同列X容差 |
0px(精确对齐) |
| 组内间距 |
16px |
| 组间步骤间距 |
28px |
| 边到非连接节点间距 |
≥ 10px |
6. 总览设计(L0)
6.1 硬性限制
| 指标 |
目标 |
| 节点 |
= 10(恰好) |
| 主边 |
9–11 |
| 反馈边 |
≤ 1 |
| fitView |
所有10个节点无滚动可见 |
| 回边 |
0(除1条允许的反馈边) |
6.2 侧边栏模式
产物、配置和数据产品不应是主干节点:
- 作为标签附在产生节点上(最多3个可见,溢出
+N)
- 或使用单个侧边注释框
- 侧边栏不计入10节点限制
7. 详细设计(L1+)
| 指标 |
目标 |
| 每个详细视图节点 |
≤ 15 |
| 嵌套深度 |
≤ 2层(L0 → L1 → L2 最大) |
| 显示的边类型 |
主流程 + 门 + 数据(全部6种类型) |
8. 交互原则
- 锁定布局——节点默认不可拖动。这是展示,不是白板。
- 自动 fitView——加载时、展开/折叠时、导航时。
- 渐进式揭示——总览从步骤1可见开始,点击"下一步"逐步显示。
9. 图例(必需)
每个图表必须包含图例:
- 本图中使用的符号形状(24种标准类型的子集)
- 本图中使用的边类型(6种标准类型的子集)
10. 反面模式
| 反面模式 |
问题 |
修复 |
| 对齐节点间的弯曲线 |
看起来像bug |
对齐节点→线自然变直 |
| 节点重叠节点 |
不可读 |
增加间距;重排列/行 |
| 边穿过节点 |
混淆连接关系 |
重排节点或增加路由间距 |
| 所有边同粗细 |
无层级 |
主流程3px,其他1.5px |
| 总览>10节点 |
认知过载 |
分组为折叠容器 |
| 主流程贝塞尔曲线 |
不必要的复杂性 |
使用正交/阶梯路由 |
| 产物作为主干节点 |
破坏动作脊柱 |
移至标签或侧边栏 |
11. 验收清单(8项测试)
| # |
测试 |
通过标准 |
| 1 |
3秒扫描 |
无需点击,3秒内叙述主流程 |
| 2 |
所有线直 |
对齐节点间的每条边都是单段直线 |
| 3 |
零重叠 |
无节点重叠;无边穿过未连接节点 |
| 4 |
零交叉 |
无边交叉(或以90°交叉) |
| 5 |
形状扫描 |
每个节点的形状瞬间表明它是什么 |
| 6 |
零自环 |
无 source === target 的边 |
| 7 |
视觉层级 |
次要边明显比主要边更轻 |
| 8 |
fitView测试 |
"显示全部"适配所有内容,无重叠 |
参考
- 符号标准:
std-flowchart-symbols-v1 — 形状、颜色、边类型(唯一真理源)
- D2类定义:
std-flowchart-d2-v1 — D2 class 代码块