当前位置: 首页 > news >正文

Matplotlib - Statistical Distribution作图

1. 前言

在数据分析和统计学中,绘制统计分布图是非常重要的,因为它帮助我们直观地理解数据的特性,并为进一步的分析提供基础。统计分布图能够揭示数据集的结构、趋势、集中趋势和离散程度等信息,从而使我们更容易做出合理的假设、判断和决策。

2. hist直方图

适用于不同样本来源的比较,小数据集,不同样本间的数据分布比较

或同一来源数据集作图选择合适统计模型

直方图是一个常用的工具,用于展示单个变量的分布。它将数据按区间(bins)划分,并通过条形图展示每个区间内数据的频率或数量。

2.1 直方图的使用场景

1. 查看数据分布

直方图最常用的场景是查看数值型数据的分布情况。通过直方图可以直观了解数据是偏向于正态分布、偏态分布,还是存在多个峰值(多峰分布)

2. 选择合适的统计模型

通过直方图的形状,可以帮助确定数据是否适合某种统计模型。例如,判断数据是否符合正态分布、均匀分布或指数分布等。

3. 比较多个数据集的分布

直方图还可以用于比较多个数据集的分布。通过叠加或并排显示不同数据集的直方图,可以对比它们的分布差异

2.2 代码与图

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
data = np.random.randn(1000)# 绘制直方图
plt.hist(data, bins=30, alpha=0.7, color='b')# 添加标题和标签
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')# 显示图像
plt.show()

2.3 常见参数

bins指定数据区间的数量
alpha用于设置透明度,多个图形叠加时最好使用
color用于设置柱形的颜色
edgecolor设置图形元素的边缘颜色
linewidth控制线条的宽度,单位为point

3. boxplot箱形图

适用于同一样本来源,大小数据集皆可,内部不同时间/状况的样本比较

显示一组数据的分布情况和统计特征,特别是用于比较不同数据集的分布。它通过显示数据的 五个数值摘要(最小值、下四分位数、中位数、上四分位数、最大值),以及识别异常值,帮助我们快速了解数据的分布、离散程度、中心趋势等信息。

3.1 使用场景

1. 数据分布的可视化

同时展示多个数据集的分布情况(如不同实验组、不同变量的结果)。

适合用来查看数据的对称性、偏态以及是否存在异常值。

2. 数据的对比

可以通过比较多个箱线图,直观地对比不同组数据的中心趋势、变异性和分布

例如,比较两个班级的考试成绩分布、不同产品的销售额分布。

3. 检测异常值

快速发现数据中的异常值(outliers)。位于箱线图“胡须”之外的数据点即为异常值,帮助分析潜在的极端情况。

4. 查看数据的集中趋势和离散程度

直观地看到数据的中位数和四分位数,判断数据的集中趋势和离散程度。

适合用于非对称分布数据的可视化,例如工资分布、房价分布等。

3.2 异常点分析

是的,boxplot 中的异常值通常是指超出 1.5 倍四分位距(IQR, Interquartile Range)范围的数据点。具体来说,IQR 是上四分位数(Q3)和下四分位数(Q1)之间的距离,即:

1.5 倍的 IQR 是一个常用的标准,用于标识数据中的异常值。这个标准来源于统计学中对数据分布的一个经验法则。

 3.3 代码与作图

import matplotlib.pyplot as plt
import numpy as np# 生成随机数据
np.random.seed(10)
data1 = np.random.normal(100, 10, 200)
data2 = np.random.normal(90, 20, 200)
data3 = np.random.normal(80, 15, 200)# 绘制箱线图
plt.boxplot([data1, data2, data3], patch_artist=True, widths=0.6, boxprops=dict(facecolor='lightblue'), medianprops=dict(color='red', linewidth=2), whiskerprops=dict(color='green'))# 添加标题
plt.title("Boxplot Example")
plt.xticks([1,2,3],['A','B','C']) #指定修改标签# 显示图形
plt.show()

3.4 相关参数

vert

设置箱线图的方向。True为垂直,False为水平

patch_artist是否填充箱体,为True则填充
showfliers是否显示异常值
widths箱线图的宽度
positions图所在的位置。position=[1,2,4]
boxprops控制箱体的样式,boxprops=dict(facecolor='',color='')
flierprops设置异常值的样式,传入字典
showmeans是否显示数据的均值

4. errorbar误差条

适用于同一样本来源,小数据集,比较内部数据

误差条是用来展示每个数据的浮动误差,显示测量误差或者不确定性

4.1 使用场景

  • 测量误差:当你有测量数据时,通常需要显示每个数据点的误差范围。error可以在数据点上添加误差条,帮助显示这些测量误差。

  • 数据的不确定性:在科学实验或数据分析中,数据的准确性可能受到各种因素的影响,errorbar 可以帮助你表示这些不确定性。

  • 比较数据:当你比较不同实验组或条件下的数据时,误差条可以帮助你更好地理解数据的变异性和可靠性。

4.2 代码与作图

#errorbar
x = [2,4,6]
y = [3,7,11]
yerr = [0.3,0.5,0.9]fig,ax = plt.subplots()
ax.errorbar(x,y,yerr,fmt='o',linewidth=3,capsize=10)

4.3 相关参数

fmt设置数据点的标记样式
ecolor设置误差线的颜色
linewidth设置误差线的宽度
capsize设置误差端点的长度
xerrx轴数据的误差
yerry轴数据的误差

5. violinplot小提琴图

5.1 简介

同一样本或不同样本比较均可使用

Violin图是结合了箱线图和核密度线的图片,展示数据的分布情况。

核密度线(KDE):Violin的形状代表数据的分布密度。越宽表示该值附近的数据点多,窄就表示越少

两侧对称:左右分布是一样的,使图形更容易解读

5.2 代码与作图

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np# 生成随机数据
data = np.random.normal(size=100)# 使用 seaborn 绘制 violin 图
sns.violinplot(data=data)# 显示图形
plt.show()

6. pie饼状图

适用于同一样本来源,小数据集,内部种类比较

饼图适用于展示数据中各部分在整体中所占比例的场景。它能够直观地展示每个部分的相对大小,适合少量分类数据的可视化。

6.1 使用场景

1. 比例分析

当你想展示数据集中不同类别的占比,如市场份额、预算分配、人口构成等,饼图是很合适的选择。例如,展示公司不同产品线的销售额占比。

2. 数据种类较少

饼图通常只适用于少量分类数据(一般不超过 5-6 类)。如果分类过多,饼图会显得杂乱且难以阅读。

6.2 代码与作图

import matplotlib.pyplot as plt# 数据
sizes = [15, 30, 45, 10]
labels = ['Apples', 'Bananas', 'Cherries', 'Dates']
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0, 0.1, 0, 0)  # 'Bananas' 部分稍微爆开# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors,autopct='%1.1f%%', shadow=True, startangle=140)# 确保饼图为圆形
plt.axis('equal')# 添加标题
plt.title("Fruit Consumption Pie Chart")# 显示图形
plt.show()

6.3 相关参数

labelslabel=['A','B'],添加标签
color自定义块的颜色
autopct显示每个部分的百分比
explodeexplode=[0,0.1,0,0],设置每部分是否分离,分离的距离
shadow添加阴影效果
radius设置饼图的半径
pctdistance设置百分比标签与饼图中心的距离

7. hist2d二维直方图

适用于大数据集,同一样本来源的内部数据分布比较

适用于将两个变量的分布情况在二维平面上进行可视化。该函数会根据传入的两个变量,将数据按网格进行划分,并统计每个网格中的数据点数,最终生成一个二维热图。

7.1 使用场景

1. 分析两个连续变量之间的关系

当你有两个连续变量并想观察它们之间的相关性或分布模式时,hist2d() 是很好的工具。它会把数据分成网格(bins),并显示每个网格内的数据点数量。

2. 大规模数据集

将数据分箱处理,把数据点密集的区域以颜色浓度来表示,能够更加清晰地显示数据分布。

3. 数据量大的情况下替代散点图

如果数据量过大,散点图的点可能会重叠,导致图形难以解释。hist2d() 可以通过统计数据点数量,以颜色的深浅来表示点的密集程度,能够更好地处理数据重叠的问题。

7.2 代码与作图

import matplotlib.pyplot as plt
import numpy as np# 生成一些随机数据
x = np.random.randn(10000)  # 横轴数据
y = np.random.randn(10000)  # 纵轴数据# 绘制二维直方图
plt.hist2d(x, y, bins=30, cmap='Blues')# 添加颜色栏
plt.colorbar(label='Counts')# 显示图形
plt.show()

7.3 相关参数

bins设置每个维度上的箱子数,也决定了网格的分辨率,(3,4)
range定义二维直方图的范围
cmap颜色映射,用于指定不同箱子计数的颜色,'Blues','Reds'
density返回的数据归一化,总面积为1
cmin设定颜色强度的最小值,小于将被设置为透明

8. hexbin蜂窝图

适用于大数据集,同一样本来源的内部数据分布比较

8.1 简介

与hist2d效果相似,都用于可视化二维数据的分布情况

使用的是 六边形网格,将数据划分为蜂窝状的六边形区域。这使得视觉上更加紧凑,六边形网格在表示连续数据分布时可以减少“边界效应”,在某些情况下能比矩形网格更好地展示数据分布。

8.2 代码与作图

import numpy as np
import matplotlib.pyplot as plt# 生成随机数据
x = np.random.randn(10000)
y = np.random.randn(10000)# 绘制六边形分箱图
plt.hexbin(x, y, gridsize=30, cmap='Blues')
plt.colorbar(label='Counts')
plt.title('hexbin Example')
plt.show()

9. ecdf累计概率密度图

适用于小数据集,同一样本来源中数据大小分布比较

展示了数据集中每个数据点的值在整体数据中的累积百分比,即有多少比例的数据点小于等于某个值。

9.1 特点

  • 1. 累积分布:ECDF 图展示的是每个数据点的值和它在整个数据集中的相对排名(累积百分比)。因此,纵轴(y 轴)表示的是累积概率,范围从 0 到 1,横轴(x 轴)是数据点的值。

  • 2. 每个数据点对应一个累积概率:图中的每一个点表示一个数据点和它在数据集中所占的比例。例如,某个点的 y 值是 0.6,意味着 60% 的数据点小于或等于这个点的 x 值。

  • 3. 对数据分布的完整描述:与直方图和密度图不同,ECDF 图展示了 每个数据点 的信息,避免了由于数据分箱导致的失真,因此它保留了数据的精确信息,适合小数据集。

9.2 代码与作图

a = np.random.normal(4,2,10)
print(a)
fig,ax = plt.subplots()
ax.ecdf(a)

相关文章:

Matplotlib - Statistical Distribution作图

1. 前言 在数据分析和统计学中,绘制统计分布图是非常重要的,因为它帮助我们直观地理解数据的特性,并为进一步的分析提供基础。统计分布图能够揭示数据集的结构、趋势、集中趋势和离散程度等信息,从而使我们更容易做出合理的假设、…...

【机器学习】9 ——最大熵模型的直观理解

系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前奏例子硬币垃圾邮件代码 前奏 【机器学习】6 ——最大熵模型 例子 硬币 假设我们有一枚硬币,可能是公平的,…...

1.单例模式

目录 简介 饿汉式 懒汉式 双重检测锁式 静态内部类式 枚举单例 测试 测试单例模式: 测试五种单例模式在多线程环境下的效率 问题(拓展) 例:反射破解单例模式 例:反序列化破解单例模式 总结:如何…...

数据倾斜问题

数据倾斜:主要就是在处理MR任务的时候,某个reduce的数据处理量比另外一些的reduce的数据量要大得多,其他reduce几乎不处理,这样的现象就是数据倾斜。 官方解释:数据倾斜指的是在数据处理过程中,由于某些键…...

大龄焦虑?老码农逆袭之路:拥抱大模型时代,焕发职业生涯新活力!

其实我很早就对大龄程序员这个话题感到焦虑,担心自己35岁之后会面临失业,有时和亲戚朋友聊天时,也会经常拿这个出来调侃。现在身边已经有很多35岁左右的同事,自己过两年也会步入35岁的行列,反倒多了一份淡定和从容。 …...

Vue 页面反复刷新常见问题及解决方案

Vue 页面反复刷新常见问题及解决方案 引言 Vue.js 是一个流行的前端框架,旨在通过其响应式的数据绑定和组件化的开发模式简化开发。然而,在开发 Vue.js 应用时,页面反复刷新的问题可能会对用户体验和开发效率产生负面影响。本文将深入探讨 …...

Windows上指定盘符-安装WSL虚拟机(机械硬盘)

参考来自于教程1:史上最全的WSL安装教程 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/386590591#%E4%B8%80%E3%80%81%E5%AE%89%E8%A3%85WSL2.0 教程2:Windows 10: 将 WSL Linux 实例安装到 D 盘,做成移动硬盘绿色版也不在话下 - 知乎 (z…...

ffmpeg实现视频的合成与分割

视频合成与分割程序使用 作者开发了一款软件,可以实现对视频的合成和分割,界面如下: 播放时,可以选择多个视频源;在选中“保存视频”情况下,会将多个视频源合成一个视频。如果只取一个视频源中一段视频…...

团体标准的十大优势

一、团体标准是什么 团体标准是指由社会团体(行业协会、联合会、企业联盟等)按照自己确立的制定程序,自主制定、发布、采纳,并由社会自愿采用的标准。简单的说,就是社会团体为了满足市场和创新需要,协调相…...

java spring boot 动态添加 cron(表达式)任务、动态添加停止单个cron任务

java spring boot 动态添加 cron&#xff08;表达式&#xff09;任务、动态添加停止单个cron任务 添加对应的maven <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version…...

sqlgun靶场漏洞挖掘

1.xss漏洞 搜索框输入以下代码&#xff0c;验证是否存在xss漏洞 <script>alert(1)</script> OK了&#xff0c;存在xss漏洞 2.SQL注入 经过测试&#xff0c;输入框存在SQL注入漏洞 查询数据库名 查询管理员账号密码 此处密码为MD5加密&#xff0c;解码内容如下 找…...

好用的 Markdown 编辑器组件

ByteMD bytedance/bytemd: ByteMD v1 repository (github.com) 这里由于我的项目是 Next&#xff0c;所以安装 bytemd/react&#xff0c; 阅读官方文档&#xff0c;执行命令来安装编辑器主体、以及 gfm&#xff08;表格支持&#xff09;插件、highlight 代码高亮插件&#xf…...

uniapp vite3 require导入commonJS 的js文件方法

vite3 导入commonJS 方式导出 在Vite 3中&#xff0c;你可以通过配置vite.config.js来实现导入CommonJS&#xff08;CJS&#xff09;风格的模块。Vite 默认支持ES模块导入&#xff0c;但如果你需要导入CJS模块&#xff0c;可以使用特定的插件&#xff0c;比如originjs/vite-pl…...

通义灵码用户说:“人工编写测试用例需要数十分钟,通义灵码以毫秒级的速度生成测试代码,且准确率和覆盖率都令人满意”

通过一篇文章&#xff0c;详细跟大家分享一下我在使用通义灵码过程中的感受。 一、定义 通义灵码&#xff0c;是一个智能编码助手&#xff0c;它基于通义大模型&#xff0c;提供代码智能生成、研发智能问答能力。 在体验过程中有任何问题均可点击下面的连接前往了解和学习。 …...

MySQL中的约束

约束概述 1.1 为什么需要约束 数据完整性&#xff08;Data Integrity&#xff09;是指数据的精确性&#xff08;Accuracy&#xff09;和可靠性&#xff08;Reliability&#xff09;。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信…...

Leetcode 寻找重复数

可以使用 位运算 来解决这道题目。使用位运算的一个核心思想是基于数字的二进制表示&#xff0c;统计每一位上 1 的出现次数&#xff0c;并与期望的出现次数做比较。通过这种方法&#xff0c;可以推断出哪个数字重复。 class Solution { public:int findDuplicate(vector<i…...

大一新生以此篇开启你的算法之路

各位大一计算机萌新们&#xff0c;你们好&#xff0c;本篇博客会带领大家进行算法入门&#xff0c;给各位大一萌新答疑解惑。博客文章略长&#xff0c;可根据自己的需要观看&#xff0c;在博客中会有给大一萌新问题的解答&#xff0c;请不要错过。 入门简介&#xff1a; 算法…...

【AI大模型】ChatGPT模型原理介绍(上)

目录 &#x1f354; 什么是ChatGPT&#xff1f; &#x1f354; GPT-1介绍 2.1 GPT-1模型架构 2.2 GPT-1训练过程 2.2.1 无监督的预训练语言模型 2.2.2 有监督的下游任务fine-tunning 2.2.3 整体训练过程架构图 2.3 GPT-1数据集 2.4 GPT-1模型的特点 2.5 GPT-1模型总结…...

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车&#xff0c;并使用通过跨平台的方式进行ROS2和UE5仿真的通讯&#xff0c;达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础&#xff0c;Nav2相关的学习教程可以参考本人的其他博…...

C++竞赛初阶L1-15-第六单元-多维数组(34~35课)557: T456507 图像旋转

题目内容 输入一个 n 行 m 列的黑白图像&#xff0c;将它顺时针旋转 90 度后输出。 输入格式 第一行包含两个整数 n 和 m&#xff0c;表示图像包含像素点的行数和列数。1≤n≤100&#xff0c;1≤m≤100。 接下来 n 行&#xff0c;每行 m 个整数&#xff0c;表示图像的每个像…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...