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


Posted in Python onAugust 14, 2022

1. 箱图含义

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

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

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

异常值又称离群值,指大于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()

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

3.2 绘制多个箱图

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(100)
data = np.random.normal(size=(1000,4),loc=0,scale=1)

plt.boxplot(data)

plt.show()

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

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].redchi

    df2 = df.loc[df['lam_snrr'] >= 10]
    redchi_2 = df2.loc[df2['lam_snrr'] < 15].redchi

    df3 = df.loc[df['lam_snrr'] >= 15]
    redchi_3 = df3.loc[df3['lam_snrr'] < 20].redchi

    df4 = df.loc[df['lam_snrr'] >= 20]
    redchi_4 = df4.loc[df4['lam_snrr'] < 30].redchi

    redchi_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)

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

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.5
            patch_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 np

np.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官方文档

总结 

到此这篇关于Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解的文章就介绍到这了,更多相关plt.boxplot()函数绘制箱图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
基于进程内通讯的python聊天室实现方法
Jun 28 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
使用Python &amp; Flask 实现RESTful Web API的实例
Sep 19 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 Python
Python通过2种方法输出带颜色字体
Mar 02 Python
Python列表切片常用操作实例解析
Mar 10 Python
Python短信轰炸的代码
Mar 25 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
Python基础详解之描述符
Apr 28 Python
基于Python实现nc批量转tif格式
Aug 14 #Python
LyScript实现绕过反调试保护的示例详解
Aug 14 #Python
LeetCode189轮转数组python示例
Aug 05 #Python
python语言中pandas字符串分割str.split()函数
Aug 05 #Python
python绘制云雨图raincloud plot
Aug 05 #Python
python计算列表元素与乘积详情
Aug 05 #Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 #Python
You might like
php FPDF类库应用实现代码
2009/03/20 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python里对list中的整数求平均并排序
2014/09/12 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Python更换pip源方法过程解析
2020/05/19 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
美的官方商城:Midea
2016/09/14 全球购物
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
初入社会应届生求职信
2013/11/18 职场文书
党委书记岗位职责
2013/11/24 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
行政文员岗位职责
2015/02/04 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS