箱线图(boxplot)

news/2025/3/6 4:01:19/

箱线图 boxplot

  • 简述
  • 原理
  • 绘制方法
    • python - matplotlib
      • 加载功能模块
      • 加载数据
      • 绘制boxplot
    • python - seaborn
      • 加载功能模块
      • 加载数据
      • 绘制boxplot
    • R - ggplot
      • 加载功能模块
      • 加载数据
      • 绘制boxplot

简述

因图形形状如箱子而得名。箱线图常用于展示一组连续型数据的分散情况。学术界普遍认为,箱线图由美国数学家M.E.斯皮尔于1960年提出,由美国统计学家J.W.图基于1977年完善并正式发表。在后续的发展中,箱线图的绘制过程经历了一些重要调整。主要调整包括箱子的宽度,上下边缘的确定标准,异常值的标识方法等。

原理

箱线图利用一组数据的分位数信息进行数据展示。箱形图分为中心、延伸以及分布状态的全部范围。将一组数据从大到小排列,分别计算出这组数据的上边缘,四分之一分位数( Q 1 Q_1 Q1)、中位数( Q 2 Q_2 Q2)、四分之三分位数( Q 3 Q_3 Q3)、下边缘,有时还包括一个异常值。四分位距(interquantile range; IQR)是四分之三分位与四分之一分位数的差值, I Q R = Q 3 − Q 1 IQR=Q_3-Q_1 IQR=Q3Q1,主要反映连续型数据的离散程度。

绘制方法

在不同软件中,箱线图的绘制方法有微小差异,这里仅说明常见的箱线图的绘制方法。

  1. 先根据三个分位数 Q 1 Q_1 Q1 Q 2 Q_2 Q2 Q 3 Q_3 Q3画出中间的盒子。
  2. Q 3 Q_3 Q3 Q 1 − 1.5 × I Q R Q_1-1.5\times IQR Q11.5×IQR区间内的最大值向盒子的顶端连线,由 Q 1 Q_1 Q1 Q 1 − 1.5 × I Q R Q_1-1.5\times IQR Q11.5×IQR区间内的最小值向盒子的底部连线。
  3. 处于 Q 1 − 1.5 × I Q R Q_1-1.5\times IQR Q11.5×IQR Q 1 − 3 × I Q R Q_1-3\times IQR Q13×IQR或者 Q 3 + 1.5 × I Q R Q_3+1.5\times IQR Q3+1.5×IQR Q 3 + 3 × I Q R Q_3+3\times IQR Q3+3×IQR范围内的数据用圆点标出,称为离群值(outliers)。
  4. 大于 Q 3 + 3 × I Q R Q_3+3\times IQR Q3+3×IQR或者小于 Q 1 − 3 × I Q R Q_1-3\times IQR Q13×IQR的用星号标出,称为异常值(extremes)。

在这里插入图片描述

python - matplotlib

加载功能模块

import matplotlib.pyplot as plt
import pandas as pd

加载数据

# 加载数据集
from sklearn.datasets import load_iris# 把数据集转换为一个DataFrame
data = load_iris()
df = pd.DataFrame(data=data.data,columns=data.feature_names)
df['target'] = data.target
df['target'] = df['target'].replace([0,1,2],['setosa', 'versicolor', 'virginica'])

绘制boxplot

# 设置画布大小
plt.figure(figsize=(8,6))
# 设置绘制的数据
plt.boxplot(df[df.columns[0:-1]])
# 设置图的标题
plt.title('Box plot')
# 设置X轴(横坐标轴)的显示内容
plt.xticks([1, 2, 3, 4],df.columns[0:-1] )
plt.show()

在这里插入图片描述

python - seaborn

加载功能模块

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

加载数据

# 加载数据集
from sklearn.datasets import load_iris# 把数据集转换为一个DataFrame
data = load_iris()
df = pd.DataFrame(data=data.data,columns=data.feature_names)
df['target'] = data.target
df['target'] = df['target'].replace([0,1,2],['setosa', 'versicolor', 'virginica'])

绘制boxplot

# 设置绘制的数据
sns.boxplot(x='target', y = 'sepal length (cm)',data= df )
plt.show()

在这里插入图片描述

R - ggplot

加载功能模块

# 绘图包
library(ggplot2)
# 数据处理包
library(tidyverse)

加载数据

# 加载自带数据集
library(mpg)# 删除数据中的空值
df <- mpg
df <- drop_na(df)

绘制boxplot

# 绘制箱线图
ggplot(mpg,aes(x=class,y=hwy,color=drv)) + geom_boxplot()

在这里插入图片描述


http://www.ppmy.cn/news/1210759.html

相关文章

ant 任务(task)通过内嵌的arg元素传递命令行参数

有的ant 任务将参数传递给其它的进程作为命令行参数。这可以通过内嵌的arg元素来实现。 例如&#xff1a; <exec executable"${browser}" spawn"true"><arg value"${file}"/> </exec>arg元素的部分属性说明&#xff1a; val…

linux安装配置MongoDB并设置开机启动

linux安装配置MongoDB并设置开机启动 文章目录 linux安装配置MongoDB并设置开机启动1. 下载 MongoDB 的linux安装包2. 上传 MongoDB 安装包到linux系统中3. 解压 MongoDB 安装包4. 创建 MongoDB 必要目录5. 移动 MongoDB 安装目录6. 设置 MongoDB 环境变量7. 添加 MongoDB 配置…

【算法-链表4】环形链表2的两种解法

今天&#xff0c;带来链表相关算法的讲解。文中不足错漏之处望请斧正&#xff01; 理论基础点这里 环形链表 1. 思路 利用链表相交 我们在环内任意一处断开&#xff0c;然后判断断开处的下一个位置和head是否相交&#xff0c;如果相交&#xff0c;相交处就是环口。 公式法 …

【华为OD机试AB高分必刷题目】无名的搜索题(Java-优先搜索(DFS)实现)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,高分通过! 文章目录 【华为OD机试AB高分必刷题目】无名的搜索题(Java-优先搜索(DFS)实现)题目描述解题思路Java题解代码代码OJ评判结果代码讲解寄语【华为OD机…

视频剪辑技巧:探索画中画视频剪辑,如何制作引人入胜的视觉效果

在视频制作领域&#xff0c;画中画视频剪辑是一种备受瞩目的技术&#xff0c;它可以将多个视频画面叠加在一起&#xff0c;形成一种独特的视觉效果。这种剪辑技巧可以让观众同时看到两个或多个视频片段&#xff0c;创造出一种引人入胜的视觉体验。在开始画中画视频剪辑之前&…

关于el-table+el-input+el-propover的封装

一、先放图片便于理解 需求&#xff1a; 1、el-input触发focus事件&#xff0c;弹出el-table(当然也可以为其添加搜索功能、分页) 2、el-table中的复选共能转化成单选共能 3、选择或取消的数据在el-input中动态显示 4、勾选数据后&#xff0c;因为分页过多&#xff0c;原先选好…

【Linux】编译Linux内核

之所以编译内核&#xff0c;是因为gem5全系统仿真需要vmlinux文件&#xff0c;在此记录一下以备后面需要。 此过程编译之后会获得vmlinux和bzImage两个文件&#xff1b; 主要参考知行大佬的编译内核与gem5官方教程 文章目录 一、Linux源码下载二、安装编译依赖三、编译1. 内核编…

SQL必知会(二)-SQL查询篇(6)-创建计算字段

第7课、创建计算字段 1&#xff09;拼接字段 需求&#xff1a;检索Vendors 表包含供应商的名称和地址的所有信息&#xff0c;返回结果需要把地址括号起来。 SELECT vend_name ( vend_country ) FROM Vendors ORDER BY vend_name;-- 以下例子与上面例子相同工作 SELECT ve…