RNA_SEQ

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

2020-12-01  本文已影响0人  奔跑的Forrest
差异基因火山图
##############################
# 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()) # 图例背景色 
  
上一篇下一篇

猜你喜欢

热点阅读