数据分析中通常都需要对数据进行统计检验,仿佛加个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

