箱线图通过绘制观测数据的五数总括,即最小值、下四分位数、中位数、上四分位数以及最大值,描述了变量值的分布情况。箱线图能够显示出离群点(outlier),离群点也叫做异常值,通过箱线图能够很容易识别出数据中的异常值。

箱线图提供了识别异常值的一个标准:

异常值通常被定义为小于 QL- l.5 IQR 或者 大于 Qu+ 1.5 IQR的值,QL称为下四分位数, Qu称为上四分位数,IQR称为四分位数间距,是Qu上四分位数和QL下四分位数之差,其间包括了全部观察值的一半。

箱线图的各个组成部分的名称及其位置如下图所示:

箱线图可以直观地看出数据集的以下重要性值:

中心位置:中位数所在的位置就是数据集的中心;

散布程度:箱线图分为多个区间,区间较短时,表示落在该区间的点较集中;

对称性:如果中位数位于箱子的中间位置,那么数据分布较为对称;如果极值离中位数的距离较大,那么表示数据分布倾斜

一,绘制箱线图

绘制箱线图比较简单,通常情况下,我们使用ggplot和geom_boxplot绘制箱线图,在下面的小节中,我们使用ToothGrowth作为示例数据:

ToothGrowth$dose

head(ToothGrowth)

len supp dose1 4.2 VC 0.5

2 11.5 VC 0.5

3 7.3 VC 0.5

4 5.8 VC 0.5

5 6.4 VC 0.5

6 10.0 VC 0.5

1,绘制基本的箱线图

使用geom_boxplot绘制基本的箱线图:

library(ggplot2)

ggplot(ToothGrowth, aes(x=dose, y=len)) +geom_boxplot()

2,设置离群点(outlier)

geom_boxplot函数中有outlier开头的多个参数,用于修改离群点的属性:

outlier.colour:离群点的颜色

outlier.fill:离群点的填充色

outlier.shape:离群点的形状

outlier.size:离群点的大小

outlier.alpha:离群点的透明度

示例代码如下:

ggplot(ToothGrowth, aes(x=dose, y=len)) +geom_boxplot(outlier.colour="red", outlier.shape=8, outlier.size=4)

3,设置箱线图的颜色

通过aes(color=)函数可以为每个箱线图设置一个颜色,而箱线图的划分是通过 aes(color=)函数的color参数来划分的,划分箱线图之后,scale_color_*()函数才会起作用,该函数用于为每个箱线图设置前景色和填充色,颜色是自定义的:

scale_fill_manual() #forbox plot, bar plot, violin plot, etc

scale_color_manual() #for lines and points

以下代码设置箱线图的前景色:

ggplot(ToothGrowth, aes(x=dose, y=len,color=dose)) +geom_boxplot()+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))

4,设置Legend 的位置

说明(Legend)是对箱线图的解释性描述,默认的位置是在画布的右侧中间位置,可以通过theme()函数修改Legend的位置,lengend.position的有效值是top、right、left、bottom和none,默认值是right:

p

p+ theme(legend.position="top")

p+ theme(legend.position="bottom")

p+ theme(legend.position="none") # Remove legend

5,设置箱线图的标题和坐标轴的名称

通过labs设置箱线图的标题和坐标的名称,参数title用于设置标题,x和y用于设置x轴和y轴的标签:

ggplot(ToothGrowth, aes(x=dose, y=len,color=dose)) +geom_boxplot()+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+theme(legend.position="right")+labs(title="Plot of length per dose",x="Dose (mg)", y = "Length")

6,绘制箱线图的散点

通过geom_point函数,向箱线图中添加点,geom_jitter()函数是geom_point(position = "jitter")的包装,binaxis="y"是指沿着y轴进行分箱:

# Box plot with dot plot

p+ geom_dotplot(binaxis='y', stackdir='center', dotsize=1)

# Box plot with jittered points

#0.2 : degree of jitter inx direction

p+ geom_jitter(shape=16, position=position_jitter(0.2))

7,旋转箱线图

函数coord_flip()用于翻转笛卡尔坐标系,使水平变为垂直,垂直变为水平,主要用于把显示y条件x的geoms和统计信息转换为x条件y。

p

二,异常值检测

绘制散点图,并标记异常值:

ggplot(ToothGrowth, aes(x=dose, y=len,color=dose)) +geom_boxplot(outlier.colour="red", outlier.shape=7,outlier.size=4)+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+theme(legend.position="right")+labs(title="Plot of length per dose",x="Dose (mg)", y = "Length")+geom_dotplot(binaxis='y', stackdir='center', stackratio=1.5, dotsize=1.2)

当箱线图中的异常值过多时,绘制的图中,箱子被压成一条线,无法观察到数据的分布,这就需要移除异常值,只保留适量的离群点,常见的做法是改变ylim的范围,代码是:

# compute lower and upper whiskers

ylim1= boxplot.stats(df$y)$stats[c(1, 5)]

# scale y limits based on ylim1

ggplot()+ gemo_box() + coord_cartesian(ylim = ylim1*1.05)

三,箱图的排序

对箱图的排序,实际上,是对箱图的x轴因子进行排序,而因子的顺序是由因子水平决定的。在对箱图进行排序时,可以按照数据的均值对x轴因子水平进行排序,重置数据框x轴的因子水平,就可以实现箱图的排序:

x_order %group_by(x_factor)%>%summarize(mean_y=mean(y_value))%>%ungroup()%>%arrange(desc(mean_y))%>%

select(x_factor);

df$x_factor

参考文档:

ggplot2箱式图两两比较_R绘图 第四篇:绘制箱图(ggplot2)相关推荐

  1. R语言绘制箱图(Base R and ggplot2)

    R语言绘制箱图 目录 R语言绘制箱图 R原生绘制箱图 ggplot2绘制箱图 箱图boxplot(有时称为Box-and-Whitker plot)是一种显示

  2. plt.boxplot()函数绘制箱图、常用方法及含义详解

    1. 箱图含义 箱图是一中用于统计数据分布的统计图,也可以粗略地看出数据是否具有对称性,分布的分散程度等信息.箱图中的信息含义如下: 最下方的横线表示最小值 最上方的横线表示最大值 黑色空心圆圈表示异 ...

  3. setitimer 创建两个定时器_JavaScript第二十四篇 高级定时器(下)

    数组分块 所谓数组分块,就是当你发现某个循环占用了大量时间,同时对于上述两个问题,你的回答都是"否",那么你就可以使用定时器分割这个循环. 思路是结合定时器进行递归调用定时器 基本 ...

  4. 如何用python绘图、柱形图、线形图等_python使用Plotly绘图工具绘制散点图、线形图...

    今天在研究Plotly绘制散点图的方法,供大家参考,具体内容如下 使用Python3.6 + Plotly Plotly版本2.0.0 在开始之前先说说,还需要安装库Numpy,安装方法在我的另一篇博 ...

  5. R绘图 第十篇:绘制散点图(高级)

    散点图用于描述两个连续性变量间的关系,三个变量之间的关系可以通过3D图形或气泡来展示,多个变量之间的两两关系可以通过散点图矩阵来展示. 一,添加了最佳拟合曲线的散点图 使用基础函数plot(x,y)来 ...

  6. 钉钉日志范文100篇_看图写话范文328:暑假旅行(4篇)

    范文01:暑假旅行400字 暑假,我们一家去了嘉兴游玩.嘉兴南湖因红船而成为革命圣地.老爸对于中国近代革命史可谓是如数家珍:"星星之火可以燎原!你们看,当初共产党就是在这么小的一艘船里点燃了 ...

  7. R语言中使用boxplot函数绘制箱线图

    (源自百度,便于查看故复制于此,若有冒犯会删除) 箱线图简介 箱线图又称箱形图或盒须图,该图是由5个特征值绘制而成的图形. 5个特征值是变量的最大值.最小值.中位数.第1四分位数和第3四分位数. 连接 ...

  8. R语言boxplot绘制箱线图

    Usage # x 为向量,dataframe,以及matirx boxplot(x, ...) # x 为formula boxplot(formula, data = NULL, ..., sub ...

  9. ggplot2箱式图两两比较_R语言ggplot2箱线图绘图总结

    主要从如何看图.用图与作图三个方面来对箱线图进行理解和总结. 1.看图 箱线图概述图1 箱线图概述图2 如图所示,箱线图是将一组数据按照大小顺序排列后进行绘制的,包含6个数据节点,分别表示出数据的上边 ...

最新文章

  1. python运行mcmc为何老出错_python – 使用pyMCMC / pyMC对数据/观察结果设置非线性函数...
  2. Oracle创建用户、表空间、导入导出、...命令
  3. 机械制造技术学习笔记(七)
  4. libncurses.so.5 is needed by unixODBC_值得一看的全息网游 ——生存游戏by那时烟花
  5. html 的c标签库,jstl C标准标签库Ⅰ
  6. 前端学习(2355):uni里面的样式学习
  7. testufo测试刷新率测试_上手体验微星电竞显示器PAG301CR:200Hz高刷新率只是它的小亮点...
  8. 02Framelayout:帧布局
  9. 啊哈c语言逻辑的挑战课后题答案,啊哈C语言 逻辑的挑战(修订版)pdf
  10. 汇编语言程序设计技巧详解(附例题)
  11. FireMonkey v1.1的WinSoft WinRT-10.3-SEO-狼术
  12. JDK1.8HashMap底层实现原理
  13. GNOME-Shell-Extensions开发经验(一)Hello,world!
  14. 2020年408真题_2020年港澳台联考真题——英语!
  15. linux ntfs格式u盘实现与挂载
  16. HTC M7日文版HTL22刷机包 毒蛇2.5.0 ART NFC Sense6.0
  17. 软件测试计划模板--云闪付平台
  18. 图文对齐居中的几种方式
  19. python excel处理成绩_用Python操作Excel,实现班级成绩的统计
  20. 南大庄建军计算机学院讲座,2015年全国大学生电子设计竞赛工作经验交流会汇报_南京大学庄建军.ppt...

热门文章

  1. ad域 禁用账号_IST-AD域信息同步平台来袭
  2. easyui java管理系统_EasyUI 后台管理系统
  3. Java @Transient 注解使用
  4. Git实战(二)原理
  5. 科普:UTF-8 GBK UTF8 GB2312 之间的区别和关系
  6. java写入文件的几种方法分享
  7. Sphinx+MySQL5.1x+SphinxSE+mmseg
  8. [linux]Ubuntu12.1下打开terminal的方式
  9. Private Inheritance(what, where)
  10. Flume实战监听网络端口