箱线图(Box-plot)又称为盒式图或箱型图,是一种用来显示一组数据分散情况的统计图,它能显示一组数据的上界、下界、中位数、上下四分位数以及异常值等。箱线图的各部分组成及其含义如下图所示。

关键术语说明

  • 四分位数:就是把一组数据按照从小到大的顺序进行排列,然后分成四等份,处于三个分割点位置的数字就是四分位数;
  • 第一四分位数(q1):又称“较小四分位数”或“下四分位数”,等于该样本中所有数值由小到大排列后第25%的数字,q1的位置 = 1+(n-1)x 0.25
  • 第二四分位数(q2):又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字,q2的位置= 1+(n-1)x 0.5
  • 第三四分位数(q3),又称“较大四分位数”或“上四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。q3的位置= 1+(n-1)x 0.75
  • 四分位间距(InterQuartile Range,IQR):第三四分位数与第一四分位数的差距(q3数据- q1数据)
  • Whiske上限(大于该值即为异常值):q3数 + 1.5*IQR,(1.5表示超过的比例,是一个系数,可根据实际情况调整);
  • Whisker下限(小于该值即为异常值):q1数 - 1.5*IQR

例1:有一组数据[12, 45, 30, 80, 36, 50, 40],分别求出q1、q2、q3。

首先对这组数据进行排序得到:[12, 30, 36, 40, 45, 50, 80],数组长度n为7;

q1的位置 = 1+(n-1)x 0.25=1 + 6*0.25 =2.5,所以q1的值为:30 + (36 - 30)*0.5 = 33

q2的位置 = 1+(n-1)x 0.5=1 + 6*0.5 =4,所以q2的值为40

q3的位置 = 1+(n-1)x 0.75=1 + 6*0.75 =5.5,所以q3的值为:45 + (50 - 45)*0.5=47.5

例2:一组数据[12, 45, 30, 80, 36, 50, 40, 43],分别求出q1、q2、q3

首先对这组数据进行排序得到:[12, 30, 36, 40, 43, 45, 50, 80],数组长度n为8;

q1的位置 = 1+(n-1)x 0.25=1 + 7*0.25 =2.75,所以q1的值为:30 + (36 - 30)*0.75 = 34.5

q2的位置 = 1+(n-1)x 0.5=1 + 7*0.5 =4.5,所以q2的值为40 + (43-40)*0.5=41.5

q3的位置 = 1+(n-1)x 0.75=1 + 7*0.75 =6.25,所以q3的值为:45 + (50 - 45)*0.25=46.25

在numpy中提供了quantile()函数,可以直接获取四分位数,例如np.quantile(x, 0.25)即可获取数组x中的q1值

Matplotlib中绘制箱线图的方法:boxplot

boxplot(

x, notch=None, sym=None, vert=None, whis=None,

positions=None, widths=None, patch_artist=None,

bootstrap=None, usermedians=None, conf_intervals=None,

meanline=None, showmeans=None, showcaps=None, showbox=None,

showfliers=None, boxprops=None, labels=None, flierprops=None,

medianprops=None, meanprops=None, capprops=None,

whiskerprops=None, manage_ticks=True, autorange=False,

zorder=None, *, data=None):

关键参数含义说明如下:

  • x指定要绘制箱线图的数据,可以是一组数据也可以是多组数据;
  • notch是否以凹口的形式展现箱线图,默认非凹口;
  • sym指定异常点的形状,默认为蓝色的+号显示;
  • vert是否需要将箱线图垂直摆放,默认垂直摆放;
  • whis指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
  • positions指定箱线图的位置,默认为range(1, N+1),N为箱线图的数量;
  • widths指定箱线图的宽度,默认为0.5;
  • patch_artist是否填充箱体的颜色,默认为False;
  • meanline:是否用线的形式表示均值,默认用点来表示;
  • showmeans是否显示均值,默认不显示;
  • showcaps是否显示箱线图顶端和末端的两条线,默认显示;
  • showbox是否显示箱线图的箱体,默认显示;
  • showfliers是否显示异常值,默认显示;
  • boxprops设置箱体的属性,如边框色,填充色等;
  • labels为箱线图添加标签,类似于图例的作用;
  • filerprops设置异常值的属性,如异常点的形状、大小、填充色等;
  • medianprops设置中位数的属性,如线的类型、粗细等;
  • meanprops设置均值的属性,如点的大小、颜色等;
  • capprops设置箱线图顶端和末端线条的属性,如颜色、粗细等;
  • whiskerprops设置须的属性,如颜色、粗细、线的类型等;
  • manage_ticks是否自适应标签位置,默认为True;
  • autorange是否自动调整范围,默认为False;

程序举例

(1)绘制单个箱线图

import matplotlib.pyplot as plt
import numpy as np
x = np.array([12, 45, 30, 70, 36, 50, 40, 26, 38])
print(sorted(x))
a = np.quantile(x, 0.75)  # 上四分之一数
b = np.quantile(x, 0.25)  # 下四分之一数
print("平均数:", np.mean(x))  # 打印均值
print("中位数:", np.median(x))  # 打印中位数
print("上四分之一数:", a)  # 打印上四分之一数
print("下四分之一数:", b)  # 打印下四分之一数
up = a + 1.5 * (a - b)  # 异常值判断标准
down = b - 1.5 * (a - b)  # 异常值判断标准
x = np.sort(x)  # 对原始数据排序
shangjie = x[x < up][-1]  # 除了异常值外的最大值
xiajie = x[x > down][0]  # 除了异常值外的最小值
print("上界:", shangjie)  # 打印上界
print("up:", up)
print("down:", down)
print("下界:", xiajie)  # 打印下界
plt.grid(True)  # 显示网格
y = plt.boxplot(x, meanline=True, showmeans=True,flierprops={"marker": "o", "markerfacecolor": "red", "markersize": 15})  # 绘制箱形图,设置异常点大小、样式等
plt.show()  # 显示图

程序执行效果图:

控制台输出结果为:

[12, 26, 30, 36, 38, 40, 45, 50, 70]
平均数: 38.55555555555556
中位数: 38.0
上四分之一数: 45.0
下四分之一数: 30.0
上界: 50
up: 67.5
down: 7.5
下界: 12

(2)绘制多个箱线图

import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(10, 100, size=(5, 9))  # 随机生成5行9列 [10, 100]之间的数
print(x)  # 打印数据
plt.grid(True)  # 显示网格
plt.boxplot(x, labels=list("ABCDEFGHI"), sym="r+", showmeans=True)  # 绘制箱线图
plt.show()  # 显示图片

程序执行效果图:

注:图中红色+号表示异常点,绿色三角形表示平均数。

控制台输出的打印结果为:

[[90 99 35 32 21 31 83 71 39][24 95 63 50 92 41 89 16 79][73 73 53 21 39 60 50 55 43][64 94 66 26 20 73 40 68 45][74 72 33 81 73 59 85 23 17]]

更多Python学习相关资源可通过以下方式联系我们获取。

Matplotlib绘制箱线图相关推荐

  1. 使用python中的库matplotlib绘制箱线图(boxplot)

    文章目录 数据准备 相关概念:Q1,Q2,Q3,IQR,QQ1,QQ3 绘制箱线图 分析箱线图 数据准备 假设有如下数据: 我们要分别绘制出age这列数据的箱线图和%fat这列数据的箱线图. 相关概念 ...

  2. 绘制箱线图的标签python_利用Python - Matplotlib 绘制箱线图

    1.箱线图介绍 第一步:计算上四分位数,中位数,下四分位数(计算公式略). 第二步:计算上四分位数和下四分位数之间的差值,四分位数差. 第三步:绘制箱线图的上下范围,上限为上四分位数,下限为下四分位数 ...

  3. Python+matplotlib绘制箱线图并设置异常值、中值、均值显示格式

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年3月第6 ...

  4. python箱线图配色_python绘制箱线图

    三种方式绘制箱线图 #第一种:直接使用自带的箱线图函数 import pandas as pd import matplotlib.pyplot as plt data=pd.read_excel(& ...

  5. matplotlib之pyplot模块——绘制箱线图(盒须图)boxplot()(一)基本参数

    当前有效matplotlib版本为:3.4.1. 概述 boxplot()函数的作用是绘制箱线图(箱线图.盒须图.箱图). 箱形图(boxplot)又称盒须图或箱线图,是一种用来显示某一组数据分散情况 ...

  6. matplotlib之pyplot模块——绘制箱线图(盒须图)boxplot()(二)演示外观参数、返回值

    当前有效matplotlib版本为:3.4.1. 概述 boxplot()函数的作用是绘制箱线图(箱线图.盒须图.箱图). 箱线图是由一个箱体和一对箱须所组成的统计图形.箱体是由第一四分位数.中位数( ...

  7. python绘制箱线图

    用python绘制箱线图_大奸猫的博客-CSDN博客_python画箱线图 画两个并行的箱型图: # 导入Excel数据studentshuju.xls的代码: import matplotlib.p ...

  8. python绘制箱线图-python 中箱线图绘制

    一.箱线图图绘制参数详解 plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, ...

  9. 用python绘制箱线图

    箱线图作用-python实践-异常值识别 文章目录 一.别名 二.历史 三.定义 四.作用 (1)识别异常值 (2)判断偏态 (3)评估数据集中程度 五.用python绘制箱线图 参考 一.别名 箱须 ...

最新文章

  1. 通俗易懂的Go协程的引入及GMP模型简介
  2. keras 的 example 文件 cifar10_resnet.py 解析
  3. ​shell-7.shell 字符串的使用
  4. 第四章 治病法要(1)
  5. 国家游泳中心诚聘CV算法开发人员~待遇优福利厚
  6. VS Code 插件
  7. 女子多年未住别墅成剧组拍摄地,网友:看个剧才想起自己还有栋别墅
  8. 动态网站Web开发用什么语言好?PHP、ASP还是ASP.NET
  9. ORA-00904:quot;T1quot;.quot;AREA_IDquot; :标识符无效
  10. Windows 7 安装VS2008 SP1 失败
  11. 机器学习在电商应用中的三个境界:爆款模型、转化率模型及个性化模型
  12. html随机背景颜色,javascript实现随机生成DIV背景色
  13. HTTP的options方法作用
  14. 探秘C++之回炉重造
  15. java销毁servlet_servlet一般什么时候销毁
  16. vue 引入萤石视频
  17. 如何创建数据链接文件
  18. 如何用好MindMapper中的便签
  19. 关于“尺蠖(huò)效应”
  20. 坠落的唯品会与它焦虑的“二选一”

热门文章

  1. matlab正序零序负序,正序负序零序的理解
  2. 逼自己一把,你就优秀了
  3. VBA提取字符串纯数字的方法
  4. Eclipse中Java项目转化为Java Web项目
  5. Python第三方库turtle画小人发射爱心
  6. python官方文档学习_Python3.5.2官方文档学习备忘录
  7. 微信小程序毕业设计 基于微信会议室预约小程序系统开题报告
  8. 基于C++的Qt网络编程——基于 IP 多播的网络会议程序
  9. linux常用的简单命令(三)tar、scp、df/du、ps、free、top、netstat、tcpdump、kill、reboot/halt/poweroff、shutdown
  10. 如何在WindowsXP中发短信