美文网首页RNA_SEQ
转录组——火山图(vocano plot)

转录组——火山图(vocano plot)

作者: 奔跑的Forrest | 来源:发表于2020-12-01 08:31 被阅读0次
    差异基因火山图
    ##############################
    # 2020/11/12 处理差异分析结果,ggplot绘制火山图
    ##############################
    library(tidyverse)
    # 导入差异分析数据
    gene_info <- read.csv(file = "zd_gene_info.csv")
    names(gene_info) <- c("gene_id","Swissprot_ID","Gene_symbol","Function")
    data <- read.csv(file = "../muscle/res",
                     header = T,
                     sep = "\t" )
    de_result <- left_join(data, gene_info, by = c("id" = "gene_id"))
    
    
    names(data) <- c("id","base","log2FoldChange","if","sta","pvalue","padj") # 重命名列名
    data_plot <- select(de_result , id , log2FoldChange, pvalue, padj,Swissprot_ID,Gene_symbol,Function) %>% 
      mutate(FC = 2**log2FoldChange,
             direction = if_else( padj > 0.05, 'ns',
                                  if_else(abs(log2FoldChange) < 1,"ns",
                                          if_else((log2FoldChange) >= 1,"up","down")))) # 补充差异倍数和上下调信息
    
    deg <- select(de_result , id , log2FoldChange, pvalue, padj,Swissprot_ID,Gene_symbol,Function) %>%  # 筛选相关列
      filter(abs(log2FoldChange)>1 & padj<0.05) %>%  # 筛选相关差异基因
      mutate(FC = 2**log2FoldChange,
             direction = if_else (log2FoldChange > 1,"up","down")) # 补充差异倍数和上下调信息
    
    # 此处还要把基因信息表关联上
    
    # 火山图 ggplot2 绘制
    library(ggplot2)
    library(ggsci) # 绘图色彩
    ggplot(data = data_plot,
           aes(x = log2FoldChange,
               y = -log10(padj)))+ #绘制画布,x,y轴geom_point()
      geom_point(aes(color = direction))+
      scale_color_npg()+ # 更改标度,这里是颜色的标度,ggsci里nature的标度
      theme_bw() # 添加主题
    
    # 火山图 ggplot2 绘制,自制标度
    my_palette <- c('#4DBBD5FF','#999999','#E64B35FF') # 自定颜色集合
    library(ggplot2)
    library(ggrepel) # 给点添加标签的包,该包不会导致标签重叠
    top_de <- filter(data_plot,abs(log2FoldChange)>2 & padj < 1e-5) # 筛选差异最大的基因贴标签
    
    ggplot(data = data_plot,
           aes(x = log2FoldChange,
               y = -log10(padj))) + #绘制画布,x,y轴geom_point()
      geom_point(aes(color = direction,
                     # alpha = abs(log2FoldChange), # 定义点的透明度
                     size = abs(log2FoldChange) # 定义点的大小
                     # color = " " # 去掉图例标题
                     )) +
      geom_hline(yintercept = -log10(0.05),
                 linetype = "dashed" # 修改线的虚实
                 # size = 3)+ # 修改线的粗细
      )+
      geom_vline(xintercept = c(1,-1),
                 linetype = "dashed")+
      geom_text_repel(data = top_de, # 给点添加标签
                      aes(label = Gene_symbol),min.segment.length = 0.5, box.padding = 0.5
                      )+ 
      scale_color_manual(values = my_palette # 自定标度
                        )+
      labs(                # 设置坐标轴、图例等的名字
          # x = "",
        title = "Vocano plot"
        # size = ""
        )+
      ylim(c(0,12))+ # 设置y轴范围
      xlim(c(-11,11))+ # 设置x轴范围
      guides(size = F)+ # 修改图例,删除了一个图例
      theme_bw()+ # 添加主题
      theme(
        plot.title = element_text(size = 18,hjust = 0.5), # 调整主题,标题修改
        legend.position = c(0.93,0.85),# 自定图例位置  
        legend.background = element_blank(),
        legend.key = element_blank()) # 图例背景色 
      
    

    相关文章

      网友评论

        本文标题:转录组——火山图(vocano plot)

        本文链接:https://www.haomeiwen.com/subject/qspjwktx.html