简介

箱线图,顾明思义,是形状像箱子并展示一组或多组数据分布的统计图,被认为是一个优于柱形图的数据可视化方案,文章中指出了很多箱线图的优点。

在ggplot2 中做箱线图的图形变换是geom_boxplot(),小提琴图是geom_violin。

可识别的美学映射?(geom_boxplot):

x

lower

upper

middle

ymin

ymax

alpha

colour

fill

group

linetype

shape

size

weight

详情参见vignette("ggplot2-specs"),直接在R中运行即可阅读。

箱线图(包含其变体小提琴图、Bean-plot)可以更真实的反应数据的分布,并且可以更轻松地在三个或更多样本之间进行比较。它使用25%,第50%和75%以及四分位数范围(IQR = Q3-Q1)来表征样本,其结果覆盖了中心数据的50%。 而且四分位数对异常值不敏感,并保留有关中心和差值的信息,加上异常值(outliers)的体现,使箱形图的内容更丰富。如果加上散点则可以更好的体现样品数,点越多,结果的稳定性、可靠性越好;而小提琴图(Violin plot)还可以通过箱体的宽窄在箱形图的基础上展示出数据分布的概率密度。

1. 简单箱线图

library(ggplot2)

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

boxplot.png

细节说明

首先看箱体:下边线代表下四分位数(第一四分位数,Q1),表示整体数据中有25%的数据少于该值;上边线代表上四分位数(第三四分位数,Q3),表示整体数据中有75%的数据少于该值;

箱体中间的线代表中位数,是一组数从小到大排列,居于正中间的单个数或正中间两个数的均值;

箱体的长度代表第三四分位数和第一四分位数的差值,也称为四分位间距(interquartile range,IQR);

箱体两端的衍生线最左延伸至Q1 - 1.5 x IQR(下极限),最右延伸至 Q3 + 1.5 x IQR(上极限);

超出上下极限线的点(或其他标记)表示潜在异常值(outliers)。

2. 水平箱线图

3. 分组

简单分组(fill, color)

在aes()里面添加fill 或者 color 参数。

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

fill = factor(dose)))

boxplot.png

3.箱线图与抖动图

加上散点则可以更好的体现样品数,点越多,结果的稳定性、可靠性越好。

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

geom_jitter(aes(x = supp, y = len))

boxplot.png

散点分组

当散点图也需要分组时,如果直接添加fill 和 color 就不够了,ggplot2 函数会分组混乱。

ggplot(data = ToothGrowth) +

geom_boxplot(aes(x = supp, y = len, color = factor(dose))) +

geom_jitter(aes(x = supp, y = len, color = factor(dose)))

boxplot.png

解决办法

a. position_jitterdodge

ggplot(data = ToothGrowth) +

geom_boxplot(aes(x = supp, y = len, color = factor(dose))) +

geom_jitter(aes(x = supp, y = len, color = factor(dose)),

position = position_jitterdodge())

boxplot.png

b. 产生一个新的分组变量,使其同时包含两个分组信息。

# 在数据集中创建一个新的变量supp_dose

# 其值是将supp 和 dose粘贴到一起,这样新的一列数据就包含了两种分组信息。

ToothGrowth$supp_dose

# 然后以新的分组信息为x轴,代码不变。

ggplot(data = ToothGrowth) +

geom_boxplot(aes(x = supp_dose, y = len, color = factor(dose))) +

geom_jitter(aes(x = supp_dose, y = len, color = factor(dose)))

boxplot.png

c. 移动所有点的坐标。

分组变量可以通过as.numeric()转化为连续数字变量:1,2,3,4,5,这样就生成了箱线图在x轴上的坐标。

as.numeric(factor(ToothGrowth$supp))

在此基础上,按照另一个分组变量获得一个索引。然后对每一组进行增加或者减少值,生成散点的x轴坐标。

as.numeric(factor(ToothGrowth$dose))

ToothGrowth$xpos

箱形图x坐标不变,散点图x坐标平移。

ggplot(data = ToothGrowth) +

geom_boxplot(aes(x = supp, y = len, color = factor(dose))) +

geom_jitter(aes(x = xpos, y = len, color = factor(dose)))

boxplot.png

4.小提琴图(Violin plot)

image.png

5. raincloud = violin plot + boxplot + raw data

云雨图开始是一个咨询问答产物,连接直达源代码;yyplot里面有封装好的包。但是,有时候下载这个包可能会遇到安装不上的情况,所以没法下载的可以去问答界面拿源码自己打包一下。

image.png

ggplot2箱式图两两比较_ggplot2 - 箱线图(Box - plot)相关推荐

  1. 【数据处理】python matplotlib 画箱线图;箱线图介绍;如何画箱线图

    一.箱线图介绍 假设一组数据有n个数,将它们从小到大排列,分为四等分.位于第25%(n+1)位置的数字是第一四分位数Q1.位于第50%(n+1)位置的数字是第二四分位数Q2,也是中位数.位于第75%( ...

  2. r语言echarts画箱线图_echarts学习笔记之箱线图的分析与绘制详解

    一.箱线图 box-plot 箱线图(boxplot)也称箱须图(box-whisker plot),它是用一组数据中的最小值.第一四分位数.中位数.第三四分位数和最大值来反映数据分布的中心位置和散布 ...

  3. python panda 库箱线图_Python数据可视化:箱线图多种库画法

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

  4. python画厢式图_Python数据可视化:箱线图多种库画法

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

  5. matlab笔记——绘图篇——折线图+散点图+饼图+直方图+柱状图+箱线图+三维图+地图

    今天早上刚讲完课,一个小时的培训准备起来也很不容易呐,但是讲完还是挺开心的啦. 现在来把绘图篇更新一下. 这篇主要就讲matlab数据可视化,介绍一下matlab基本图形绘制. 绘图篇 数据导入 给大 ...

  6. python箱形图颜色_python绘图:箱线图

    箱线图 boxplot函数的参数解读 绘图之前,我们先来讲解一下matplotlib包中boxplot函数的参数含义及使用方法: plt.boxplot(x, notch=None, sym=None ...

  7. ggplot2箱线图的美化之路: 箱线图到直方图加散点图再加误差线的美化之路

    如何把你的箱线图变成plus版? 箱线图到直方图加散点图再加误差线的美化之路 前言 数据准备 箱线图美化 01 一个平平无奇的箱线图 02 给箱线图加上误差线 03 加上散点的信息 04 去除网格线和 ...

  8. ggplot2-绘图-箱线图

    目录 一.前面的啰嗦 二.绘图数据说明 三.基本箱线图 四.分组箱线图 1. 单分类变量的分组箱线图 1.1 基本版 1.2 美化版 2. 双分类变量的分组箱线图 2.1 基本版 2.2 美化版 五. ...

  9. 箱线图怎么判断异常值_原创【六西格玛工具解读】02——箱线图(Boxplot)

    为方便从事质量工作的小伙伴系统了解相关管理工具,小编整理出六西格玛工具系列的应用解读.旨在相关爱好者交流探讨,也可供报考六西格玛黄带.绿带或黑带的朋友参考.因个人水平有限,难免存在疏忽和错误,还请各位 ...

最新文章

  1. Redis基础、应用、第三方支持组件总结
  2. 客户端(C#)调用CXF搭建的webservice的出现一些问题记录
  3. java 多线程经典例子——生产者与消费者的问题
  4. 神经网络weight参数怎么初始化
  5. .NET 深度指南:Colors
  6. vc++6.0的应用程序打不开肿么办
  7. BASH 中的字符串处理
  8. 电脑休眠和睡眠的区别_关机、睡眠、休眠的区别
  9. eclipse/myeclipse添加插件3种方式
  10. 黑客已经盗了 $15,945,221.72 美元!
  11. 简单理解RocketMQ---入门
  12. autosize px转dp_干货集中营
  13. qq邮箱注册收件服务器,qq邮箱smtp服务器
  14. 计算机基础算术加法,计算机基础第二章:算术逻辑单元(How Computes Calculate——The ALU)...
  15. 站酷暂停更新怎么办?这18个免费设计资源网站值得收藏!
  16. Mac系统升级后导致AS不能使用SVN
  17. 强大的文件管理利器-恒辉通用文件管理工具
  18. 企查查接口php版本~
  19. 【超详细Scratch教学课件分享】简单倒计时
  20. 雨林木风(YLMF)经典操作系统大全

热门文章

  1. Matlab imshow(f,G)函数使用时出现错误
  2. 完美世界手游服务器维护中,完美世界手游5月9日维护更新了什么内容_5月9日正式服维护更新介绍_3DM手游...
  3. 2022年保研经验网安华五武大中山等
  4. 西安市智慧交通APP正式上线
  5. java项目初期化_Java初始化规则都不懂,搞什么开发!
  6. 2020年中国保险科技行业发展现状及未来发展潜力分析[图]
  7. python实战——针对抽奖系统奖池数据概率的计算
  8. FBA项目模块完结感想
  9. html5网站粒子时钟,Html5 canvas实现粒子时钟的示例代码
  10. 从事Linux运维工作需要学习什么技能?