文章目录
箱线图是由一个箱体和一对箱须所组成的统计图形。箱体是由第一四分位数、中位数(第二四分位数)和第三四分位数所组成的。在箱须的末端之外的数值可以理解成离群值,因此,箱须是对一组数据范围的大致直观描述。
1.应用场景——多组定量数据的分布比较
箱线图主要应用在一系列测量或观测数据的比较场景中,例如学校间或班级间测试成绩的比较,球队中的队员体能对比,产品优化后的测试数据比较以及同类产品的各项性能的比较,等等,都可以借助箱线图来完成相关分析或研究任务。因此箱线图的应用范围十分广泛,而且实现起来非常简单。
2.绘制原理
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["FangSong"]
mpl.rcParams["axes.unicode_minus"]=False
testA = np.random.randn(5000)
testB = np.random.randn(5000)
testList = [testA,testB]
labels = ["随机数生成器AlphaRM","随机数生成器BetaRM"]
colors = ["#1b9e77","#d95f02"]
whis = 1.6
width = 0.35
bplot = plt.boxplot(testList,
whis=whis,
widths=width,
sym="o",
labels=labels,
patch_artist=True)
for patch,color in zip(bplot["boxes"],colors):
patch.set_facecolor(color)
plt.ylabel("随机数值")
plt.title("生成器抗干扰能力的稳定性比较")
plt.grid(axis="y",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
bplot = plt.boxplot(testList,
whis=whis,
widths=width,
sym="o",
labels=labels,
patch_artist=True)
testList:绘制箱线图的输入数据
whis:四分位间距的倍数,用来确定箱须包含数据的范围的大小
widths:设置箱体的宽度
sym:离群值的标记样式
labels:绘制每一个数据集的刻度标签
patch_artist:是否给箱体添加颜色
mpl.rcParams["axes.unicode_minus"]=False语句放弃unicode_minus的使用,这样图形中的刻度标签值是
负数的情况就可以合理的解决,即负数可以正确的显示。
将需要比较的数据放在列表testList中,同时作为函数boxplot()的参数进行输入。将关键字参数whis,widths,
sym和labels传入函数boxplot里,完成箱线图的基本绘制工作。接下来对箱线图的返回值进行操作,
这个返回值是一个字典数据结构,由于需要对箱体添加颜色,所以使用键"boxes"来调出键值"bplot[boxes]"。
最后使用内置函数zip()生成元组列表zip(bplot["boxes",colors]),使用for循环对每个箱体颜色进行颜色填充,从而完成整个箱线图的绘制工作。如果将关键字参数notch的参数值设置为"True",同时其它语句保持不变,那么箱体就变成有"V"型凹痕的箱体了。
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["FangSong"]
mpl.rcParams["axes.unicode_minus"]=False
testA = np.random.randn(5000)
testB = np.random.randn(5000)
testList = [testA,testB]
labels = ["随机数生成器AlphaRM","随机数生成器BetaRM"]
colors = ["#1b9e77","#d95f02"]
whis = 1.6
width = 0.35
bplot = plt.boxplot(testList,
whis=whis,
widths=width,
sym="o",
labels=labels,
patch_artist=True,
notch=True)
for patch,color in zip(bplot["boxes"],colors):
patch.set_facecolor(color)
plt.ylabel("随机数值")
plt.title("生成器抗干扰能力的稳定性比较")
plt.grid(axis="y",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
3.延伸——箱体、箱须、离群值的含义和计算方法
箱线图的组成部分有:箱体、箱须和离群值,其中,箱体主要由第一四分位数、中位数和第三四分为数组成,箱须又分为上箱须和下箱须。下面,介绍一下这些组成部分的含义和计算方法。
其中Q1和Q3分别是第一四分位数和第三四分位数,whis是关键字参数whis的参数值,IQR(IQR是Inter-Quartile Range的缩写)是四分位差,计算方法是IQR=Q3-Q1。离群值Outlier的判断标准是
其中,value是数据集Data中的数据点。
; 4.水平方向的箱线图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["FangSong"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.random.randn(1000)
plt.boxplot(x,vert=False)
plt.xlabel("随机数值")
plt.yticks([1],["随机数生成器AlphaRM"],rotation=90)
plt.title("随机数生成器抗干扰能力的稳定性")
plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
5.不绘制离群值的水平放置的箱线图
大多数情况下,我们都是绘制包含离群值的箱线图。但是很多时候,我们只需要绘制数据集的分布结构,也就是说只需要标记出箱须的长度、上四分位数、下四分位数、中位数的位置,即可满足描绘数据集的分布特征目标。离散值不是重点要考虑的描述统计对象。
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["FangSong"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.random.randn(1000)
plt.boxplot(x,vert=False,showfliers=False)
plt.xlabel("随机数值")
plt.yticks([1],["随机数生成器AlphaRM"],rotation=90)
plt.title("随机数生成器抗干扰能力的稳定性")
plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
Original: https://blog.csdn.net/qq_34562355/article/details/124822905
Author: 御坂御坂001
Title: 10.绘制统计图形——箱线图
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/639970/
转载文章受原作者版权保护。转载请注明原作者出处!