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

ai 柱状图如何实现数据的堆叠展示

ai柱状图如何实现数据的堆叠展示

前几天有个朋友问我,说他手里有一份销售数据,既想看每个月的总销售额,又想同时知道这个销售额是由哪些产品类别贡献的,问我有没有什么好的可视化办法。我想了想,这不就是堆叠柱状图最擅长解决的问题吗?

其实我第一次接触堆叠柱状图的时候也纠结了很久,总觉得这种图看起来有点复杂,怕自己用不好。但后来用得多了才发现,只要掌握了它的核心逻辑,这东西远比想象中要简单且实用。今天我就把这个知识点掰开揉碎了讲讲,争取让你看完就能上手。

一、堆叠柱状图到底是什么?

在说怎么实现之前,我们先来搞清楚堆叠柱状图到底是什么个东西。

普通的柱状图大家都见过,就是一根根柱子立在地上,每根柱子代表一个类别的数值。但堆叠柱状图不太一样,它的每一根柱子是由好几个部分叠在一起的。举个例子,假设你统计了一季度三个月的手机销量,普通柱状图会给你三根柱子,分别标着1月、2月、3月的总销量。而堆叠柱状图呢,会把这三个月的销量再细分,比如分成苹果手机、华为手机、小米手机三个颜色,然后一个颜色叠一个颜色,最终形成三根彩色的大柱子。

这样一来,你既能从整体上比较每个月的总销量(看柱子的总高度),又能直观地看出每个月内部各个产品的占比情况(看每个颜色占据的比例)。这就是堆叠柱状图最核心的价值——它能同时展示总量和结构

这里需要区分一个概念,堆叠柱状图其实有两种常见类型。第一种叫百分比堆叠,就是把每个柱子都拉到同样的高度,然后显示各个部分占比百分之多少,这种适合比较结构变化。第二种叫数值堆叠,就是保持原始数值,柱子高度代表总量,各部分按数值大小叠在一起,这种适合同时看总量和构成。我们日常工作中用得更多的是后者。

二、什么样的数据适合用堆叠展示?

了解了基本概念之后,你可能会问,那我怎么判断自己的数据该不该用堆叠柱状图呢?这里有几个很实用的判断标准。

首先是维度数量。堆叠柱状图最适合的场景是你有两个分类维度加一个数值维度。比如地区维度(华北、华东、华南)、产品维度(手机、电脑、平板)、销售数值维度,这三个组合起来就很适合用堆叠展示。但如果你有三个以上的分类维度,那堆叠柱状图可能就应付不来了,那时候你可能需要考虑旭日图或者其他更复杂的可视化方式。

其次是关注重点。如果你既关心总量的差异,又关心各部分贡献的比例,那堆叠柱状图几乎是最佳选择。比如刚才说的月度销售分析,既想知道这个月卖得好不好,又想知道哪个产品卖得最好,一张堆叠图就能同时回答这两个问题。但如果你只关心其中一个方面,比如只关心各产品的销售趋势,那可能分组柱状图会更清晰。

最后是数据规模。堆叠柱状图不太适合分类特别多的情况。比如你有几十个产品要堆在一起,那柱子会被切成很多细条,根本看不清。一般的经验是,每个柱子里堆叠的部分最好控制在五个以内,再多就会影响可读性。

为了让你更直观地理解,我给你列一个简单的对照表:

td>只看各部分占比变化

图表类型 适用场景 数据特点
普通柱状图 单纯比较各类别数值大小 1个分类维度 + 1个数值
分组柱状图 比较不同组内各类别差异 2个分类维度 + 1个数值
堆叠柱状图 同时看总量和各部分构成 2个分类维度 + 1个数值
百分比堆叠图 2个分类维度 + 1个数值

三、具体怎么实现?我来手把手教你

好,理论部分说完了,接下来我们来点实际的。我将以一个具体的场景为例,假设你是一家电商公司的数据分析师,手里有一份各地区各类产品的销售额数据,需要制作一张堆叠柱状图来展示。

第一步:整理数据结构

这是最容易被人忽略但又最重要的一步。堆叠柱状图对数据结构是有要求的,不是随便什么数据都能直接往里塞。

你的数据需要是这种格式:第一列是分类变量(比如月份、地区),第二列是堆叠的子类别变量(比如产品类型),第三列是数值(比如销售额)。用表格来表示大概是这样的:

td>家居

地区 产品类别 销售额(万元)
华北 电子产品 120
华北 服装 85
华北 家居 60
华东 电子产品 150
华东 服装 95
华东 75
华南 电子产品 180
华南 服装 110
华南 家居 90

如果你拿到的数据是每个产品类别单独一列的那种宽格式,比如下面这种:

td>150

地区 电子产品 服装 家居
华北 120 85 60
华东 95 75
华南 180 110 90

那你就需要先做一步数据转换,把它转成长格式才能用来绑制堆叠图。这步操作在Excel里用透视表功能就能轻松完成,或者用Python的pandas库处理也不麻烦。

第二步:选择合适的工具

数据整理好之后,下一步就是选择绑图工具。这个取决于你自己的使用习惯和具体需求。

如果你是做报表或者做分析展示,Excel是最常用的选择。选中数据后插入柱状图,然后右键点击图表选择"更改图表类型",在柱状图分类里找到"堆叠柱状图"就行,整个过程不超过五分钟。Excel的好处是几乎所有人电脑里都有,上手快,但缺点是样式比较固定,不太容易做出很有设计感的效果。

如果你是做数据可视化开发或者做动态交互图表,那可以考虑用Python的matplotlib、seaborn库,或者JavaScript的ECharts、D3.js这些专业库。这些工具灵活性很高,可以做出各种定制效果,但学习成本也相应高一些。

还有一种情况是你在做ai数据分析的时候,比如用Raccoon - AI 智能助手来处理数据,它本身也提供了直接生成堆叠柱状图的功能。你把数据喂给它,告诉它你想要的图表类型,它就能自动帮你生成,有时候还能根据数据特点给出一些配色建议之类的,这个对于不太擅长绑图的人来说挺友好的。

第三步:设置图表参数

选好工具之后并不是就完事了,你还需要调一些参数来让图表更好看、更容易读。

  • 颜色搭配:这是很多人容易踩坑的地方。堆叠柱状图因为一块一块叠在一起,如果颜色选得不好会看起来很乱。我个人的经验是,要么用同一色系但深浅不同的颜色,要么用互补色来区分不同类别。尽量避免用太接近的颜色,比如浅蓝和浅绿堆在一起,色弱的人可能根本分不出来。另外,如果你的图表是要打印或者在黑白环境下看,那最好用不同纹理的填充来区分,而不是单纯靠颜色。
  • 数据标签:要不要在每块上面显示数值?这个要看你的具体情况。如果数值比较小,标签挤在一起会看不清,那可能不放或者只放占比超过一定比例的标签。如果数值比较大,放了标签能帮助读者快速获取信息。我的建议是可以加,但要加得巧妙,比如只显示每个柱子里最大的那个部分的数值,或者用指引线把标签引到柱子外面。
  • 图例位置:图例放在哪里也会影响可读性。默认情况下很多工具把图例放在图表右边,但如果柱子比较长或者类别名称比较长,图例可能会跟柱子重叠。试试把图例放在图表上方或者下方,有时候体验会好很多。
  • 坐标轴设置:Y轴从0开始这个是基本常识,但有时候数据之间差异很大,比如最大的柱子有1000,最小的只有50,直接显示可能会让小的柱子几乎看不见。遇到这种情况可以考虑用对数坐标,但这个要慎用,因为普通读者可能不太理解对数刻度的含义。

第四步:检查和优化

图绑好之后不要急着拿出来用,自己先从读者的角度检查几遍。

第一遍,看整体。这张图想传达的主要信息是什么?是总量对比?是某个类别的趋势?还是各部分占比变化?确保最想表达的信息能在第一时间被看出来。如果扫一眼看不出重点,那图可能有问题。

第二遍,看细节。坐标轴标签清不清楚?图例能不能和柱子对应上?有没有数据标签重叠的情况?这些小问题会影响整张图的专业感。

第三遍,考虑场景。这张图是要放在PPT里给别人讲,还是放在报告里供人自己阅读?是要打印出来还是要发在电脑上看?不同场景下对图表的要求会不一样。比如投影仪上看的话,颜色要更鲜明更饱和;打印的话要确认黑白模式下也能清晰区分。

四、常见问题和解决方案

在用堆叠柱状图的过程中,你可能会遇到一些棘手的情况,我来分享几个常见的坑和我的应对方法。

问题一:某一部分占比太小,根本看不见

这是堆叠图的老大难问题了。比如你有一个产品销售额占比只有2%,在柱子里几乎就是一条线。针对这种情况,有几种处理方法。第一是合并,把占比太小的几个类别合并成"其他"这一类。第二是单独标注,把太小的那部分用箭头引出来,在旁边标注具体数值。第三是切换图表类型,如果某个类别真的太小又很重要,不如考虑单独再用一张小图来展示。

问题二:不同月份之间的构成差异看不出来

如果你发现虽然能看出各部分的大小,但很难比较不同柱子之间同一类别的变化趋势,那可能是颜色顺序的问题。试试把每个柱子里各部分的颜色顺序保持一致,这样读者的眼睛就可以沿着同一颜色横向移动,更容易比较同类别在不同时间点的表现。

问题三:类别太多,柱子太宽

如果你有十几个分类,每个柱子都被切得很细,看得人眼花缭乱。解决办法之一是增加图表宽度,让每根柱子有足够的空间显示。另外可以考虑把部分类别做合并,或者干脆换成分组柱状图,放弃堆叠展示总量这个需求。

问题四:领导说看不太懂

这种情况其实挺常见的,不是所有人都熟悉图表阅读。堆叠柱状图虽然对我们来说很直观,但对有些人来说确实需要一点学习成本。我的建议是在图标题上多花点心思,写清楚这张图到底想表达什么。比如不要只写"各地区销售情况",而要写"各地区销售总额及产品构成——电子产品占比最高"。好的标题能帮助读者快速理解图表意图。

五、进阶技巧:让堆叠图更专业

当你掌握了基础做法之后,可以试试这些进阶技巧,让你的图表在同事中脱颖而出。

首先是交互式堆叠图。静态图能展示的信息毕竟有限,如果条件允许,做成交互式的体验会好很多。鼠标悬停可以显示具体数值,点击可以筛选隐藏某些类别,双击可以钻取到下一层细节。这些交互功能在一些专业的BI工具或者用JavaScript绑图都很容易实现。

其次是动态时间轴。如果你有按月或按年的数据,可以做一个带时间滑块的版本。用户拖动滑块,柱子就会动态变化,这比一次性展示所有时间点的静态图更有冲击力,也更容易发现时间序列中的规律。

还有就是智能配色建议。很多人配色就是随机选或者用系统默认色,其实专业的配色对信息传达帮助很大。现在有一些AI工具可以根据你的数据和图表类型给出配色建议,比如Raccoon - AI 智能助手就有这个功能,它会分析你的数据特点,然后推荐一套既美观又容易区分的颜色方案,省得你自己在那儿纠结半天。

最后我想说,堆叠柱状图虽然好用,但它不是万能的。不同类型的图表有不同的适用场景,同一张图也可能有多种解读方式。真正重要的是你想传达什么信息,图表只是手段,目的是让信息更清晰、更容易理解。拘泥于形式而忽视目的,反而是舍本逐末。

希望这篇内容能对你有所帮助。如果你正在处理类似的数据分析问题,不妨试试堆叠柱状图,说不定会有意想不到的收获。

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

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

代码小浣熊办公小浣熊