ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

图表设计方法论:从认知负荷到视觉层级的工程实践

图表设计方法论:从认知负荷到视觉层级的工程实践 1. 从diagram-design这个标题能读出什么第一次看到diagram-design这个标题我的直觉是这不是一个单纯的画图工具教程也不是某个具体软件的说明书而是一个关于如何设计图表的方法论项目。标题本身由两个词组成——diagram图表和design设计中间用连字符连接这种命名方式在技术圈里通常意味着一个工具库、一个设计系统、或者一套关于图表设计的实践框架。我之所以这么判断是因为如果只是画流程图标题大概率会写成flowchart-tutorial或者draw-io-guide如果只是讲配色可能会叫color-scheme-for-charts。但diagram-design把图表和设计并列说明它关注的核心问题是图表不只是把信息画出来而是要设计出来。这两者之间的差别恰恰是很多技术从业者容易忽略的地方。大多数人画图表的习惯是这样的打开工具拖几个框连几条线填上文字导出图片完事。这个过程里设计的成分几乎为零。但真正让一张图表好用的往往不是工具用得多熟练而是你在画之前想清楚了什么、画的过程中取舍了什么、画完之后验证了什么。diagram-design这个项目要解决的就是把这套想清楚—取舍—验证的流程显性化、可复用。这篇文章适合三类人看第一类是需要频繁画架构图、流程图、时序图的技术从业者第二类是做技术文档、产品文档、方案汇报的文档工作者第三类是任何觉得自己画的图总是不够清楚的人。不管你是用专业绘图工具还是随手用在线白板这套思路都能直接迁移过去。接下来我会从图表设计的底层逻辑讲起然后拆解一套可落地的设计流程再针对几种常见图表类型给出具体的实操方法最后分享一些我在实际项目中踩过的坑和总结出来的技巧。整篇内容不绑定任何特定工具因为工具会过时但设计图表的思维方式不会。2. 图表设计的底层逻辑为什么你画的图别人看不懂2.1 图表的本质是降低认知负荷不是展示信息很多人画图表时的心态是我要把我知道的都画上去这其实是一个根本性的误区。图表的本质不是信息展示而是认知负荷的转移。什么意思一段文字描述一个系统架构读者需要在大脑里逐句解析、建立关联、形成整体印象这个过程的认知负荷很高。而一张好的图表是把这种在大脑里建立关联的工作提前由画图的人完成了读者只需要看就能理解。所以判断一张图表好不好标准不是信息全不全而是读者看懂它需要花多少脑力。我见过太多架构图框框线线密密麻麻每个框里塞满了文字箭头交叉得像蜘蛛网。画的人觉得自己很严谨但看的人第一反应是我不想看。这就是典型的认知负荷没有转移反而增加了。这里有一个很实用的检验方法把图发给一个不了解这个项目的人看他多久能说出这张图在讲什么。如果超过30秒还说不清楚那这张图的设计就是失败的。注意我说的是说出这张图在讲什么不是看懂每个细节。好的图表应该让人先抓住主干再按需深入细节。2.2 视觉层级决定阅读顺序阅读顺序决定理解效率人眼看图不是随机的而是被视觉层级引导的。什么是视觉层级就是图中哪些元素更重、哪些更轻。颜色深的重颜色浅的轻大的重小的轻实线的重虚线的轻有边框的重无边框的轻。这些轻重关系组合起来就形成了一条隐形的阅读路径。问题在于很多人在画图时完全没有意识到自己在建立视觉层级。所有框一样大所有线一样粗所有文字一样黑结果就是读者不知道先看哪里。我见过一张微服务架构图二十多个服务框大小完全一致颜色完全一致连线粗细也完全一致。这张图的信息量其实很大但因为没有视觉层级读者只能一个一个框去读效率极低。正确的做法是先确定这张图要传达的核心信息是什么然后让核心信息在视觉上最重。比如你要讲的是用户请求经过网关分发到三个核心服务那么网关和这三个核心服务就应该用更深的颜色、更大的框、更粗的线其他辅助服务、监控组件、日志系统就应该用浅色、小框、细线甚至放到图的边缘位置。2.3 图表的留白和对齐比你想的重要得多这一条是我踩过坑之后才真正重视的。刚开始画图时我总想把空间填满觉得留白是浪费。后来发现留白恰恰是让图表呼吸的关键。一张图如果元素挤在一起读者的眼睛会疲劳理解速度会下降。适当的留白能让不同信息块之间形成自然的边界读者不需要额外的线条或颜色就能区分它们。对齐也是同样的道理。人的眼睛对不对齐非常敏感哪怕只差几个像素也会让人觉得哪里不对劲。而这种不对劲会消耗读者的注意力让他们分心去处理这种不适感而不是专注于内容。所以我在画图时有一个习惯画完之后把所有元素框选一遍用对齐工具统一对齐。这个动作花不了几秒钟但效果立竿见影。提示如果你用的工具没有对齐功能那就手动把元素拖到参考线附近。大多数工具都有智能参考线拖到接近对齐位置时会自动吸附。2.4 颜色不是装饰是信息编码很多人选颜色凭感觉这个蓝色好看就用这个。但在图表设计里颜色是一种信息编码手段。同一类元素用同一种颜色不同类元素用不同颜色这是最基本的用法。更进一步颜色的深浅可以表示层级或权重颜色的冷暖可以表示状态或类别。我常用的一个原则是主色不超过三种辅助色不超过两种。主色用于区分主要类别辅助色用于标注特殊状态比如警告、异常、待办。颜色太多读者记不住反而增加认知负担。另外颜色的选择要考虑色盲用户红绿色搭配要尽量避免可以用蓝橙、紫黄这类对比。还有一个容易被忽略的点背景色和前景色的对比度。我见过有人在浅灰色背景上放浅蓝色文字看起来很高级但实际阅读时非常费劲。对比度不够读者需要更用力地辨认这又回到了认知负荷的问题。一般来说正文文字和背景的对比度至少要达到4.5:1这个标准在大多数设计规范里都有。3. 一套可落地的图表设计流程3.1 第一步先写图表的中心句再动手画这是我从写作里借来的方法。写文章之前先写中心句画图表之前也先写中心句。所谓中心句就是用一句话说清楚这张图要表达什么。比如这张图展示用户从下单到支付的完整流程或者这张图对比三种方案的性能差异。为什么这一步重要因为如果没有中心句你画着画着就会跑偏。本来想画流程图结果画着画着开始补充异常处理又画着画着开始加监控点最后变成了一张四不像。有了中心句你就有了一个判断标准这个元素和中心句有关吗无关就删掉。我自己的习惯是把中心句写在画布的最上方画完之后再删掉。这样在整个绘制过程中我随时能看到自己的目标。这个方法看起来很简单但实际用起来效果非常好尤其是画复杂图表的时候。3.2 第二步用纸笔先画草图别急着打开工具这一步很多人会跳过直接打开工具开始拖框。但我的经验是在纸上画草图的速度比在工具里快五到十倍。因为纸上没有对齐、没有样式、没有颜色你只能专注于结构。而结构恰恰是图表设计里最重要的部分。草图阶段要确定的是有几个主要模块、模块之间怎么连接、信息流向是什么、哪些是核心哪些是辅助。这些确定之后再打开工具你就是在翻译草图而不是在探索结构。翻译的速度远快于探索。我一般会用一张A4纸横过来先用铅笔画出大概的布局。画错了就擦掉重来一张纸可以画三四个版本。等确定了最终版本再打开工具。这个过程可能只花十分钟但能省下后面反复调整的一两个小时。3.3 第三步确定视觉层级给元素排座次草图确定结构之后接下来要做的是给元素排座次。哪些是一级元素最重要哪些是二级元素次重要哪些是三级元素辅助。排完座次之后用视觉手段把座次体现出来。具体来说一级元素用最大的框、最深的颜色、最粗的线二级元素用中等大小的框、中等深度的颜色、中等粗细的线三级元素用小框、浅色、细线。这样读者一眼就能看出哪些是重点。这里有一个常见的误区把所有元素都当成一级元素。我见过很多图每个框都很大每个颜色都很深结果就是没有重点。记住重点之所以是重点是因为有非重点的衬托。如果所有东西都是重点那就没有重点。3.4 第四步统一视觉规范别让细节毁掉整体视觉规范包括字体、字号、颜色、线宽、圆角、间距、箭头样式。这些东西单独看都很小但组合起来决定了图表的整体质感。我见过内容很好但视觉很乱的图问题往往就出在这些细节上。我的做法是在开始画之前先定一套规范。比如字体统一用某个无衬线字体一级元素字号16二级14三级12线宽统一用2px箭头统一用实心三角圆角统一用4px同类元素之间的间距统一用20px。定好之后整个绘制过程都遵守这套规范。这样做的好处是图表看起来会很整。即使内容复杂读者也会觉得这张图很专业。而专业感本身就能降低读者的认知负荷因为他们不需要花精力去处理视觉上的不一致。3.5 第五步画完之后冷处理再回来检查这一步是我个人觉得最有用的。画完一张图之后不要马上发出去先放一放。去喝杯水或者做点别的事过半小时再回来看。这时候你会有一种陌生人视角能发现很多刚才没注意到的问题。我经常在冷处理之后发现某个箭头指错了方向、某个文字有错别字、某个颜色对比度不够、某个元素没有对齐。这些问题在刚画完时因为自己知道自己想表达什么而自动忽略了但读者没有这个背景他们会直接看到这些问题。如果时间允许我还会把图发给一个同事让他看一眼然后告诉我第一眼看到了什么。如果他的回答和我的中心句一致说明图的设计是成功的如果不一致那就需要调整。4. 几种常见图表类型的设计要点4.1 架构图分层是王道但别为了分层而分层架构图是最常见的图表类型之一也是最容易画乱的。我的经验是架构图的核心是分层但分层要服务于表达不能为了分层而分层。常见的分层方式有按逻辑分层接入层、业务层、数据层、按部署分层客户端、服务端、存储、按职责分层展示、逻辑、存储。选择哪种分层方式取决于你要表达什么。如果你要讲的是请求怎么流转那就按逻辑分层如果你要讲的是系统部署在哪里那就按部署分层。分层之后每一层内部也要有结构。我通常会把同一层的元素放在同一个水平带里用浅色背景区分不同层。层与层之间用箭头连接箭头的方向表示调用或数据流向。这里要注意箭头不要太多。如果两个层之间有大量交互不要画十几条箭头而是用一条粗箭头加文字说明。还有一个细节跨层调用怎么画。比如业务层的某个服务直接调用了数据层的某个组件这条线如果直接画会穿过中间层看起来很乱。我的做法是用虚线并且尽量走图的边缘避免穿过其他元素。4.2 流程图主干要清晰分支要收敛流程图的难点在于分支。一个流程如果有五六个分支画出来很容易变成一团乱麻。我的处理原则是主干用粗线分支用细线主干走中间分支走两侧分支尽量收敛不要发散。具体来说先画出主流程用一条粗线从左到右或从上到下贯穿。然后画分支分支从主干上引出用细线并且尽量让分支在某个节点重新汇入主干。如果分支太多可以考虑把次要分支折叠起来用文字说明此处有异常处理详见XXX。另外流程图里的判断节点菱形不要太多。我见过一张图有十几个判断节点读者根本跟不下来。一般来说一张流程图里的判断节点不超过五个超过的话就应该拆成多张图。4.3 时序图参与者要少消息要编号时序图用来展示交互过程核心是谁在什么时候发了什么消息。设计时序图时我遵循两个原则参与者不超过五个消息必须编号。参与者太多图会变得很宽读者需要左右扫视很累。如果确实有超过五个参与者可以考虑把一些次要参与者合并或者拆成多张图。消息编号是为了让读者能按顺序阅读尤其是在有异步消息或并发消息的时候编号能帮助读者理清顺序。时序图还有一个容易忽略的点激活条生命线上的矩形。激活条表示对象在处理消息的时间段画好激活条能让读者看出哪些对象在什么时候是活跃的。很多人画时序图时忽略激活条结果图看起来就是一堆箭头缺少时间维度的信息。4.4 对比图维度要统一差异要突出对比图用来比较两个或多个方案。设计对比图时最重要的是维度统一。你不能拿A方案的性能和B方案的成本比那不是对比那是混淆。所有被比较的对象必须在同一组维度下比较。维度确定之后用表格或分组柱状图来呈现。表格适合精确对比柱状图适合直观对比。如果差异很明显可以用颜色或标注突出差异如果差异不明显就不要强行突出否则会误导读者。我个人的偏好是能用表格就用表格。表格的信息密度高读者可以快速扫描。柱状图虽然直观但精度不够而且当维度较多时柱状图会变得很拥挤。5. 我在实际项目中踩过的坑5.1 坑一为了好看牺牲了好读刚开始做图表设计时我特别追求好看。用渐变、用阴影、用立体效果觉得这样才高级。结果有一次把一张架构图发给团队评审大家的反馈是太花哨了看不清重点。我当时还挺不服气觉得他们不懂审美。后来自己把图打印出来看才发现问题渐变和阴影让元素的边界变得模糊读者需要花更多精力去辨认每个元素的轮廓。从那以后我给自己定了一个规矩图表的第一目标是好读第二目标才是好看。在保证好读的前提下再考虑美观。而且我发现真正好读的图表往往本身就是好看的。简洁、对齐、留白这些让图表好读的原则同时也是让图表好看的原则。5.2 坑二文字太多把图表当文档写这个坑我踩了很多次。每次画图时总觉得这个信息很重要要写上那个信息也不能漏也写上。结果一个框里塞了五六行文字整张图看起来像一篇文档。后来我学到一个方法图表里的文字只写关键词详细说明放到图外的注释里。比如一个服务框里面只写服务名不写它的职责、接口、依赖。这些信息可以放在图下方的说明里或者用编号标注在图外展开。这样做的好处是图表本身保持清爽读者能快速抓住结构需要细节时再去看注释。这其实就是渐进式披露的思路先给读者一个概览再按需提供细节。5.3 坑三忽略读者的背景知识有一次我给一个非技术背景的团队画系统架构图用了很多技术术语比如网关负载均衡消息队列。画完之后团队负责人跟我说图很漂亮但我看不懂。我当时才意识到我默认读者有技术背景但实际上他们没有。从那以后我在画图之前会先问自己这张图的读者是谁他们知道哪些概念不知道哪些概念如果读者是非技术背景我就会把技术术语替换成业务术语或者加一些简单的类比。比如网关可以写成统一入口消息队列可以写成任务排队区。这个坑的本质是知识的诅咒你知道的东西你会默认别人也知道。但实际情况往往不是这样。所以画图时要有意识地问自己如果我不知道这个项目我能看懂这张图吗5.4 坑四不重视图表的版本管理这个坑比较隐蔽但影响很大。我早期画图时每次修改都是直接在原图上改改完之后覆盖保存。结果有一次需要回退到之前的版本发现已经找不到了。还有一次团队里两个人同时改一张图最后合并时冲突了花了很多时间才理清。后来我养成了一个习惯每次修改图表都另存为一个新版本并在文件名里标注日期和修改内容。比如架构图-v2-20240115-增加缓存层。这样既能追溯历史也能避免冲突。如果工具支持版本历史很多在线工具都支持那就更好直接利用工具的能力。6. 几个能立刻用上的实操技巧6.1 用灰度测试检查视觉层级画完图之后把图转成灰度大多数工具都有这个功能或者截图后用图片编辑工具去色。如果转成灰度之后你依然能一眼看出哪些是重点、哪些是辅助说明视觉层级是清晰的如果转成灰度之后所有元素都混在一起说明你过度依赖颜色来建立层级一旦颜色去掉层级就消失了。这个方法我经常用尤其是画复杂图表的时候。它能帮我发现颜色掩盖了结构问题的情况。6.2 用眯眼测试检查整体布局把图缩小或者眯着眼睛看。如果眯眼之后能看出图的大致结构比如分成几块、主干在哪里说明整体布局是合理的如果眯眼之后只看到一团模糊说明布局太碎缺少整体感。这个方法的原理是眯眼会过滤掉细节只留下大块的明暗和形状。如果大块的明暗和形状是有组织的说明布局有整体感如果是杂乱的说明需要调整。6.3 用三色原则控制颜色数量前面提到过主色不超过三种辅助色不超过两种。具体操作时我会先选一个主色比如蓝色然后选一个辅助色比如橙色用于强调再选一个中性色比如灰色用于辅助元素。这样整个图表的颜色就控制在三种以内看起来会很干净。如果需要区分更多类别我会用同一主色的不同深浅而不是引入新的颜色。比如深蓝、中蓝、浅蓝这样既区分了类别又保持了整体感。6.4 用对齐工具统一元素位置这个技巧很简单但效果很好。画完图之后把所有同类元素框选用对齐工具统一对齐左对齐、居中对齐、顶对齐等。如果工具没有对齐功能就手动拖到参考线附近。对齐之后图表会立刻显得整很多。我见过很多图表内容其实不错但因为元素没有对齐看起来就是业余。对齐这个动作花不了几秒钟但能显著提升图表的专业感。6.5 用编号图例处理复杂关系如果图表里的关系很复杂比如多个模块之间有多种交互可以考虑用编号图例的方式。具体来说在图上用数字标注每个关系然后在图下方用文字说明每个数字代表什么。这样图本身可以保持简洁复杂的关系放在图例里展开。这个方法特别适合架构图和流程图。我画过一张微服务架构图服务之间有十几种调用关系如果全画成箭头图会乱得没法看。后来我用编号标注图下方列出每种调用的说明效果很好。7. 关于图表设计我最后想分享的几点体会图表设计这件事说到底是一个翻译的工作。你把脑子里的结构、逻辑、关系翻译成视觉语言让读者能看懂。翻译得好不好不取决于你用了多高级的工具而取决于你有没有站在读者的角度想问题。我做了这么多年图表最大的体会是好的图表是改出来的不是画出来的。第一版往往有问题第二版好一些第三版才差不多。所以不要指望一次画好要留出修改的时间。我现在的习惯是重要图表至少改三版第一版画结构第二版调视觉第三版做检查。另一个体会是图表设计的能力是可以刻意练习的。每次看到好的图表就分析它为什么好每次看到不好的图表就分析它哪里可以改进。时间长了你会形成一种直觉看到一张图就知道哪里有问题。这种直觉比任何工具技巧都值钱。还有一个容易被忽略的点图表是要维护的。系统在变图表也要跟着变。我见过太多过期的图表画的时候是对的但半年后系统改了图表没更新结果误导了读者。所以我在项目里会指定图表的维护人每次系统变更时同步更新图表。这个习惯看起来麻烦但能避免很多沟通成本。最后说一个我自己的小习惯我会建一个图表库把自己画过的所有图表分类存起来。下次画类似的图时可以参考之前的不用从零开始。这个库里有架构图、流程图、时序图、对比图每类都有几个模板。用的时候稍微改改就能用效率很高。图表设计不是什么高深的技术但它确实需要用心。你多花十分钟想清楚结构读者就能少花十分钟理解。这个投入产出比怎么算都划算。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表