散点图绘制

2023-11-04

在Python数据分析与应用中有一个散点图的例子,做这个例子之前首先要弄清楚两个点:

  1. 对二维数组进行取数操作
  2. python中的npz文件

1. 二维数组的索引

二维数组中的每一个元素通过行和列两个坐标共同锁定,因此取某个元素的时候,需要同时给定行和列来指定某个元素。

例:假设变量x指向了一个二维数组, 那么访问指定元素的格式就是
x[行坐标, 列坐标]注意坐标号从0开始

In [38]: x = np.array([[1,2,3], [4,5,6], [7,8,9]])

# 3行3行列
In [39]: x
Out[39]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

In [40]: x[:]
Out[40]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

# 查看第一行
In [41]: x[0]
Out[41]: array([1, 2, 3])

# 查看第二行
In [42]: x[1]
Out[42]: array([4, 5, 6])

# 查看第一行
In [43]: x[0:1]
Out[43]: array([[1, 2, 3]])

# 查看前两行
In [44]: x[0:2]
Out[44]:
array([[1, 2, 3],
       [4, 5, 6]])

# 查看前两行的第一列
In [45]: x[0:2, 0]
Out[45]: array([1, 4])

2. npz文件

例子中,绘制散点图的时候,导入了一个.npz的文件。要先弄明白他是什么。
npz: 数据集压缩文件,里面会包含一个或多个数据文件,就像zip压缩包一样。

那么python如何操作npz文件呢?
首先在python中导入npz文件

# 加上allow_pickle=True防止报错: Object arrays cannot be loaded when allow_pickle=False
datas = np.load('./data/国民经济核算季度数据.npz', allow_pickle=True)

然后利用.files查看该数据集压缩包都包含哪些数据文件

print(datas.files)

# ['columns', 'values']

这里显示该数据集中有两个数据文件,columnsvalues

之后就可以通过name = datas['columns']赋值,此时name对象就是columns数据对象,然后对数据集对象name进行操作即可。


3. 散点图的绘制

import numpy as np
import matplotlib.pyplot as plt

# 散点图函数scatter
plt.rcParams['font.sans-serif'] = 'SimHei'

datas = np.load('./data/国民经济核算季度数据.npz', allow_pickle=True)
# Object arrays cannot be loaded when allow_pickle=False
"""
查看npz中的数据集
以npz结尾的数据集是压缩文件,里面还有其他的文件
可通过 npz对象名.files查看npz都包含了哪些数据文件
print(datas.files)

输出其中的一个数据集查看其中的数据
x = datas['columns']
print(x)
"""

# print(datas['columns'])
# print(datas['values'])

name = datas['columns']
values = datas['values']

# 创建画布
plt.figure(figsize=(20, 8), dpi=80)
plt.scatter(values[:, 0], values[:, 2], marker='o')
# x 1-69
# y 与x对应也有70个值
'''
下面ticks虽然将刻度线化成4个一组,  但是散点图的数据是由scatter中的x和y决定的
因此,最终的结果是四个x及对应的y为一组, 
即 最终的结果是,图示的刻度是4(有xticks决定),但是画图的精度是1(有scatter中的x y决定,x是one by one,因此y也是one by one)
'''

plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim((0, 225000))
plt.xticks(range(0, 70, 4), values[range(0, 70, 4), 1], rotation=45)
# roration 代表坐标中label的旋转角度
# plt.xticks(range(0, 70, 4))
plt.title('2000 ~ 2017年各季度国民生产总值散点图')
plt.show()

在这里插入图片描述

这里解释两个比较难理解的点:
首先是图像的绘制过程:
metaplotlib绘制图像采用的是描点法,即给出x和y的对应关系以及x的取值,然后通过计算y值进行描点。

而散点图的绘制依然如此,通过`scatter(x, y)`给出x和y,对于代码中`plt.scatter(values[:, 0], values[:, 2], marker='o')`

x参数接收的是`values`这个二维数组中所有行的第1列,因此x的最终取值是1-69即69个数字。

而y的取值是`values`这个二维数组中所有行中的第3列。

即最终的绘图结果是x和y一一对应的69个x对应了69个y点。

然后看xticks,plt.xticks(range(0, 70, 4), values[range(0, 70, 4), 1], rotation=45)

第一个参数range(0, 70, 4)表示刻度的精度,即x的精度为0, 4, 8…
第二个参数values[range(0, 70, 4), 1],表示取出values二维数组中第0, 4, 8…行中的第2列,作为x轴每个刻度的标注。
rotation表示横坐标标注的旋转角度

因此, 虽然在绘图的时候,x是从1-69 one by one的(y与x对应),但是xticks将x轴以四个x值为一组,那么最终的显示结果就是每四个x为一个精度,即你会看到每个精度上有4个点,但其实是将其他三个x隐藏了,没有显示在刻度线上而已。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

散点图绘制 的相关文章

随机推荐

  • 知识图谱的应用领域

    1 3 知识图谱的价值 知识图谱最早的应用是提升搜索引擎的能力 随后 知识图谱在辅助智能问答 自然语言理解 大数据分析 推荐计算 物联网设备互联 可解释性人工智能等多个方面展现出丰富的应用价值 1 辅助搜索 互联网的终极形态是万物的互联 而
  • [VS Code]-代码高亮设置

    代码高亮设置 在vscode 中对 选中的代码片段高亮颜色设置 和 所在当前行高亮提示设置 workbench colorCustomizations 2 写配置代码 workbench colorCustomizations editor
  • ThreadLocal从变量副本的角度解决多线程并发安全问题

    ThreadLocal从变量副本的角度解决多线程并发安全问题 之前我们讲的高并发场景下的线程安全问题 可以使用Synchronized同步关键字 Lock手动加锁的方式去解决 什么轻量级锁 偏向锁 重量级锁 可重入锁等等 实际上本质都是控制
  • Elasticsearch的long类型精准匹配异常?

    ES version 7 5 2 现象 通过其他字段可以查询出elasticsearch的doc数据 但通过某个long类型的字段精准匹配时不能hit GET index name search query term field value
  • 零基础上手定制谷歌浏览器插件

    文章目录 谷歌插件 核心内容简述 谷歌插件小案例 安装自定义谷歌插件 结语 谷歌插件 说起谷歌插件 相信大家应该都不陌生 比如下图就是我所安装的一些谷歌插件 而今天我所要做的不是给大家介绍有哪些好用的谷歌插件 而是给大家介绍一种快速上手自己
  • 懒汉模式的单例中对于指令重排序的规避方案

    1 双重检查的单例模式中可能会出现第一个非空判断为true 可是instance并没有初始化的情况 这种情况如果线程1去访问instance则会报异常 使用volatile关键字去声明instance可以规避2 3步的指令重排序 进而规避这
  • CMake入门指南

    CMake是一个比make更高级的编译配置工具 它可以根据不同平台 不同的编译器 生成相应的Makefile或者vcproj项目 通过编写CMakeLists txt 可以控制生成的Makefile 从而控制编译过程 CMake自动生成的M
  • python做excel自动化-Python如何控制Excel实现自动化办公

    Python如何控制Excel实现自动化办公 发布时间 2020 04 07 09 51 44 来源 亿速云 阅读 132 作者 小新 这篇文章主要给大家讲解的是Python如何控制Excel实现自动化办公 主要用到了xlsxwriter库
  • python画双坐标图_Python绘图分组双坐标柱状图(全网唯一,发布源代码),python,画,公布...

    目前在网络上没有找到现成的办法解决双坐标分组柱状图 为了画这个图 花了3小时 实现效果 源代码如下 import matplotlib pyplot as plt a 4 5 0 b 3 2 0 c 4 3 0 d 3 2 0 a 2 0
  • Hololens2项目基础开发

    目录 一 前言 二 VS2019负载安装 三 Hololens2项目环境配置 四 项目具体功能实现 五 打包部署真机测试 一 前言 Hololens2项目基础开发包含 单 双 手近距离控制物体移动旋转 双手近距离控制物体的缩放 语音功能 控
  • MATLAB中的corrcoef函数求两个向量的相关系数。

    想用MATLAB中的corrcoef函数求两个向量的相关系数 比如A 1 2 3 B 5 3 7 r corrcoef A B 可以求出相关系数是0 5 为什么两个向量的元素都要是3个以上才行 而只有两个元素的向量如A 1 2 B 5 3
  • 计算机网络笔记第二章链路层

    二 链路层和局域网 提供服务 差错检测error detection correction 共享广播信道sharing a broadcast channel 多路访问multiple access 多通信同时进行同一段链路如何使用 链路层
  • PHP之 导入excel表格时,获取日期时间变成浮点数

    读取到的时间 float 0 20833333333333 原格式 15 00 00 代码 if Request isPost file url input upfile 本地上传文件地址 读取文件内容 local file url dir
  • vsftpd下错误之:500 OOPS

    vsftpd下错误之 500 OOPS vsftpd 是在Linux发行版中最推崇的一种FTP服务器程序 vsftpd的特点 小巧轻快 安全易用等 Linux也是为人们所常用的操作系统之一 这里主要讲的是如何解决vsftpd下错误之 500
  • 信捷 XD3 PLC+TG465-XT HMI开箱

    PLC 新到手了一台信捷 XD3 60RT E 这是我摸过的继西门子 三菱之后的第三个牌子 也是第一个国产品牌 打开包装盒的第一个感觉是这台机型简直和停产多年的三菱 FX2N一模一样 就是不清楚它具体是和三菱哪个机型对标的 变化还是有的 用
  • go-zero 基础

    官网 github 开发规范 1 环境准备 1 1 goctl安装 1 2 protoc protoc gen go安装 方式一 goctl env check i f verbose 方式二 源文件安装 2 快速开始 本节主要通过对 ap
  • 误操作清空了回收站文件如何找到文件

    我们在删除文件的时候 文件都是先跑到回收站里的 这样的防止我们出现误删的情况 但往往也会出现我们要恢复删除的文件却误操作清空了回收站的情况 那么误操作清空了回收站如何找到呢 下面小编给大家分享误操作清空了回收站文件找到的方法 误操作清空了回
  • 计算样本方差时为什么除以(n-1)

    方差概念 除以n其实没错 但只适用于母体方差 总体均数已知 同样的 样本标准差也只适用于样本方差 让我们看一下这两个公式 统计学重要的研究内容之一是 用样本推测总体 具体而言 就是用样本均数和样本标准差来估计总体均数和总体标准差 而这里的估
  • 如何利用maven配置mybatis-generator自动生成mapper.xml

    首先配置pom xml文件 新增插件
  • 散点图绘制

    文章目录 1 二维数组的索引 2 npz文件 3 散点图的绘制 在Python数据分析与应用中有一个散点图的例子 做这个例子之前首先要弄清楚两个点 对二维数组进行取数操作 python中的npz文件 1 二维数组的索引 二维数组中的每一个元