题目:DEseq2差异分析得到的差异基因做火山图。
目的:火山图可反映总体基因的表达情况,通过不同的颜色醒目的展示差异基因的情况。
内容:1. 对DEseq2分析得到的差异基因进行筛选。
2.筛选的得到的基因定义上下调基因。
3. 用ggplot包绘图。
数据:DEseq2差异分析得到的差异基因列表。(如下:deseq2差异分析得到的数据)
工具:Rstudio。
步骤:
-
筛选差异基因,设置了不同条件进行统计,差异基因很多,所以最终确定的筛选条件为pvalue<0.05 & abs(log2oldchange) >1。
-
定义log2oldchange>1的为上调基因,log2oldchange<-1的为下调基因。
-
对筛选得到的基因做火山图。脚本如下:
library(ggplot2)
library(ggrepel) #用于标记的包
library(pheatmap)
library(export)
# 读取火山图数据文件
setwd("E:/造血干/ccx/差异分析")
#打开全部未筛选差异基因
data <- read.csv("h9_d2DEG.csv", header=TRUE)
# 建议您的文件里对应的名称跟demo数据一致,这样不用更改后续代码中的变量名称
colnames(data)[1] <- c("Name")
data <- data[,c(1,3,7)]
data <- na.omit(data)
log2FC = 1.5 # 用来判断上下调,一般蛋白质组的项目卡1.5
pvalue = 0.01 #用来判断上下调
# 判断每个基因的上下调,往数据框data里新增了sig列
data$sig[(-1*log10(data$padj) < -1*log10(pvalue)|data$padj=="NA")| data$log2FoldChange < log2FC & data$log2FoldChange > -(log2FC)] <- "NotSig"
data$sig[-1*log10(data$padj) >= -1*log10(pvalue) & data$log2FoldChange >= log2FC] <- "Up"
data$sig[-1*log10(data$padj) >= -1*log10(pvalue) & data$log2FoldChange <= -(log2FC)] <- "Down"
View(data$sig)
#标记上下调基因数目
this_tile <- paste0('Cutoff for logFC is ',round(1.5,2),
'\nThe number of up gene is ',nrow(data[data$sig =="Up",]) ,
'\nThe number of down gene is ',nrow(data[data$sig =="Down",]))
this_tile
# 标记特殊基因名方式(一)
# 根据数据框中的Marker列,1的为标记,0的为不标记
#data$label=ifelse(data$Marker == 1, as.character(data$Name), '')
# (或)标记方式(二)
# 根据PValue小于多少和log[2]FC的绝对值大于多少筛选出合适的点
PvalueLimit = 5.615066e-159
#FCLimit =5 data$label=ifelse(data$padj < PvalueLimit & abs(data$log2FoldChange) >= FCLimit, as.character(data$Name), '')
data$label=ifelse(data$padj < PvalueLimit , as.character(data$Name), '')
data$label
# 绘图
ggplot(data,aes(log2FoldChange,-1*log10(padj))) + # 加载数据,定义横纵坐标
geom_point(aes(color = sig)) + # 绘制散点图,分组依据是数据框的sig列
xlab("log2 fold change") +
ylab("-log10 p-value") +
ggtitle( this_tile ) + # 定义标题,x轴,y轴名称
# scale_color_manual(values = c("blue","green","red")) + # 自定义颜色,将values更改成你想要的三个颜色
scale_color_manual(values=c("#546de5", "#d2dae2","#ff4757"))+
geom_hline(yintercept=-log10(pvalue),linetype=2)+ # 在图上添加虚线
geom_vline(xintercept=c(-(log2FC),log2FC),linetype=2)+ # 在图上添加虚线
geom_text_repel(aes(x = log2FoldChange, # geom_text_repel 标记函数
y = -1*log10(padj),
label=label),
max.overlaps = 10000, # 最大覆盖率,当点很多时,有些标记会被覆盖,调大该值则不被覆盖,反之。
size=3, # 字体大小
box.padding=unit(0.5,'lines'), # 标记的边距
point.padding=unit(0.1, 'lines'),
segment.color='black',
show.legend=FALSE) # 标记线条的颜色
graph2ppt(file="d2gene_Volcano-name.ppt", width=10, aspectr=1)##或者4*6pdf保存
结果图
image.png
网友评论