看一张利润柱形图,眼睛会先落在哪里?大多数人会先找颜色不一样的那几根柱子。正因为如此,报表设计里有个不成文的习惯:负数要让人一眼认出来。财务上把亏损标红,运营上把下滑标橙,考勤里把异常标出来。颜色是图表给读者最快的提示,比数字大小更先进入视线。

可要给"负的那部分"单独上色,过去并不轻巧。数值是动态的,哪些数据点会是负数,要等数据出来才知道;逐根柱子手动改色,数据一变又得重来。常见的变通是事先把数据拆成正负两个序列,分别赋色——这等于为了上色去动数据结构,拆完还要再合并、再对齐,报表每刷新一次,这些维护工作就跟着再来一次。正负数的着色,本质上是一个"想做得越细、越费手工"的活。

SpreadJS 的数据图表(DataChart)在 V19.2 里把这件事变成了一项图表自身的设置。开启"正负色"之后,图表会依据每个数据点的值自动从配色里取两色:一个用于正的一侧,一个用于负的一侧。值在界线上方还是一根正常的柱,在界线下方就自动换成另一色。整个过程没有手工逐点改色,也不触碰数据本身。

在这里插入图片描述

界线由谁定

正与负,总得有一条界线。默认情况下界线是零——大于等于零的数据点算正,小于零的算负,这也最符合日常直觉。但界线并非只能停在零上。图表的"轴交叉"位置如果设在一个正数或负数上,正负色就会以这条新界线为基准来判断。库存的增减、相对目标值的差距这类数据,关注点往往不在零而在某个基准;把界线移到基准上,高于基准与低于基准的两类数据点便自然分成两色,比固定在零上更能说明问题。

面积图的处理略有不同。它没有一根根独立的柱子可分,着色就以基准线为界作用于图形本身:基准线以上的面积用正色,以下的面积用负色,整块图形的正负分界一眼可辨。

在这里插入图片描述

哪些图表用得上

这项设置并非所有图表通用,而是落在几类与"高低、增减、区间"直接相关的图表上:柱形图、条形图及其区间形态——区间柱形图、区间条形图,再加上面积图与区间面积图。区间的判据与单值不同:柱形、条形看的是数值与基准线的高低,区间形态则看区间两端的大小关系,上端不小于下端时视为正,反之视为负。对区间图而言,着色讲的是"这一段是升还是降",与上下界本身的数值正负并无直接关系。

这项设置也没有试图覆盖所有图形——它落在有"块"可分的那几类上。折线、散点这类以点线为主的图形不在其列,绘制的仍是常规的单色样式。

这几类图正好覆盖了报表里最常出现的几组对照:预算与实际、本期与上期、收入与成本。柱形与条形适合逐项比较,面积适合看随时间的积累与消长,区间形态则适合表达一段范围本身的方向。选择权仍在使用者手上,图表只提供这套着色逻辑。

让颜色跟着数据走

正负色更大的意义在于"自动化"。着色规则一旦设定,便与数据联动:数据源更新,哪些点落在界线两侧随之变化,颜色自动重算,不必每次重新指定。这对那些由数据驱动、会反复刷新的看板尤其受用——盈亏构成、库存增减、按月的实际与预算差,诸如此类。报表的读者始终靠颜色先接收"好与坏、升与降"的信号,而维护方不必再为颜色单独付出劳动。这与数据图表自身的形态也相合:数据图表的数据取自数据管理器中的数据表,数据表刷新,图上的数值随之更新,正负色作为图表设置的一部分,在同一次更新里按新值重新判定。预算进度未过半时差距为正,临近月末转为负,同一根柱的颜色便随达成情况自动翻转,不必每个周期再人工确认哪些点该换成另一色。上色的判定与取数长在同一层,不靠外部脚本事后补刷。

配色本身也尊重已有的体系。两色取自图表当前的配色,而非凭空指定;图表若跟随工作簿主题切换,正负两色也会随主题一起变化,整套报表换皮肤时,正负色的区分不会被破坏。正负色是在既有配色框架内新增的一层语义,而不是另一套并列的颜色逻辑。若数据整段都落在一侧——全线为正,或全线为负——图表只呈现相应一侧的颜色,不会为空置的那一侧凭空留色;一旦数据翻越界线,另一色又即时补上。规则简单到可以预见:读者记住的永远是"界线以上一种色、界线以下另一种色"。

分寸

最后想强调的分寸是:正负色是一种呈现规则,它不改变数值、不改变图表的统计口径,更不会改写数据。它解决的是"让人更快读出正负"这一件事,解决的边界也止于此。柱形还是那几根柱形,只是正的一侧和负的一侧,从此颜色各异。在报表里,这样的表达不需要读者做任何额外解释,是长在图形本身之上的信息。

把颜色规则放在"数据点"这一层、而不是放在"数据拆分"那一层,还有一层隐含的好处:同一份数据,既可以为彩色报表服务,也可以随时换到只强调轮廓的主题下。规则与数据彼此解耦,要不要用色、用哪两色,是展示层面可以独立做的决定,数据本身始终是一份干净的。

它也不会在既有图表上自行上身——没有开启正负色的图表仍是一套配色走到底,老文件读入后不受影响;只有显式打开这项设置,界线两侧才分别取两色。新语义的加入,以不惊动既有报表为前提。

数据的正负,本来就是图里最重要的信号之一。把它交给一项自动、随数据更新的设置,报表的维护者可以少一件重复的差事,读者则获得一个更稳定的阅读起点。

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。

更多推荐