bulk RNA-Seq(7)差异表达分析可视化

上一期我们讲了样本相关性分析的一些可视化,这一期我们来做差异分析的热图和火山图。

火山图

火山图(Volcano Plot)RNA-seq等分析时常用的一种图,它能够清晰地展示显著上调和下调的基因,因作出来的图形如火山喷发,故而得名。

例如图中,X轴一般表示log2的倍数变化,Y轴一般表示-log10(p-value),不同颜色的点表示满足不同条件的基因。

红色表示上调基因(P<0.05, Fold change >=2),蓝色表示下调基因,灰色表示不显著的基因(即要么Fold change不满足阈值,要么Pvalue不满足阈值,要么Fold change和Pvalue都不满足阈值),两条垂直虚线表示Fold change(这里默认2倍,即log2(2)=1),一条水平线表示Pvalue阈值(默认0.05)

ini 复制代码
DE <- read.delim("Rworkspace/de_result") #导入差异分析结果
library(ggrepel)
my_palette <- c('#4DBBD5FF', '#999999','#E64B35FF' )
library(ggplot2) 
ggplot(data = DE, aes(x = log2FoldChange, y = -log10(padj))) + 
geom_point(aes(color = direction, size = abs(log2FoldChange))) + 
geom_hline(yintercept = -log10(0.05), linetype = 'dashed', color = 'red') +   geom_vline(xintercept = c(-1,1), linetype = 'dashed') +  
scale_color_manual(values = my_palette) +  
scale_size(range = c(0.1,1.5)) + 
guides(size = FALSE) + 
labs(x = 'log2 fold change',    
y = '-log10(pvalue)' ,   
title = 'Vocano plot',    
size = 'log2 fold change') +    
theme_bw()   
legend.background = element_blank())

用颜色代表数字,让数据呈现更直观,对比更明显。

直观呈现多样本多个基因的全局表达量变化。

呈现多样本多基因表达量的聚类关系。

聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集,这样让在同一个子集中的成员对象都有相似的一些属性。

scss 复制代码
library(tidyverse)
de_result <- filter(DE, abs(log2FoldChange) > 1 & padj < 0.05) %>%
mutate(FC = 2 **log2FoldChange) %>%  mutate(direction = if_else( 
padj > 0.05, 'ns', if_else(  
abs(log2FoldChange) < 1, 'ns', if_else(   
log2FoldChange >= 1, 'up', 'down')))) %>%
left_join(gene_info, by = c('GID' = 'ID')) %>% 
left_join(rownames_to_column(genes_exp, var = 'GID'), 
by = 'GID') %>%  dplyr::select(-c(8:9))#logFC>2,padi<0.05筛选差异基因,并关联基因信息表和表达矩阵pheatmap_de <- select(de_result, -c(2:15)) %>% 
column_to_rownames(var = 'GID')pheatmap(log10(pheatmap_de ), cluster_rows = TRUE,          show_rownames = F,       
annotation_col = select(sample_info, group),         cutree_rows =2,         cutree_cols =2 )#画图并添加注释信息
相关推荐
fie88898 小时前
NSCT(非下采样轮廓波变换)的分解和重建程序
算法
晨晖28 小时前
单链表逆转,c语言
c语言·数据结构·算法
im_AMBER10 小时前
Leetcode 78 识别数组中的最大异常值 | 镜像对之间最小绝对距离
笔记·学习·算法·leetcode
鼾声鼾语10 小时前
matlab的ros2发布的消息,局域网内其他设备收不到情况吗?但是matlab可以订阅其他局域网的ros2发布的消息(问题总结)
开发语言·人工智能·深度学习·算法·matlab·isaaclab
LYFlied11 小时前
【每日算法】LeetCode 25. K 个一组翻转链表
算法·leetcode·链表
Swizard11 小时前
别再迷信“准确率”了!一文读懂 AI 图像分割的黄金标尺 —— Dice 系数
python·算法·训练
s090713611 小时前
紧凑型3D成像声纳实现路径
算法·3d·声呐·前视多波束
可爱的小小小狼11 小时前
算法:二叉树遍历
算法
d111111111d12 小时前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法
AI科技星12 小时前
质量定义方程常数k = 4π m_p的来源、推导与意义
服务器·数据结构·人工智能·科技·算法·机器学习·生活