气泡图是一种多变量的统计图表,可以看作是散点图的变形。
与散点图不同的是,每一个气泡都表示三个维度的数据,除了像散点图一样有X,Y轴,气泡的大小可以表示另一个维度的数据。
例如,x轴表示产品销量,y轴表示产品利润,气泡大小代表产品市场份额百分比。

它可以帮助我们发现变量之间的模式、趋势和异常值。
通过气泡的大小和颜色,我们可以同时比较多个变量的值,并且可以快速识别出具有较大或较小数值的数据点。

1. 主要元素

气泡图通常用于展示和比较数据之间的关系和分布,可以展示三维(X,Y轴,气泡大小),甚至四维数据(X,Y轴,气泡大小,气泡颜色)之间的关系。
它的主要元素包括:

  1. 横轴和纵轴:气泡图通常使用横轴和纵轴来表示两个变量的值。这些变量可以是数值型、分类型或时间型。
  2. 气泡大小:气泡图通过气泡的大小来表示第三个变量的值。通常,气泡的大小与该变量的值成正比,较大的气泡表示较大的数值。
  3. 气泡颜色:气泡图还可以使用颜色来表示第四个变量的值。不同的颜色可以用于区分不同的数据类别或者表示不同的数值范围。

2. 适用的场景

气泡图适用的分析场景包括:

  • 多变量关系分析:气通过横轴、纵轴和气泡大小,可以同时呈现三个变量的信息,帮助我们发现变量之间的模式、趋势和相关性。
  • 数据聚类和分类:气泡颜色可以用于区分不同的数据类别或者表示不同的数值范围。这使得气泡图在数据聚类和分类分析中非常有用,可以帮助我们识别出不同群组或类别之间的差异和相似性。
  • 比较分析:用于比较不同类别或不同时间点的数据。通过气泡的大小和颜色,我们可以直观地比较多个变量的值,快速识别出具有较大或较小数值的数据点,从而帮助我们理解数据的分布和变化情况。
  • 异常值检测:帮助我们快速识别出具有异常数值的数据点。通过比较气泡的大小和颜色,我们可以发现与其他数据点相比具有明显不同数值的数据,从而帮助我们识别和分析异常情况。

3. 不适用的场景

气泡图在以下情况可能不适用:

  • 大数据集:当数据集非常庞大时,气泡图可能不适合展示所有数据点,因为过多的气泡可能会导致图表混乱不清。
  • 单变量分析:如果只需要分析单个变量的分布或趋势,气泡图可能过于复杂,不是最佳选择。
  • 离散数据:如果数据是离散的,而不是连续的数值型数据,气泡图可能无法有效地展示变量之间的关系。

4. 分析实战

本次使用气泡图分析 2021年中欧之间的贸易数据情况。
气泡图可以分析三个维度的对比:

  1. 进口额:横轴
  2. 出口额:纵轴
  3. 进出口总额:气泡大小

4.1. 数据来源

数据来源国家统计局公开的数据,整理好的数据可从下面的地址下载:
https://databook.top/nation/A06

用到的三个统计数据分别是:

  1. 中国同欧洲各国(地区)进出口总额:A06050103.csv
  2. 中国向欧洲各国(地区)出口总额:A06050203.csv
  3. 中国从欧洲各国(地区)进口总额:A06050303.csv
fp = "d:/share/data/A06050103.csv"
df_total = pd.read_csv(fp) fp = "d:/share/data/A06050203.csv"
df_output = pd.read_csv(fp) fp = "d:/share/data/A06050303.csv"
df_input = pd.read_csv(fp)

4.2. 数据清理

数据清理步骤主要包括:

  1. 提取每个文件中2021年的数据
  2. 去除中欧整体的交易额数据,只保留和各个国家之间的贸易数据
  3. 合并进出口总额,进口额,出口额到一个数据集中
  4. 过滤多余字符,生成一个表示国家的数据列
#提取每个文件中2021年的数据
df = df_total[df_total["sj"] == 2021] #去除中欧整体的交易额数据,只保留和各个国家之间的贸易数据
data = df.loc[2:, ["zbCN", "value"]]
#重新映射列的名称
data = data.rename(columns={"zbCN":"country", "value": "total"}) #过滤多余字符,生成一个表示国家的数据列
data["country"] = data["country"].str.replace("中国同", "", regex=False)
data["country"] = data["country"].str.replace("进出口总额(万美元)", "", regex=False) df = df_input[df_input["sj"] == 2021]
#合并进出口总额,进口额,出口额到一个数据集中
data["input"] = df.loc[2:, ["value"]] df = df_output[df_output["sj"] == 2021]
#合并进出口总额,进口额,出口额到一个数据集中
data["output"] = df.loc[2:, ["value"]] data.head(5)

和欧洲的总体交易数据位于每个数据集的第一行,所用用 loc[2:, ...] 来过滤。

4.3. 分析结果可视化

with plt.style.context("seaborn-v0_8"):
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) ax.scatter(
data["input"] / 10000,
data["output"] / 10000,
data["total"] / 10000,
c = np.random.rand(len(data)),
cmap="Accent",
alpha=0.6,
)
ax.set_xlabel("进口额(亿元)")
ax.set_ylabel("出口额(亿元)") x = np.linspace(0, 1400, 7)
y = x
ax.plot(x, y, '-')

从图中可以看出:
横轴是进口额,纵轴是出口额,气泡越大,进出口总额越大。

中间的蓝色线表示进出口额度一样,可以看出,大部分国家都在蓝色线之上,
说明我国和大部分欧洲的贸易都是顺差

左下角有很多小气泡,说明和大部分国家之间的进出口贸易额不高,也许是欧洲的小国家很多的缘故。

【matplotlib 实战】--气泡图的更多相关文章

  1. (转)matplotlib实战

    原文:https://www.cnblogs.com/ws0751/p/8361330.html https://www.cnblogs.com/ws0751/p/8313017.html---mat ...

  2. matplotlib实战

    plt.imshow(face_image.mean(axis=2),cmap='gray') 图片灰度处理¶   size = (m,n,3) 图片的一般形式就是这样的 rgb 0-255 jpg图 ...

  3. python学习之matplotlib实战2

    import numpy as np import matplotlib.pyplot as plt def main(): #scatter fig = plt.figure() ax = fig. ...

  4. python学习之matplotlib实战

    import numpy as np def main(): # print("hello") # line import matplotlib.pyplot as plt x = ...

  5. Matplotlib学习---用matplotlib画散点图,气泡图(scatter plot, bubble chart)

    Matplotlib里有两种画散点图的方法,一种是用ax.plot画,一种是用ax.scatter画. 一. 用ax.plot画 ax.plot(x,y,marker="o",co ...

  6. 第一章:AI人工智能 の 数据预处理编程实战 Numpy, Pandas, Matplotlib, Scikit-Learn

    本课主题 数据中 Independent 变量和 Dependent 变量 Python 数据预处理的三大神器:Numpy.Pandas.Matplotlib Scikit-Learn 的机器学习实战 ...

  7. 《机器学习实战-KNN》—如何在cmd命令提示符下运行numpy和matplotlib

    问题背景:好吧,文章标题是瞎取得.平常用cmd运行python代码问题不大,我在学习<机器学习实战>这本书时,发现cmd无法运行import numpy as np以及import mat ...

  8. 数据可视化基础专题(十二):Matplotlib 基础(四)常用图表(二)气泡图、堆叠图、雷达图、饼图、

    1 气泡图 气泡图和上面的散点图非常类似,只是点的大小不一样,而且是通过参数 s 来进行控制的,多的不说,还是看个示例: 例子一: import matplotlib.pyplot as plt im ...

  9. 数据可视化实例(五): 气泡图(matplotlib,pandas)

    https://datawhalechina.github.io/pms50/#/chapter2/chapter2 关联 (Correlation) 关联图表用于可视化2个或更多变量之间的关系. 也 ...

  10. python实战学习之matplotlib绘图续

    学习完matplotlib绘图可以设置的属性,还需要学习一下除了折线图以外其他类型的图如直方图,条形图,散点图等,matplotlib还支持更多的图,具体细节可以参考官方文档:https://matp ...

随机推荐

  1. XTTS系列之五:警惕大文件表空间

    在上篇<XTTS系列之四:迷迷糊糊的并行度>验证之后,就让测试组在RMAN配置中设置好正确的并行.然后重新将备份任务执行,平均速度直接由之前的150MB/s提升为1200MB/s.优化效果 ...

  2. SpringIoc容器之Aware

    1 前言 Aware是Spring提供的一个标记超接口,指示bean有资格通过回调样式的方法由Spring容器通知特定的框架对象,以获取到容器中特有对象的实例的方法之一.实际的方法签名由各个子接口确定 ...

  3. 洛谷 T356695 文字处理软件(重置版)

    很简单了啊! 说普及- 我都不信 作者(也就是我)链接:https://www.luogu.com.cn/problem/T356695 好好想想!!!! 题目! 文字处理软件(重置版) 题目背景 A ...

  4. jquery中for循环一共几种

    $.each()  第一个参数是循环的对象 , 第二个参数对对象中的每一个元素 执行 function函数 ,function 的第一个参数 i 是索引,item 是 循环对象中的每一个元素.

  5. 手写promise之分步解析

    promise是es6推出适用于异步请求的构造函数,帮助解决回调地狱的问题,以下内容将自定义实现promise,只包括基本使用,所以一些边界情况考虑没有在内. 如果对promise用法还不熟悉的朋友可 ...

  6. [Python]树基础

    关于树 树是一种数据结构,由n个有限节点组成的一个具有层次关系的集合.二叉树则是每个节点最多有两个子树的树结构.二叉树一般有以下性质: 二叉树第k层上的节点数目最多为 \(2^{k-1}\) 深度为 ...

  7. 【技术实战】Vue功能样式实战【七】

    需求实战一 样式展示 代码展示 <template> <transition name="fade-in" appear> <ARow v-if=&q ...

  8. 【pytorch】目标检测:YOLO的基本原理与YOLO系列的网络结构

    利用深度学习进行目标检测的算法可分为两类:two-stage和one-stage.two-stage类的算法,是基于Region Proposal的,它包括R-CNN,Fast R-CNN, Fast ...

  9. Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇记录了用docker搭建ElasticS ...

  10. 搭建LNMP 架构

    搭建LNMP 架构 环境准备 lnmp 需要 安装 nginx mysql php 软件 #关闭防火墙 systemctl disable --now firewalld #临时禁用SELinux的强 ...