办公小浣熊
Raccoon - AI 智能助手

ai 柱状图如何展示数据的层级关系

柱状图是怎么把数据的层级关系"看得见"的

说实话,我第一次认真研究柱状图和层级关系这个问题,是在一次数据分析的汇报会上。那时候我对着屏幕上花花绿绿的图表,心里只有一个念头:这些柱子到底想告诉我什么?老板问了一个问题:"这三个层级的数据差异到底在哪里?"我支支吾吾说了半天,自己都觉得没说到点子上。

后来我开始琢磨这件事。柱状图这东西吧,看起来简单,方方正正的长条,谁都认识。但真正要用它来表达复杂的层级关系,其实门道挺多的。今天就让我用Raccoon - AI 智能助手的方式来拆解一下这个问题,看看柱状图到底是怎么把那些看不见摸不着的层级关系给"摆"在我们眼前的。

我们先搞清楚什么是数据的层级关系

说白了,层级关系就是数据之间有"大小""高低""包含与被包含"这种层层叠叠的联系。举个例子可能会更清楚。

比如你是一家电商公司的运营,你手里有一份销售数据。总体销售额是一个大数字,这个大数字是由各个省份的销售额组成的,每个省份的销售额又是由各个城市的销售额组成的。这,就是层级关系。再比如一个互联网产品的用户数据,总用户数下面分活跃用户和不活跃用户,活跃用户里又分高频使用、中频使用、低频使用,这也是层级关系。

这种层级关系在我们生活里到处都是。公司有总部、部门、小组三层结构;学校有年级、班级、学生三个层次;甚至你家里的收纳盒,大盒子里装小盒子,小盒子里装更小的盒子,本质上也是层级结构。

问题来了,我们怎么把这些关系画出来让人一眼就看明白?柱状图就是干这个的。

最基础的层级展示:分组柱状图

分组柱状图这个名字听起来有点学术,其实你肯定见过。就是那种把不同类别的柱子并排放在一起的那种图。

举个例子,假设你有一份数据,讲的是三个地区(华东、华南、华北)在2023年和2024年的销售额。分组柱状图就会在华东这个分类下面画两个柱子,一个代表2023年,一个代表2024年,华南同理,华北也同理。这样你一眼就能看出来:华东的销售额比华南高,华北垫底,而且每个地区2024年都比2023年有增长。

这种图的好处是直观。柱子高矮一眼可辨,差异大小立刻呈现。但它也有局限,如果你的层级只有两层,比如只有地区和年份,那分组柱状图刚刚好。但如果层级再深一点,比如地区下面还有城市,城市下面还有具体产品,这个图就会变得很乱,柱子太多,看得人眼花缭乱。

我在网上看到过一些讨论分组柱状图的文章,有的说这种图适合展示"两个分类维度",这个说法我觉得挺准确的。分组的依据就是一个维度,每个组里面的柱子数量代表另一个维度,两个维度就能在一张图上同时呈现。

分组柱状图的适用场景

根据我自己的经验,分组柱状图特别适合下面这几种情况:

  • 两个对比维度都是类别型的,而且类别数量都不多。比如月份和季度,产品线和产品类型,时间跨度不太长的年份对比。
  • 你需要强调的是同类别在不同条件下的一致性或差异性。比如你想看"所有地区是否都在增长",分组柱状图就能很好地回答这个问题。
  • 数据的绝对值很重要,你需要让人精确地比较高度差异。分组柱状图的柱子高度是精确的,这比饼图那种角度估算要准确得多。

但是,如果你的类别太多,比如你有20个城市要对比,每个城市两根柱子,那就不是分组柱状图了,那叫"事故现场"。我曾经见过一张图,40根柱子挤在一起,分组都分不清谁是谁。这种情况下,你就得考虑换一种展示方式了。

进阶玩法:堆叠柱状图

堆叠柱状图是另一个常用的选择。它的特点是同一个分类的柱子不是并排站,而是叠在一起。

还是用销售额的例子。如果你要看各地区的总销售额,同时还想知道这个总销售额是怎么组成的(比如由产品A、产品B、产品C共同组成),堆叠柱状图就很适合你。华东地区一根柱子,这根柱子由三段组成,分别代表产品A、B、C的贡献。华南同理,华北也同理。

这种图的优势在于它能同时告诉你两件事:总体的大小,以及整体的构成。你不仅能比较华东和华南谁的总额更大,还能看出华东的销售额里产品A占比更高,而华南可能是产品B更强势。这种洞察用分组柱状图就比较难得到了。

不过堆叠柱状图也有它的问题。那就是:如果你要比较不同类别中某一组成部分的差异,眼睛扫起来会比较累。比如你想比较华东和华南的产品A谁卖得更多,在堆叠图上你得把两根柱子里的产品A那一段单独挑出来比,而在分组图里这两根柱子本来就是并排的。

这就是分组柱状图和堆叠柱状图的根本区别:分组图适合比较组内各成员之间的差异,堆叠图适合比较整体的总量差异,同时展示构成关系。到底用哪个,取决于你最想让人看的是什么。

百分比堆叠图:另一个变体

还有一种叫百分比堆叠图,是堆叠柱状图的近亲。在百分比堆叠图里,每个柱子的高度都被调整成一样的100%,各组成部分用百分比来表示。这样你的注意力就被集中在构成比例的差异上,而不是总量的差异上。

这个变体什么时候有用呢?当总量的差异其实不重要,或者当你想消除总量差异的干扰时。比如你比较三个地市的人口结构,每个地市的人口总数可能相差很大,但你想看的是老年人口占比、青少年人口占比这些比例关系,这时候百分比堆叠图就比普通堆叠图合适。

我记得有本讲数据可视化的书里说过,选择图表类型最重要的问题是:"你想让读者回答什么问题?"这个问题我觉得特别对。搞清楚了问题,选图就容易多了。

多层级数据的展示:嵌套/复合柱状图

现在我们来说说更复杂的情况。如果你的数据有三个层级,甚至四个层级怎么办呢?

这种情况我遇到过最头疼的一次是做一个全国性的项目分析,数据有四个维度:区域、省份、城市、产品线。老板说了一句让我至今难忘的话:"我要一张图能看到所有这些关系。"我当时心想,这怎么可能?

后来我发现,确实有办法,但需要动动脑筋。最常见的一种方法叫"嵌套"或者叫"复合",就是把大的分类用较粗的柱子表示,小的分类用嵌套在里面的细柱子表示。听起来有点抽象,我找个具体的例子说。

假设你要展示各区域的销售额,区域下面有省份,省份下面有城市。在复合柱状图里,每个区域用一根粗柱子表示,区域内部嵌套着代表各个省份的细柱子。如果还想再深入,可以在省份柱子里面再嵌套城市柱子。

这种图看起来会有点像俄罗斯套娃,大盒子里套着小盒子。但它的好处是你能同时看到所有层级的信息,而且层级之间的包含关系一目了然。

当然,这种图也有代价。首先是它会变得比较复杂,读者需要花点时间才能看懂。其次是当数据量很大的时候,嵌套层数越多,图就越难读。所以通常来说,三层嵌套已经是极限了,四层的话基本就没人能看懂了。

我查了一些资料,发现对于多层级数据,还有一种思路是"分解展示"。就是做一系列小图,每张图展示两个层级,通过点击或切换来看不同层级的详情。这种方式在交互式仪表盘里用得很多,但在静态报表里就不太方便了。

有没有办法让层级关系更直观?一些实用技巧

除了选择合适的图表类型,还有一些细节处理能让层级关系表达得更清楚。

颜色的运用

颜色在层级展示里是个很巧妙的工具。最简单的做法是:同一层级的类别用同一色系的不同深浅来表示。比如华东用浅蓝色,华北用中蓝色,华南用深蓝色。这样读者一眼就知道它们属于同一个大类别。

更高级的做法是用颜色来强调你想让读者关注的差异。比如如果你想让人特别注意某个省份的表现,可以给它用一个对比色,比如其他都是蓝色系,它用橙色。这样视觉上的突出就能引导读者的注意力。

不过颜色也不能用得太多太乱。一般来说,同一图表里使用的颜色种类最好不超过七八种,超过这个数人的眼睛就分不清了。如果你的类别实在太多,考虑把相近的类别合并,或者用渐变色带来表示连续变化。

排序的艺术

排序是个被很多人忽视的技巧。默认情况下,柱状图可能是按字母顺序或者数据录入顺序排列的。但如果你手动调整排序顺序,能让层级关系更清晰。

比如在一个堆叠柱状图里,如果把占比最大的组成部分放在最下面,占比最小的放在上面,读者看起来会更舒服。这符合大多数人的阅读习惯,从下往上看,从主体到细节。

分组柱状图里,把表现最好的组放在中间或者最左边,因为这些位置更容易被注意到。表现差一点的放边缘,这种布局能让整体信息传达更有效。

标签和注释

p>柱状图上的数据标签是个好东西。我的经验是:如果空间允许,尽量在柱子上直接标注数值。特别是当精确值很重要的时候,比如财务报告,读者不需要猜柱子高度对应多少数字,一眼就能看到。

对于有层级的数据,还可以在不同层级之间加一些视觉分隔线或者背景色块区分。比如用浅灰色背景把同一区域内的柱子框在一起,告诉读者"这些属于同一层级"。

还有一种做法是使用"缩进"或者"分组标题"。在每个组的柱子上面或旁边写上组名,组名之间有明显的缩进或对齐关系,读者一看就知道哪些柱子属于同一组。

特殊情况:时间序列的层级

时间序列数据其实也是一种层级关系,只不过它的层级是按照时间粒度来分的。比如年度数据下面有季度,季度下面有月度,月度下面有周度。

处理这种层级,柱状图有一些专门的技巧。比如"钻取"功能,就是点击某根年度柱子,能展开显示下面四个季度的柱子。在静态图里做不了交互,但可以用"小图放大"的方式,在主图旁边放一个钻取后的小图。

还有一种做法是"迷你图",在每个主柱子旁边画一排小小的趋势线或迷你柱状图,表示它下面的细分数据。这样既保持了主图的简洁,又提供了细分的参考。

我在做时间序列分析的时候,发现一个很有用的原则:不要试图在单张图里塞进所有时间层级的信息。根据你的汇报目的,选择最重要的那一层来做主图,其他层级作为补充。如果用户想看细节,他们可以要求你提供另外的图表。

哪些情况该考虑不用柱状图

说了这么多柱状图的好处,我也得公平地说说它的局限性。

当层级关系非常复杂,超过三层甚至四层的时候,柱状图不管怎么设计都会显得很乱。这时候也许树状图或者桑基图是更好的选择。这些图天生就是用来展示层级和流动关系的,视觉效果可能更合适。

当你的重点是展示各部分占整体的比例,而且这个比例关系比绝对值更重要的时候,饼图或者环形图可能更直观。虽然饼图被很多数据可视化专家批评,但它在展示"占比"这件事上确实有天然优势。

当数据之间有明确的流动或演变关系的时候,比如用户从一个环节流向下一个环节,流程图或者桑基图会比柱状图更能说明问题。柱状图擅长比较静态的状态,但不太擅长描述动态的过程。

我个人的经验是:没有哪种图表是万能的。关键是理解你的数据特点和你想传达的信息,然后选择最适合的那个。如果你自己拿不准,建议多画几种图对比一下,看看哪种最能回答你想回答的问题。

一些来自实践的心得

写了这么多,最后说几点我自己在实际工作中总结的经验吧。

第一,做图表之前一定要先想清楚"这张图要回答什么问题"。这个问题想清楚了,画图就成功了一半。很多时候我们之所以画不出好图,是因为我们根本不知道想表达什么。

第二,图表的简洁比信息的丰富更重要。一张让人一眼看懂的图,比一张信息很多但没人能看懂的图有价值得多。如果信息量大,考虑拆成多张图,而不是挤在一张图里。

第三,多看看别人是怎么画图的。网上有很多优秀的数据可视化案例,看看人家是怎么处理类似问题的。我自己就经常从别人的图表设计里学到东西。

第四,做完之后找个人问问,看他能不能看懂你想表达的意思。如果看不懂,说明设计有问题,改到能看懂为止。这个办法比任何指南都管用。

结语

柱状图看起来简单,但要真正用好它来展示层级关系,需要考虑的东西还挺多的。从分组到堆叠,从单层到多层,从静态到交互,每一种选择都有它的道理。

我觉得吧,画图这件事和写文章有点像,最重要的是"让人看懂"。技巧固然重要,但更重要的是你心里有没有想清楚要说什么。如果自己都是糊里糊涂的,再漂亮的图也传达不了信息。

希望这篇用Raccoon - AI 智能助手的方式写的东西,能给你带来一点启发。下次你需要做层级数据可视化的时候,可以想想今天聊的这些方法,选一个最适合你的场景的方案。祝你画图顺利!

附录:常见图表类型速查

图表类型 适用层级数 最适合的场景
基础柱状图 1层 单一类别的数值比较
分组柱状图 2层 两个类别维度的对比
堆叠柱状图 2层 总量对比+构成分析
百分比堆叠图 2层 构成比例对比(忽略总量)
复合柱状图 3层及以上 多层级嵌套展示
树状图 多层级 层级结构的直观展示

小浣熊家族 Raccoon - AI 智能助手 - 商汤科技

办公小浣熊是商汤科技推出的AI办公助手,办公小浣熊2.0版本全新升级

代码小浣熊办公小浣熊