大数跨境
0
0

ggplot2自定义添加p值

ggplot2自定义添加p值 R语言数据分析指南
2021-04-29
2
导读:数据分析中通常都需要对数据进行统计检验,仿佛加个P值就能显得论文数据更加专业一点,本节不介绍如何计算P值,我

数据分析中通常都需要对数据进行统计检验,仿佛加个P值就能显得论文数据更加专业一点,本节不介绍如何计算P值,我们来介绍如何给图片自定义添加p值

加载R包

library(tidyverse)
library(ggsignif)
library(ggforce)

ggsingif来进行一个统计检验

可以看到ggsingif软件包轻松的给我们进行了统计分析并添加了P值,R中这种统计并自动添加p值的包有不少,后面会有详细的文档来介绍。那么既然有了这么好用的R包为何我们还要学习自定义添加P值那?因为你总有一些特殊的需求是这些R包满足不了的,下面通过一个简单的小例子来展示

ggplot(iris,aes(Species,Sepal.Length,fill=Species)) + 
  geom_violin()+
  geom_sina(alpha=0.5)+
  geom_signif(comparisons = list(c("versicolor""virginica"),
                                 c("versicolor","setosa"),
                                 c("virginica","setosa")),
              map_signif_level=T,
              textsize=6,test=wilcox.test,step_increase=0.2)+
  guides(fill=FALSE)+xlab(NULL)+theme_classic()

若我们要对此图前2组做统计分析,后面3组做统计分析,之后画线添加P值该如何操作,此时就需要自定义操作了,请往下看

iris %>% pivot_longer(Sepal.Length:Petal.Width,
          names_to = "type",values_to = "value") %>% 
  ggplot(aes(type,value))+
  geom_col(width = 0.5)+
  theme_classic()+
  scale_x_discrete(limits=c("Sepal.Length",
  "Petal.Length","Sepal.Width","Petal.Width"))

自定义线条位点

肉眼判断位点信息,当然还有更方便的方法,我们后面介绍

p_value1 <- tibble(
  x = c("Sepal.Length","Sepal.Length","Sepal.Width","Sepal.Width"),
  y= c(890,910,910,650))
  
p_value2 <- tibble(
  x = c("Petal.Length","Petal.Length","Petal.Width","Petal.Width"),
  y=c(580,600,600,190))

此处有一个小细节就是group=1,如果去掉group=1,则代码只会绘制四条线 

注:此处的1可以是任意数字,也可以是T,F

iris %>% pivot_longer(Sepal.Length:Petal.Width,
          names_to = "type",values_to = "value") %>% 
  ggplot(aes(type,value))+
  geom_col(width = 0.5)+
  theme_classic()+
  scale_x_discrete(limits=c("Sepal.Length",
  "Petal.Length","Sepal.Width","Petal.Width"))+
  scale_y_continuous(limits = c(0,950),
  expand = c(0, 0))+
  geom_line(data = p_value1, aes(x = x,
  y = y,group=1))+
  geom_line(data = p_value2, aes(x = x,
  y= y,group=1))

完整版代码

iris %>% pivot_longer(Sepal.Length:Petal.Width,
          names_to = "type",values_to = "value") %>% 
  ggplot(aes(type,value))+
  geom_col(width = 0.5)+
  theme_classic()+
  scale_x_discrete(limits=c("Sepal.Length",
  "Petal.Length","Sepal.Width","Petal.Width"))+
  scale_y_continuous(limits = c(0,950),
  expand = c(0, 0))+
  geom_line(data = p_value1, aes(x = x,
  y = y,group=1))+
  geom_line(data = p_value2, aes(x = x,
  y= y,group=1))+
  annotate("text",x = 2,y = 920,label = "***",
           size = 7,color = "#22292F")+
  annotate("text",x = 3,y = 610,label = "**",
           size = 7, color = "#22292F")+
  labs(x=NULL,y=NULL)+
  theme(plot.margin = unit(rep(1,4),"cm"))

以后就可以挥洒自如的添加P值了!当然还有一个案例,我们后面再慢慢介绍,喜欢的小伙伴欢迎关注转发,再此先行拜谢了!

往期精彩:

配置R与Rstudio
ggplot2中的一些关键概念
tidyverse的基础使用
ggplot2绘制终极版热图
ggtree绘制进化树
初探相关性热图
再探相关性热图
ggplot2绘制相关性热图
初探柱状图
绘制具有显著性的条形图
ggplo2绘制经典条形图
ggplo2绘制双误差线条行图
揭开ggplot2中stat图层的神秘面纱
R中的图片注释神包aplot
ggplot2使用patchwork高质量拼图
ggplot2绘制基础散点图
ggplot2绘制经典散点图-1
ggplot2绘制经典散点图-2
ggplot2绘制云雨图
ggplot2绘制经典云雨图
ggplot2绘制哑铃图
ggplot2绘制经典哑铃图
ggplot2添加git


【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读222
粉丝0
内容1.2k