散点图,又名点图、散布图、X-Y图,是将所有的数据以点的形式展现在平面直角坐标系上的统计图表。

散点图常被用于分析变量之间的相关性。
如果两个变量的散点看上去都在一条直线附近波动,则称变量之间是线性相关的;
如果所有点看上去都在某条曲线(非直线)附近波动,则称此相关为非线形相关的;
如果所有点在图中没有显示任何关系,则称变量间是不相关的。

散点图一般需要两个不同变量,一个沿x轴绘制,另一个沿y轴绘制。
众多的散点叠加后,有助于展示数据集的“整体景观”,从而帮助我们分析两个变量之间的相关性,或找出趋势和规律。

1. 主要元素

散点图的主要元素包括:

  1. 横轴:表示自变量。
  2. 纵轴:表示因变量。
  3. 数据点:每个数据点代表一个观测值,它在坐标轴上的位置表示两个变量的对应取值。
  4. 趋势线:趋势线是通过数据点拟合出的一条线,用于显示变量之间的趋势或关联性。

2. 适用的场景

散点图适用的分析场景包括:

  • 变量关系探索:帮助我们观察和理解两个变量之间的关系。通过观察数据点的分布情况和趋势线的形状,可以判断变量之间是否存在线性关系、非线性关系或无关系。
  • 趋势分析:用于分析趋势和预测。通过观察趋势线的方向和斜率进行预测。
  • 群体分析:散点图可以帮助我们观察和识别数据点的聚类情况。
  • 异常值检测:散点图可以用于检测异常值或离群点。

3. 不适用的场景

散点图不适用的分析场景包括:

  1. 时间序列分析:散点图主要用于展示两个变量之间的关系,对于时间序列数据,通常使用折线图或其他适合展示时间变化的图表类型。
  2. 多变量分析:散点图只能展示两个变量之间的关系,对于多个变量之间的关系分析,需要使用其他图表类型,如散点矩阵、平行坐标图等。
  3. 分布分析:散点图主要关注变量之间的关系,而不是变量本身的分布情况。如果需要分析变量的分布特征,可以使用直方图、箱线图等图表类型。

4. 分析实战

散点图适合寻找两个变量之间的关系,本次分析 **空气污染 **方面的数据情况。

4.1. 数据来源

数据来源国家统计局公开的数据。
用到的两个统计数据分别是:

  1. 工业污染治理中,每年治理废气的投资额
  2. 废气中二氧化硫的每年排放量情况

整理好的数据可从下面的地址下载:
https://databook.top/nation/A0C
A0C05.csv(废气中主要污染物排放) 和 A0C0I.csv(工业污染治理投资) 两个文件。

fp = "d:/share/data/A0C05.csv"

df1 = pd.read_csv(fp)
df1

fp = "d:/share/data/A0C0I.csv"

df2 = pd.read_csv(fp)
df2

4.2. 数据清理

2022年数据是空的,所以从两个文件中分别提取 2012~2021年期间,汇总所有废气排放量(万吨)和**治理废气项目完成投资(万元) **两类数据绘制图形。

#所有废气的排放量
data_x = df1[(df1["sj"] >= 2012) &
(df1["sj"] <= 2021)]
data_x = data_x.loc[:, ["sj", "value"]]
data_x = data_x.groupby("sj").sum("value") #治理废气项目投资 A0C0I03是治理废气投资的编号
data_y = df2[(df2["sj"] >= 2012) &
(df2["sj"] <= 2021) &
(df2["zb"] == "A0C0I03")]
data_y = data_y.sort_index(ascending=False)

4.3. 分析结果可视化

with plt.style.context("seaborn-v0_8"):
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.6, 0.6]) ax.scatter(data_x["value"], data_y["value"]/10000)
ax.set_xlabel("废气排放量(万吨)")
ax.set_ylabel("治理废气项目完成投资(亿元)")

从分析结果图中来看,排放的废气量越大的时候,治理的投资费用也越高。

但是右下角红色框内有一个异常值,那个是2012年的数据。
估计那时候还不太重视环保,所以即使那时候废气排放量大,用于治理废气的投资费用也不高。

【matplotlib 实战】--散点图的更多相关文章

  1. Python数据可视化——使用Matplotlib创建散点图

    Python数据可视化——使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 Matplotlib简述: Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D ...

  2. python matplotlib.pyplot 散点图详解(1)

    python matplotlib.pyplot散点图详解(1) 一.创建散点图 可以用scatter函数创建散点图 并使用show函数显示散点图 代码如下: import matplotlib.py ...

  3. python matplotlib.pyplot 散点图详解(2)

    python matplotlib.pyplot 散点图详解(2) 上期资料 一.散点图叠加 可以用多个scatter函数叠加散点图 代码如下: import matplotlib.pyplot as ...

  4. 《机器学习实战》2.2.2分析数据:使用matplotlib创建散点图

    #输出散点图 def f(): datingDataMat,datingLabels = file2matrix("datingTestSet3.txt") fig = plt.f ...

  5. 2.matplotlib画散点图

    2.1.身高和体重实例 import matplotlib.pyplot as plt height = [161,162,163,164,165] weight = [50,60,70,80,90] ...

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

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

  7. 使用matplotlib绘制散点图

    在matplotlib中使用函数 matplotlib.pyplot.scatter 绘制散点图,matplotlib.pyplot.scatter的函数签名如下: matplotlib.pyplot ...

  8. matplotlib绘制散点图

    参考自Matplotlib Python 画图教程 (莫烦Python)(10)_演讲•公开课_科技_bilibili_哔哩哔哩 https://www.bilibili.com/video/av16 ...

  9. matplotlib之散点图

    环境:windows系统,anaconda3 64位,python 3.6 1.初认识 基本代码如下: import numpy as np import matplotlib.pyplot as p ...

  10. 2. matplotlib绘制散点图

    与绘制直线图的唯一区别:plt.scatter # coding=utf-8 from matplotlib import pyplot as plt from matplotlib import f ...

随机推荐

  1. Linux下C语言实现贪吃蛇

    简单记录下贪吃蛇小游戏. 以下是源码: 1 #include <curses.h> 2 #include <stdlib.h> 3 #include <pthread.h ...

  2. 记一次DNS问题排查

    一.问题:域名flow.nzkong.com解析很慢: 排查过程 抓包分析:tcpdump -i eth0 -n -s 500 port domain 1 14:40:44.548553 IP 10. ...

  3. Educational Codeforces Round 151 (Rated for Div. 2) A-D

    A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { int n, ...

  4. golang channel 未关闭导致的内存泄漏

    现象 某一个周末我们的服务 oom了,一个比较重要的job 没有跑完,需要重跑,以为是偶然,重跑成功,因为是周末没有去定位原因 又一个工作日,它又oom了,重跑成功,持续观察,job 在oom之前竟然 ...

  5. CPU摸鱼被抓,上了一个新技术!

    我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴. 我们CPU的任务就是执行程序员编写的程序,只不过程序员编写的是高级语言代码,而我们执行的是这些代码被 ...

  6. ch-manager.sh

    [root@dev-clickhouse1 ~]# cat ch-manager.sh #!/bin/bash ch_arr=(ch1-shard1-main ch1-shard2-sub ch2-s ...

  7. 使用gulp.js打包layuiAdmin

    安装nvm 在nvm目录下,找到settings.txt,追加以下两行加速nvm(淘宝镜像)node_mirror: https://npm.taobao.org/mirrors/node/npm_m ...

  8. 用 Tensorflow.js 做了一个动漫分类的功能(一)

    前言: 浏览某乎网站时发现了一个分享各种图片的博主,于是我顺手就保存了一些.但是一张一张的保存实在太麻烦了,于是我就想要某虫的手段来处理.这样保存的确是很快,但是他不识图片内容,最近又看了 mobil ...

  9. 七 APPIUM Android 定位方式(转)

    1.定位元素应用元素 1.1通过id定位元素 Android里面定位的id一般为resrouce-id: 代码可以这样写: WebElement element = driver.findElemen ...

  10. 个人用C#编写的壁纸管理器 - 开源研究系列文章

    今天介绍一下笔者自己用C#开发的一个小工具软件:壁纸管理器. 开发这个小工具的初衷是因为Windows操作系统提供的功能个人不满意,而且现在闲着,所以就随意写了个代码.如果对读者有借鉴参考作用就更好了 ...