差异基因火山图
##############################
# 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()) # 图例背景色
网友评论