可视化|箱线图法详解及matplotlib画箱线图以及boxplot参数详解

箱线图法是一种检测异常值的常用方法,由于其对数据分布没有任何假设,便使得它能够适用于几乎任何的异常值检测场景。
1977年,美国著名数学家JohnW. Tukey首先在他的著作《ExploratoryDataAnalysis》中介绍了箱形图。其相关定义如下:
(1) 四分位距(Inter quartile range,简记IQR)指的是下四分位数(Q1)和上四分位数(Q3)之间的距离。
(2) Inner feces指的是落在区间[Q1-1.5*IQR, Q3+1.5*IQR]内部的区域。
(3) Outer fences指的是落在区间[Q1-3*IQR, Q3+3*IQR]外部的区域。通常落在Inner fences和Ourer fences之间的点可能是异常点,落在Outer fences之外的极值点是异常值点。实际情况中异常值大多数都是少数,对上下四分位数的扰动比较小,因此这两个统计量十分健壮,此方法数据分布没有任何假设,因此适用性十分广泛,对极值点更加稳健。
箱线图原理还是挺简单的,想画出好看的箱线图还是需要费点心思的。
话不多说贴上代码:

# coding:utf-8 import numpy as np import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False# 正常显示负号data = https://www.it610.com/article/np.array([1,3,4,5,10,15,30])fig = plt.figure(figsize=(5, 5), dpi=100)# 调整画布大小,清晰度 fig = fig.add_subplot(111)# 画布1 fig.boxplot((data, data), # 数据 positions=[1, 4],# 放置在x轴的位置 widths=1.5,# 指定箱线图的宽度 notch=False, # 是否是凹口的形式展现箱线图,默认非凹口 vert=True, # 是否需要将箱线图垂直摆放,默认垂直摆放 meanline=True,# 是否用线的形式表示均值,默认用点来表示 patch_artist=True,# 是否填充箱体 showmeans=True, # 是否显示均值 showcaps=True, # 是否显示箱线图顶端和末端的两条线,默认显示 showfliers=True,# 是否显示异常值 showbox=True, # 是否显示箱线图的箱体,默认显示 meanprops = {"color": "black", "linewidth": 1.5}, # 设置平均线的属性,如线的类型、粗细等 medianprops={"color": "red", "linewidth": 0.5},# 设置中位数的属性,如线的类型、粗细等 boxprops={"facecolor": "C0", "edgecolor": "black","linewidth": 0.5, "alpha":0.4},# 设置箱体的属性,如边框色,填充色等 whiskerprops={"color": "black", "linewidth": 1.5, "alpha":0.8}, # 设置须的属性,如颜色、粗细、线的类型等 capprops={"color": "C0", "linewidth": 1.5}, # 设置箱线图顶端和末端线条的属性,如颜色、粗细等 sym="+",# 异常点的形状 )fig.set_xticks([1, 4])# 对应坐标1 4的位置换成下面的标签 fig.set_xticklabels(["箱线图", "箱线图2"]) plt.show()

【可视化|箱线图法详解及matplotlib画箱线图以及boxplot参数详解】许多的参数都直接放在代码里面解释了,可以好好看看,调试调试应该就懂了。
配上运行图:
可视化|箱线图法详解及matplotlib画箱线图以及boxplot参数详解
文章图片

这图不是很好看,但是调整那些参数可以让好看变成一种可能。

    推荐阅读