Matplotlib数据可视化

绘图基础语法

1 创建画布并且创建子图

首先创建一个空白的画布,并且可以将画布分为几个部分,这样就可以在同一附图上绘制多个图像。

plt.figure  创建一个空白画布,可以指定画布大小、像素

figure.add_subplot 创建并且选中子图,可以指定子图的行数、列数、和图片的编号

2 添加画布内容

plt.title  当前图形标题,可以指定标题名称、位置、颜色、字体大小

plt.xlabel 当前图像添加x轴名称

plt.ylabel 当前图形添加y轴名称

plt.xlim 指定当前图形x轴的范围

plt.ylim y轴的范围

plt.xtricks  x轴刻度数目与取值

plt.legend 当前图像的图例

import numpy as np
import matplotlib.pyplot as pltrad=np.arange(0,np.pi*2,0.01)
p1=plt.figure(figsize=(8,8),dpi=80)  #创建画布#子图
ax1=p1.add_subplot(1,2,1) #2行1列的子图,绘制第一幅
plt.title('lines') #添加标题
plt.xlabel('x')  #x轴的名称
plt.ylabel('y')  #y轴的名称
plt.xlim((0,1))  #确定x轴的范围
plt.ylim((0,1))plt.xticks([0,0.2,0.4,0.6,0.8,1]) #x轴的刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])
plt.plot(rad,rad**2)  #添加y=x**2曲线
plt.plot(rad,rad**4)  #添加y=x**4曲线
plt.legend(['y=x^2','y=x^4'])#第二幅子图
ax2=p1.add_subplot(1,2,2)
plt.title('sin/cos')
plt.xlabel('rad')
plt.ylabel('value')
plt.xlim((0,np.pi*2))
plt.ylim((-1,1))
plt.xticks([0,np.pi/2,np.pi*1.5,np.pi*2])
plt.yticks([-1,-0.5,0,0.5,1])
plt.plot(rad,np.sin(rad))
plt.plot(rad,np.cos(rad))
plt.legend(['sin','cos'])
plt.savefig('./sin.png')
plt.show()

散点图和折线图

散点图 又叫做散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点的分布形态反映特征间的统计关系。

散点图可以看出特征之间的关系是线性的还是非线性的,另外可以看出一个点是否偏离大多数点。如果偏离大多数点,则这些点就是离群点。

散点图通过散点的疏密程度和变化趋势表示两个特征的数量关系。

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None)

s 表示点的大小,c表示颜色,marker表示点的类型。

折线图是一种将数据点连接起来的图像。折线图主要是用来查看因变量y随着自变量x改变的趋势。

import numpy as np
import matplotlib.pyplot as pltrad=np.arange(0,np.pi*2,0.01)
p1=plt.figure(figsize=(8,8),dpi=80)  #创建画布#子图
ax1=p1.add_subplot(1,2,1) #2行1列的子图,绘制第一幅
plt.title('lines') #添加标题
plt.xlabel('x')  #x轴的名称
plt.ylabel('y')  #y轴的名称
plt.xlim((0,1))  #确定x轴的范围
plt.ylim((0,1))plt.xticks([0,0.2,0.4,0.6,0.8,1]) #x轴的刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])
plt.plot(rad,rad**2,color='r',linestyle='--')  #添加y=x**2曲线
plt.plot(rad,rad**4,color='c',linestyle='-')  #添加y=x**4曲线
plt.legend(['y=x^2','y=x^4'])#第二幅子图
ax2=p1.add_subplot(1,2,2)
rad=np.arange(0,np.pi*2,0.1)
plt.title('sin/cos')
plt.xlabel('rad')
plt.ylabel('value')
plt.xlim((0,np.pi*2))
plt.ylim((-1,1))
plt.xticks([0,np.pi/2,np.pi*1.5,np.pi*2])
plt.yticks([-1,-0.5,0,0.5,1])
plt.scatter(rad,np.sin(rad),marker='v')
plt.scatter(rad,np.cos(rad),marker='o')
plt.legend(['sin','cos'])
plt.savefig('./sin.png')
plt.show()

直方图 饼图 箱线图 用于分析特征内部分布与分散状况

直方图主要用于查看各分组数据的数量分布

饼图用于查看个分组数据在总数据中的占比

箱线图是用于发现整体数据的分散情况

直方图  用于判断特征的分布

直方图,由一系列高度不等的纵向条纹表示数据分布的情况。一般横轴表示数据所属类别,纵轴表示各个类别的数量或者占比。直方图可以直观的表示数据的分布状态。

import numpy as np
import matplotlib.pyplot as plt# 生成一组服从正态分布的随机数
data = np.random.randn(1000)# 可视化分布  
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')# 绘制正态分布的概率密度函数
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = 0.9 * np.exp(-(x - 0) ** 2 / (2 * 0.5 ** 2))  # 正态分布的概率密度函数
plt.plot(x, p, 'k', linewidth=2)plt.show()

import numpy as np
import matplotlib.pyplot as plt# 生成一组服从[0, 1]均匀分布的随机数
data = np.random.uniform(0, 1, 1000)# 可视化分布
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')
plt.show()

 

import numpy as np
import matplotlib.pyplot as plt# 生成一组服从参数为0.5的指数分布的随机数
data = np.random.exponential(0.5, 1000)# 可视化分布
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')
plt.show()

import numpy as np
import matplotlib.pyplot as plt# 生成一组服从参数为5的泊松分布的随机数
data = np.random.poisson(5, 1000)# 可视化分布
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')
plt.show()

from scipy import stats
import numpy as np
# 生成一组随机数
data = np.random.randn(10000)# 检测正态分布
stat, p = stats.normaltest(data)
print('Statistics=%.3f, p=%.3f' % (stat, p))# 如果p值小于显著性水平(例如0.05),则认为数据不服从正态分布
if p < 0.05:print('Data does not follow normal distribution')
else:print('Data follows normal distribution')# 拟合指数分布
loc, scale = stats.expon.fit(data)
print('Exponential distribution parameters: loc=%.3f, scale=%.3f' % (loc, scale))# 检测指数分布
stat, p = stats.kstest(data, stats.expon(loc=loc, scale=scale).cdf)
print('Statistics=%.3f, p=%.3f' % (stat, p))# 如果p值小于显著性水平(例如0.05),则认为数据不符合指数分布
if p < 0.05:print('Data does not follow exponential distribution')
else:print('Data follows exponential distribution')

知道数据的分布可以更好的理解数据的变化规律,而且可以帮助我们发现数据中的异常值。通过对数据分布的分析可以识别并且处理重复值,缺失值,异常值,提高数据的质量和准确性。

饼图

饼图是将各项的大小和各项总和比例显示在一张图上,饼图可以清楚的反应部分与部分,部分与整体的比例关系。

import matplotlib.pyplot as plt# 数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%')# 显示图形
plt.show()

箱线图  判断数据的分散程度

箱线图可以用来显示一组数据分散情况的统计图,包含一组数据的最大值、最小值

中位数、和上下四分位数。

箱线图有箱子和边缘构成,其中箱子包含了50%的数据,边缘则代表数据的上四分位数和下四分位数,也就是数据的上边缘和下边缘,各包含了25%的数据。箱子的中间包含了一条线,表示了数据的中位数。

import matplotlib.pyplot as plt
import numpy as np
all_data=[np.random.normal(0,std,100) for std in range(1,4)]figure,axes=plt.subplots() #得到画板、轴
axes.boxplot(all_data,patch_artist=True) #描点上色
plt.show() #展示

import matplotlib.pyplot as plt
import numpy as np# 创建数据
data=np.random.normal(0,1,10000)# 计算上下四分位数和异常值
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
outliers = [x for x in data if x < lower or x > upper]print('q1',q1)
print('q3',q3)
print('iqr',iqr)
print('lower',lower)
print('upper',upper)
print('outliers',outliers)
print('异常值的个数',len(outliers))# 绘制箱线图
fig, ax = plt.subplots()
ax.boxplot(data, vert=True, patch_artist=True)
ax.set_title('Box Plot')
ax.set_xlabel('Data')
ax.set_ylabel('Value')
ax.text(0.85, 0.90, 'Outliers: {0}'.format(', '.join(map(str, outliers))), ha='center', va='center')
plt.show()

 

箱线图的理解-CSDN博客

通过箱线图找到异常值 

import matplotlib.pyplot as plt
import numpy as np# 创建数据
data=np.random.normal(0,1,10000)# 计算上下四分位数和异常值
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
outliers = [x for x in data if x < lower or x > upper]print('q1',q1)
print('q3',q3)
print('iqr',iqr)
print('lower',lower)
print('upper',upper)
print('outliers',outliers)
print('异常值的个数',len(outliers))# 绘制箱线图
fig, ax = plt.subplots()
ax.boxplot(data, vert=True, patch_artist=True)
ax.set_title('Box Plot')
ax.set_xlabel('Data')
ax.set_ylabel('Value')
ax.text(0.85, 0.90, 'Outliers: {0}'.format(', '.join(map(str, outliers))), ha='center', va='center')
# plt.show()p1=plt.figure()
ax1=p1.add_subplot(1,2,1)
ax1.hist(data,density=True)
print(len(data))
for _ in outliers:coor=np.where(data==_)data[coor]=np.nan# print(coor)# print(data[coor])
# cord=np.where(data==np.nan)
# print(cord)
data=data[~np.isnan(data)]
print(len(data))
# plt.show()ax2=p1.add_subplot(1,2,2)
ax2.hist(data,density=True)
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【web安全】文件读取与下载漏洞

前言 菜某整理仅供学习&#xff0c;有误请赐教。 概念 个人理解&#xff1a;就是我们下载一个文件会传入一个参数&#xff0c;但是我们可以修改参数&#xff0c;让他下载其他的文件。因为是下载文件&#xff0c;所以我们可以看到文件里面的源码&#xff0c;内容。 文件读取…

swiftUi——颜色

在SwiftUI中&#xff0c;您可以使用Color结构来表示颜色。Color可以直接使用预定义的颜色&#xff0c;例如.red、.blue、.green等&#xff0c;也可以使用自定义的RGB值、十六进制颜色代码或者系统提供的颜色。 1. 预定义颜色 Text("预定义颜色").foregroundColor(.…

Swing程序设计(9)复选框,下拉框

文章目录 前言一、复选框二、下拉框总结 前言 该篇文章简单介绍了Java中Swing组件里的复选框组件、列表框组件、下拉框组件&#xff0c;这些在系统中都是常用的组件。 一、复选框 复选框&#xff08;JCheckBox&#xff09;在Swing组件中的使用也非常广泛&#xff0c;一个方形方…

hadoop安装与配置-shell脚本一键安装配置(集群版)

文章目录 前言一、安装准备1. 搭建集群 二、使用shell脚本一键安装1. 复制脚本2. 增加执行权限3. 分发脚本4. 执行脚本5. 加载用户环境变量 三、启动与停止1. 启动/停止hadoop集群(1) 复制hadoop集群启动脚本(2) 增加执行权限(3) 启动hadoop集群(4) 停止hadoop集群(5) 重启hado…

智慧社区前景无限,科技引领未来发展

社区是城镇化发展的标志&#xff0c;作为人类现代社会的生活的基本圈子&#xff0c;是人类生活离不开的地方&#xff0c;社区人口密度大、车辆多&#xff0c;管理无序&#xff0c;社区的膨胀式发展多多少少带来一定的管理上的缺失。社区作为智慧城市建设的重要一环&#xff0c;…

编译基于LIO-SAM的liorf“Large velocity, reset IMU-preintegration!“

使用LIO-SAM修改的代码liorf&#xff08;因自己使用的IMU传感器是 6-axis ouster&#xff09;&#xff1a; LIO-SAM代码连接&#xff1a; https://github.com/TixiaoShan/LIO-SAM liorf代码连接&#xff1a; https://github.com/YJZLuckyBoy/liorf 编译运行出现错误&#…

eve-ng山石网科HillStone镜像部署

HillStone 部署 author&#xff1a;leadlife data&#xff1a;2023/12/4 mains&#xff1a;EVE-ng HillStone 镜像部署 - use hillstone-sg6000 default&#xff1a;hillstone/hillstone 传输 scp hillstone-sg6000.zip root192.168.3.130:/opt/unetlab/addons/qemu/部署 cd …

echarts绘制一个环形图

其他echarts&#xff1a; echarts绘制一个柱状图&#xff0c;柱状折线图 echarts绘制一个饼图 echarts绘制一个环形图2 效果图&#xff1a; 代码&#xff1a; <template><div class"wrapper"><!-- 环形图 --><div ref"doughnutChart…

C++STL的string(超详解)

文章目录 前言C语言的字符串 stringstring类的常用接口string类的常见构造string (const string& str);string (const string& str, size_t pos, size_t len npos); capacitysize和lengthreserveresizeresize可以删除数据 modify尾插插入字符插入字符串 inserterasere…

如何将腾讯混元大模型AI接入自己的项目里(中国版本ChatGPT)

如何将腾讯混元大模型AI接入自己的项目里 一、腾讯混元大模型API二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、腾讯混元大模型API 基于腾讯混元大模型AI的智能文本对话AI机器人…

TypeScript 的修饰符(modifier)和装饰器(decorator)

装饰器是一种特殊类型的声明&#xff0c;它能够被附加到类声明....上。 装饰器使用 expression这种形式

使用消息队列遇到的问题—kafka

目录 1 分区2 消费者3 Kafka 如何保证消息的消费顺序&#xff1f;3.1 方案一3.2 方案二 4 消息积压 在项目中使用kafka作为消息队列&#xff0c;核心工作是创建生产者—包装数据&#xff1b;创建消费者----包装数据。 欠缺一些思考&#xff0c;特此梳理项目中使用kafka遇到的一…

浅析以太网接口及串口转以太网技术

浅析以太网接口 以太网相关接口主要包括&#xff1a;MII/RMII/SMII以及GMII/RGMII/SGMII接口。 一、MII接口 MII&#xff08;Media Independent Interface&#xff09;介质无关接口或称为媒体独立接口&#xff0c;它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和…

Python 小红书评论区采集 小红薯xhs精准用户获客

成品图 评论接口https://edith.xiaohongshu.com/api/sns/web/v2/comment/page?note_id笔记id&cursor光标 初次使用cursor为空,该接口为GET&#xff0c;需要x-s,x-t签名验证 子评论接口https://edith.xiaohongshu.com/api/sns/web/v2/comment/sub/page?note_id%s&r…

python爬取robomaster论坛文章数据,携带登录信息

一. 内容简介 python爬取robomaster论坛文章数据。 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 三.主要流程 3.1 接口分析&#xff0c;以及网页结构分析 # 这是文章链接,其实id就是文章的id # https://bbs.robomaster.com/forum.php?modview…

win系统一台电脑安装两个不同版本的mysql教程

文章目录 1.mysql下载zip包&#xff08;地址&#xff09;2.解压在你的电脑上&#xff08;不要再C盘和带中文的路径&#xff09;3.创建my.ini文件4.更改环境变量&#xff08;方便使用, 可选&#xff09;5.打包mysql服务6.初始化mysql的data7.启动刚刚打包的服务8.更改密码 1.mys…

【无标将列表中的多组参数依次带入指定的函数将每次调用函数返回结果组成列表itertools.starmap()题】

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将列表中的多组参数 依次带入指定的函数 将每次调用函数 返回结果组成列表 itertools.starmap() [太阳]选择题 请问以下代码输出的结果是&#xff1f; import itertools a [(1, 2), (3, 4)] p…

基于JAVA+SpringBoot+Vue的前后端分离的医院信息智能化HIS系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着科技的不断发展&a…

【WPF.NET开发】WPF中的对话框

目录 1、消息框 2、通用对话框 3、自定义对话框 实现对话框 4、打开对话框的 UI 元素 4.1 菜单项 4.2 按钮 5、返回结果 5.1 模式对话框 5.2 处理响应 5.3 非模式对话框 Windows Presentation Foundation (WPF) 为你提供了自行设计对话框的方法。 对话框是窗口&…

浙政钉SDK安装

专有订单SDK&#xff08;jar包&#xff09;下载 专有钉钉门户 (dg-work.cn) Maven依赖 浙政钉 <!-- 浙政钉 --> <dependency><groupId>com.oracel</groupId><artifactId>zwdd-sdk-java</artifactId><version>1.2.0</version…