Python 绘制数据散点图

article/2025/11/5 10:40:08

🏳️‍🌈Python 有着强大的绘图库 matplotlib, 该库集成了大量的绘图函数,可以满足我们平时绝大多数的绘图需求。其中,matplotlib 库是 Python 进行可视化功能的主要软件包,matplot 本是 matlab 中的绘图库,matplotlib 其实就是在 Python 实现 matplot 的功能。

🏳️‍🌈利用 Python 绘制散点图与在 matlab 中操作类似,以数据集 fourclass 为例(数据集的获取方式见文章 Python 对数据集进行归一化处理并存储为 mat 格式的文件

🏳️‍🌈样本的两个属性值作为在平面图中的二维坐标,根据样本的标签值给散点相应的颜色,代码如下:

from scipy.io import loadmat  #导入 loadmat, 用于对 mat 格式文件进行操作
import numpy as np
import matplotlib.pyplot as plt  #导入绘图操作用到的库#读取数据得到一个字典类型数据,需要根据键名 ’data‘ 取出对应的值。
data  = loadmat(r'C:\Users\Desktop\fourclass.mat')['data']
fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)
idx_1 = np.where(data[:, -1] == 1)  # 找出标签为1的样本
idx_2 = np.where(data[:, -1] == -1)  # 找出标签为-1的样本
#绘制散点图
p1 = ax.scatter(data[idx_1, 0], data[idx_1, 1], marker='.', color='black', s=8)
p2 = ax.scatter(data[idx_2, 0], data[idx_2, 1], marker='.', color='red', s=8)
plt.show()   #显示散点图

🏳️‍🌈首先,创建一个画布,然后再调用add_subplot() 函数,111 表示这个画布中,第一行第一列中的第一个子图,add_subplot(111) 就是在创建的画布中创建第一个子图,这个子图在第一行第一列,一般只画一个图就使用 111 就可以了。

🏳️‍🌈其次,根据样本的标签找出对应的样本。fourclass 数据集是二分类数据集,如果你使用的是其他数据集,有 N 个分类,可以依此类推设置 idx_N = np.where(data[:, -1] == N) # 找出第N类

🏳️‍🌈然后,绘制散点图。以 p1 所在行的代码为例,ax.scatter() 函数第一个参数 data[idx_1, 0] 是样本的横坐标,第二个参数 data[idx_1, 1] 是样本的纵坐标,marker 表示散点的形状, color 表示颜色参数,s 表示散点的像素大小。值得注意的是,这里所绘制的散点图是二维的,碰巧我们使用的数据集也是只有两个条件属性,可以比较好的刻画样本的分布,如果你使用的数据集的条件属性大于2个,自己综合考虑选择两个代表性的属性分别作为横、纵坐标。

🏳️‍🌈最后,将创建的散点图显示在画布中,绘制的散点图如下所示:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/h7TqaiLj.shtml

相关文章

python画散点图

文章目录 前言一、散点图函数二、函数参数介绍三、代码实例总结 前言 最近在搞聚类算法,所以难免会用到一些散点图的用法,总结一下,方便以后参考。 一、散点图函数 #首先调用一下画图的库 import matplotlib.pyplot as plt plt.scatter(x, …

python绘制散点图

前言 散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。 用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间…

python绘制散点图,非常全,非常详细(已验证)

少废话,直接上代码 import matplotlib.pyplot as plt import numpy as np # 1. 首先是导入包,创建数据 n 10 x np.random.rand(n) * 2# 随机产生10个0~2之间的x坐标 y np.random.rand(n) * 2# 随机产生10个0~2之间的y坐标 # 2.创建一张figure fig …

2MSL的特点及意义

含义:2MSL是主动方在第四次挥手后进入等待时间 特点: 1、在2MSL时段中,两端的端口都不能用,除非加入SO_REUSEADDR参数&am…

TCP之2MSL

1.TCP之2MSL 1.1 MSL MSL:Maximum Segment Lifetime报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间 为什么存在MSL TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生存时间的TTL字段,并且TTL的限制是基于跳数 MSL大小…

TCP的2MSL问题

2MSL (Maximum SegmentLifetime) TIME_WAIT状态的存在有两个理由: 让4次挥手关闭流程更加可靠;4次挥手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TI…

linux内核网络TIME_WAIT

目录 四次挥手过程 出现的现象 如何查看信息 TIME_WAIT状态等待的时间 TIME_WAIT 的作用 TIME_WAIT副作用 解决方法 1、将系统值(net.ipv4.tcp_max_tw_buckets)调小 2、调低TCP_TIMEWAIT_LEN 3、SO_LINGER 4、net.ipv4.tcp_tw_reuse 5、SO_…

TCP四次挥手 2MSL TIME_WAIT详解

TCP四次挥手 & 2MSL & TIME_WAIT详解 TCP四次挥手流程各状态解析 2MSL(2倍最大报文段生成时间)2MSL (Maximum Segment Lifetime) TIME_WAIT状态的存在有两个理由该状态为什么设计在主动关闭这一方?如何正确对待2MSL TIME_WAIT? TCP四次挥手流程 【注意】只要是申请关…

网络编程知识预备(2) —— 三次握手与四次挥手、半连接状态、2MSL

参考:网络编程知识预备(2) ——三次握手与四次挥手、流量控制(滑动窗口)、拥塞控制、半连接状态、2MSL_行稳方能走远的博客-CSDN博客 目录 一、三次握手 什么是三次握手? 三次握手图解 三次握手过程解析 (1)第一次握手 &am…

2.5Modelsim

视频链接:https://v.youku.com/v_show/id_XNTkxNDg2MTEwNA.html?x&sharefromandroid&sharekey59e4c264c93de043603d938d05eb7fd10 题目:例2.5.1中2选1数据选择器的仿真步骤 原理与目的: 原理:数据选择是指经过选择&am…

TCP的四次挥手及为什么要等待2MSL

一、四次挥手的详述 1、假设Client端发起中断连接请求,也就是发送FIN报文。 2、Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以…

为什么等待2MSL

下面是TCP四次挥手的图 介绍一下上图中的主要关键字 FIN_WAIT1是主动断开连接方发出关闭请求后的状态,表示主动方(主动断开TCP连接的一方)已经没有信息要发送给被动方 CLOSED_WAIT是被动方接收到主动方的关闭请求后返回ACK响应后的状态,此时被动方应该…

释放连接:四次挥手过程?为什么要等待2MSL

储备知识:TCP报文段的首部格式(讲下面提到的): 1.FIN:用来释放一个连接。当FIN1时,表示此报文段的发送方的数据已经发送完毕,并要求释放运输连接。 2. 确认ACK(acknowledgment&#…

SAML2.0使用

最近在工作中和海外一家公司对接单点登录,用到了SAML2.0协议,目前公司的单点登录 还是比较老的CASE3.5版本,不支持SAML2,要支持也要定制优,由于后面肯定是要升级,所 以不在源码上做调整支持,单独…

TCP第四次挥手后为什么要等待2MSL后才断开链接?等待时间为什么是2MSL?

为何要等待2MSL? 1.假如第四次挥手失败了,因为丢失而未到达服务器会怎样呢?这样,服务器会一直收不到客户端的回应,也就无法得知客户端是否收到了即将要断开连接的请求。客户端此刻还蒙在鼓里,还在等待服务器…

为什么TIME_WAIT状态是2MSL?(2个原因)

为什么TIME_WAIT的时间是2MSL? 先来看看上文中TIME_WAIT状态存在的两个理由。 首先看理由1,为了可靠地实现全双工连接的终止,假设图2-5中客户端发送的最后一个ACK丢失,服务端将重传FIN,为了能够收到这个超时重传的FIN…

Time-wait状态(2MSL)

本文转自:https://blog.csdn.net/overstack/article/details/8833894,尊重原创 三次握手四次挥手图: time_wait之后会等2msl。 什么是2MSL: MSL是Maximum Segment Lifetime,译为“报文最大生存时间”,他是任何报文在…

【Linux网络编程】TCP状态转换、半关闭、2MSL时长

------------->【Linux系统编程/网络编程】(学习目录汇总) <-------------- 目录 1. 三次握手、四次挥手过程中的状态变化2. TCP状态转换图3. 半关闭4. 2MSL时长4.1 为什么要2MSL时长&#xff1f;4.2 端口复用 1. 三次握手、四次挥手过程中的状态变化 先结合下图回顾一下…

TIME_WAIT状态(2MSL)的作用

主动关闭的Socket端会进入TIME_WAIT状态&#xff0c;并且持续2MSL时间长度&#xff0c;MSL就是maximum segment lifetime(最大分节生命期&#xff09;&#xff0c;这是一个IP数据包能在互联网上生存的最长时间&#xff0c;超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分…

【CSS】关于CSS的几种移动端布局方式

关于CSS的几种移动端布局方式 一、移动端布局01.meta视口标签设置02.移动布局的分类有哪些&#xff1f;03.为什么需要二倍图&#xff1f;&#xff08;1&#xff09;物理像素和物理像素比&#xff08;2&#xff09;二倍图&#xff08;根据需要确定多倍图&#xff09;&#xff08…