【matplotlib 实战】--面积图
面积图,或称区域图,是一种随有序变量的变化,反映数值变化的统计图表。
面积图也可用于多个系列数据的比较。
这时,面积图的外观看上去类似层叠的山脉,在错落有致的外形下表达数据的总量和趋势。
面积图不仅可以清晰地反映出数据的趋势变化,也能够强调不同类别的数据间的差距对比。
面积图的特点在于,折线与自变量坐标轴之间的区域,会由颜色或者纹理填充。
但它的劣势在于,填充会让形状互相遮盖,反而看不清变化。一种解决方法,是使用有透明度的颜色,来“让”出覆盖区域。
1. 主要元素
面积图是一种用于展示数据分布或密度的图表类型,主要由数据点、面积、以及X轴和Y轴组成。
面积图可以直观地反映数据的分布情况。
面积图的主要构成元素包括:
- 数据点:表示数据的具体位置和大小
- 面积:表示数据的分布或密度
- 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 = "国民总收入(亿元)"
df[df["zbCN"]==key1].head()

key2 = "人均国内生产总值(元)"
df[df["zbCN"]==key2].head()

4.3. 分析结果可视化
国内生产总值(亿元)的面积图:
from matplotlib.ticker import MultipleLocator
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))
data = df[df["zbCN"] == key1].copy()
data["value"] = data["value"] / 10000
data = data.sort_values(by="sj")
ax.fill_between(data["sjCN"], data["value"], label="国民总收入(万亿元)")
ax.legend(loc="upper left")

上面的代码把Y轴的单位改成了万亿元,原先的亿元作为单位,数值太大。
用面积图来展示分析结果,不像折线图那样,仅仅只是变化趋势的感觉;
通过折线下的面积不断扩大,会感觉到国民总收入的总量在不断变大,且2006年之后,总量增速明显提高。
同样分析步骤,人均收入的面积图如下:
from matplotlib.ticker import MultipleLocator
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))
data = df[df["zbCN"] == key2].copy()
data = data.sort_values(by="sj")
ax.fill_between(data["sjCN"], data["value"], label=key2)
ax.legend(loc="upper left")

接下来,我们把国民总收入和人均收入放在一起看,但是,这两组数据的单位不一样(一个是万亿元,一个是元)。
所以要用到之前 matplotlib基础系列中介绍的双坐标轴技巧来展示。
from matplotlib.ticker import MultipleLocator
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_twinx = ax.twinx()
data = df[df["zbCN"] == key1].copy()
data["value"] = data["value"] / 10000
data = data.sort_values(by="sj")
ax.fill_between(data["sjCN"], data["value"],
alpha=0.5, label="国民总收入(万亿元)")
data = df[df["zbCN"] == key2].copy()
data = data.sort_values(by="sj")
ax_twinx.fill_between(data["sjCN"], data["value"],
color='r', alpha=0.2, label=key2)
ax.legend(loc="upper left")
ax_twinx.legend(loc="upper right")

两个面积图用了不同颜色,并加了透明度(即alpha 参数),不加透明度,颜色会互相覆盖。
左边的Y轴是国民总收入,右边的Y轴是人均收入。
这两个面积图几乎完全重合,正说明了国民总收入和人均收入是强相关的。
【matplotlib 实战】--面积图的更多相关文章
- Matplotlib学习---用matplotlib画面积图(area chart)
这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://book.flowingdata.com/ch05/data/us-pop ...
- 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...
- 数据可视化实例(十四):面积图 (matplotlib,pandas)
偏差 (Deviation) 面积图 (Area Chart) 通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间. 高点持续时间越长,线下面积越大. https:/ ...
- 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 ...
- Python绘制面积图
一.Python绘制面积图对应代码如下图所示 import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans ...
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- javascript曲线图和面积图Line & Area chart控件功能及下载
Line & Area chart 控件是一款新型的.可用性极强的曲线图和面积图产品.一个您网站的访问者可以放大他感兴趣的一段区域,打开和关闭数值气球,并可显示和隐藏图表.您能创建简单.堆积. ...
- 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图
折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...
- arcpy.mapping实战-专题图制图自动化
arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...
随机推荐
- Open AI ChatGPT Prompt 学习之基础篇
碎碎念 2023 年,最火的可能就是 openAI 了,其组织代表的产品 chatGTP,相信大家已经有所耳闻.不少同学已经开始着手使用,并截图晒出 ChatGPT 是多么得智能与神奇.而有的同学在使 ...
- @Inherited元注解的使用
@Inherited注解标记其他的注解用于指明标记的注解是可以被自动继承的. 注意:此注解只对注解标记的超类有效,对接口是无效的. 示例: 先声明两个用@Inherited标记的注解,@Name和@A ...
- 前端Vue自定义简单实用轮播图封装组件 快速实现轮播图
前端Vue自定义简单实用轮播图封装组件 快速实现轮播图, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13153 效果图如下: ...
- 6. Mybatis的各种查询功能
6.1.查询一个实体类对象 /** * 根据用户id查询用户信息 * @param id * @return */ User getUserById(@Param("id") ...
- Linux 图形栈从入门到放弃 --- Linux 图形相关概念简介
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 无 前言 在日常生活中,像我们常用的ubunt ...
- 让golang程序生成coredump文件并进行调试
今天讲讲怎么让golang程序生成coredump文件,并且进行调试的. 别看我写了不少golang的博客,其实我平时写c++的时间更多,所以也算和coredump是老相识了.core dump文件实 ...
- Github的一个彩蛋
点击新建仓库 项目名称为自己的昵称 下方提示意思说: 你发现了一个秘密 这是一个特别的仓库 你可以为你的首页增加README.md 就像给项目介绍一样,这是你的自我介绍 点击编辑,里面会与建议模板 以 ...
- CF1728A Colored Balls: Revisited题解
去我的Blog观看 修改时间:2022/9/11修改了格式与标点 修改时间:2022/9/13修改了个别不严谨的语句 题目大意 有 \(n\) 种颜色的球,颜色为 \(i\) 的球为 \(cnt_i\ ...
- you-get的使用
转载自: 利用Python下载:You-Get的安装及使用方法 - 宁佳兵 - 博客园 宁佳兵 所谓的光辉岁月,并不是后来闪耀的日子,而是无人问津时,对梦想的偏执. 博客园 首页 标签 GitHu ...
- linux内核vmlinux的编译过程之 --- $(kallsyms.o)详解(九)
在编译完依赖 vmlinux.o 后,链接 vmlinux 之前,构建系统还要编译依赖目标 $(kallsyms.o).接下来就对 kallsyms 进行一个简单的解释. 一. 引言 1.符号的概念 ...