plt.boxplot()函数绘制箱图、常用方法及含义详解

article/2025/9/15 7:00:16

在这里插入图片描述

1. 箱图含义

箱图是一中用于统计数据分布的统计图,也可以粗略地看出数据是否具有对称性,分布的分散程度等信息。箱图中的信息含义如下:
在这里插入图片描述

  • 最下方的横线表示最小值
  • 最上方的横线表示最大值
  • 黑色空心圆圈表示异常值
  • 黑色实心圆圈表示极端值
  • 箱子由下四分位数、中值以及上四分位数组成

    异常值又称离群值,指大于1.5倍的四分位数间距的值。处于1.5倍~3倍四分位数间距的值用空心圆圈表示。极端值属于异常值中的一种。
    极端值是指大于3倍的四分位数间距的值。

2.计算方法

首先找出一组数据的五个特征值,包括除异常值外的最小值(minimum)和最大值(maximum)、中位数(median)、两个四分位数(上四分位数Q1和下四分位Q3数);
中位数:将所有数值从小到大排列,如果是奇数个数值则取最中间一个值作为中位数,之后最中间的值在计算Q1和Q3时不再使用偶数个数值则取最中间两个数的平均数作为中位数,这两个数在计算Q1和Q3时继续使用
Q1:中位数将所有数据分成两部分,最小值到中位数的部分按取中位数的方法取中位数作为Q1。
Q3:同Q1取法,取中位数到最大值的中位数。
IQR(四分位数间距)=Q3-Q1
所有不在(Q1-1.5IQR,Q3+1.5IQR)的区间内的数为离群值,剩下的值最大的为最大值,最小的为最小值。
特征值(从下到上):最小值、Q1、中位数、Q3、最大值
将五个数值描绘在一个图上,五个特征值在一个直线上,最小值和Q1连接起来,Q1、中位数、Q3分别作平行等长线段
然后,连接两个四分位数构成箱子。
最后连接两个极值点与箱子,形成箱式图,然后点上离群值即可。

3.绘图

3.1 绘制单个箱图

import matplotlib.pyplot as plt
import numpy as np#生成data数据
np.random.seed(100)
data = np.random.normal(size=(1000,),loc=0,scale=1)# 绘图
plt.boxplot(data)
plt.show()

在这里插入图片描述

3.2 绘制多个箱图

import matplotlib.pyplot as plt
import numpy as npnp.random.seed(100)
data = np.random.normal(size=(1000,4),loc=0,scale=1)plt.boxplot(data)plt.show()

在这里插入图片描述

3.3实战

def plt_box_iamge(df):"""snrr的五个范围为[5,10)、[10,15)、[15,20)、[20,30)、[30-),按照五个snrr范围计算对应redchi的箱图:param df:包含snrr以及redchi的csv数据(dataFrame)。:return:"""# 根据snrr范围对redchi进行筛选。df1 = df.loc[df['lam_snrr'] >= 5]redchi_1 = df1.loc[df1['lam_snrr'] < 10].redchidf2 = df.loc[df['lam_snrr'] >= 10]redchi_2 = df2.loc[df2['lam_snrr'] < 15].redchidf3 = df.loc[df['lam_snrr'] >= 15]redchi_3 = df3.loc[df3['lam_snrr'] < 20].redchidf4 = df.loc[df['lam_snrr'] >= 20]redchi_4 = df4.loc[df4['lam_snrr'] < 30].redchiredchi_5 = df.loc[df['lam_snrr'] >= 30].redchi# 绘图ax = plt.subplot()ax.boxplot([redchi_1, redchi_2, redchi_3, redchi_4, redchi_5])# 设置轴坐标值刻度的标签ax.set_xticklabels(['5<=snrr<10', '10<=snrr<15', '15<=snrr<20', '20<=snrr<30', '30<=snrr'], fontsize=8)#	保存图片 plt.savefig('./images/box.jpg')plt.show()if __name__ == '__main__':df = pd.read_csv('./inputfile/lamost6w_new.csv')df_sc = screening(df)  # 筛选数据 (lamost数据应该在正常值范围内,不然因为数值差过大会导致绘制不出图像!)plt_box_iamge(df_sc)

在这里插入图片描述

3.3 参数详解

plt.boxplot(x,                      # x:指定要绘制箱图的数据notch=None,           # notch:是否是凹口的形式展现箱线图,默认非凹口sym=None,              # sym:指定异常点的形状,默认为+号显示vert=None,              # vert:是否需要将箱线图垂直摆放,默认垂直摆放whis=None,             # whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差positions=None,   # positions:指定箱线图的位置,默认为[0,1,2…]widths=None,         # widths:指定箱线图的宽度,默认为0.5patch_artist=None,        # patch_artist:是否填充箱体的颜色meanline=None,             # meanline:是否用线的形式表示均值,默认用点来表示showmeans=None,       # showmeans:是否显示均值,默认不显示showcaps=None,           # showcaps:是否显示箱线图顶端和末端的两条线,默认显示showbox=None,             # showbox:是否显示箱线图的箱体,默认显示showfliers=None,          # showfliers:是否显示异常值,默认显示boxprops=None,           # boxprops:设置箱体的属性,如边框色,填充色等labels=None,                  # labels:为箱线图添加标签,类似于图例的作用flierprops=None,          # filerprops:设置异常值的属性,如异常点的形状、大小、填充色等medianprops=None,   # medianprops:设置中位数的属性,如线的类型、粗细等meanprops=None,       # meanprops:设置均值的属性,如点的大小、颜色等capprops=None,           # capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等whiskerprops=None)   # whiskerprops:设置须的属性,如颜色、粗细、线的类型等

3.4 常用方法

import matplotlib.pyplot as plt
import numpy as npnp.random.seed(100)
data = np.random.normal(size=(1000,4),loc=0,scale=1)ax = plt.subplot()
ax.boxplot(data)                                 # 绘图
ax.set_xlim([0,5])                               # 设置x轴值的范围  rotation=30
# ax.set_xticks()  							      # 自定义x轴的值
ax.set_xlabel("xlabel")                  # 设置x轴的标签
ax.set_xticklabels(['A','B','C','D'],  rotation=30,fontsize=10)   # 设置x轴坐标值的标签 旋转角度 字体大小
ax.set_title("xcy")       					  # 设置图像标题
ax.legend(labels= ['A','B','C','D'],loc='best',)  # 增加图例
ax.text(x=0.2 , y=3.5 , s="test" ,fontsize=12)   # 增加注plt.show()

参考:
百度百科
matplotlib官方文档


http://chatgpt.dhexx.cn/article/3shagbvZ.shtml

相关文章

mysql查询between_MySQL查询数据过滤之BETWEEN操作符简介

BETWEEN运算符是一种逻辑运算符&#xff0c;判断指定值是否在范围内。 BETWEEN运算符的语法&#xff1a; expr [NOT] BETWEEN begin_expr AND end_expr; expr 是判断值是否在 begin_expr 和 end_expr 范围的内的表达式。 如果的值 expr大于或等于(> ) begin_expr &#x…

mysql 查询正在进行的事务

SELECT * FROM information_schema.innodb_trx字段解析 innodb_trx表&#xff1a; trx_id&#xff1a;事务ID。 trx_state&#xff1a;事务状态&#xff0c;有以下几种状态&#xff1a;RUNNING、LOCK WAIT、ROLLING BACK 和 COMMITTING。 trx_started&#xff1a;事务开始时间…

MySql 查询结果列拼接

MySql 查询结果列拼接 select concat( country,‘‘, province,’’, city,‘_’, store_properties) from wxshops

mysql 查询json字段

目录 json字段查询 字段格式 ​编辑查询&#xff1a; 注意&#xff1a; eg: json字段更新 json字段作为条件判断 代码&#xff1a; json字段判断&#xff08;json字段中有[]&#xff0c;需要判断就可以使用&#xff09; 结果 json字段查询 字段格式 查询&#xff…

mysql查询表的内容_mysql查询表内容

一&#xff0c;说明&#xff1a;表名为student 1&#xff0c;查询某个表里的字段 select 字段名1&#xff0c;字段名1 form student; 例如&#xff1a;查询student中的sname select sname from student; 2,查询某个表里的字段(字段下面有重复的内容)&#xff0c;并且显示的查询…

mysql查询排名

在MySQL中&#xff0c;不存在类似于SQL Server或Orcal等中的rank()函数来得到排名&#xff1b;所以我们需要手动地写这个rank功能。 基本知识&#xff1a; sql语句中&#xff0c;使用来定义一个变量。如&#xff1a;ranksql语句中&#xff0c;使用:来给变量赋值,&#xff1a;r…

MySQL 多种查询方法

这里写目录标题 查询1、单表查询1.选择表中的若干列2.选择表中的若干元组3.order by子句4.聚集函数5.group by分组 2、连接查询1、等值与非等值连接查询2、自身连接3、外连接4、多表连接 3、嵌套查询1、带有IN谓词的子查询2、带有比较运算符的子查询3、带有ANY或ALL谓词的子查询…

MySQL查询语句

一、基本查询 1、查询多个字段 SELECT 字段1&#xff0c;字段2&#xff0c;字段3... FROM 表名; SELECT * FROM 表名;2、设置别名 SELECT 字段1 [AS 别名1],字段2 [AS 别名2]... FROM 表名;3、去除重复记录 SELECT DISTINCT 字段列表 FROM 表名;1、查询指定字段name&#xf…

webpack面试题整理

文章目录 webpack 面试题整理 谈谈你对Webpack的理解Webpack的打包过程/打包原理/构建流程&#xff1f;Webpack中loader的作用/ loader是什么&#xff1f; 常见的loader有哪些&#xff1f; Plugin有什么作用&#xff1f;/Plugin是什么 常见的Plugin有哪些Webpack 插件的执行顺序…

WebPack面试题汇总

1&#xff0c;Webpack有什么作用&#xff0c;谈谈你对它的理解 现在的前端网页功能丰富&#xff0c;特别是SPA&#xff08;single page web application 单页应用&#xff09;技术流行后&#xff0c;JavaScript的复杂度增加和需要一大堆依赖包&#xff0c;还需要解决Scss、Les…

webpack的面试题(吐血整理)

以下为整理的webpack面试题&#xff0c;如有不足之处&#xff0c;还请大家多多指正。 一、webpack的构建流程 二、对webpack的理解 webpack是一个打包模块化js的工具&#xff0c;在webpack里一切文件皆模块&#xff0c;通过loader转换文件&#xff0c;通过plugin注入钩子&#…

webpack 面试题整理

文章目录 webpack 面试题整理谈谈你对Webpack的理解Webpack的打包过程/打包原理/构建流程&#xff1f;Webpack中loader的作用/ loader是什么&#xff1f;常见的loader有哪些&#xff1f; Plugin有什么作用&#xff1f;/Plugin是什么常见的Plugin有哪些Webpack 插件的执行顺序&a…

28道Webpack面试题及答案

1、webpack的作用是什么&#xff0c;谈谈你对它的理解&#xff1f; 现在的前端网页功能丰富&#xff0c;特别是SPA&#xff08;single page web application 单页应用&#xff09;技术流行后&#xff0c;JavaScript的复杂度增加和需要一大堆依赖包&#xff0c;还需要解决Scss&a…

程序员做自媒体变现,可以选择的平台有哪些?各自的特点是什么?

&#x1f4da;公众号&#xff1a;Python图书馆 (ID:python_library)整理&#xff1a;&#x1f4bb;兆锋 利益相关&#xff1a;我是一个在做自媒体的Python程序员&#xff0c;个人全网同名自媒体&#xff1a;Python自动化办公社区 本文分享自己使用的几个平台&#xff0c;并分析…

5个免费的高质量的自媒体学习网站,你值得拥有

今天就和大家分享5个我私下一直在用的学习网站&#xff0c;有些平台知道的人还不多&#xff0c;希望大家高调收藏&#xff0c;低调使用。 1 易撰网 自媒体必备网站&#xff0c;不管你做的是哪个方面的自媒体。都可以利用这款强大的文章写作工具&#xff0c;其中包括爆文分析、…

自媒体影视解说项目详解

我见过很多老师写项目,但很少有人愿意完整、毫无保留地透露项目运作的细节。尤其注意事项和避坑细节。 欣慧在写项目上的观点是,要么不写,要么写得让人明白,不隐瞒。 今天给大家分享一个自媒体影视解说一个盈利项目,零成本认真执行,年收入10万没有问题。 2018年第一次注…

《最强的 VLC 多媒体开发教程》

作者&#xff1a; 一去、二三里 个人微信号&#xff1a; iwaleon 微信公众号&#xff1a; 高效程序员 《VLC 多媒体开发》&#xff0c;是一个专注于 libVLC 开发的专栏&#xff0c;里面共包含几十个章节&#xff0c;从 0 到 1&#xff0c;图文并茂&#xff0c;详细地介绍了 lib…

入行自媒体怎么快速变现,详细教程,教你手把手运营

新手怎样做自媒体&#xff0c;才能达到日入500 &#xff1f;今天就给大家介绍一下&#xff0c;新手入行自媒体怎么快速变现&#xff0c;详细的自媒体教程&#xff0c;教你手把手运营&#xff01; 01 自媒体账号注册 账号注册其实很简单&#xff0c;直接浏览器搜索平台&#xf…

教你如何轻松玩转自媒体淘客,赚大钱!

“淘宝客“现在可谓是一种很流行的兼职&#xff0c;无论何时学生、上班族、自由职业等&#xff0c;都可以利用兼职来赚钱&#xff0c;但是也有很多人赚不到钱&#xff0c;为什么没有赚到钱&#xff0c;原因很简单&#xff1a;1、推广的商品没人购买&#xff0c;2、没有推广方法…

7个良心到难以置信的自媒体免费网站推荐

现在做自媒体还不晚&#xff0c;自媒体已经是成熟的阶段&#xff0c;所以大家可以积极参与进去&#xff0c;说不定哪天爆火了&#xff0c;小伙伴们抓住机会吧&#xff01;下面就和大家分享一下自媒体创作中需要用到的一些网站&#xff0c;助您打造爆款作品&#xff1a; 1、Cove…