业务表里几乎找不到不带日期的数据。订单记下单时间,流水记发生时间,库存要留盘点时点,设备要录巡检日期。等这些数据被画成图表,日期字段却常常被当成一串普通的文字来处理:一月、二月、三月,一格挨着一格排过去,谁也不比谁更宽。这样的图能看,但不完全是时间的本来样子。两个日期之间究竟隔了多久,横轴上看不出来;某个月份没有数据,旁边也不会留下相应的空档。

根子在于,一个日期字段被用于画图时,身上其实叠着两层含义:它既是一个时间点,也是一个分组标签。多数图表工具过去只认其中一层,或者把两层混在一起处理,于是做时间序列图的人总要先在数据上做一番手工——把日期拆成文本列,把缺月补齐,把年份筛出来单独比较——然后才能喂给图表一张"规整"的表。

SpreadJS 的数据图表(DataChart)是一类直接以结构化业务数据为来源的图表,数据取自数据管理器(DataManager)中的数据表。V19.2 把日期这一环补齐:日期字段在进入图表时,既可以保留原始的日期语义,也可以按年、季度、月、日归并成确定的时间区间;与此同时,横轴的摆放方式也多了选择——是按真实的日历间隔连续排列,还是按分类项等距罗列。

在这里插入图片描述

时间的两副面孔

把日期绑到图表的分类维度上,先要回答一个问题:这一列时间,想表达的是一个刻度,还是一组区间?

拿一整年的销售明细来说。如果只关心每个月卖了多少,"月份"就是分组标签,一月和二月的间距是不是恰好三十天,并不重要;如果观察的是某项指标随时间的波动,那三月到六月之间的这九十天,就应当和一月到二月之间的那几十天区分开来——横轴上的距离,要如实反映时间的流逝。前者是把日期当名称用,后者是把日期当刻度用,需求并不相同。

新版本把这两层需要拆开来分别处理。日期字段绑定到分类维度时,可以显式指定一种归并方式:保留原始日期,或按年、季度、月、日归并。归并只决定数据被怎样分组,并不决定轴怎么画。轴本身既可以设为连续的日期刻度,也可以维持等距的分类刻度,两者自由组合——同样是"按月归并"的数据,既可以用分类轴等距铺开,也可以放到日期轴上按真实月长排列。

在这里插入图片描述

一层一层看时间

多级分类的情形也一并考虑到了。分类维度本来就可以向下嵌套,形成"大区—城市""产品线—产品"这样的层级;现在这个层级里也可以掺入时间。把年份放在外层、月份放在内层,图的横轴就出现年与月两级刻度,读者可以沿刻度一层一层读到对应的月份。区域这类普通维度与时间维度的混排同样可行,比如外层是地区、内层是月份,先按地区切分,再在各地内部按月展开。

需要说明的是,层级只负责分组的先后,并不自动表示时间上的父子关系。年、季、月、日看起来天然递进,但系统不会替使用者推断"月属于季、季属于年";每一级采用什么粒度归并,都由使用者明确指定。这更贴近专业分析工具的惯例,也避免在数据口径上擅自替人做主。

轴的摆放,有取舍

日期轴的呈现规则比想象中细致。默认情况下,日期字段仍以分类轴等距绘制,老文件打开后的效果因此不受影响;只有当使用者把轴显式切到日期刻度,才启用按时间定位的连续轴。若既做了归并又开启了连续轴,轴上的刻度会自动与最细一级的归并粒度对齐,让刻度与数据落在同一套时间逻辑里,不至于出现"按月归并却按年刻刻度"的错位。

轴标签的显示格式可以按粒度分别设定:年份的写法、月份的写法、季度的写法各管各的。季度还支持依据当前语言环境输出,中文环境下即以"第一季度""第二季度"这类形式呈现。排序则只作用于分类轴——一旦使用者对某个分类维度指定了自定义的先后顺序,轴会自动回到等距的分类方式,因为真实的时间轴不允许人为打乱次序。这些规则相互之间并不冲突,系统在归类、排序与时间定位之间做了一致的取舍,使用者不必在同一张图里迁就两套矛盾的意图。

另一类容易被忽略的细节是缺口的呈现。当数据本身在某些时段不存在时,连续的日期轴会把这些空白如实留在图上。以交易日为单位的行情数据是典型例子:周末没有交易,分类轴会把紧邻的两个交易日挨在一起,日期轴则会为周六、周日留出空档,读图的人一眼能看出中间隔了一个假期。

在这里插入图片描述

放在业务里看

日期轴补齐之后,受益最多的是以时间为骨架的图表。零售与电商看销售的季节波动,制造与供应链看产能与交付的节奏,财务看应收应付的账龄分布,运营看流量与成交的逐日趋势。这些场合里,横轴是否忠于时间,会直接影响读图的结论。以往要做成同样效果,往往要在数据一侧先把日期拆成文本列、把缺失区间补齐,再花额外力气喂给图表;现在这一层收进了绑定这一步,工作量落在一次选择上。

选哪一把尺,有一条不算复杂的经验:当横轴上的距离本身带着信息——隔了多久、缺了哪段、跨了哪年——就用日期轴;当类别只是并列摆放的几组标签,一月与二月之间的宽窄并不重要时,分类轴更直接。两种轴不是谁更好的关系,而是面向两种不同读图意图的两套摆法。

把时间真正当作时间画出来,是数据分析里一件细小却要紧的事。它不改变任何数据,改变的是读图时人对时间距离的感知。当横轴上的每一步都对应回真实的日历,那些写在数据里的季节、周期与间隔,也就自然浮现了。数据图表这一步,让日期回到了它本来的位置上。

Logo

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

更多推荐