Java报表技术设计讨论:双Y轴的是与非

双Y轴的图表经常被很多BI厂家当成一个高级的功能。进而引导用户感到如果有两组数值在一个图表上同时显示,用两个Y轴来控制数据的位置是一个最佳的方案。但是其实在可视化的领域,对双Y轴的使用一直有很大的争议。大部分的观点是双Y轴的使用往往弊大于利。我们在此来对这个问题做一个大致的分析,看看双Y轴是不是真正需要。
 
把两组数据同时在一个图表上显示,自然是因为需要对它们进行有效比较。但这样可能会遇到两种问题。第一,如果两组数据的单位不同,那用一个Y轴来代表这两个不同的概念无疑会让读者困惑。比如我们把盈利和折扣率放在一个图表上,一个是绝对值,另一个是百分比。用一个轴来代表在概念上就完全错误了。
 
就算两组数据使用的是同样单位,但如果它们的值的区间差别很大,用同一个轴达到的效果往往是一直数据把难以组数据压缩到不能分辨的地步。比如营业额和盈利,可能是10比1的关系。把它们放到一起,营业额会决定Y轴的区间,盈利就会被压缩成基本一条直线。
 
下面是一个图表显示了销售额和网站访客数量的数据。因为数据间大小的巨大区别,访客数据基本上没有能够显示出任何有用的信息。

双轴的解决方案是把第二组数据使用第二个Y轴。在下图里,左面的Y轴只对应销售额。访客量是通过右边新加的第二个Y轴来定位。


 第二个轴的增加,无疑解决了初始的问题。两组数据不再互相影响。它们分别使用了和它们最匹配的尺度。但两个轴的使用也带来来新的问题。其中最明显的是轴与数据间对应的模糊性。当你在看图表中的数据点时,首先需要判断它对应的是左轴还是右轴。这样就把图表的易用性明显降低。
 
    我们在上图里采取了一些改进的措施。为了便于读者克服上面提到的困难,两个轴的颜色被分别设成了和数据图形一样的颜色。这样在一定程度上降低了数据和Y轴对应的难度。
 
    我们继续来看看还有没有其它的解决方案。如果你使用的软件支持,有一种选择是把两组数据分别画在自己的图表,但把这两个图表并列排放,同时把相同的坐标轴共用。这样数据之间互不影响,读者也可以很好的比较数据的趋势。这个方案比起双轴还有不局限于两组数据的好处。
 
下图是用 StyleScope对同样数据做的并列图表。


如果我们进一步分析双轴图表的需求,我们可以得出以下结论:
 
 双轴图不能比较不同组数据之间的绝对值。因为它们是用的不同单位和刻度,不具可比性。唯一能够比较的是数据变化的趋势。因为把两组数据同时放在一个图上,我们可以比较它们变化的速度。但事实是否如此呢?我们来回顾一下双轴图的效果。


 从这个图里,我们能够判断出销售额和访客数变化的关系吗?两组数据都在增长,但总体哪一组增长的速度更快?快多少?这些都并没有很清晰的回答。
 
 Steve Few对这个问题有一个很好的建议。最好的方法来回答这个问题是不画数据的绝对值,而是画出数据变化的百分比。这样不仅直接地表达了数据的变化率,不需要用户再来估算。同时又避免了使用两个Y轴的需要。因为所有的数据都变成了百分比,我们可以用同一个轴画任意多个数据组。


 我们对比一下新的图表的效果。因为数据变化比直接被画了出来,我们不但可以马上看到访客数的增长大于营业额,我们甚至可以比较准确的找到差别的具体百分数。
 
可以说,双轴的图表在绝大部分情况下是不需要的。它在解决一个问题的同时,也带来了自己新的问题。如果我们更好地分析需求,往往可以找到更好的方案。


更多可视化设计方案请见: http://www.inetsoft.com.cn/products/StyleScope/

你可能感兴趣的:(Java报表技术设计讨论:双Y轴的是与非)