ggplot2自定义添加P值
2021-05-03 本文已影响0人
R语言数据分析指南
数据分析中通常都需要对数据进行统计检验,仿佛加个P值就能显得论文数据更加专业一点,本节不介绍如何计算P值,我们来介绍如何给图片自定义添加p值
library(tidyverse)
library(reshape)
library(ggsignif)
ggsingif来进行一个统计检验
可以看到ggsingif软件包轻松的给我们进行了统计分析并添加了P值,R中这种统计并自动添加p值的包又不少,后面会有详细的文档来介绍。那么既然有了这么好用的R包为何我们还要学习自定义添加P值那?因为你总有一些特殊的需求是这些R包满足不了的,下面通过一个简单的小例子来展示
ggplot(iris,aes(Species,Sepal.Length,fill=Species)) +
geom_boxplot()+geom_jitter(shape=16,size=2,
position=position_jitter(0.2))+
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()
自定义线条位点
肉眼判断位点信息,当然还有更方便的方法,我们后面介绍
p_value1 <- tibble(
x = c("Sepal.Length","Sepal.Length","Petal.Length","Petal.Length"),
y= c(890,910,910,700))
p_value2 <- tibble(
x = c("Sepal.Width","Sepal.Width","Petal.Width","Petal.Width"),
y=c(480,600,600,190))
此处有一个小细节就是group=1,如果去掉group=1,则代码只会绘制四条线
注:此处的1可以是任意数字,也可以是T,F
iris %>% melt() %>% ggplot(aes(variable,value))+
geom_col(width = 0.5)+
theme_classic()+
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 = 6, color = "#22292F")+
annotate("text", x = 3, y = 610, label = "**",
size = 6, color = "#22292F")+
labs(x=NULL,y=NULL)+
theme(plot.margin = unit(rep(1,4), "cm"))
以后就可以挥洒自如的添加P值了!!当然还有一个案例,我们后面再介绍