多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

数据可视化大屏不是给领导看的:真实用户、设计与运维实践

数据可视化大屏不是给领导看的:真实用户、设计与运维实践 “这屏是给领导看的做大气一点就行。”这句需求我做数据可视化大屏这几年听到不下几十遍。但每次听到我心里都要打个问号大屏真的只是给领导看的吗如果指标纯为了好看那这块屏大概率活不过验收那天。今天我就把这块大屏不是给领导看的那是给谁看的掰开了讲一讲聊聊我做过的真实项目以及怎么让一块大屏真正被人用起来。这个主题适合所有正在做或即将做可视化大屏的开发者、产品经理、数据分析师以及被领导一句话整块大屏砸懵了头的乙方朋友。看完你会明白大屏的真正用户从来不是台下的领导而是那些站在屏前需要做判断、动手指的人。搞清楚这件事你的项目才能从装饰墙变成生产工具。1. 大屏这件事先聊聊大家踩过的坑大部分大屏项目开局就注定了走向。我当时接手某园区综合调度大屏的时候需求文档写得很漂亮展示园区经济运行、企业分布、人均产值、能耗趋势。甲方说得很直白这屏要放在接待大厅领导来了要能看到整体形象。我们做了三块大屏拼墙三块屏各展示一块内容画面讲究对称用深蓝色底配金色描边转场特效拉满3D建筑模型旋转起来确实挺唬人。结果呢领导确实来参观了几次每次停留三分钟拍了两张照。之后那屏就长驻待机画面没人操作数据更是三个月没更新。后来运维的人跟我说每次从那块屏前走过都没法不看它因为太亮了但实在不知道看什么。这就是典型的大屏错配甲方以为自己是被服务的领导但真正每天面对这块屏的人根本没有得到他要的信息。我把这类情况总结成几个最常见的病根需求错位把大屏当成汇报PPT的放大版所有指标都按讲给领导听排序而不是按看得人要用什么排序。画面远大于信息视觉效果投入过多精力主视觉做得极其炫酷但核心指标就孤零零一个数字摆在那毫无上下文。只做显示不做交互默认大屏是观赏屏没人去设计点击、下钻、联动实际上值班人员想查个明细都无从下手。数据支撑薄弱大屏接了数据源但没有校验机制口径对不上今天显示100明天显示96时间长了连你自己都不敢信这屏。这些问题单独拎一个出来都不算致命但凑在一起一块屏就废了。我见过太多项目团队把大屏项目当成视觉设计外包UI设计师挑大梁前端把图做出来后端把接口给出来就当成交付了。但唯独没有人想过这块屏的使用者会在什么时间、什么状态下用这块屏来完成什么任务。真实的大屏场景从来不是领导背着手散步到屏前旁边跟着一堆人讲解。真实场景是某个工作日的凌晨两点值班员站在大屏前发现节能减排指标异常需要在三分钟之内判断是哪个车间的问题然后打电话给负责人。或者其他普通工作日运营主管站在屏前要对今天的大屏数据做状态分析看到某个指标从早晨到现在都在爬坡需要点击进去看趋势图找出拐点在哪。领导看大屏是看了个结果。使用者看大屏是要看过程、异常、根因。这两者完全不是一回事。所以与其纠结大屏不是给领导看的那是给谁看的不如先想想这块屏的寿命是按验收通过计算还是按每天开机使用时长计算。后者才算数。2. 大屏的真实受众其实一直摆在眼前我在做第二个大屏项目的时候换了种思路。项目背景是某制造业工厂的产线运行监控。这次需求方没说给领导看只说要能随时知道产线的情况。这次我逼着自己先做受众拆解大屏不是给一个人看的不同场景会站着完全不同的几类人。2.1 一线值班与运维调度人员大屏的长期用户一线值班人员是大屏最忠实的用户。他们每天坐在中控室里屏就在正前方需要不断地扫视屏幕获取信息。他们要的不是宏大叙事而是能把异常状态从一堆正常数据中顶出来的能力。这块屏上的信息密度、排列逻辑、异常告警方式对他们而言就是工作效率和安全感的来源。我在工厂项目里发现产线数据每分钟都在跳动但值班人员根本不会每一个数字都看。他们只会关注两类状态正常不用管异常赶紧管。所以大屏上某个状态是否醒目、告警是否足够刺眼、能否一眼定位到具体产线工位比展示十几项平均数有价值得多。后来我们做了一件事把产线综合状态放在屏幕最中央正常时显示绿色勾异常时整块区域变成红色并高频闪烁。值班人后来反馈说现在站在屏前扫一眼就知道大局不用再逐个翻看每个机台的监控参数了。2.2 中层运营管理者大屏的周期使用者中层管理者不会像值班员那样全天盯着屏。他们早上来、下班前可能各看一眼开会时把大屏当作讨论背景。他们的核心诉求是这一段生产有没有达到目标有没有潜在风险需不需要现在做一次决策和干预。为了满足这类人群单纯把当日产量放得特别大用处不大。更理想的做法是给指标配基准线、配同比环比、配合格率区间。管理者一眼能看到今天落后了多少是什么原因拖了后腿然后决定要不要去现场看一眼。我在实操中会把目标与完成率做成明显对照并把异常原因按优先级排序放在边上直接用标签区分原材料问题设备故障订单调整。省去了管理者自己翻报表去对原因的功夫。2.3 分析人员与数据团队大屏的回看用户这类受众容易被忽略但其实很关键。数据分析师不一定常站在大屏前但他们需要大屏的指标口径与后台报表完全一致。如果大屏上的数字看着挺好拉明细下来的对不上数据分析师会第一个崩溃。这个群体要的是大屏上每个核心指标背后能不能一键定位到明细数据我见过一个挺尴尬的案例某公司大屏上显示今日销售额业务部门按大屏数字去复盘发现大屏多了几十万最后排查发现接口里把退款订单也算进去了。现场演示那一刻屏幕上是好看的但数据分析师拿着数来质问的时候谁都下不来台。所以大屏虽然长着展示脸但背后必须要有严格的数据血缘与口径文档。这一点做的时候就要考虑。2.4 访客、客户与行业伙伴大屏的形象用户这确实是部分大屏的真实受众。他们会来参观会对大屏产生直观印象。我之前那个园区项目本质上就是服务这个群体。但我现在的经验是如果大屏只剩这层功能成本收益比太低。完全可以做一个接待模式当未检测到交互操作持续一段时间之后自动切换到动画宣传展示模式。有人走近、点击、或按下遥控器马上回到真实数据工作模式。这样一来形象展示和业务使用不用二选一两种受众都能服务。要知道为公众、访客设计大屏和为一线的调度人员设计大屏选的信息颗粒度、配色方案、故事线完全不同。如果只盯着给领导看就会把大屏做成一个花瓶。如果先想清楚谁会站在屏前站多久你自然知道什么样的内容才算及格。3. 回到设计原点大屏解决的是看见而不是展示大多数人做不好大屏项目是因为潜意识里把大屏当成了展示品。展示品的要求是美观、大方、有气势最好能让拍照的人发朋友圈。但真正能救活一个项目的思路是把大屏当成工具来设计解决看见问题——看见状态、看见异常、看见趋势、看见因果关系。3.1 信息架构第一眼为什么看不明白大屏和手机APP、PC后台有一个本质差别没有滚动没有二级菜单的天然入口。所有信息几乎都要在第一屏内抢位置。所以信息架构的等级制度必须极其森严。我做信息架构的时候遵循一个原则我把大屏按照黄金三角来布局。左上角放整体状态指标区放产出、效率、能耗、良率这类硬指标用一个综合健康度统领全场画面比例分配。正中央放地理空间分布或者产线拓扑结构也就是主视觉区。右侧放告警与待办事项列表异常条目按时间倒序排每条都标记紧急等级和关联位置。底部走廊放趋势曲线、排名、明细预览之类需要细看的内容。一开始很多客户会要求把核心指标全放中央每个字都要大。我的应对方式比较直接选三个以下的核心指标放主视觉上方配上周同比的微型趋势线。其余指标挤在两侧字号可以小但保证了数据布局的空间逻辑。这布局不一定最美观但每个使用者站到屏前3秒内就能回答三个问题今天整体如何哪里在冒火什么趋势在变做到这三点信息架构就算立住了。3.2 实时性设计数据刷新到底多快才算够大屏数据实时刷新听起来很酷但实时是有成本的。不要为了炫技去搞每秒刷新一百次。我做过一个物流项目的屏客户要求秒级刷新结果数据接口扛不住前端图表一卡一卡。最后做了针对性方案全局性指标总单量、总营收、总里程5到10秒刷新一次。这部分数据缓存成本低但对稳定性要求高。局部列表与明细数据订单明细、告警记录30到60秒刷新一次。列表频繁跳动反而没法阅读稍长的刷新间隔让人看得更清。告警状态3到5秒轮询一次并判断状态跃迁从正常到异常才触发前端闪烁状态不变时不重新渲染。这个套路既保证告警及时性又极大减少了渲染压力。实时性不是越快越好而是该快的地方快不该快的地方别乱动。这块设计思路可以说决定了大屏运行半年后还有没有人愿意打开它。3.3 交互层次值班场景下的自然操作路径大屏能不能交互是评判它是展示品还是工具的分水岭。交互不用多更不用复杂但必须贴合使用场景。我在实操中的标配交互是点击某个产线或区域节点右侧联动显示该节点的关键指标卡片与历史趋势主视觉局部高亮。点击告警条目弹出处理状态面板显示确认人、处理建议、过去类似告警的处理时长。这个设计大大减少了值班人员的记忆负担。双击或点击下钻按钮可以把当前视图从全场总览切到单体详情重新分配视觉权重把刚才的主视觉缩小到角落把详情内容放大居中。遥控器或触控屏操作都要支持。值班员不一定总能腾出手来摸鼠标无线遥控器和触控大屏是最常见的交互方式。顺着这个场景设计大屏就不是看的而是用的了。4. 实操如何做一块有人用的大屏聊了这么多理念落到实操环节。以我在某跨平台系统里做的一块业务经营态势大屏为例我把从需求到上线的完整路径拆开每个环节都是坑里蹚过来的经验。4.1 需求调研别听需求方说的领导要看需求方给的原始需求几乎都是非常模糊的一句话我们要块大屏能展示业务情况领导汇报能用。如果你听得太乖后面就是无尽返工。正确做法是问出使用场景问出使用频率问出把它拿走你会损失什么。我在调研阶段会列出这几个关键问题这块屏放在哪里中控室、走廊还是接待厅观看距离是多少这三个条件直接决定了字号、对比度和内容密度。每天用这块屏的人是谁他们需要经常操作还是只看不动遇到异常情况这块屏除了亮起来还需要做什么需要触发短信通知吗需要电话语音提醒吗还是纯靠人眼盯如果某个数据错了影响谁去纠错数据链路有没有专人维护需求方向对这个项目的成功举足轻重。如果你发现对方答不上来使用频率和使用者这两个问题建议多做一轮用户访谈找到真正每天看屏值班的同事。访谈楼层和会议室里的甲方往往代表不了真正在屏幕前干活的一线人员。4.2 指标体系设计先定口径再画图我比较反感的操作是先画原型图再补指标。正确顺序是反过来的先和业务方逐条确认指标口径再上设计。一个指标要确认哪几件事以设备OEE综合效率为例光是口径分歧就够喝一壶了。有人算纯运行时间占比有人算含调机时间有人只算节拍内产出。同一块屏三个人能看出三个不同的数字。所以我在项目里强制要求输出指标字典至少包含指标名、口径公式、数据源、更新频率、责任人、口径备注。宁可一开始多花几天把这事磨清楚也不要上线后被一线人员吐槽这个数不对啊。有了指标字典之后才把指标按状态指标、趋势指标、明细指标分类分别放到大屏的不同区域。状态指标最重要的特征是可读性一个数、一个色就够了。趋势指标必须有参考线必须看得到变化方向和斜率意义。明细指标要克制默认只显示Top N而不是把全部明细铺上来。这套分类逻辑能直接避免大屏变成excel截图墙。4.3 视觉与动效花活虽好不能影响读大屏项目里视觉因素被高估了。我见过不少大屏项目方案阶段花了一大半精力调视觉样式但上线半年后没人再用因为没有把信息表达清楚。视觉效果要求不在华丽而在三件事清楚、稳定、有层级。清楚文字和信息要能快速被扫描。字号有层级主指标数字最大标题其次辅助说明最小。对比度要足深色底上不要用暗色做重要信息。稳定画面不要频繁发生剧烈跳动。数据刷新时最好用轻微的数值变化过渡而不是整块面板闪一下。尤其注意列表刷新时不要让每条数据都抖一下要按数据项更新而不是全部重绘。有层级用颜色、尺寸、留白营造视觉动静。核心指标的明确性、边框、动效都要比辅助区域强。动效方面入场动画可以炫但常态下的动效一定要轻。地图缩放、飞线、粒子特效这些效果如果只是好看建议砍掉80%。一个特别典型的例子工厂监控大屏上做了一个粒子流动特效形象地模拟物料流向大家拍手叫好。但运行一个月后值班员反馈这特效占CPU高且每看必晕。最后我们在设置里加了一个低功耗模式开关默认开着特效只在接待模式出现。4.4 技术选型与渲染性能大屏开发的核心战场大屏项目的技术选型直接决定开发周期和运行维护成本。我的经验是如果团队已经有成熟的前端框架尽量不要为大屏项目单独引入一套重型可视化引擎除非场景真有三维需求。前端渲染方案主流有几种我的选型经验如下轻量级图表库适合基础图表、柱状图、折线图占主导的场景上手快性能好。专业可视化引擎适合地图、大规模节点、复杂交互场景。地图类数据、海量散点、轨迹回放这类任务它才是合适的工具。自研Canvas实现适合极端定制、性能要求极高的工业监控类场景。自研最大的成本在开发和维护但如果你的核心场景就是几千个点位高频刷新自研Canvas反而比通用引擎更可控。WebGL方案适合真三维建模如建筑楼宇、设备机泵。一般大屏场景上三维很容易过火我通常会要求三维只在显示物理空间关系时才用装饰性的三维坚决不上。渲染性能是一个大屏上线后最容易被骂的点。我在项目中总结了一套调优策略数据量大的历史曲线图先用后端聚合降低点位密度通过服务端聚合输出数据前端只渲染时间戳对应的聚合点而不是把原始点全画出来。地图场景下对大批量节点做空间聚合同一区域只显示汇总气泡点击后才加载明细点位。减少渐变和模糊这类滤镜大量半透明叠加会大幅降低canvas绘制性能能减就减。图表动画尽量关闭采样率高的数据动画完全没必要还拖慢首屏渲染。4.5 运维与数据校验大屏上线才是开始做完上线项目还没结束。大屏和网站有个相似点它得有人长期维护数据链路不能断。我在项目里最常听到的运维问题是大屏数据很久没更新了。问题源头一半是接口挂了没人发现一半是源系统换了字段导致链路静默失败。要杜绝这种情况必须从项目早期就设计监控机制。大屏自身就应该有元监控每个核心指标记录最近一次成功刷新的时间戳。如果某个数据源超过N分钟没有成功更新就在大屏左下角显示一个不起眼的黄色状态点点开可以看到具体接口异常信息。大屏在跑你的开发团队也要有个看板能看到当前所有数据源的健康状态。这套机制可能听起来不炫但比任何视觉效果都更保护你的项目口碑。另外大屏的数据校验不能只靠开发自测。我建议至少准备一份模拟数据和一个演示环境配置。日常开发跑模拟数据演示之前再切换真实数据源。等真正上线之后还要定期抽数比对例如每天自动拉大屏显示的关键指标数字和数据库汇总结果做diff发现差异立刻告警。数据可信才有后续的每天都开着用。5. 常见问题与排查技巧实录做个几年大屏项目稀奇古怪的问题见了不少。有些问题可能会被写进文档比如接口偶尔超时多数问题总是来得让人措手不及。我列几个高频出现的问题和排查方向做个速查表方便后来人少走弯路。现象可能原因排查顺序与处理建议大屏显示的数据和报表不一致指标口径不一致 / 汇总维度不同 / 时区差异先核对指标字典和数据源确认接口查询的聚合条件与报表完全一致。常见坑是今日的起止时间用了不同时区。刷新数据时页面卡顿、闪烁前端渲染压力过大 / 刷新逻辑全量重绘检查当前刷新频率和数据量改为按数据项更新减少重复渲染。考虑后端聚合、前端降采样。大屏每天都要手动重启内存泄漏 / 图表实例没有释放检查创建了图表或新对象但没销毁的代码。长时间运行时动态创建事件监听器也是一个常见泄漏点。某块屏一直显示暂无数据接口鉴权过期 / 数据源字段变更先看浏览器控制台请求是否500/401再比对返回的JSON结构与前端解析是否匹配。告警一直闪没人处理告警规则阈值不合理 / 告警风暴导致敏感度降低重新梳理告警分级与收敛规则。建议增加同类告警N分钟内去重合并。领导来参观时大屏地图加载慢地图瓦片服务首次加载无缓存 / 网络带宽受限做地图级静态缓存和预加载弱网环境切换为离线瓦片。5.1 我踩过的一个真实坑大屏上今天的界定这个坑我做某零售项目的时候踩过。前端每5秒拉一次今日实时销售总额但到了晚上11点后数字明显下滑商家很紧张以为系统坏了。排查发现后端接口取的是某个固定时区的自然日而大屏前端展示的是本地时间过了0点之后自然重置了。前后端关于今天的判定时区不统一导致大屏在跨时段数据归零看起来就是数据丢了。这种问题排查思路很简单同一份数据大屏之前和报表核对一致某时段开始不一致了优先去查时间边界。看接口的筛选查询条件、时区参数、汇总粒度是不是都统一。我用一个土办法从源头规避前后端统一用同一个时间接口返回当前业务时刻大屏一切实时都基于这个时间服务而不是基于每台终端的本地时间。这个大屏一直很稳没有再出过跨时段的离奇数据。5.2 另一个经验向业务方讲大屏不是汇报PPT有时候最难的不是技术问题是预期管理。甲方看着设计稿觉得这里太空了多放点信息或者这个图不够炫。我的应对策略是做一个大屏使用场景演示拉上真正会看屏的人一起过一遍。演示的时候我会这样说现在模拟凌晨1点告警响了屏幕这行字是报警点你看右边那列是处置建议点击后弹出关联工单。你想想看如果这里塞多一张饼图会不会影响你一眼看到这条告警大多数时候真正用过的人都会认可更克制的密度。我自己做项目的信条就是大屏是可以好看的但好看是为了让人能专注看而不是让人欣赏屏本身有多好看。6. 个人体会与一点后续扩展建议做了不少大屏项目后我的体会一直没变一块屏能成为工具核心不在技术而在它背后有没有一群每天被迫用它做判断的人。如果确实没人长期用那你在设计、性能、运维上节省的精力就是纯赚。如果确有人长期使用那这块屏需要的设计思路就是宽容:要容忍使用者疲劳、走神、视线游离要在关键时刻把最关键的信息送到他眼前。这两者是截然不同的设计哲学。最后分享一个小技巧。当你不知道大屏需不需要某个功能时就问自己一个问题一个人站在屏前带着一个具体的问题今天哪里不正常这个月的目标是没达成他能靠这块屏找到答案吗如果答案找不到那个功能再好看都不要摆上来。每次项目评审我基本都用这个标准来过滤需求实测下来大屏方向不会被带偏。如果你已经接了类似的大屏项目我建议下一步可以从用户访谈着手找到那个真正的长期使用者把这个项目最核心的表达方式彻底夯实。大屏终归是给人用的想清楚这一点后边的一切技术选型与视觉方向就都有了路标。
返回列表