每次有人跟我聊到 diagram-design,大多数人的第一反应都是:画图还能有什么好设计的?框放对、线连对,能看懂不就行了。
但问题恰恰出在这儿。一张图如果只是“能看懂”,那它顶多算草稿;真正经得起推敲的图,是读者扫一眼就能找到重点,再细看能找到分组,最后想了解细节时不会被无关信息干扰。这个从“画框连线的草图”到“表达清晰、结构严谨、视觉有序”的过程,本质就是 diagram-design——图表设计。
我这些年画过不少架构图、流程图、时序图,也帮别人改过很多“明明画对了但就是难看懂”的图,最大的感受是:画图这件事,七分靠想,两分靠排,一分靠画。真正决定一张图上限的,不是工具用得多熟练,而是你有没有一套完整的图表设计逻辑。
这篇文章我就从底层设计思路讲起,把我在实际项目里总结的结构整理、排版实操、配色规范、问题排查这些经验一次性说清楚。适合正在被“图上内容太多不知道怎么摆”困扰的人,也适合那些手上图已经画完、但总感觉“哪里不对”的人。
1. 图表设计的第一步:别急着画框,先搞清楚图是给人怎么读的
1.1 你画的是图,但在读者眼里是一条视觉路径
我做 diagram-design 之前有个很大的误区:上来就开始画方框、拉箭头,画到一半发现布局乱了,再从头挪。后来才意识到,问题的根源在于我根本没想过读者会按什么顺序看这张图。
人眼在看图这件事上是有惯性的。绝大多数人拿到一张新图,视线会先落在画面的中心偏上区域,然后按从左到右、从上到下的方向流动。如果你的图没有刻意安排这条视觉路径,读者就会自己在图上乱逛:先看到颜色最深的大块区域,然后被一条加粗的线吸引,接着又跳去角落里的注释……逛完一圈,他会问你“这张图的主流程到底是哪条”。
所以在动手画之前,我会先问自己三个问题:这张图最想让读者注意什么?读者按什么顺序读是合理的?哪些元素应该被弱化到“需要时才能看到”?
想清楚之后,画图就变成了一件有主次的事。
1.2 用星型模型判断信息层级
这里我分享一下自己一直在用的小工具,就是所谓的星型模型:把图里要表达的所有信息列出来,然后按重要程度分四档。
- 核心信息(1-3个):一眼要看到的,比如整体流程的起点和终点。
- 重要信息(不超过7个):扫一眼能发现,比如主要分支路径。
- 辅助信息:需要时能查到,比如某个模块的具体职责描述。
- 装饰信息:可以彻底不要的,比如无意义的渐变、多余的背景块。
为什么要限定数字?因为人的工作记忆容量大概就是7±2,超过这个数量,读者就需要来回对照才能建立完整印象。你在一张图上堆20个同样重要的模块,逻辑上没问题,但读者在认知上根本消化不了。
这个分类结果,直接决定你后面所有视觉设计动作:核心信息给最大面积、最深颜色;重要信息次之;辅助信息要靠后靠边放。
1.3 图表类型选型的几个常见误区
diagram-design 里还有一个容易踩的坑:工具选型不分场景。很多人画流程图会把箭头拐来拐去,画架构图则把层级关系画成上下串行,这些都属于图表语义与实际信息关系不匹配。
比如你想表达模块间的依赖关系,画成箭头直线串联的流程图,读者就会误以为这是有先后次序的流程;反过来,你想表达一个审批流程,却画成层层嵌套的架构框图,读者在找“下一步”的时候就会晕。
我的习惯是开画前先确认:这组信息是流程、结构、依赖、对比,还是混合关系?然后对应到主视觉语言上:
- 流程关系:用箭头 + 流程节点,箭头方向就是主阅读方向。
- 层级关系:用包含、嵌套、左右分列,而不是从上往下的流水。
- 依赖关系:用双向箭头或虚线表示引用,必要时在边上注释依赖类型。
- 对比关系:用并列分栏、对仗排版,不要混入箭头。
这里尤其想提醒一句:别为了图好看把箭头画成弧线、曲线。在绝大多数场景里,直角折线比弧线更容易让人建立“流经哪个模块再到哪里”的认知,因为弧线会让人产生随意感,而折线表达的是确定性。
2. 图表排版实操:把零散信息变成有秩序的空间
2.1 先分区,再对位,最后填充
我画图的方法是草稿式地先把结构画出来:用最简单的矩形框代替具体内容,先不考虑配色和文字,只考虑这几块应该放在页面的哪个区域。
分区的原则很简单,叫作“从头到尾一条龙”:主流程放在中间一条主轴上,辅助内容放在两侧,备注和说明放底部。这是阅读最舒适的结构,读者不需要上下左右来回跳。
分区之后就是“对位”。这一步非常关键,但我发现很多人做得不好。对位指的是:同级别的框,外边界应该在一条垂直线上;同样性质的文本,左边距应该一致;所有间距应该呈现出重复的节奏感,而不是每组框的间距都不同。
举个具体的例子:你在画一张包含五个模块的架构图,那么五个模块的宽度最好一致,每个模块之间的间距也最好一致。对齐不是靠肉眼估的,是要靠辅助线和网格系统去卡的。大多数绘图工具都内置了网格对齐、均匀分布、等宽、等高这些功能,用起来就行。
提示:如果画完发现图有点乱,第一反应不该是调颜色,而是先检查对齐和间距。视觉上的“脏乱”,一半以上是对齐和间距的问题。
2.2 视觉层级的三件套:字号、线宽、颜色深度
在图表里塑造层级,核心手段是三个:字号大小、线条粗细、颜色深浅。三者必须联动使用,而且要按照之前分好的信息层级来分配权重。
举个例子:一级模块标题用18号加粗,二级内容说明用12号常规;主要连接线用2.5px,辅助连接线用1px;核心模块用深色填充,外围模块用浅色描边。这样读者扫一眼,视觉重心自然落在主模块上。
很多人画图只用一种字号、一种线宽、同深浅的颜色,结果整张图就像一面墙。层级感不是靠“多加内容”堆出来的,而是靠“区分视觉轻重”做出来的。
我实际操作时的经验是:把图里所有文字按三个档位来设定——标题、正文、注释。三档的字号差至少在4磅以上,否则在缩小看整体时区分度不够。线条也至少分两档,主流程线要能一眼看出来,辅助线就弱化为虚线或浅色。
2.3 留白不是浪费,是让重点呼吸
很多非设计背景的人画图,喜欢把画面填得满满当当,觉得“空着就是没画完”。但对于图表设计来说,留白恰恰是控制注意力的关键工具。
留白的作用是让图里的每个区域之间有边界感。比如两个模块之间如果只有紧挨着的线框,读者需要仔细辨认才能看出这是两个独立的东西;但如果你在两个模块之间留出足够的间距,甚至加一点浅色间隔区,那么“这是两个模块”的认知几乎是秒触发的。
我在画复杂架构图时的习惯是:先确定画布的整体尺寸,然后按“内容区占70%,留白占30%”的比例来规划。注意,这里说的比例不是死数,而是提醒自己:别把图填满,要留出空间感。
实操中我建议每隔一段时间就缩小视图看整体效果,用“眯眼测试”来观察:眯起眼睛看图,如果还能清晰分出几个大块,那就是合格的留白和分区;如果眯眼后看到的是灰蒙蒙一片、边界模糊,说明留白或者配色出了问题。
3. 配色与视觉语言的统一性
3.1 建立颜色语义:哪种颜色代表什么,必须全程一致
颜色在 diagram-design 里不是用来装饰的,而是用来编码信息的。一旦你开始用颜色区分模块类型,就必须从头到尾保持语义一致,否则读者会混乱。
我在项目里的习惯是画图前先定一个最小的颜色集,通常不超过5个色系:
- 主色(比如深蓝):表示核心系统或主流程。
- 辅色(比如浅蓝):表示子模块或辅助功能。
- 强调色(比如橙红):表示异常、重点、报警类信息。
- 中性色(灰、白):表示背景、容器、注释。
- 成功/失败色(绿/红):表示状态结果。
这个颜色集一旦定了,就不要在中途随便换。比如你在一张图里用橙色表示重点,到另一张图里橙色表示警告,两套文档放在一起就会互相干扰。
注意:不要用超过5种高饱和颜色。颜色一旦超过5个,读者就需要不断回看“这个颜色代表什么”,认知成本剧增。
3.2 同色系变深浅比多色更高级
很多新手画图喜欢把每个模块都涂不同的颜色——红橙黄绿青蓝紫各来一个。这种图第一眼很热闹,但看久了累,而且每个颜色都在抢注意力,反而没有重点。
更成熟的做法是同色系变深浅:主模块用深色,附属模块用同一色相的浅色,外围容器用更浅的底色甚至只用描边。这样一来,图面会显得统一、安静,而且信息层级清晰。
我画系统架构图的常用配色套路是:选一个主色相(比如蓝色),衍生出深蓝、中蓝、浅蓝三档,配合灰色背景、白色填充,再加一个强调色点缀。整个图面看起来像同一套视觉体系,不会出现“这是两张图拼在一起”的违和感。
如果想测配色是否协调,可以把图转成灰度看一遍。如果灰度图里各个部分依然层次分明,说明配色是合格的;如果转灰度后发现某些部分糊成一片,说明这些部分的颜色深度太接近了。
3.3 多图或图表集的一致性管理
做 diagram-design 的时候,很多时候不是只画一张图,而是一整套方案里包含好几张图。图与图之间如果没有一致性,读者会感觉每张图都来自不同的作者、没法快速横向比较。
这里我有个强制习惯:建立一份简单的图表规范文档。里面记录主色色值、辅助色色值、字体选择、字号阶梯、线宽档位、间距基数。每次画新图都先调出这份规范再动手,画完再对一遍。
这份规范不用很复杂,我就是用一个简单的表格记录的,几行字就够。
| 元素 | 规范值 |
|---|---|
| 主色 | 深蓝 #1B4F72 |
| 辅色 | 中蓝 #2E86C1 |
| 强调色 | 橙红 #E74C3C |
| 标题字号 | 18px |
| 正文字号 | 12px |
| 注释字号 | 10px |
| 主流程线宽 | 2.5px |
| 辅助线宽 | 1px |
| 模块间距 | 20px |
有了这个表,后续不管是自己画还是别人帮忙画,都能保持图面语言统一。我见过太多团队项目,图与图之间风格割裂,导致评审时注意力全在“这是谁画的”而不是方案本身。
4. 实操流程:从需求到成图的完整路径
4.1 明确目标之后,先画一张“丑草图”
不管图多复杂,我强烈建议先用最简单的方式画一版“文字草稿”。所谓文字草稿,就是只用文字和箭头把图的逻辑结构写出来,先看结构和流程是否成立。
举个例子,假设你在设计一个订单处理系统的架构图,文字草稿大概这样:
用户端 → 网关 → 订单服务 → 库存服务 → 支付服务 同时包含:日志服务(旁路接入)、配置中心(依赖关系)
这一步不涉及任何排版和配色,就是纯逻辑推演。很多时候你画到这一步就会发现问题:比如某个箭头方向反了,比如某个模块根本不在这个流程里,比如果两个服务之间的依赖关系没有表达清楚。这些问题如果等到正式排版后再发现,改起来会很痛苦。
文字草稿确认OK之后,再进入正式绘图工具。这一步我通常就是画矩形框、连箭头,完全不在乎外观,重点是验证分区和布局是否合理。
4.2 正式排版绘制:先画容器,再放模块,最后连线
进入正式绘制阶段后,我有一整套固定操作顺序,照着做基本不会乱:
第一步,把大容器画出来。比如系统边界、外部环境、公共设施,用大圆角矩形加浅色底纹标出来。大容器的作用是区隔“图内”和“图外”,让读者知道哪些属于这个系统,哪些不属于。
第二步,把内部模块按照之前规划的分区放入容器。模块先用临时填充色,不需要精细配色,重点是检查每个模块的位置是否符合阅读顺序。
第三步,统一调整模块尺寸和间距。选中所有同级别的模块,用等宽、等高、均匀分布来一键对齐。这个动作看似简单,但很多人的图不够精致就是跳过了这一步。
第四步,连线。连接线要优先用直角线,起点和终点吸附到模块边沿的中点,不要在模块内部穿过。连线时注意层级:主流程线用粗线实线,依赖关系用细线或虚线。线越少越好,能避免交叉就避免交叉。
第五步,加文字标注。文字放在模块内部居中的位置,如果模块被线穿过,就换成在线旁边加标签。注释文字统一放在图的底部或右侧,用更小的字号和更浅的颜色。
4.3 图里文字怎么摆才不脏
图上文字处理是很多人忽略的细节,但恰恰是这些细节决定了一张图是“专业”还是“业余”。
首先是文字方向。图里的文字一律保持水平方向,不要竖排,不要旋转角度,除非特殊情况。竖排文字在快速扫读时极度不友好,读者需要歪着脖子才能看明白,这种阅读摩擦要尽量避免。
其次是文字与框的关系。文字距离边框至少保留6px的内边距,文字不要贴边。如果模块很窄而文字很多,优先加宽模块而不是缩小字号,你不想让读者在放大镜里看图。
再者是文字数量控制。框内的描述尽量不超过一行,超过就精简文案或分成多行,但保证每行报废,每行不超过12个字。一张图上出现大段文字描述,说明你的图承担了本该由文档承担的内容,不如直接在文字工具里写个说明文档再挂链接。
4.4 导出前必须检查的三件事
画完图,我在导出前会固定做三个检查,它们帮我挡掉了不少返工:
第一个是缩放测试。把视图缩小到20%左右,看看整体结构还清不清楚。如果缩到很小就糊成一团,说明图面的信息层级不够,需要回炉调整字号、线宽、颜色。
第二个是黑白测试。把图导成灰度或者直接截图变黑白,检查层级和分区是否还能看清。很多配色在彩色下显得很清楚,一旦转灰度就分不清边界,这就说明颜色差异深度不足。
第三个是文字检查。重点检查有没有“orphan word”——就是框内标题换行后只剩一两个字孤零零地留在第二行。这种情况非常影响美观,需要手动换行或者调整框宽。
5. 常见问题与排查技巧实录
5.1 信息过载:图里塞了十个重点等于没有重点
这是我在实际协作里遇到最多的问题。一张图把自己想到的所有内容都塞进去,结果每个模块平均用力、每条线都有存在感,读者看完非常疲惫。
排查方法是问一个问题:如果只看5秒钟,这张图给我的第一印象是什么?如果答不出来,那就说明图里缺少视觉主导元素。
修正方法是做减法:把非核心信息从主图里摘出去。比如把细节性的数据、版本号、示例参数等移到图下方的注释区;把分支细节折叠成聚合块;把“为了让图显得完整”而硬加进去的装饰全部删掉。
提示:删东西比画东西难。很多时候人们不舍得删,因为觉得自己花了时间画出来。但从设计角度来看,删掉的东西越多,留下的信息就越容易被记住。我画一张图有至少两到三版的“减法”,最终留下来的都是核心。
5.2 层级模糊:读者找不到主流程在哪
另一种常见情况是:图的正确性没问题,但读者会问你“主流程到底是什么”。问题出在视觉层级设计上——所有的线一样粗,所有的框一样深色,读者没有线索判断哪些元素更重要。
排查方法是眯眼测试:眯眼之后如果能看清的分区不超过三个,说明视觉层级不够。
修正手段是拉大差异:主流程加粗线宽、加深色块,辅助线用浅色虚线,外围模块直接降低饱和度。视觉差异要大到不细看也能感受到的程度,不能只差一点点。
5.3 对齐和间距散乱:图看起来“脏”
很多人画出来的图逻辑都对,但就是感觉“业余”。原因往往是模块间的间距不一致:有的模块间距10px,有的30px;同一组模块高低不齐、左右不对齐。
修正手段就是强制使用对齐工具。把所有同层级的模块选中,部门之间的空格保持一样的距离;然后再单独调整跨层级模块的相对位置。归根结底,图的精致感不是某个高难度技巧带来的,而是大量“对齐细节”的累积结果。
5.4 投影和打印时颜色太浅
这个属于图外的坑,但很实际。很多图在电脑屏幕上看着舒服,一投影就变得非常淡,因为投影仪的对比度远低于屏幕。
我的建议是:如果你的图是用来做方案汇报的,那么在设计配色时就要以投影效果为标准,而不是以自己电脑屏幕为标准。最稳妥的做法是:正文文字用深色,背景用非常浅的颜色,不要大面积使用浅色背景加浅色文字的组合。
另外打印场景要特别注意:大面积深色填充会耗费大量碳粉,而且打印出来容易糊成一片。建议打印稿尽量用白底、浅色描边、深色文字,不要依赖颜色来表达层级关系。
5.5 协作修改时,图的版本管理怎么做
最后补充一个非视觉但常常让人头疼的问题。一套图可能在多人手里反复修改,改到后面经常出现“A改了这张图的主模块,B还拿旧版去做汇报”的情况。
我的经验是:每张图文件命名都带上版本号和日期,同一天的修改不覆盖旧文件,新存一个版本号就好。同时尽量保持“单一信息源”——同一个架构信息只维护一张主图,其他图一律引用它,而不是自己复制一份再改。这样能省掉很多后期同步对齐的时间,尤其是多人协作时。
最后再分享一个小技巧
有一次我在帮团队赶一份方案图,画了快两个小时,怎么看都觉得布局别扭,后来发现问题是主模块和附属模块的视觉重量没拉开。我做了个实验:把所有深浅色全部改成灰色系,只看布局和线连接,结果问题立刻暴露出来是线太多、太乱。于是我用了一个很土但很有效的办法:把辅助线全部删除,只保留主流程的三条线,然后重新一张张补回来,每补一条就问自己一次“这条线真的有必要吗”。最后整张图的线比原来少了五分之三,但表达反而更清楚了。
所以说,diagram-design 的核心从来不是画功,而是克制、取舍和结构感。能少画一笔就少画一笔,能让读者少想一步就少想一步。做好这些,你画出的每一张图都会明显比大多数人更专业。