赞
踩
目录
因为最近论文有信息量很大的结果需要展示,如果用常用的折线图或者柱状图很难集中且全面的展示实验结果,于是准备先简单了解下。
箱线图,又称箱形图(boxplot)或盒式图或盒须图,是一种用作显示一组数据分散情况资料的统计图。不同于一般的折线图、柱状图或饼图等传统图表,只是数据大小、占比、趋势等等的呈现,其包含一些统计学的均值、分位数、极值等等统计量,因此,该图信息量较大,不仅能够分析不同类别数据平均水平差异(需在箱线图中加入均值点),还能揭示数据间离散程度、异常值、分布差异等等。
箱形图有6个参数:
下边缘(Q1),表示最小值;
下四分位数(Q2),又称“第一四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。长方形下边界;
中位数(Q3),又称“第二四分位数”等于该样本中所有数值由小到大排列后第50%的数字,横线;
上四分位数(Q4),又称“第三四分位数”等于该样本中所有数值由小到大排列后第75%的数字,长方形上边界;
上边缘(Q5),表述最大值。
第三四分位数与第一四分位数的差距又称四分位间距。
异常值:即超出四分位数差3倍距离的异常值,用实心点表示;较为温和的异常值,即处于1.5倍-3倍四分位数差之间的异常值,空心白圆圈。
五数概括法使用下面五个数来汇总数据:
(1)最小值(Q1-1.5IQR)
(2)第一四分位数(Q1)
(3)中位数(Q2)
(4)第三四分位数(Q3)
(5)最大值(Q3+1.5IQR)
计算公式+规则(n表示数据总数)
举例1(整除)说明,代入公式即可
举例2(非整除,离哪个店近则哪个点占比75%)
【箱形图的应用】
(1)可以作为一种检测异常值的方法;
(2)用于多组数据的图形汇总,便于对各组数据进行直观比较分析。
【箱形图的绘制方法】本文主要讲前两个方法
方法1:利用pandas包中的Series.plot()、DataFrame.plot()或DataFrame.boxplot()方法;
方法2:利用matplotlib包中axes对象的boxplot()方法;
方法3:利用seaborn包中的cataplot()或者boxplot(),其中seaborn.boxplot()是seaborn.cataplot()的参数kind='box'时的一种情况
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=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)
- x:指定要绘制箱线图的数据
- notch:是否以凹口的形式展现箱线图,默认非凹口
- sym:指定异常点的形状,默认为+号显示
- vert:是否需要将箱线图垂直摆放,默认垂直摆放
- whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
- positions:指定箱线图的位置,默认为[0,1,2…]
- widths:指定箱线图的宽度,默认为0.5
- patch_artist:bool类型参数,是否填充箱体的颜色;默认为False
- meanline:bool类型参数,是否用线的形式表示均值,默认为False
- showmeans:bool类型参数,是否显示均值,默认为False
- showcaps:bool类型参数,是否显示箱线图顶端和末端的两条线(即上下须),默认为True
- showbox:bool类型参数,是否显示箱线图的箱体,默认为True
- showfliers:是否显示异常值,默认为True
- boxprops:设置箱体的属性,如边框色,填充色等
- labels:为箱线图添加标签,类似于图例的作用
- filerprops:设置异常值的属性,如异常点的形状、大小、填充色等
- medianprops:设置中位数的属性,如线的类型、粗细等
- meanprops:设置均值的属性,如点的大小、颜色等
- capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等
- whiskerprops:设置须的属性,如颜色、粗细、线的类型等
- %matplotlib inline
- #首先导入基本的绘图包
- import matplotlib.pyplot as plt
- import numpy as np
- import pandas as pd
- #添加成绩表
- plt.style.use("ggplot")
- plt.rcParams['axes.unicode_minus'] = False
- plt.rcParams['font.sans-serif']=['SimHei']
- #新建一个空的DataFrame
- df=pd.DataFrame()
- #添加成绩单,最后显示成绩单表格
- df["英语"]=[76,90,97,71,70,93,86,83,78,85,81]
- df["经济数学"]=[65,95,51,74,78,63,91,82,75,71,55]
- df["西方经济学"]=[93,81,76,88,66,79,83,92,78,86,78]
- df["计算机应用基础"]=[85,78,81,95,70,67,82,72,80,81,77]
-
-
- #方法1 用matplotlib来画出箱型图
- plt.boxplot(x=df.values,labels=df.columns,whis=1.5)
- plt.show()
-
- #方法2,用pandas自带的画图工具更快
- df.boxplot()
- plt.show()
- %matplotlib inline
- import numpy as np
- import matplotlib.pyplot as plt
- import pandas as pd
- np.random.seed(2) #设置随机种子
- df = pd.DataFrame(np.random.rand(5,4),
- columns=['A', 'B', 'C', 'D'])#先生成0-1之间的5*4维度数据,再装入4列DataFrame中
- df.boxplot()
- # plt.boxplot(df) #等同上面的方法
- plt.show()
-
- """
- sym异常值形状。默认是空心圆圈,'r*'是红色五角星
- vert展示形式。默认为true,即正常垂直摆放的形状,修改成false的话就是水平展示。
- patch_artist箱图填充颜色与否,默认为False。改成true默认填充水蓝色
- meanline:是否用虚线的形式表示均值.默认为False,默认虚线,为了和中位数线区分,所以是虚线的形式
- showmeans:是否用三角形图案显示均值,默认为False,形状也是为了和异常值区分
- whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
- """
- df.boxplot(sym='r*',vert=False,patch_artist=True,meanline=False,showmeans=True)
- plt.show()
-
-
- """
- 美化9可用for循环来构造)
- 比如各条线的颜色,粗细程度等等。
- """
- f=df.boxplot(sym='r*',patch_artist=True,return_type='dict')
- """
- boxes, 是25分位值和75分位值构成的box
- whiskers, 是指从box 到error bar之间的竖线.
- caps, 是指 下边缘error bar 横线.
- medians, 是中位值的横线, 每个median是一个Line2D对象
- fliers, 是指error bar线之外的离散点.
- means, 是均值的横线
- """
- for box in f['boxes']:
- # 箱体边框颜色
- box.set( color='#7570b3', linewidth=2)
- # 箱体内部填充颜色
- box.set( facecolor = '#1b9e77' )
- for whisker in f['whiskers']:
- whisker.set(color='r', linewidth=2)
- for cap in f['caps']:
- cap.set(color='g', linewidth=3)
- for median in f['medians']:
- median.set(color='DarkBlue', linewidth=3)
- for flier in f['fliers']:
- flier.set(marker='o', color='y', alpha=0.5)
- plt.show()
-
-
从图形可以看出,A、B、C、D四组数A、D数据较集中(大部分在上下四分位箱体内),但都有异常值,C的离散程度最大(最大值与最小值之间距离),以均值为中心,B分布都有明显右偏(即较多的值分布在均值的右侧),A、C则有明显左偏。
从分析的角度来说,上面boxplot最初始图形已经够用,但是在matplotlib库下boxplot函数中包含n多参数,涉及到对框的颜色及形状、线段线型、均值线、异常点的形状大小等等设置。
字典将箱形图的每个组成部分映射到matplotlib.lines.Line2D创建的实例列表。该词典具有以下键(假定垂直框图):
boxes
:箱图的主体,显示四分位数和中位数的置信区间(如果启用)。medians
:每个框的中间的水平线。whiskers
:垂直线延伸到最极端的非异常数据点。caps
:晶须末端的水平线。fliers
:表示超出晶须(传单)的数据的点。means
:表示均值的点或线。
前边说过,很多参数使用很少,但对于图形来说,可能还能用到的就是美化,比如各条线的颜色,粗细程度等等。这里可用for循环来构造
直接读取csv文件绘制【Python】Matplotlib画图(十一)——箱线图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。