cass怎么添加指北针图例_R语言统计与绘图:在ggplot2图形上添加显著性差异注释...

36fc2e713f8ef9af5ac7e536e3290e99.png

研究者常常要比较两组数据是否有统计学差异,并且要将这种差异在图形上通过线和注释标注出来。

55183b1a6395ef9eb71cfcca021c8c25.png

ggplot2包是一个很好的可视化包,ggsignif包是ggplot2包的一个扩展包。

今天来学习怎么在ggplot2包绘制的图形上添加显著性差异注释。

1. 安装R包

"ggplot2")  

2. 加载数据

使用iris数据集。

iris也称鸢尾花卉数据集,包含150个数据样本,分为3类(setosa、versicolour、virginica),每类50个数据,每个数据包含4个属性(花萼长度、花萼宽度、花瓣长度、花瓣宽度)。

# 加载数据集
9c00bbaba52ce243ded165713cc5c7fe.png

3. 绘制箱型图

3.1 两组比较

比较数据集中versicolor组和virginica组的Sepal.Length(花萼长度)是否有统计学差异。

ggplot(iris, aes(x=Species, y=Sepal.Length)) + 
  geom_boxplot() +
  geom_signif(comparisons = list(c("versicolor", "virginica")))
1b8f8026256a4eb721238d8dc33c8963.png

如上图所示,可以看到两组是有统计学差异的,但是图中的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)
9dfd8fcf08e856d317e4ca6697d3c433.png

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"))
6839d7e3dd64a6c053368e8b6bf1931e.png

如上图所示,虽然我们添加了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)
686049480501a0a4cfaff95d3e413c94.png

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)
7679bbd35a82da9f8ff4c6bd7b44b10f.png

主要调整参数就是tip_length()参数,里面的小竖线长度要和组别也是一一对应。

4. 绘制条形图

## 创建数据集
5e46ee1b727dfdae76d2930b91b60a71.png
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)
5f42dc44dfcad6b3384a877c27821b97.png

请注意:一般根据数据是否符合正态分布,选择合适的统计方法,上面的数据集我统计学方法都是默认的,可以使用函数中的test参数来指定统计学方法。

5. stat_signif()和geom_signif()函数

4efd352c70d8cb823a202197a890c7d1.png
NULL, data = 
参考资料
  1. stat_signif()和geom_signif()函数帮助文件
  2. https://mp.weixin.qq.com/s/cjeoILJhZhQngXlm2ZZ4Eg

既往专辑

c891018188bbcf84daf9a29af95d5917.png

48c393b3231bf058fee820332851945b.png

114b44a5cd16c15dc423fd12cddeff97.png

693d9adf62821805262dda1d7ba92a5d.png

fe6ffdd798968b130cd88031af8d0b68.png

2c0501c7196d7f5476267f7252e29df8.png

74d2a606210283014dfc109684a1925c.png

喜欢点个在看哦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值