分享

复现Immunity文章图表:分组雷达图展示富集结果

 TS的美梦 2023-06-21 发布于广东

详情请联系作者:

前不久我们写过一期雷达图的做法(雷达图展示GSEA分析结果),用的fmsb包。后来有小伙伴反应说有比这个更好的雷达图,是一篇Immunity上的文章,也是利用雷达图展示通路富集的结果,其实也是一样,只不过是分组了,我们还是用fmsb包进行复现。
(reference:Cross-tissue single-cell landscape of human monocytes and macrophages in health and disease)

这里我们也复现做一个分组的雷达图。首先我们分析了一组数据的差异基因,利用上下调差异基因做了GO富集,展示相关的结果。差异分析和GO富集都是很简单的东西了,就不再赘述了。
#首先我们做一下一组数据的差异分析,分为上下条两组基因进行富集分析setwd('D:/KS项目/公众号文章/雷达图/分组雷达图')library(tidyverse)library(DESeq2)library(combinat)library(clusterProfiler)library(ggplot2)Two_group <- read.csv("Two_group.csv", header = T,row.names = 1)meta1 <- data.frame(Cancer=c("Cancer1" ,"Cancer2" ,"Cancer3"),                    Health=c("Health1", "Health2", "Health3"))
DEGs <- DEseq_multi_group(exprSet = Two_group,meta = meta1,repNum1 = 3, repNum2 = 3,test = 'Cancer', control = 'Health')head(DEGs)#运行成功DEGs <- na.omit(DEGs)

#我们这里做一下GO分析df_sig <- WT_DEGs[[1]][which(WT_DEGs[[1]]$pvalue<=0.05 & abs(WT_DEGs[[1]]$log2FoldChange)>=1),]df_sig$gene <- rownames(df_sig)df_sig$group <- ''#新加一列df_sig$group <- ifelse(df_sig$log2FoldChange >0,'up','down')#上下调标记
#富集group <- data.frame(gene=df_sig$gene,group=df_sig$group)Gene_ID <- bitr(df_sig$gene, fromType="SYMBOL", toType="ENTREZID", OrgDb="org.Mm.eg.db")
#构建文件并分析data <- merge(Gene_ID,group,by.x='SYMBOL',by.y='gene')data_GO <- compareCluster(ENTREZID~group, data=data, fun="enrichGO", OrgDb="org.Mm.eg.db",ont = "BP",pAdjustMethod = "BH", pvalueCutoff = 0.05,qvalueCutoff = 0.1)
data_GO_sim <- clusterProfiler::simplify(data_GO,cutoff=0.7, by="p.adjust", select_fun=min)

GO_result <- data_GO_sim@compareClusterResultwrite.csv(GO_result, file = 'GO_result.csv')
我们整理一下,挑选需要的通路进行展示。复现基本上90%是完成了,但是有一点没有,就是点用渐变来实现,不知道这个包有没有办法。
df <- read.csv('GO_result.csv', header = T,row.names = 1)df1 <- df[, c("group","Description","p.adjust")]
library(tidyr)df1<-spread(df1, Description, p.adjust)
df1[is.na(df1)] <- 1rownames(df1) <- df1[,1]df1 <- df1[,-1]df1 <- -log(df1)
df1 <- t(df1)df1 <- as.data.frame(df1)df1 <- arrange(df1,df1$down,df1$up)
df1 <- t(df1)df1 <- as.data.frame(df1)
my.data <- matrix( c(rep(max(df1),ncol(df1)), rep(0, ncol(df1)), rep(-log(0.05), ncol(df1))), nrow = 3, ncol = ncol(df1), byrow=TRUE)

colnames(my.data) <- colnames(df1)rownames(my.data) <- c("max", "min", "p")
my.data <- rbind(my.data, df1)my.data <- my.data[c(1,2,4,5,3),]

library(fmsb)radarchart(my.data, pty = c(16,16,32), axistype = 1, pcol = c("#64299C", "#0439FD","black"),            pfcol = c(scales::alpha(c("#64299C""#0439FD","black"), c(0.50.50.5))), plwd = c(3,3,3), plty = 1, cglcol = "grey60", cglty = 1, cglwd = 1, axislabcol = "grey60", vlcex = 0.8, vlabels = colnames(colnames(my.data)), caxislabels = c(0, 10, 20, 30, 40),           calcex=0.8 )

legend(x = "bottomright", legend = c("down","up"), horiz = F, bty = "n", pch = 15 , col = c("#64299C", "#0439FD"), text.col = "black", cex = 1, pt.cex = 1.5)

legend(x = "center", legend = c("p<0.05"), horiz = TRUE, text.col = "white", cex = 1,bg=NULL,box.lty=0)
当然了也有其他的包做雷达图,例如ggradar或者ggplot2也能实现,感兴趣的可以自行探索,我们就不再深究了,这个展示应用还是可以的。觉得分享有用的点个赞再走呗!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多