面积图,或称区域图,是一种随有序变量的变化,反映数值变化的统计图表。

面积图也可用于多个系列数据的比较。
这时,面积图的外观看上去类似层叠的山脉,在错落有致的外形下表达数据的总量和趋势。
面积图不仅可以清晰地反映出数据的趋势变化,也能够强调不同类别的数据间的差距对比。

面积图的特点在于,折线与自变量坐标轴之间的区域,会由颜色或者纹理填充。
但它的劣势在于,填充会让形状互相遮盖,反而看不清变化。一种解决方法,是使用有透明度的颜色,来“让”出覆盖区域。

1. 主要元素

面积图是一种用于展示数据分布或密度的图表类型,主要由数据点、面积、以及X轴和Y轴组成。
面积图可以直观地反映数据的分布情况。

面积图的主要构成元素包括:

  1. 数据点:表示数据的具体位置和大小
  2. 面积:表示数据的分布或密度
  3. X轴:一般是有序变量,表示数据点的变化区间
  4. 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 实战】--面积图的更多相关文章

  1. Matplotlib学习---用matplotlib画面积图(area chart)

    这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://book.flowingdata.com/ch05/data/us-pop ...

  2. 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图

    1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...

  3. 数据可视化实例(十四):面积图 (matplotlib,pandas)

    偏差 (Deviation) 面积图 (Area Chart) 通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间. 高点持续时间越长,线下面积越大. https:/ ...

  4. matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图

    一.柱状图 1.通过obj.plot() 柱状图用bar表示,可通过obj.plot(kind='bar')或者obj.plot.bar()生成:在柱状图中添加参数stacked=True,会形成堆叠 ...

  5. Python交互图表可视化Bokeh:4. 折线图| 面积图

    折线图与面积图 ① 单线图.多线图② 面积图.堆叠面积图 1. 折线图--单线图 import numpy as np import pandas as pd import matplotlib.py ...

  6. Python绘制面积图

    一.Python绘制面积图对应代码如下图所示 import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans ...

  7. python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

    最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...

  8. javascript曲线图和面积图Line & Area chart控件功能及下载

    Line & Area chart 控件是一款新型的.可用性极强的曲线图和面积图产品.一个您网站的访问者可以放大他感兴趣的一段区域,打开和关闭数值气球,并可显示和隐藏图表.您能创建简单.堆积. ...

  9. 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图

    折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...

  10. arcpy.mapping实战-专题图制图自动化

    arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...

随机推荐

  1. 2023安洵杯web两道WP

    Web CarelessPy 在首页提示存在eval和login的路由,在download存在任意文件下载 访问eval可以读取目录下的文件,知道/app/pycache/part.cpython-3 ...

  2. ELK8.8部署安装并配置xpark认证

    ELK8.8部署安装并配置xpark认证 介绍   主要记录下filebeat+logstash+elasticsearch+kibana抽取过滤存储展示应用日志文件的方式:版本基于8.8,并开启xp ...

  3. PostgreSQL 12 文档: 部分 III. 服务器管理

    部分 III. 服务器管理 这部份覆盖了PostgreSQL数据库管理员感兴趣的主题.包括软件安装.搭建和配置一个服务器.管理用户和数据库以及维护任务.任何想要运行一个PostgreSQL服务器的人( ...

  4. 使用GoEasy快速实现Android原生app中的websocket消息推送

    摘要: GoEasy带来了一项令开发者振奋的消息:全面支持Android原生平台!现在,您可以在Android应用中使用最酷炫的实时通信功能,借助GoEasy轻松实现消息的发送和接收.本文将带您领略G ...

  5. 如何洞察 .NET程序 非托管句柄泄露

    一:背景 1. 讲故事 很多朋友可能会有疑问,C# 是一门托管语言,怎么可能会有非托管句柄泄露呢? 其实一旦 C# 程序与 C++ 语言交互之后,往往就会被后者拖入非托管泥潭,让我们这些调试者被迫探究 ...

  6. java后台导出表格文件

    Java类所需jar包 import java.io.File; import java.io.IOException; import java.io.InputStream; import java ...

  7. 【转载】Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)

    原文信息: 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作 ...

  8. EasyExcel · 写excel

    原文地址 通用数据生成 后面不会重复写 private List<DemoData> data() { List<DemoData> list = ListUtils.newA ...

  9. Java并发(十三)----共享存在的问题

    1.小故事 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快 小南.小女(不同的线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用 但小南不能一天24小时使用算盘 ...

  10. windows传输文件到linux

    PFSTP 打开该软件,在安装putty自带的 连接服务器 open 192.168.142.131 按提示输入账户密码 传送文件 put C:\Users\13662\nifi-1.13.2-bin ...