欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > R语言 | 在图形上标注P值的R包

R语言 | 在图形上标注P值的R包

2025/5/20 7:40:25 来源:https://blog.csdn.net/wangjunliang/article/details/144632849  浏览:    关键词:R语言 | 在图形上标注P值的R包

遇到一个记录一个。

ggsignif: 多组之间的比较

#BiocManager::install('ggsignif')
library("ggsignif")
library('ggplot2')
# geom_signif()
# compare_means(value ~ group, data = exprSet_L,method="wilcox.test", paired=FALSE)
exprSet_L=mydata
gene_name='geneXX'my_comparisons <- list(c("T1","T2"), c("T1","T3"),c("T1", "T4"))
ggplot(exprSet_L,aes(group,value))+geom_boxplot(width=0.5)+geom_jitter(aes(color=group))+theme(plot.title=element_text(size = 25),axis.text.x=element_text(size=25,angle=0),axis.text.y=element_text(size=25),axis.title.x=element_text(size = 25),axis.title.y=element_text(size = 25))+labs(title=paste0('Title:',gene_name),x=gene_name, y= 'Expression')+geom_signif(comparisons = my_comparisons,step_increase = 0.1,map_signif_level = T, #T显示星号,F显示p值test = t.test, size=1,textsize = 6)+theme_set(theme_set(theme_bw(base_size=22)))

iris 实例

library(ggplot2)
library("ggsignif")#' Boxplot with p value
#' 
#' v0.1
#' v0.2 自定义设置颜色、统计学方法等
#'
#' @param dat 输入数据框:前几列是数据,比如身高、体重、肺活量; 最后一列是分组(如小学、初中、高中)
#' @param i 数据第i列,除最后一行外的列编号
#' @param my_comparisons 两两比较
#' @param test.method 两两比较的统计学方法,默认是 wilcox.test。还可以是 t.test
#' @param title 图标题
#' @param ylab y轴标题
#' @param cols 分组颜色,要和分组一致
#' @param legend.name 图例标题 //为啥不起作用?
#' @param alpha 小提琴图的不透明度,[0,1]。越小越透明
#' @param border.color 小提琴图 边框颜色,默认为黑色,我设置为无色
#' @param seed 随机数种子,用于生成 jitter 点的抖动位置
#'
#' @return
#' @export
#'
#' @examples
drawBoxPlot=function(dat, i, my_comparisons,test.method=c("wilcox.test", "t.test")[2],cols=c("#307EC1", "orange", "deeppink"),title="", ylab="value", legend.name="",alpha=0.5, border.color="#11223300", seed=2025){#i=1message("> test.method:", test.method)message("> my_comparisons:", my_comparisons)# 取第i列和最后一列,给列名d1=dat[,c(i, ncol(dat))] colnames(d1)=c("value", "group")# 绘图set.seed(seed)p2=ggplot(d1, aes(group, value))+geom_violin( aes(fill=group), scale="width", color=border.color,show.legend = F, alpha=alpha)+ #不透明度[0,1]geom_jitter(aes(color=group), width=0.2, size=0.5)+geom_boxplot(width=0.15, outliers = F, fill="white", alpha=0.7)+theme_classic(base_size = 12)+theme(axis.text.x = element_text(angle=45, hjust=1, size=12),axis.text.y = element_text(size=10),plot.title=element_text(size = 10),)+guides(color = guide_legend(override.aes = list(size = 3)))+scale_color_manual(name=legend.name, values=cols)+scale_fill_manual(values=cols)+#labs(title=paste0('Title:',gene_name),x=gene_name, y= 'Expression')+labs(x="",y=ylab, title=title )+geom_signif(comparisons = my_comparisons,step_increase = 0.18,#y_position=max(d1[,1])+0.02,#test = t.test, test = test.method,  #"wilcox.test", "t.test"map_signif_level = F, #T显示星号,F显示p值size=0.5, textsize = 3)#+#ylim(y=c(min(d1[,1]), max(d1[,1])+0.1)  )#theme_set(theme_set(theme_bw(base_size=22)))return(p2)
}
if(0){# How to use# 1.准备数据:前几列是数据,最后一列是分组。# 每次取一列数据(第i列)和最后的分组,用于绘图dat=iristable(dat[, ncol(dat)])# setosa versicolor  virginica#     50         50         50# 2. 手动设置分组: 用于两两t-检验my_comparisons <- list(c("versicolor","setosa"), c("virginica","setosa"), c("virginica", "versicolor"))# 3. 保存每列的小图到list中plots=list()for(i in 1:(ncol(dat)-1)){#i=1p1=drawBoxPlot(dat, i, my_comparisons, title=colnames(dat)[i],ylab = paste0("Length of ", colnames(dat)[i] ), #cols=c("#307EC1", "orange", "deeppink"),alpha=0.4 )plots[[i]]=p1}# 4.写到文件:设置小图列数,共用一个图例outputRoot="D://"pdf(paste0(outputRoot, "_Boxplot.pdf"), width=5, height=7)patchwork::wrap_plots(plots, ncol = 2, guides = "collect")dev.off()
}

在这里插入图片描述
右图是全貌,左图是其第一个小图。

ggpubr::stat_compare_means() 两组的比较

#install.packages("ggpubr")library(ggplot2)
library(ggpubr)stat_compare_means(aes(group = location),ref.group="nLung",#label = "p.signif", label = "p.format",method = "t.test", paired=F,#label.y =5, show.legend = F)

Ref:

  • https://blog.csdn.net/ZaoJewin/article/details/135150515
  • https://blog.csdn.net/jiangshandaiyou/article/details/135956610
  • https://blog.csdn.net/weixin_65744007/article/details/127381702
  • https://www.datanovia.com/en/blog/how-to-add-p-values-to-ggplot-facets/
  • https://stackoverflow.com/questions/70883042/adding-p-values-to-ggplot-facets-with-different-scales

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词