【matplotlib 实战】--堆叠面积图
堆叠面积图和面积图都是用于展示数据随时间变化趋势的统计图表,但它们的特点有所不同。
面积图的特点在于它能够直观地展示数量之间的关系,而且不需要标注数据点,可以轻松地观察数据的变化趋势。而堆叠面积图则更适合展示多个数据系列之间的变化趋势,它们一层层的堆叠起来,每个数据系列的起始点是上一个数据系列的结束点,多数据列的展示更加直观和易于理解。
堆叠面积图观察几个数据系列随时间的变化情况时,既能看到各数据系列的走势,又能看到整体的规模,
但是,过多的系列,也会导致难以分辨。
此外,堆叠面积图展示的数据一般会有时间上的关联,当数据没有时间上的关联时,建议适用堆叠柱状图。
1. 主要元素
堆叠面积图是一种用于展示数据分类、分组和数据关联性的图表,主要由以下几个元素组成:
- 堆叠面积:表示数据的分布或密度
- 图例:图例用于说明堆叠图的绘制规则和参数
- X轴:一般是有序变量,表示数据点的变化区间
- Y轴:数据点在不同时刻的值

2. 适用的场景
堆叠面积图适用于以下分析场景:
- 类别占比比较:堆叠面积图可以用来比较不同类别在总体中的占比关系。例如,你可以使用堆叠面积图来展示销售额按产品类别的分布情况,以显示每个类别对总销售额的贡献。
- 趋势展示:堆叠面积图可以在一个图表中同时显示多个类别或组的趋势。它可以用来展示每个类别在不同时间点或区域的变化情况,并帮助分析人员观察和理解各类别之间的差异和趋势。
- 堆叠级别比较:堆叠面积图还可以用来比较不同级别的数据在总体中的占比关系。例如,你可以使用堆叠面积图来展示各部门在总体支出中的比例,以显示各个部门的相对贡献。
- 累积效果展示:堆叠面积图可以展示随着时间、地区或其他维度的推移,各组别所积累的整体效果。这对于观察累积效果的变化和趋势非常有帮助。
3. 不适用的场景
堆叠面积图不适用于以下分析场景:
- 数据重叠:如果数据中有重叠的部分,堆叠面积图会使数据难以解读和比较。当数据的堆叠部分变得模糊或不清晰时,堆叠面积图可能就无法有效地传达信息。
- 数据量变动:如果每个类别或组的数据量差别很大,堆叠面积图可能会导致视觉上的需求不平衡。数据量较大的类别或组可能会过于突出,而数据量较小的类别或组则可能被掩盖。
- 无法显示趋势:堆叠面积图在展示数据的总体趋势上相对有效,但却不适用于显示每个类别或组内部的趋势。如果你希望关注每个类别或组的个别趋势,那么使用其他图表类型如折线图可能更为合适。
- 存在负值数据:堆叠面积图假设数据都是正值,不适合用于展示包含负值的数据。这是因为堆叠面积图的堆叠效果会导致负值的表现相对模糊,难以准确表达。
4. 分析实战
这次使用三大产业的增加值来实战堆叠面积图的分析。
4.1. 数据来源
数据来源国家统计局公开数据,已经整理好的csv文件在:https://databook.top/nation/A02
本次分析使用其中的 A0201.csv 文件(国内生产总值数据)。
下面的文件路径 fp 要换成自己实际的文件路径。
fp = "d:/share/A0201.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理
过滤出三大产业的数据:
key1 = "第一产业增加值(亿元)"
key2 = "第二产业增加值(亿元)"
key3 = "第三产业增加值(亿元)"
df = df[(df["zbCN"] == key1)
| (df["zbCN"] == key2)
| (df["zbCN"] == key3)]
df

4.3. 分析结果可视化
绘制三大产业的堆叠面积图:
from matplotlib.ticker import MultipleLocator
key1 = "第一产业增加值(亿元)"
key2 = "第二产业增加值(亿元)"
key3 = "第三产业增加值(亿元)"
val1 = df[(df["zbCN"] == key1)].sort_values("sj")
val2 = df[(df["zbCN"] == key2)].sort_values("sj")
val3 = df[(df["zbCN"] == key3)].sort_values("sj")
with plt.style.context("seaborn-v0_8"):
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.xaxis.set_major_locator(MultipleLocator(4))
ax.xaxis.set_minor_locator(MultipleLocator(2))
ax.stackplot(
val1["sjCN"],
[val1["value"], val2["value"], val3["value"]],
labels=[key1, key2, key3],
alpha=0.8,
)
ax.legend(loc="upper left")

各个数据集在堆叠面积图中不会重合,
所以不仅可以看出各个产业的增长情况,还能看出整体的增长主要来自哪个产业的影响。
从分析结果可以看出,我国的经济增长主要来自于第二,第三产业的增长。
这个结果和之前的文章中关于人口的分析也是相吻合的,在那个文章中,我们发现农业人口大量减少,城镇人口大量增加。
【matplotlib 实战】--堆叠面积图的更多相关文章
- matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图
一.柱状图 1.通过obj.plot() 柱状图用bar表示,可通过obj.plot(kind='bar')或者obj.plot.bar()生成:在柱状图中添加参数stacked=True,会形成堆叠 ...
- Python交互图表可视化Bokeh:4. 折线图| 面积图
折线图与面积图 ① 单线图.多线图② 面积图.堆叠面积图 1. 折线图--单线图 import numpy as np import pandas as pd import matplotlib.py ...
- 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...
- Matplotlib学习---用matplotlib画面积图(area chart)
这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://book.flowingdata.com/ch05/data/us-pop ...
- 数据可视化实例(十四):面积图 (matplotlib,pandas)
偏差 (Deviation) 面积图 (Area Chart) 通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间. 高点持续时间越长,线下面积越大. https:/ ...
- Python绘制面积图
一.Python绘制面积图对应代码如下图所示 import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans ...
- javascript曲线图和面积图Line & Area chart控件功能及下载
Line & Area chart 控件是一款新型的.可用性极强的曲线图和面积图产品.一个您网站的访问者可以放大他感兴趣的一段区域,打开和关闭数值气球,并可显示和隐藏图表.您能创建简单.堆积. ...
- 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图
折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...
- Python学习-使用matplotlib画动态多图
最近常常使用matplotlib进行数学函数图的绘制,可是怎样使用matplotlib绘制动态图,以及绘制动态多图.直到今天才学会. 1.參考文字 首先感谢几篇文字的作者.帮我学会了怎样绘制.大家也能 ...
- HighCharts之2D数值带有百分数的面积图
HighCharts之2D数值带有百分数的面积图 1.HighCharts之2D数值带有百分数的面积图源码 AreaPercentage.html: <!DOCTYPE html> < ...
随机推荐
- 【LeetCode】Find Pivot Index #724 Rust Solution
给定一个整数类型的数组 nums,请编写一个能够返回数组 "中心索引" 的方法.我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和.如果数 ...
- 前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件
前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件 , 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13148 效果 ...
- macOS 系统 Kafka 快速入门
Kafka 的核心功能是高性能的消息发送与高性能的消息消费.以下是 Kafka 的快速入门教程. 下载并解压缩 Kafka 二进制代码压缩文件 打开 Kafka 官网的下载地址,可以看到不同版本的 K ...
- 每日一题力扣 1262 https://leetcode.cn/problems/greatest-sum-divisible-by-three/
. 题解 这道题目核心就算是要知道如果x%3=2的话,应该要去拿%3=1的数字,这样子才能满足%3=0 贪心 sum不够%3的时候,就减去余数为1的或者余数为2的 需要注意 两个余数为1会变成余数为2 ...
- Unity的IActiveBuildTargetChanged:深入解析与实用案例
Unity IActiveBuildTargetChanged Unity IActiveBuildTargetChanged是Unity引擎中的一个非常有用的功能,它可以让开发者在切换构建平台时自定 ...
- 一个高性能、低内存文件上传流.Net组件
推荐一个用于轻松实现文件上传功能的组件. 项目简介 一个基于 .NET 平台的开源项目,提供了一个简单易用的 API,可以在 Web 应用程序中快速集成文件上传功能. 优化多部分流式文件上传性能:减少 ...
- spring-boot-plus2.7.12版本重磅发布,三年磨一剑,兄弟们等久了,感谢你们的陪伴
Everyone can develop projects independently, quickly and efficiently! spring-boot-plus是一套集成spring bo ...
- Raw数据相关概念
什么是"RAW"? 维基百科的字面解释是:原始图像文件包含从数码相机.扫描器或电影胶片扫描仪的图像传感器所处理数据.RAW文件包含创建一个可视图像所必须的相机传感器数据信息. 通俗 ...
- 单行编辑控件不能有多行文本 matlab
单行编辑控件不能有多行文本 matlab 解决方法:双击进入控件,把max参数改2以及以上
- Blazor前后端框架Known-V1.2.9
V1.2.9 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Gith ...