分面火山图--分别展示top25的基因

发布时间 2023-07-04 17:23:49作者: Bonjour_!
点击查看代码
object.markers <- FindMarkers(c1, ident.1 = 'Ang',ident.2 = 'Veh', 
                              group.by = 'group',logfc.threshold = 0,min.pct = 0,pseudocount.use = 0.01)
object.markers_1 = object.markers
dim(object.markers)
object.markers = object.markers_1
object.markers$names <- rownames(object.markers)
library(ggplot2)
#sig_dge.all <- subset(object.markers, p_val_adj<0.05&abs(avg_log2FC)>0.15) #所有差异基因
#View(sig_dge.all)
library(dplyr)
object.markers <- object.markers %>% filter(p_val_adj < 0.05)%>% mutate(Difference = pct.1 - pct.2)
library(ggrepel)
head(object.markers,2)
object.markers$group=0
for (i in 1:nrow(object.markers)){
  if (object.markers$avg_log2FC[i] >= 1 & object.markers$Difference[i] >= 0.2 ){
    object.markers$group[i]='up'
  }
  else if(object.markers$avg_log2FC[i] <= -1 & object.markers$Difference[i] <= -0.2 ){
    object.markers$group[i]='down'
  }
  else {
    object.markers$group[i]='no'
  }
}
dim(object.markers)
table(object.markers$group)
top_25<- bind_rows(   #分别筛选差异显著前10个的上下调基因,并合并两组数值进行绘图
  object.markers %>%
    filter(group == 'up') %>%
    arrange(desc(avg_log2FC), abs(Difference)) %>%
    head(25),
  object.markers %>%
    filter(group == 'down') %>%
    arrange(avg_log2FC, desc(abs(Difference))) %>%
    head(25)
)
top_25 %>% gt()  #将数据制成表
p1= ggplot(object.markers, aes(x=Difference, y=avg_log2FC)) + 
geom_point(size=0.2,aes(color=group),alpha = 0.5)  + 
  # geom_label_repel(data=subset(object.markers, avg_log2FC >= 1 & Difference >= 0.2 & pct.2 <= 0.05), aes(label=names), label.padding = 0.1, fill="tomato2", segment.size = 0.25, size=2.5)+
  theme_classic()
#绘图——添加基因标签框图#
 p4 <- p1 +
  geom_label_repel(data = top_25,max.overlaps = 50,
                   aes(label = names),
                   size = 3,
    box.padding = unit(0.5, "lines"),
    point.padding = unit(0.8, "lines"), segment.color = "black", show.legend = FALSE ) +xlim(-0.8,.8)  + 
  scale_color_manual(values=c('blue','grey','red'))+ geom_vline(xintercept = 0.0,linetype=2)+
  geom_hline(yintercept = 0,linetype=2)+
  theme_classic()+ggtitle('Ang_Veh')
p4
outdir=paste0('./',"6-26")
if(!file.exists(outdir)){
   dir.create(outdir)
}
ggsave(paste0(outdir,"/","Vol_ang_veh.pdf"),width =8, height = 8)
ggsave(paste0(outdir,"/","Vol_ang_veh.png"),width =8, height = 8,bg  = 'white')