1. 从一张草图到一套系统:diagram-design 到底在解决什么问题
第一次看到 diagram-design 这个词,很多人会以为它只是“画图”的另一种说法。但如果你真正在团队里推动过架构评审、技术方案对齐、产品流程梳理,就会明白:画图本身从来不是难点,难的是让图能持续维护、能多人协作、能在不同场景下复用。diagram-design 的核心,就是把“画一张图”升级为“设计一套可演进的图示系统”。
我最初接触这个方向,是因为一个跨平台项目的架构文档。当时团队里每个人都在画自己的架构图,有人用矩形加箭头,有人用云朵加虚线,有人把数据库画成圆柱体,有人直接写个方框标注“DB”。结果就是:同一套系统,五个人画出五种样子,评审会上光是对齐符号含义就花了半小时。那次之后我开始意识到,图示不是美术问题,而是信息架构问题。diagram-design 要解决的,正是这种“图不同源、意不同达”的协作损耗。
它适合谁?如果你是一名开发者,需要写技术设计文档;如果你是一名产品经理,需要梳理业务流程图;如果你是一名技术负责人,需要统一团队的架构表达;甚至如果你只是一名需要做汇报的职场人,diagram-design 的思维都能帮你把复杂信息压缩成一张别人看得懂的图。它不要求你会用专业绘图软件,但要求你理解“图是为沟通服务的”这个底层逻辑。
这篇文章我会从设计思路、核心细节、实操过程、常见问题四个维度,把 diagram-design 拆开揉碎。你会看到我踩过的坑、总结的模板、以及那些文档里不会写的经验。全文基于常见实践补充,不涉及任何特定工具绑定,你可以用任何你顺手的绘图环境来复现。
2. 图示系统的整体设计与思路拆解
2.1 为什么“先定规则再画图”比“先画图再统一”更省力
很多人画图的习惯是:打开工具,拖一个方框,写个名字,再拖一个箭头,连起来。画完觉得差不多就导出贴进文档。这种“自底向上”的方式在单张图里没问题,但一旦图的数量超过三张,灾难就开始了。你会发现第一张图里“服务”是圆角矩形,第二张图里“服务”变成了直角矩形;第一张图里数据流是实线箭头,第二张图里变成了虚线箭头。读者不会觉得这是风格差异,只会觉得“这两个图说的不是一回事”。
diagram-design 的思路是反过来的:先定义一套最小规则集,再在规则内画图。这套规则集不需要很复杂,但必须覆盖四个维度:形状语义、颜色语义、连线语义、布局语义。形状语义决定“什么类型的元素用什么形状”,比如服务用圆角矩形、数据存储用圆柱体、外部系统用虚线框。颜色语义决定“什么状态用什么颜色”,比如新增模块用绿色、待废弃模块用灰色、核心链路用高亮色。连线语义决定“什么关系用什么线型”,比如同步调用用实线、异步消息用虚线、数据流向用带箭头的线。布局语义决定“元素怎么摆放”,比如从左到右表示调用方向、从上到下表示层级关系。
为什么这四个维度就够了?因为人类阅读图示的认知负荷主要来自“不确定性”。当读者看到一张图,如果形状、颜色、连线都在变化,大脑就需要不断猜测“这个形状代表什么”“这个颜色是不是有特殊含义”。规则集的作用就是消除这种猜测,让读者把认知资源全部用在理解内容上,而不是解码形式。
我自己的习惯是,在项目启动阶段花 30 分钟写一份“图示规范”文档,哪怕只有一页。内容包括:形状对照表、颜色对照表、连线对照表、布局约定。这份文档不需要给所有人看,但你自己画图时必须遵守。一旦规则定下来,后面画图的速度会越来越快,因为不再需要做“这个元素该用什么形状”的决策,直接查表就行。
2.2 图示的三种粒度:概念图、逻辑图、物理图
diagram-design 的另一个核心思路是区分图示的粒度。很多人画图时把不同粒度的信息混在一张图里,结果就是图又大又乱,谁也看不懂。我通常把图示分为三种粒度:
概念图:回答“系统由哪些核心部分组成,它们之间是什么关系”。概念图不关心技术选型,不关心部署方式,只关心业务语义。比如“用户通过订单服务下单,订单服务调用库存服务和支付服务”。概念图里的元素通常是业务模块,连线通常是业务依赖。
逻辑图:回答“系统在技术层面如何实现,模块之间如何交互”。逻辑图会引入技术组件,比如网关、消息队列、缓存、数据库。连线会标注协议和方向,比如“HTTP 同步调用”“MQ 异步消息”。逻辑图是技术评审中最常用的一类图。
物理图:回答“系统部署在哪些节点上,网络如何划分,数据如何存储”。物理图会涉及机房、可用区、容器集群、数据库实例。这类图通常只有运维和架构师关注,但一旦需要排查线上问题,物理图就是最关键的参考。
为什么要把粒度分开?因为不同角色的关注点不同。产品经理看概念图,开发看逻辑图,运维看物理图。如果混在一起,产品经理会被“消息队列”这种技术细节干扰,运维会被“业务模块”这种抽象概念迷惑。分开之后,每张图只服务一类读者,沟通效率会大幅提升。
我自己的做法是:概念图用最少的元素,通常不超过 10 个节点;逻辑图控制在 20 个节点以内;物理图可以更细,但也要控制在 30 个节点以内。超过这个数量,就说明需要拆分子图了。拆分的依据可以是业务域、可以是调用链路、也可以是部署单元。
2.3 为什么“一张图只讲一件事”是铁律
我见过太多“大而全”的架构图,一张图里塞了十几个模块、二十几条连线、五种颜色、三种线型。作者觉得自己很厉害,把整个系统都画出来了。但读者的感受是:信息过载,不知道从哪里看起。
diagram-design 强调“一张图只讲一件事”。这件事可以是一条核心链路,可以是一个业务域,可以是一次数据流转。比如“用户下单”是一件事,“订单履约”是另一件事,“库存扣减”又是另一件事。把它们分开画,每张图都清晰;合在一起画,就是一团乱麻。
怎么判断一张图是否“只讲一件事”?我的标准是:如果这张图有一个明确的“主角”,比如“订单服务”,其他元素都是围绕这个主角展开的,那就算合格。如果图里有三个以上的“主角”,每个主角都有自己的分支,那就需要拆图。
拆图之后,图与图之间需要有关联。我通常会在每张图的角落标注“上游图”和“下游图”的引用,比如“本图是订单履约链路的下游,上游见《订单创建逻辑图》”。这样读者可以按图索骥,既不会信息过载,也不会迷失方向。
3. 核心细节解析与实操要点
3.1 形状语义:用几何图形降低理解成本
形状是图示中最基础的语义载体。人类对形状的识别速度远快于文字,所以形状用对了,读者扫一眼就能抓住重点。下面是我常用的形状对照表,你可以直接抄作业:
| 形状 | 语义 | 使用场景 |
|---|---|---|
| 圆角矩形 | 服务/应用 | 业务服务、微服务、应用模块 |
| 直角矩形 | 组件/库 | SDK、公共库、工具类 |
| 圆柱体 | 数据存储 | 数据库、缓存、对象存储 |
| 平行四边形 | 消息/队列 | 消息队列、事件总线 |
| 虚线框 | 外部系统 | 第三方服务、遗留系统 |
| 菱形 | 决策/条件 | 流程分支、条件判断 |
| 圆形 | 起点/终点 | 流程开始、流程结束 |
这张表不需要很复杂,但必须固定下来。我见过有人用六边形表示服务,用三角形表示数据库,结果读者每次都要问“这个三角形是什么意思”。形状语义的核心是“约定俗成”,越接近大众认知越好。圆角矩形表示服务,是因为它看起来像一个“模块”;圆柱体表示数据库,是因为它看起来像一个“存储罐”。这些认知是跨文化的,不需要额外解释。
注意:形状数量不要超过 7 种。心理学上有个“米勒定律”,人类短期记忆只能容纳 7±2 个信息块。形状太多,读者记不住,反而增加负担。
3.2 颜色语义:用色彩引导注意力
颜色是图示中最容易被滥用的维度。很多人画图时喜欢用各种颜色,觉得好看。但颜色的第一目的不是好看,而是引导注意力。diagram-design 的颜色语义遵循三个原则:少即是多、语义固定、对比适度。
少即是多:一张图里的颜色不要超过 4 种。我通常用三种:主色(表示核心元素)、辅色(表示次要元素)、警示色(表示异常或待处理)。主色用蓝色系,辅色用灰色系,警示色用橙色或红色系。为什么不用绿色?因为绿色在投影仪上容易偏色,而且和蓝色对比度不够。
语义固定:同一种颜色在所有图里表示同一种含义。比如蓝色永远表示“当前系统”,灰色永远表示“外部系统”,橙色永远表示“待改造”。这样读者看第一张图时学会了颜色含义,看第二张图时就不需要重新学习。
对比适度:颜色对比要足够明显,但不要刺眼。我见过有人用纯红和纯绿搭配,结果色弱读者完全分不清。安全的做法是:用深浅对比代替色相对比。比如深蓝和浅蓝,深灰和浅灰。如果必须用色相对比,确保两种颜色的明度差异足够大。
提示:如果你不确定颜色是否合适,把图转成灰度模式看一眼。如果灰度模式下还能区分不同元素,说明对比度合格。
3.3 连线语义:用线型表达关系强度
连线是图示中最容易被忽视的维度。很多人画图时只用一种箭头,结果读者分不清“同步调用”和“异步消息”。diagram-design 的连线语义包含三个属性:线型、箭头、标签。
线型:实线表示强关系,比如同步调用、直接依赖;虚线表示弱关系,比如异步消息、间接依赖;点线表示可选关系,比如降级方案、备用链路。为什么这样分?因为实线在视觉上更“重”,读者会自然认为它更重要;虚线更“轻”,读者会认为它是辅助性的。
箭头:单向箭头表示方向明确的关系,比如“A 调用 B”;双向箭头表示双向关系,比如“A 和 B 互相调用”;无箭头表示关联关系,比如“A 和 B 属于同一模块”。箭头不要滥用,每多一个箭头,读者就多一次方向判断。
标签:连线上的标签要简洁,通常用“动词+名词”的结构,比如“查询库存”“发送消息”“写入日志”。标签的位置要靠近连线中点,不要放在箭头尖端,否则会和箭头重叠。
我自己的习惯是:在画连线之前,先问自己“这条线表示什么关系”。如果是同步调用,用实线单向箭头;如果是异步消息,用虚线单向箭头;如果是数据流向,用实线单向箭头但标签写“数据”。这样读者不需要猜测,直接看线型和标签就能理解。
3.4 布局语义:用空间位置表达逻辑关系
布局是图示中最难标准化的维度,因为不同场景的布局需求不同。但 diagram-design 仍然可以给出一些通用原则:从左到右表示时间或调用顺序、从上到下表示层级或依赖、从中心向外表示辐射或聚合。
从左到右:这是最符合人类阅读习惯的布局。比如一个请求链路:用户 -> 网关 -> 服务 A -> 服务 B -> 数据库。从左到右排列,读者自然理解这是时间顺序。
从上到下:适合表示层级关系。比如上层是接入层,中层是逻辑层,下层是存储层。从上到下排列,读者自然理解这是依赖方向。
从中心向外:适合表示聚合关系。比如中心是一个核心服务,周围是依赖它的其他服务。这种布局适合展示“影响范围”,但节点数量不宜超过 8 个,否则会显得杂乱。
布局的另一个要点是对齐。我见过很多图,节点位置随意摆放,连线交叉严重。读者需要花时间追踪连线,而不是理解内容。对齐的原则是:同一层级的节点顶部对齐或中心对齐,同一链路的节点水平或垂直对齐。对齐之后,连线自然就直了,交叉也会减少。
注意:如果连线交叉无法避免,使用“跳线”表示交叉但不连接。跳线是一个小弧线,跨过另一条线。这样读者不会误以为两条线相交就是连接的。
4. 实操过程与核心环节实现
4.1 从零开始:30 分钟建立你的图示规范
假设你现在要为一个新项目画架构图,我建议你花 30 分钟先建立规范。具体步骤如下:
第一步:确定图示粒度。问自己:这张图给谁看?如果是给产品经理看,画概念图;如果是给开发看,画逻辑图;如果是给运维看,画物理图。粒度决定了元素的抽象程度。
第二步:列出核心元素。把系统里最重要的 5-10 个元素列出来。比如“用户端”“网关”“订单服务”“库存服务”“支付服务”“数据库”“消息队列”。不要超过 10 个,超过就说明需要拆图。
第三步:分配形状和颜色。按照第 3 节的对照表,给每个元素分配形状和颜色。比如“订单服务”用圆角矩形+蓝色,“数据库”用圆柱体+灰色,“消息队列”用平行四边形+灰色。
第四步:定义连线规则。确定哪些关系用实线,哪些用虚线。比如同步调用用实线,异步消息用虚线。给每条连线写一个简洁的标签。
第五步:确定布局方向。从左到右还是从上到下?我通常用从左到右表示调用链路,从上到下表示层级。如果两者都有,用从左到右为主,从上到下为辅。
这五步做完,你就有了一个最小可用的图示规范。后面画图时,直接查表,不需要再做决策。我实测下来,这套流程能把画图时间缩短一半以上,因为决策成本被前置了。
4.2 画图实操:以“订单创建链路”为例
下面我以“订单创建链路”为例,演示完整的画图过程。这个链路是:用户提交订单 -> 网关鉴权 -> 订单服务创建订单 -> 库存服务扣减库存 -> 支付服务发起支付 -> 消息队列发送订单创建事件。
第一步:确定主角。这张图的主角是“订单服务”,因为它是链路的中心。其他元素都是围绕它展开的。
第二步:排列节点。从左到右依次是:用户端、网关、订单服务、库存服务、支付服务、消息队列、数据库。订单服务放在中间偏左的位置,因为它需要调用库存和支付,同时需要写数据库和发消息。
第三步:分配形状。用户端用圆角矩形(服务),网关用圆角矩形,订单服务用圆角矩形,库存服务用圆角矩形,支付服务用圆角矩形,消息队列用平行四边形,数据库用圆柱体。
第四步:分配颜色。当前系统用蓝色,外部系统用灰色。这里所有元素都是当前系统,所以都用蓝色。但为了区分核心和非核心,订单服务用深蓝,其他用浅蓝。
第五步:画连线。用户端到网关:实线箭头,标签“提交订单”。网关到订单服务:实线箭头,标签“鉴权通过”。订单服务到库存服务:实线箭头,标签“扣减库存”。订单服务到支付服务:实线箭头,标签“发起支付”。订单服务到数据库:实线箭头,标签“写入订单”。订单服务到消息队列:虚线箭头,标签“发送事件”。
第六步:调整布局。确保同一层级的节点对齐,连线尽量不交叉。如果订单服务到消息队列的线跨过了支付服务,可以把消息队列放在订单服务下方,用垂直连线。
第七步:添加图例。在图的角落放一个小图例,说明形状和颜色的含义。图例不需要很大,但必须有,因为读者可能是第一次看你的图。
这套流程走下来,一张清晰的逻辑图就完成了。我实测下来,熟练之后 10 分钟就能画完一张。关键是前期的规范建立,一旦规范定好,后面就是填空题。
4.3 参数计算:节点数量和连线数量的平衡
画图时经常遇到的一个问题是:节点太多,图太乱。这时候需要做取舍。我的经验是:节点数量控制在 7-12 个之间,连线数量控制在 10-15 条之间。为什么是这个范围?
节点少于 7 个,图会显得太空,信息量不足。节点多于 12 个,图会显得太挤,读者需要花时间寻找。连线少于 10 条,说明关系太简单,可能不需要画图。连线多于 15 条,说明关系太复杂,需要拆图。
如果节点和连线超出范围,怎么拆?我通常按“业务域”拆。比如订单域一张图,库存域一张图,支付域一张图。域与域之间的交互用“边界节点”表示,比如“订单域”和“库存域”之间用一条连线表示“扣减库存”,具体细节在库存域的图里展开。
另一个拆图依据是“调用链路”。比如“同步链路”一张图,“异步链路”一张图。同步链路关注实时性,异步链路关注最终一致性。分开画,每张图的重点更突出。
提示:拆图之后,记得在每张图上标注“本图范围”和“关联图引用”。否则读者会迷失在图与图之间。
4.4 工具选型:不绑定工具,但要知道什么场景用什么
diagram-design 不绑定任何特定工具,但不同工具适合不同场景。我简单说一下我的经验:
手绘风格工具:适合概念图和头脑风暴。手绘风格让读者觉得“这是草图,不是最终版”,从而更愿意提出修改意见。如果你在评审早期阶段,用手绘风格能降低沟通压力。
矢量绘图工具:适合逻辑图和物理图。矢量工具支持精确对齐、图层管理、导出多种格式。如果你需要频繁修改和复用,矢量工具是首选。
代码化绘图工具:适合需要版本控制的场景。代码化绘图把图定义为文本,可以像代码一样提交到版本库,支持 diff 和 review。如果你在 DevOps 团队,代码化绘图能和 CI/CD 流程集成。
在线协作工具:适合多人实时编辑。如果团队分布在不同地点,在线协作工具能让所有人同时看到最新版本,避免“版本不一致”的问题。
我自己的习惯是:早期用在线协作工具快速迭代,定稿后用矢量工具输出最终版,如果团队有版本控制需求,再把最终版转成代码化格式。这样兼顾了效率和可维护性。
5. 常见问题与排查技巧实录
5.1 图太乱怎么办:从“信息过载”到“信息分层”
图太乱是最高频的问题。症状是:节点多、连线多、颜色多、标签多,读者不知道从哪里看起。排查思路如下:
第一步:检查节点数量。如果超过 12 个,考虑拆图。拆图依据可以是业务域、调用链路、部署单元。
第二步:检查连线数量。如果超过 15 条,考虑合并。比如“A 调用 B”和“A 调用 C”可以合并为“A 调用 B、C”,如果 B 和 C 是同类服务。
第三步:检查颜色数量。如果超过 4 种,考虑减少。颜色只保留“核心、次要、警示”三种,其他用形状或标签区分。
第四步:检查标签长度。如果标签超过 6 个字,考虑简化。比如“查询库存并扣减”简化为“扣减库存”。
第五步:检查布局对齐。如果节点没有对齐,连线交叉严重,重新排列节点。对齐之后,图会立刻清爽很多。
我踩过的一个坑是:为了“完整”把所有细节都画进去,结果图变成了“蜘蛛网”。后来我学会了一个原则:图是索引,不是文档。图的作用是让读者快速理解结构,细节应该放在文字文档里。图里只保留最核心的 20% 信息,剩下 80% 用文字补充。
5.2 读者看不懂怎么办:从“作者视角”切换到“读者视角”
另一个高频问题是:作者觉得图很清楚,但读者看不懂。原因通常是作者用了自己熟悉的缩写或符号,但读者没有背景知识。排查思路如下:
第一步:检查缩写。如果图里有“OMS”“WMS”“TMS”这类缩写,确保在图例或注释里解释清楚。更好的做法是直接用中文全称,比如“订单服务”“库存服务”“运输服务”。
第二步:检查符号。如果用了非标准符号,比如六边形、三角形,确保在图例里说明。标准符号(圆角矩形、圆柱体、平行四边形)不需要解释,非标准符号必须解释。
第三步:检查连线方向。如果连线方向不明确,读者会困惑“谁调用谁”。确保每条连线都有箭头,箭头方向表示调用方向。
第四步:检查图例。如果图例缺失或不全,读者需要猜测。图例应该包含所有形状、颜色、线型的含义。
第五步:找一个人试读。把图给一个不熟悉项目的同事看,问他“你能看懂这张图在说什么吗”。如果他需要超过 30 秒才能理解,说明图还需要优化。
我自己的经验是:图的可读性不是作者决定的,是读者决定的。你觉得清楚没用,读者觉得清楚才有用。所以每次画完图,我都会找一个“目标读者”试读,根据反馈调整。
5.3 图与代码不一致怎么办:建立“图代码同步”机制
在开发过程中,代码会不断变化,图很容易过时。图与代码不一致,会导致文档误导读者。排查思路如下:
第一步:确定图的更新频率。如果图是“一次性”的,比如用于某次评审,那不需要频繁更新。如果图是“长期”的,比如架构文档,那需要定期更新。
第二步:建立更新触发机制。比如每次架构变更时,必须更新对应的图。可以把“更新图”加入代码提交的 checklist,确保不会遗漏。
第三步:使用代码化绘图。如果图是用代码定义的,可以和代码放在同一个版本库里。代码变更时,图也会被 review,确保同步。
第四步:标注图的版本和日期。在图的角落标注“版本 1.2,更新于 2024-01”之类的信息。读者看到日期,就知道图是否最新。
第五步:定期审查。每季度或每半年,审查一次架构图,删除过时内容,补充新增内容。
我踩过的一个坑是:图更新了,但文档里的文字没更新,导致图和文字矛盾。后来我养成了一个习惯:图和文字放在同一个文档里,更新时一起更新。如果图是独立的,就在图里标注“本文档以图为准”或“以文字为准”,避免歧义。
5.4 常见问题速查表
| 问题 | 症状 | 排查思路 | 解决方法 |
|---|---|---|---|
| 图太乱 | 节点多、连线多、颜色多 | 检查节点/连线/颜色数量 | 拆图、合并连线、减少颜色 |
| 读者看不懂 | 读者需要长时间理解 | 检查缩写/符号/方向/图例 | 用全称、加图例、找试读 |
| 图与代码不一致 | 图过时、误导读者 | 检查更新频率和触发机制 | 建立同步机制、标注版本 |
| 连线交叉严重 | 读者追踪连线困难 | 检查布局对齐 | 重新排列节点、使用跳线 |
| 颜色对比不足 | 色弱读者分不清 | 转灰度模式检查 | 用深浅对比代替色相对比 |
| 标签太长 | 读者阅读负担重 | 检查标签字数 | 简化为“动词+名词” |
| 图例缺失 | 读者需要猜测含义 | 检查图例完整性 | 补充图例,覆盖所有符号 |
提示:这张表可以打印出来贴在工位上,画图时对照检查。我实测下来,能避免 80% 的常见问题。
6. 进阶技巧:让图示系统持续演进
6.1 建立图示模板库,减少重复劳动
当你画了十几张图之后,会发现很多元素是重复的。比如“网关”“数据库”“消息队列”几乎每张图都有。这时候可以建立模板库,把这些常用元素做成模板,画图时直接拖拽,不需要重新画。
模板库的另一个好处是“一致性”。如果所有图里的“数据库”都来自同一个模板,形状、颜色、大小都会一致,读者不会因为“这个数据库是圆柱体,那个数据库是圆角矩形”而困惑。
我自己的模板库包含:常用形状(服务、数据库、消息队列、外部系统)、常用连线(同步调用、异步消息、数据流向)、常用图例(形状图例、颜色图例、线型图例)。画新图时,先复制模板,再修改内容,效率能提升一倍。
6.2 用“图示评审”代替“文档评审”
传统的文档评审是:作者写文档,评审人读文档,会上讨论。但文档是线性的,读者需要从头读到尾才能理解全貌。图示评审是:作者画图,评审人看图,会上直接指着图讨论。图是二维的,读者可以一眼看到全貌,讨论效率更高。
我自己的做法是:在评审会前,把图发给评审人,让他们先看图。会上直接问“这张图有没有遗漏”“这条连线对不对”“这个模块的位置合不合理”。评审人指着图提意见,作者当场修改,会议结束图也改完了。
图示评审的另一个好处是“暴露分歧”。文档评审时,分歧往往藏在文字里,不容易发现。图示评审时,分歧会直接体现在图上,比如“我认为库存服务应该在订单服务左边,因为它是上游”。这种分歧暴露出来,讨论会更聚焦。
6.3 从“静态图”到“动态图”:用动画表达时序
静态图适合表达结构,但不适合表达时序。比如“用户提交订单 -> 网关鉴权 -> 订单服务创建订单 -> 库存服务扣减库存”,这是一个时序过程,静态图只能画成从左到右的链路,但读者需要自己脑补“谁先谁后”。
动态图(动画或时序图)可以解决这个问题。时序图用垂直方向表示时间,水平方向表示参与者,消息用箭头表示。读者从上往下看,自然理解时序。
我自己的习惯是:结构用静态图,时序用动态图。如果工具支持动画,可以用动画演示请求流转过程。如果不支持,用时序图代替。时序图的缺点是节点数量有限,通常不超过 6 个参与者,否则图会太宽。
6.4 图示的“可访问性”:让色弱读者也能看懂
色弱读者约占人口的 8%,其中红绿色弱最常见。如果你的图依赖红绿对比,色弱读者会分不清。可访问性的原则是:不要只依赖颜色传递信息。
具体做法:形状和颜色同时使用。比如“核心服务”用深蓝+圆角矩形,“外部系统”用灰色+虚线框。即使色弱读者分不清深蓝和灰色,也能通过形状和线型区分。
另一个做法是:在标签里加前缀。比如“核心:订单服务”“外部:支付服务”。这样即使颜色失效,读者也能通过文字理解。
我自己的习惯是:画完图后,把图转成灰度模式看一眼。如果灰度模式下还能区分不同元素,说明可访问性合格。如果灰度模式下所有元素都变成一样的灰色,说明需要调整。
7. 我个人的实操体会
画了这么多图,我最大的体会是:图示设计不是美术,是沟通。一张好图的标准不是“好看”,而是“读者能快速理解”。所以每次画图前,我都会问自己三个问题:这张图给谁看?他们需要什么信息?我怎么用最少的元素传递这些信息?
另一个体会是:规范比工具重要。我见过很多人纠结“用哪个工具画图”,但工具只是载体,规范才是核心。有了规范,用纸笔画也能画出清晰的图;没有规范,用最贵的工具也画出一团乱麻。
最后分享一个小技巧:如果你不确定一张图是否清晰,把它发给一个不熟悉项目的同事,让他用一句话总结这张图在说什么。如果他的总结和你的意图一致,说明图合格;如果不一致,说明图还需要优化。这个技巧我用了很多次,每次都能发现盲点。
图示设计是一个持续演进的过程,没有“完美”的图,只有“不断改进”的图。希望这篇文章能帮你建立自己的图示系统,让沟通更高效。