RNA-SEQ(四):火山图

2022-09-08  本文已影响0人  生信小白花

题目:DEseq2差异分析得到的差异基因做火山图。

目的:火山图可反映总体基因的表达情况,通过不同的颜色醒目的展示差异基因的情况。

内容:1. 对DEseq2分析得到的差异基因进行筛选。

2.筛选的得到的基因定义上下调基因。

3. 用ggplot包绘图。

数据:DEseq2差异分析得到的差异基因列表。(如下:deseq2差异分析得到的数据)

image.png

工具:Rstudio。

步骤:

  1. 筛选差异基因,设置了不同条件进行统计,差异基因很多,所以最终确定的筛选条件为pvalue<0.05 & abs(log2oldchange) >1。

  2. 定义log2oldchange>1的为上调基因,log2oldchange<-1的为下调基因。

  3. 对筛选得到的基因做火山图。脚本如下:

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
上一篇下一篇

猜你喜欢

热点阅读