ggplot2箱式图两两比较_如何在ggplot2图形上添加显著性差异注释?
研究者常常要比较两组数据是否有统计学差异,并且要将这种差异在图形上通过线和注释标注出来。
ggplot2包是一个很好的可视化包,ggsignif包是ggplot2包的一个扩展包。
今天来学习怎么在ggplot2包绘制的图形上添加显着性差异注释。
1. 安装R包install.packages("ggplot2") # 安装包install.packages("ggsignif") # 安装包library(ggplot2) # 加载包library(ggsignif) # 安装包
2. 加载数据
使用iris数据集。
iris也称鸢尾花卉数据集,包含150个数据样本,分为3类(setosa、versicolour、virginica),每类50个数据,每个数据包含4个属性(花萼长度、花萼宽度、花瓣长度、花瓣宽度)。data(iris) # 加载数据集View(iris) # 预览数据集
3. 绘制箱型图
3.1 两组比较
比较数据集中versicolor组和virginica组的Sepal.Length(花萼长度)是否有统计学差异。ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot() + geom_signif(comparisons = list(c("versicolor", "virginica")))
如上图所示,可以看到两组是有统计学差异的,但是图中的P值使用的是科学计数法,其实还可以使用*或注释来表示。
通过添加参数map_signif_level=TRUE,可以将统计学差异表示为*符号。ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot() + geom_signif(comparisons = list(c("versicolor", "virginica")), map_signif_level=TRUE)
3.2 多组两两比较
还是使用上面的数据集数据。
我们在图上添加3组数据两两比较的统计学差异P值。ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot() + geom_signif(comparisons = list(c("versicolor", "virginica"), c("setosa", "virginica"), c("versicolor", "setosa"))
如上图所示,虽然我们添加了P值,但是P值位置等参数有重叠,需要调整。ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot() + geom_signif(comparisons = list(c("versicolor", "virginica"), c("setosa", "virginica"), c("versicolor", "setosa")), y_position=c(8.2, 8.5, 7.5), map_signif_level=TRUE)
y_position中的数字与comparisons中的组别一一对应。
如果我们要调整横线两端的小竖线长度怎么调整?我想要使每根小竖线的长度各不相同。ggplot(iris, aes(x=Species, y=Sepal.Length)) + geom_boxplot() + geom_signif(comparisons = list(c("setosa", "versicolor"), c("setosa", "virginica"), c("versicolor", "virginica")), y_position=c(7.5, 8.5, 8.2), tip_length = c(0.2, 0.05, 0.2, 0.05, 0.1, 0.05), map_signif_level=TRUE)
主要调整参数就是tip_length()参数,里面的小竖线长度要和组别也是一一对应。
4. 绘制条形图## 创建数据集dat ggplot(dat, aes(Group, Value)) + geom_bar(aes(fill = Sub), stat="identity", position="dodge", width=.5) + geom_signif(y_position=c(6.0, 8.5), xmin=c(0.85, 1.85), xmax=c(1.15, 2.15), annotation=c("**", "NS"), tip_length=0.04) + geom_signif(comparisons=list(c("S1", "S2")), y_position = 9.3, tip_length = 0.04, vjust=0.2)
请注意:一般根据数据是否符合正态分布,选择合适的统计方法,上面的数据集我统计学方法都是默认的,可以使用函数中的test参数来指定统计学方法。
5. stat_signif()和geom_signif()函数stat_signif(mapping = NULL, data = NULL, position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, comparisons = NULL, test = "wilcox.test", test.args = NULL, annotations = NULL, map_signif_level = FALSE, y_position = NULL, xmin = NULL, xmax = NULL, margin_top = 0.05, step_increase = 0, tip_length = 0.03, size = 0.5, textsize = 3.88, family = "", vjust = 0, parse = FALSE, manual = FALSE, ...) geom_signif(mapping = NULL, data = NULL, stat = "signif", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, comparisons = NULL, test = "wilcox.test", test.args = NULL, annotations = NULL, map_signif_level = FALSE, y_position = NULL, xmin = NULL, xmax = NULL, margin_top = 0.05, step_increase = 0, tip_length = 0.03, size = 0.5, textsize = 3.88, family = "", vjust = 0, parse = FALSE, manual = FALSE, ...) ## 参数解释mapping # 由aes()或aes_()创建的美学映射集。如果指定且inherit.aes=TRUE(默认值),它将与绘图顶层的默认映射结合。如果没有绘图映射,则必须提供映射。data # 绘图数据所在的数据框position # 位置调整;可以是字符串,也可以是位置调整函数的结果na.rm # 逻辑词,默认为FALSE,移除缺失值时显示警告信息,为TRUE,则不显示警告信息。show.legend # 逻辑词,是否显示图例comparisons # 长度为2的向量列表test # 进行统计检验的方法名称,如t.test、wilcox.test、aov()、anova()、kruskal.test() 等。test.args # 检验方法的其他参数annotations # 替换P值注释的字符向量map_signif_level # 布尔值,检验结果P值使用注释或者星号代替y_position # 括号线在对齐y轴高度的数字向量xmin # 括号线左侧位置的数字向量xmax # 括号线右侧位置的数字向量step_increase # 数字向量,减少括号线的重叠tip_length # 数字向量,显示括号线两端的下降的小竖线,用来指向精确的组别size # 设置括号线的宽度textsize # 设置文本字体大小family # 设置文本字体vjust # 相对于括号线,上下调整文本的距离parse # 逻辑词,为TRUE,则标签将解析为表达式
参考资料stat_signif()和geom_signif()函数帮助文件
https://mp.weixin.qq.com/s/cjeoILJhZhQngXlm2ZZ4Eg
最近公众号改版,
以防失联,加个星标吧!
往期推荐
多点好看,少点脱发
ggplot2箱式图两两比较_如何在ggplot2图形上添加显著性差异注释?相关推荐
- ggplot2箱式图两两比较_个人向ggplot2箱线图总结
主要从如何看图.用图与作图三个方面来对箱线图进行理解和总结. 1.看图 箱线图概述图1 箱线图概述图2 如图所示,箱线图是将一组数据按照大小顺序排列后进行绘制的,包含6个数据节点,分别表示出数据的上边 ...
- ggplot2箱式图两两比较_R语言ggplot2箱线图绘图总结
主要从如何看图.用图与作图三个方面来对箱线图进行理解和总结. 1.看图 箱线图概述图1 箱线图概述图2 如图所示,箱线图是将一组数据按照大小顺序排列后进行绘制的,包含6个数据节点,分别表示出数据的上边 ...
- R语言使用caretEnsemble包的caretList函数一次性构建多个机器学习模型、使用lattice包的bwplot函数使用箱图对比多个模型在多个指标上的性能差异
R语言使用caretEnsemble包的caretList函数一次性构建多个机器学习模型.并使用caret包的resamples函数比较在同一数据集上多个机器学习模型的比较结果.使用lattice包的 ...
- ggplot2箱式图两两比较_第十九章_使用ggplot2进行高级绘图
介绍ggplot2包 使用形状.颜色和尺寸来对多元数据进行可视化 用刻面图比较各组 自定义ggplot2图 19.1 R中的四种图形系统 基础 grid lattice ggplot2(用的较多) g ...
- ggplot2箱式图两两比较_作图技巧024篇ggplot2在循环中的坑
"ggplot2在循环中的输出"生活科学哥-R语言科学 2020-12-23 8:28ggplot2用过之后,你肯定会爱上它:结合一些不错的包,可以得到非常有展现力的图片,但是呢 ...
- ggplot2箱式图两两比较_ggplot2 - 箱线图(Box - plot)
简介 箱线图,顾明思义,是形状像箱子并展示一组或多组数据分布的统计图,被认为是一个优于柱形图的数据可视化方案,文章中指出了很多箱线图的优点. 在ggplot2 中做箱线图的图形变换是geom_boxp ...
- opencv 安装_如何在 CentOS 8 上安装 OpenCV
本文最先发表在: 如何在 CentOS 8 上安装 OpenCVwww.itcoder.tech OpenCV(Open Source Computer Vision Library) 是一个开源的 ...
- java pdf添加透明水印_如何在PDF文件中添加透明水印
原标题:如何在PDF文件中添加透明水印 有些文件添加水印,但是又不想水印影响文件的使用有时候会设置透明水印,那么PDF怎么设置透明水印呢,应该有很多的小伙伴们都很好奇应该怎么做吧,接下来就为大家分享一 ...
- html画布图片不显示_如何在HTML5画布上显示图像
html画布图片不显示 by Nash Vail 由Nash Vail Ok, so here's a question: "Why do we need an article for th ...
最新文章
- 轮椅上的博士矣晓沅:9 年求学路,我从清华毕业了
- 浅谈主流内存发展历史
- boost::mp11::mp_with_index相关用法的测试程序
- 【计算机基础】存储器层次 Memory hierarchy
- C++Vector使用方法
- 数据结构整理中。。。
- 怎么用vc采集ni卡数据_8bit,200MS/s 低成本模拟输入高速采集卡FCFR-PCI9850
- OpenCV3学习(6.2)——霍夫(Hough)变换:霍夫线变换HoughLine,霍夫圆变换HoughCircles
- 周志华:AAAI 2019论文提交创纪录,达到7745篇
- 单例设计模式共享数据分析、解决,call_once
- python制作查询工具发给别人使用_利用Python制作简单的小程序:IP查
- 双屏鼠标经常跑到副屏_双屏游戏本什么体验?上手ROG冰刃双屏:效率直接拉满...
- 【全文干货】python—函数详解(值得收藏的学习手册)
- android屏幕截图代码,android中实现整个屏幕截图的代码
- Python:货币转换(写一个程序进行人民币和美元货币之间的币值转换)
- Opencv项目实战:05 物体检测
- 淘宝数据魔方技术架构
- 【转载】 Sqlserver使用Left函数从最左边开始截取固定长度字符串
- 63.QT-重写QStackedWidget模仿iphone的home界面,实现左右滑动
- birthday日期类型转化