在画之前首先介绍一下Matlab boxplot下面这段说明内容来自http://www.plob.org/2012/06/10/2153.html
 

由于matlab具有强大的计算功能,用其统计数据功能优点显而易见,这里分享使用matlab中的boxplot的一些技巧,供大家参考。

Matlab boxplot命令

格式如下

boxplot(X)产生矩阵X的每一列的盒图和“须”图,“须”是从盒的尾部延伸出来,并表示盒外数据长度的线,如果“须”的外面没有数据,则在“须”的底部有一个点。 www.iLoveMatlab.cn

boxplot(X,notch)当notch=1时,产生一凹盒图,notch=0时产生一矩箱图。

boxplot(X,notch,'sym')sym表示图形符号,默认值为“+”。

boxplot(X,notch,'sym',vert) %当vert=0时,生成水平盒图,vert=1时,生成竖直盒图(默认值vert=1)。 Matlab中文论坛

boxplot(X,notch,'sym',vert,whis) %whis定义“须”图的长度,默认值为1.5,若whis=0则boxplot函数通过绘制sym符号图来显示盒外的所有数据值。

箱线图(Boxplot)也称箱须图(Box-whisker Plot),是利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法,它也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。

画图步骤:

1、画数轴,度量单位大小和数据批的单位一致,起点比最小值稍小,长度比该数据批的全距稍长。

2、画一个矩形盒,两端边的位置分别对应数据批的上下四分位数(Q1和Q3)。在矩形盒内部中位数(Xm)位置画一条线段为中位线。

3、在Q3+1.5IQR(四分位距)和Q1-1.5IQR处画两条与中位线一样的线段,这两条线段为异常值截断点,称其为内限;在F+3IQR和F-3IQR处画两条线段,称其为外限。处于内限以外位置的点表示的数据都是异常值,其中在内限与外限之间的异常值为温和的异常值(mild outliers),在外限以外的为极端的异常值(extreme outliers)。

4、从矩形盒两端边向外各画一条线段直到不是异常值的最远点,表示该批数据正常值的分布区间。

5、用“〇”标出温和的异常值,用“*”标出极端的异常值。相同值的数据点并列标出在同一数据
线位置上,不同值的数据点标在不同数据线位置上。至此一批数据的箱线图便绘出了。统计软件绘制的箱线图一般没有标出内限和外限。:

例子1:

clear

x1=[1,2,2,3,5,3];

x2=[2,5,4,5,8,6];

g1={x1,x2};

%group2

x3=[2,8,9,2,1,6];

x4=[5,4,3,22,11,6];

g2={x3,x4};

%group3

x5=[10,12,22,4];

x6=[12,15,4,25];

g3={x5,x6};

G=cat(1,g1,g2,g3); 

class={1,2,3}

positions = [1 1.25 2 2.25 3 3.25];

boxplot(G,class, 'positions', positions);

set(gca,'xtick',[mean(positions(1:2)) mean(positions(3:4)) mean(positions(5:6)) ])

set(gca,'xticklabel',{'Group1','Group2','Group3'})

color = ['c', 'y', 'c', 'y'];

h = findobj(gca,'Tag','Box');

for j=1:length(h)

   patch(get(h(j),'XData'),get(h(j),'YData'),color(j),'FaceAlpha',.5);

end

c = get(gca, 'Children');

hleg1 = legend(c(1:2), 'Feature1', 'Feature2' );

  

 

例2:

数据:BoxPlotData.mat,包含X4058_300和X4058_400两个变量数据

X4058_300=[
0.6010 0.6847 0.6798 0.6700 0.6059 0.6749 0.6453 0.6502 0.6847 0.6700 0.5813 0.6404 0.6749 0.6749 0.6650 0.6502 0.6749 0.6305 0.6355 0.7143;
0.6207 0.6650 0.6847 0.6749 0.5961 0.6601 0.6404 0.6700 0.6946 0.6897 0.6059 0.6749 0.6650 0.6749 0.6453 0.6502 0.6700 0.6256 0.6256 0.6995 ;
0.6601 0.6700 0.7340 0.7044 0.6355 0.7241 0.6798 0.6897 0.7094 0.6946 0.6256 0.6798 0.7044 0.7389 0.6700 0.6749 0.7143 0.6650 0.6059 0.6502;
0.7291 0.6108 0.7192 0.7537 0.5862 0.6355 0.6010 0.7143 0.6946 0.6897 0.6453 0.7685 0.7635 0.6404 0.7094 0.7143 0.6108 0.6552 0.7389 0.6897;
0.7044 0.7044 0.7044 0.6847 0.7143 0.6700 0.6650 0.7438 0.7143 0.7143 0.6601 0.6502 0.6995 0.7586 0.7488 0.6897 0.6700 0.6946 0.6897 0.6897;
0.6355 0.6847 0.7291 0.7143 0.6700 0.7438 0.6700 0.6650 0.7192 0.7044 0.6355 0.6847 0.6749 0.7094 0.6798 0.6453 0.7241 0.6946 0.6108 0.6700 ] X4058_400 =[
0.5922 0.6408 0.6408 0.5825 0.6505 0.6796 0.6214 0.6796 0.6311 0.6505 0.5825 0.6699 0.6602 0.6602 0.7282 0.6602 0.6699 0.7087 0.6505 0.6505 ;
0.6117 0.6311 0.6602 0.6117 0.6505 0.6796 0.6214 0.6990 0.6990 0.6311 0.5922 0.6796 0.6699 0.6408 0.7184 0.6505 0.6602 0.7087 0.6214 0.6796;
0.6311 0.7184 0.7573 0.6893 0.6311 0.6990 0.6408 0.7087 0.7379 0.6990 0.6699 0.7184 0.6699 0.6699 0.7184 0.6893 0.6699 0.6990 0.6214 0.6990;
0.6602 0.6311 0.7379 0.6408 0.5922 0.7282 0.5728 0.7087 0.7379 0.7379 0.5728 0.7767 0.7476 0.6214 0.7476 0.6214 0.7379 0.6893 0.6019 0.6699 ;
0.6214 0.7476 0.6311 0.6699 0.6699 0.6311 0.6214 0.6699 0.6796 0.6505 0.5922 0.6796 0.7184 0.6893 0.8058 0.6699 0.6602 0.7184 0.6796 0.6796 ;
0.6117 0.6893 0.7282 0.6602 0.7573 0.7379 0.6408 0.7184 0.7087 0.7087 0.6990 0.6796 0.6214 0.6311 0.7573 0.6602 0.7379 0.6796 0.6796 0.7282 ;]

  

Matlab程序:

clear

load BoxPlotData

x01=X4058_300;
x02=X4058_400; x1 = [x01(1,:);x02(1,:)]';
x2 = [x01(2,:);x02(2,:)]';
x3 = [x01(3,:);x02(3,:)]';
x4 = [x01(4,:);x02(4,:)]';
x5 = [x01(5,:);x02(5,:)]';
x6 = [x01(6,:);x02(6,:)]';
f=figure(1)
x = [x1;x2;x3;x4;x5;x6]; x = x(:);
g1 = [ones(size(x1)); 2*ones(size(x2)); 3*ones(size(x3));4*ones(size(x4));...
5*ones(size(x5));6*ones(size(x6));]; g1 = g1(:);
g2 = repmat(1:2,120,1); g2 = g2(:);
positions = [[1:6],[7:12]];
bh=boxplot(x, {g2,g1},'notch','on','whisker',1,'colorgroup',g1, 'factorgap',[8 1],'symbol','.','outliersize',4,'widths',0.6,'positions',positions)
xlabel('Training data size');
ylabel('Mean zero-one error')
grid on
set(gca,'YLim',[0.45,0.85],'gridLineStyle', '-.'); set(bh,'linewidth',1.2); color = ['c', 'y', 'g', 'b','o', 'b','c', 'y', 'g', 'b','o', 'b'];
h = findobj(gca,'Tag','Box');
mk=findobj(gca,'tag','Outliers'); % Get handles for outlier lines.
set(mk,'Marker','o'); % Change symbols for all the groups.
for j=1:length(h)/2
patch(get(h(j),'XData'),get(h(j),'YData'),color(4),'FaceAlpha',0.01*j);
end
for j=(length(h)/2+1):length(h)
patch(get(h(j),'XData'),get(h(j),'YData'),color(4),'FaceAlpha',0.01*(j-length(h)/2));
end set(gca,'xtick',[7.5])
% set(gca,'xtick',[]);
set(gca,'XTickLabel',{' '}) % Create textbox
annotation(f,'textbox',...
[0.3 0.075 0.035 0.075],...
'String',{'300'},...
'FitBoxToText','off',...
'EdgeColor','none'); % Create textbox
annotation(f,'textbox',...
[0.7 0.075 0.035 0.075],...
'String','400',...
'FitBoxToText','off',...
'EdgeColor','none');

  

Matlab boxplot for Multiple Groups(多组数据的箱线图)的更多相关文章

  1. 箱线图boxplot

    箱线图boxplot--展示数据的分布 图表作用: 1.反映一组数据的分布特征,如:分布是否对称,是否存在离群点 2.对多组数据的分布特征进行比较 3.如果只有一个定量变量,很少用箱线图去看数据的分布 ...

  2. 箱线图(boxplot)简介与举例

    简述:   盒图是在1977年由美国的统计学家约翰·图基(John Tukey)发明的.它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(m ...

  3. Matplotlib数据可视化(6):饼图与箱线图

    In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParam ...

  4. Matplotlib学习---用matplotlib画箱线图(boxplot)

    箱线图通过数据的四分位数来展示数据的分布情况.例如:数据的中心位置,数据间的离散程度,是否有异常值等. 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)分 ...

  5. R_Studio(学生成绩)对数据缺失值md.pattern()、异常值分析(箱线图)

    我们发现这张Gary.csv表格存在学生成绩不完全的(五十三名学生,三名学生存在成绩不完整.共四个不完整成绩) 79号大学语文.高等数学 96号中国近代史纲要 65号大学体育 (1)NA表示数据集中的 ...

  6. 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)

    数据分布图简介 中医上讲看病四诊法为:望闻问切.而数据分析师分析数据的过程也有点相似,我们需要望:看看数据长什么样:闻:仔细分析数据是否合理:问:针对前两步工作搜集到的问题与业务方交流:切:结合业务方 ...

  7. Echarts数据可视化series-line线图,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  8. 用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我被狗咬了 在谈及数据可视化的时候,我们通常都会使用到matplo ...

  9. pandas:聚合统计、数据分箱、分组可视化

    1.聚合统计 1.1描述统计 #df.describe(),对数据的总体特征进行描述 df.groupby('team').describe() df.groupby('team').describe ...

随机推荐

  1. [HDOJ3709]Balanced Number(数位dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 题意:求区间[L,R]内每一个数中是否存在一位,使得左边的各位数*距离=右边的各位数*距离(自己 ...

  2. Codeforces Round #378 (Div. 2) C. Epidemic in Monstropolis 模拟

    C. Epidemic in Monstropolis time limit per test 1 second memory limit per test 256 megabytes input s ...

  3. const 与 readonly 知多少

    const与readonly 很像,都是将变量声明为只读,且在变量初始化后就不可改写.那么,const与readonly 这两个修饰符到底区别在什么地方呢?其实,这个牵扯出C#语言中两种不同的常量类型 ...

  4. class&object

    类(class)是构造对象的模板或蓝图. 对象的行为是用可调用的方法定义的. import java.time.*; public class EmployeeTest{ public static ...

  5. MonkeyRunner学习(2)常用命令

    目录: 1.截图 2.暂停 (时延秒) 3.屏幕操作 4.打印 5.字符串发送到键盘输入(登录输入) 6.唤醒设备屏幕 7.重起手机 8.按键(系统键) 9.回车键 10.for 循环 11.循环截图 ...

  6. Android开发中退出程序几种方法

    参考:http://johncookie.iteye.com/blog/890734 Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗 ...

  7. OpenGL的gluLookAt和glOrtho的关系

    OpenGL的gluLookAt和glOrtho的关系 一直不明白gluLookAt()和glOrtho()两者之间的关系:gluLookAt()是观察变换,glOrtho()是正交投影.glLook ...

  8. Sqlserver_insert语法

    1. INSERT INTO SELECT 通过 SQL,您可以从一个表复制信息到另一个表.   INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中. 我们可 ...

  9. 20160805_笔记本_CentOS6.4x64分区

    1.严gong 笔记本 CentOS6.4x64分区: 1.1.OS自动分区的方案: 1.2.我模仿上面的方案,自己弄的方案:(没有LVM卷组) 2.

  10. 如何设置session过期时间为30分钟

    今天在我的微博(Laruence)上发出一个问题: 我在面试的时候, 经常会问一个问题: “如何设置一个30分钟过期的Session?”, 大家不要觉得看似简单, 这里面包含的知识挺多, 特别适合考察 ...