2.4 作图数据的组织技巧
对于简单的图表,我们可以直接使用原始数据作图,但对于较为复杂的图表,则应该准备专门的作图数据。经过良好组织的作图数据可使图表思路更清晰,一些精巧的组织更可完成精巧的图表。
原始数据不等于作图数据
很多时候原始数据可能并不符合作图的要求,比如它是正式表格的一部分,不便因为作图需要而进行相应调整,所以很大程度上限制了图表的选择和制作。较好的做法是,我们应该建立这样一个思路和习惯,为图表准备专门的作图数据。当作图数据与原始数据松耦合的情况下,作图就有了很大的自由空间,可以根据需要对数据进行各种组织、编排、增加辅助系列等。
如果数据源是经常变化的,为提高智能性,我们可以使用链接方式,建立从原始数据到作图数据的链接,然后根据需要对作图数据进行相应的组织。这样最后的图表仍能随原始数据而变化。
作图前先将数据排序
在使用条形图、柱形图、饼图进行分类对比时,除分类名称有特殊顺序要求的情况外,专业人士一般都会先将数据进行降序或升序的排列,做出的图表也将呈现排序的效果,便于阅读和比较。
如果是在一个需要自动刷新的模型中,我们可使用一个简单的技巧,在不改动原数据的情况下,让图表实现自动排序。如质量管理中的帕累托图(Pareto Diagram),就需要具备自动排序的特性。
在图2-30中,以第5行为例:
图2-30 通过自动排序的辅助数据,让图表也具备自动排序功能
E列的公式为=C5+ROW()/100000,它在原数据后面加上一个不影响比较的小数,目的是为了区别原数据中值相同的行;
H列的公式为=LARGE($E$5:$E$13, F5),将E列的数据降序排列;
G列使用公式=INDEX($B$5:$B$13, MATCH(H5, $E$5:$E$13,0)),注意参数0指定了精确查找模式,返回相应的分类名称;
图表以G~H列为数据源,所以就具备了自动排序的功能。范例
若要数值相同的情况下先出现的排在前面,E列的公式可以写成=C5+(0.001-ROW()/100000)。
将数据分离为多个系列
为便于进行图表格式化,我们经常将一个数据系列分离为多个数据系列,对每个数据系列单独进行格式化,做出类似于条件格式的效果。一个简单、典型的用法,就是对图表中高于和低于平均水平的数据点进行区别的格式化。
图2-31中,使用IF函数将C列的原数据分离为高于平均的E列和低于平均的F列,用E~F列数据做堆积柱形图,并分别填色,就实现了图表的自动条件格式化。范例
图2-31 通过数据分离制作具备条件格式特性的图表
类似的应用方法还包括始终标识图表中的最大值或最小值,等等。
将数据错行和空行组织
通过对数据的巧妙排列和组织,可以制作一些看似无法完成的图表。以图2-32中的柱形图为例,它同时具备簇状图和堆积图的特征,Excel并没有这种复杂的图表类型,它是如何制作出来的呢?
图2-32 通过数据的错行与空行组织,可以制作一个簇状+堆积的柱形图
假设我们有图中第3~7行的数据,通过“错行”和“空行”,组织为第10~21行的形式,然后以该区域做堆积柱形图,将柱形图的分类间距设置为30%左右,就可以得到图2-32中右边的图表效果。请参见范例文件。范例
如何理解这样组织数据的原理呢?我们可以把这个图表看作一个简单的堆积柱形图,想象空隔的地方也有一个高度为0的柱子。“错行”使每个柱子或者显示C列(如第11行),或者显示D和E列(如第12行);“空行”则使相应的柱子什么都不显示(如第13行),每两个柱子之间出现一个空隔,从而达到了既堆积又簇状的样式。
在这个例子中,要将X轴分类刻度的文字与柱形图居中,需要一点技巧。我们是通过图2-33中xy辅助数据的加入,绘制一个散点图来模拟显示X轴分类刻度的文字。
图2-33 利用散点图标签让分类文字与可见柱形图居中对齐