batch gene expression plot

library(tidyverse)
library(ggpubr)
#load data
data = readxl::read_xlsx("gene_id.xlsx",sheet = 2)
data1 = pivot_longer(data,cols = c(2,3,4,5,6,7),names_to = "condition",values_to = "expression")
#split data
data_1 = data1 %>% filter(condition==c("6C6","6C24")) %>% mutate(condition=factor(condition,levels = c("6C6","6C24")))
data_2 = data1 %>% filter(condition==c("12C6","12C24"))  %>% mutate(condition=factor(condition,levels = c("12C6","12C24")))
data_3 = data1 %>% filter(condition==c("12C24","12C24+6C6","12C24+6C24"))  %>% mutate(condition=factor(condition,levels = c("12C24","12C24+6C6","12C24+6C24")))
#def function
gene_plot = function(i,df1=data_1,df2=data_2,df3=data_3){
  fig1 = df1 %>% filter(ID==i) %>% 
    ggplot()+geom_bar(aes(x=condition,y=expression),stat = "identity",fill="grey60")+
    labs(x="",y="Expression",title = "")+
    theme_bw() + theme(panel.grid=element_blank())+
    theme(axis.text.x = element_text(size=12,family = "serif"))+
    theme(axis.text.y = element_text(size = 12,family = "serif"))+
    theme(axis.line = element_line(colour = "black"))+
    theme(axis.title.x = element_text(size = 14,family = "serif"))+
    theme(axis.title.y = element_text(size = 14,family = "serif"))+
    theme(panel.border = element_blank())
  fig2 = df2 %>% filter(ID==i) %>% 
    ggplot()+geom_bar(aes(x=condition,y=expression),stat = "identity",fill="grey60")+
    labs(x="",y="Expression",title = i)+
    theme_bw() + theme(panel.grid=element_blank())+
    theme(axis.text.x = element_text(size=12,family = "serif"))+
    theme(axis.text.y = element_text(size = 12,family = "serif"))+
    theme(axis.line = element_line(colour = "black"))+
    theme(axis.title.x = element_text(size = 14,family = "serif"))+
    theme(axis.title.y = element_text(size = 14,family = "serif"))+
    theme(panel.border = element_blank())
  fig3 = df3 %>% filter(ID==i) %>% 
    ggplot()+geom_bar(aes(x=condition,y=expression),stat = "identity",fill="grey60")+
    labs(x="",y="Expression",title = "")+
    theme_bw() + theme(panel.grid=element_blank())+
    theme(axis.text.x = element_text(size=12,family = "serif",angle=30, hjust=1, vjust=1))+
    theme(axis.text.y = element_text(size = 12,family = "serif"))+
    theme(axis.line = element_line(colour = "black"))+
    theme(axis.title.x = element_text(size = 14,family = "serif"))+
    theme(axis.title.y = element_text(size = 14,family = "serif"))+
    theme(panel.border = element_blank())
  png<-ggarrange(fig1,fig2,fig3,align="hv",ncol = 3,nrow = 1)
  return(png)
  ggsave(png,paste0(i,"png"))
}
gene_plot("LOC_Os01g10340")

for ( i in id){
  gene_plot(i)
  print(i)
}
原文地址:https://www.cnblogs.com/xiaosagege/p/15596146.html