🎨bulk RNAseq可视化

By Kaiyi

图表可以从分布、联系、比较、构成4个方面对图表进行分类和选择。

1、展示样本分布与关联

PCA

https://mp.weixin.qq.com/s/KmRdIBEFH6Tw-Gm7CMXZ_Q

相关性热图

甜甜圈图

// R

#https://mp.weixin.qq.com/s/-c4nP0xeCisOkUv_Oe4ijQ

2、展示差异基因分布

火山图

MA plot

MA-plot,即M-versus-A plot,也称为 Bland-Altman plot,主要应用在数据分布情况的可视化,比如突出显示差异表达基因和/或其他基因类别,例如管家基因、高可变基因。该图将数据转换为M(对数比)和A(平均值),然后绘制这些值来可视化两个样本中测量值之间的差异。M常对应差异表达分析获得的差异对比组之间基因表达变化log2FC。A对应实验组与对照组的平均标化表达量(mean normalized count),可以利用差异对比组的CPM、TPM、FPKM进行计算。当一个点的X轴数值很大,Y轴绝对值也很大的时候,就说明它是平均表达量高,组间差别还很大的基因。由于大部分Y轴绝对值大的点其实会集中在X轴数值居中的部位,所以大部分MA plot是沿X轴流线型或三角形的。

此外,MA plot可以直观展示数据测序质量。比如,如果大部分点的X轴数值都接近于0,说明基因表达量普遍偏低,可能测序深度不够,或者文库质量不好。另一方面,在RNA-seq数据的分析中,不仅需要进行标准化,还需要通过算法对数据进行降噪校正,去掉干扰信号。校正后的数据,其组间差异总体上应该较为平均地分布在Y=0两侧,也就是说,所有的点整体上看起来水平悬浮。但是,如果结果显示出这些点整体跑偏,中线严重偏离了Y=0,甚至形成了弧形,则说明校正方法可能不太适宜。

De novo gene synthesis by an antiviral reverse transcriptase. Fig1B
// R

#https://mp.weixin.qq.com/s/jScnUOAMZ6zopFQihyiG_Q


#在DESeq2差异分析基础上

df <- DEG_DESeq2

#阈值确定:
pvalue = 0.05
log2FC = 1

#添加上下调分组标签:
df$group <- case_when(
  df$log2FoldChange > log2FC & df$pvalue < pvalue ~ 'up',
  df$log2FoldChange < -log2FC & df$pvalue < pvalue ~ 'down',
  TRUE ~ 'none'
)
table(df$group)

#转换为因子,指定绘图顺序;
df$group <- factor(df$group, levels = c('up','none','down'))

#在excel中利用FPKM矩阵计算标化值(FPKM)的平均表达量:
#读入
FPKM <- read.csv("./result/1.3.gene_expression/FPKM.csv",header = T,row.names = 1,check.names=F)

#在df中新建两列,将行名对应的FPKM的矩阵中的mean的值添加:
df$mean_FPKM <- FPKM[rownames(df),]$mean

#也可以是用deseq2标准化的值计算平均值:
#提取标化后的dds矩阵
normalized_counts <- as.data.frame(counts(dds_2, normalized=TRUE))
#计算平均值
normalized_counts$mean <- rowMeans(normalized_counts)
#将平均值添加到df中:
df$mean_dds <- normalized_counts[rownames(df),]$mean



### MA Plot ####
library(ggplot2)
library(ggrepel)
library(dplyr)
library(patchwork)

#新建横纵坐标列:
df$A <- df$mean_dds
#或
df$A <- df$mean_FPKM

df$M <- df$log2FoldChange

#ggplot2绘图:
#自定义颜色:
mycol <- c("#EB4232","grey90","#2DB2EB")

#自定义主题:
mytheme <- theme_classic() +
  theme(plot.title = element_text(size = 17),
        axis.title = element_text(size = 15),
        axis.text = element_text(size = 14),
        legend.text = element_text(size = 14),
        plot.margin = margin(15,5.5,5.5,5.5))

#MA图绘制:

##注意图层叠加顺序
p1 <- ggplot() + 
  geom_point(data = df[df$group=='none',],
             aes(x = A, y = M, color = group)) + 
  geom_point(data = df[df$group=='up',],
             aes(x = A, y = M, color = group)) +
  geom_point(data = df[df$group=='down',],
             aes(x = A, y = M, color = group)) +
  scale_colour_manual(name = '', values = rev(alpha(mycol, 0.7))) + 
  scale_x_continuous(trans = 'log10', name = 'Mean normalized count') +  # 将横坐标转换为log10并修改名称
  scale_y_continuous(name = "Log2(Fold Change)") +  # 修改纵坐标名称
  geom_hline(yintercept = 0, size = 0.5, color = "black", lty = 'dashed') + 
  labs(title = 'MA_Plot') +
  mytheme+
  theme(
    axis.text = element_text(color = 'black'),  # 修改坐标轴刻度字体颜色为黑色
    axis.title = element_text(color = 'black')  # 修改坐标轴标题字体颜色为黑色
  )+
  geom_text_repel(
    data = df[rownames(df) %in% c('HPD','SERPING1', 'GAPDH'), ],
    aes(x = A, y = M, label = rownames(df)[rownames(df) %in% c('HPD','SERPING1', 'GAPDH')]),
    color = 'red',
    size = 4,
    fontface = 'bold',
    segment.color = 'black',  # 连线颜色
    segment.size = 0.5,        # 连线粗细
    force = 0.5,                           # 强制推开标签
    nudge_y = 0.5                        # 向上微调标签,确保连线清晰可见
  )
p1

瀑布图(Waterfall plot / Rank plot)

METTL17 is an Fe-S cluster checkpoint for mitochondrial translation. Fig1B/D

// R

#https://mp.weixin.qq.com/s/FPGeRtuPxEFU7XZNYJ1okA

# 数据准备:需要基因名、logFC、分组组名、rank值,前两者与GSEA所需数据一样
#从差异基因列表导入基因(deseq2)

data <- DEG_DESeq2
data$gene_name <- rownames(data)
data$logFC <- data$log2FoldChange
data <- data[,-c(1:6)]
data <- arrange(data,desc(logFC)) #按照LogFC降序排列
#降序和升序决定了waterfall plot的方向


#指定分组
#data$group <- ifelse(data$logFC > 0,'Up','Down')
selected <- data[1:10,] #例如,选择前10个基因

#指定分组以及添加label
data %>% 
  mutate(group = case_when(
    gene_name %in% selected$gene_name~'selected',
    T~'other'
  ),
  label = case_when(
    gene_name == 'HPD'~gene_name,
    T~''
  ))->data

#添加rank列
data$rank = 1:nrow(data)

#绘制waterfall plot

#数据分隔
data_selected <- data %>% filter(group == "selected") 
data_other <- data %>% filter(group != "selected") 

# 主题设置
plot.format <- theme(
  plot.background = element_blank(),
  panel.grid = element_blank(),
  panel.background = element_blank(),
  panel.border = element_blank(),
  axis.line.x.top = element_blank(),
  axis.line.y.right = element_blank(),
  axis.line = element_line(color = "black"),
  axis.ticks = element_line(color = "black", linewidth = 0.5),
  axis.text = element_text(color = "black", size = 14),
  axis.title = element_text(color = "black", size = 14),
  plot.title = element_text(color = "black", size = 14),
  legend.background = element_blank(),
  legend.key = element_blank(),
  legend.text = element_text(color = "black", size = 14),
  legend.title = element_text(color = "black", size = 14)
)

# 画图
p = ggplot() +
  geom_hline(yintercept = 0, lty = 4, col = 'black', lwd = 0.2) +#加上0的虚线
  geom_point(data = data_other, 
             aes(x = rank, y = logFC, fill = group, color = group), 
             size = 2, shape = 21, alpha = 0.75) +#先画other
  geom_point(data = data_selected, 
             aes(x = rank, y = logFC, fill = group, color = group), 
             size = 2, shape = 21, alpha = 0.75) +#再画selected
  geom_text_repel(data = data, aes(x = rank, y = logFC, label = label), size = 4,
                  box.padding = unit(0.2, 'lines'), 
                  point.padding = unit(0.3, 'lines'), 
                  show.legend = FALSE,
                  max.overlaps = Inf) +#加上标签
  scale_fill_manual(values = c('#7D7B82','#5872D0' )) +#自定义颜色
  scale_color_manual(values = c('#7D7B82','#5872D0' )) +#自定义颜色
  labs(x = 'Rank', y = 'log2Foldchange(XX/Normal)') +#坐标轴的标签
  guides(fill = guide_legend(title = NULL), color = guide_legend(title = NULL)) +
  plot.format#自定义主题
p

#加上p value,见下文
#https://mp.weixin.qq.com/s/lwr1QwqM0KpL0WwfNVd6ug

散点图

// R

#https://mp.weixin.qq.com/s/1g26mRRNBTUHFb75lWRMOw



3、展示单个或多个基因表达变化

热图(标记基因+行列注释)

The local microenvironment drives activation of neutrophils in human brain tumors. Fig3G
// R
#https://mp.weixin.qq.com/s/R6N6rkAqUsIv79w6Lnt8PQ

配对样本热图

// R

箱线图/配对连线图

dumbbell chart

https://mp.weixin.qq.com/s/ps_3DhoCEtBOZyT6vGH8Ww

分组雷达图

雷达图(Radar Chart),又称蛛网图蜘蛛图,是一种图形化工具,用于显示多变量数据的对比。每个变量以等角度放射线(从中心向外延伸)表示,数据点在各变量轴上的位置表示各自的数值,最终形成一个闭合的多边形。其定义和特点如下:

1. 变量展示

各变量沿圆周均匀分布,通常从中心向外延伸,每个放射线代表一个维度或指标。放射线的数量和多边形的边数相同,数量取决于变量的多少。

2. 数值表示

每个数据点在其相应变量轴上的位置代表其数值大小,距离中心越远通常表示该变量的值越大(根据具体情况可调)。

3. 多维数据比较

雷达图适合用于比较不同组别的数据在多维度上的表现,例如同类产品在不同指标上的性能对比。通过将多个多边形重叠,可以直观展示不同组别在各维度上的差异。

4. 易于识别优势和劣势

图形中各边的长短及形状变化直观地展示了数据的强弱特点。图形的对称性和各变量轴上的延伸程度可以帮助快速识别数据的优势和劣势区域。

// R

#https://mp.weixin.qq.com/s/yWCMwkoPuOtDR5GP3DwI6Q

4、展示交集基因

韦恩图

// R

#https://mp.weixin.qq.com/s/sXg25aznznw8a787HRbrWg

成比例韦恩图

The local microenvironment drives activation of neutrophils in human brain tumors. Fig2B
// R

#https://mp.weixin.qq.com/s/W2EGbgvyIyvVxQiVX8vg4A

花瓣图

// R

#https://mp.weixin.qq.com/s/1somdu9AXI_YXk56UC3Luw

散点图(多组学或多对样本)

The local microenvironment drives activation of neutrophils in human brain tumors. Fig2H

热图

// R
#https://mp.weixin.qq.com/s/mO4BL_TEkXDgnK5WiibPPA

5、ORA通路富集可视化

柱状图/条形图

// R
#https://mp.weixin.qq.com/s/DEh7a2n9Va8GKg0kKCo6QA

// R

#https://mp.weixin.qq.com/s/T06XncgWiFTa4eUkOPGwIQ
// R
#https://mp.weixin.qq.com/s/67fdMYTAWx578dcSeMCeAA

流星图/彗星图

// R

#https://mp.weixin.qq.com/s/8A6NV2M56FF3y2mLMAA3Gw
#https://mp.weixin.qq.com/s/XVSOR0Gr43TrCylYrdo5PQ

气泡图/多组气泡图

// R

#https://mp.weixin.qq.com/s/P-4mZXwfMBrAzR-a0utALA

// R

#https://mp.weixin.qq.com/s/MDGhpZKvrj9shfS6XtvX9Q

双向柱状图

// R

#https://mp.weixin.qq.com/s/QYot9vnV29TOtxapWKYjNw

棒棒糖图/火柴杆图

// R

#https://mp.weixin.qq.com/s/PbxpiukunqnZWdKrpMkNkg
// R

#https://mp.weixin.qq.com/s/RfpBX-VPPWAI_CrEptQFpg
// R
#https://mp.weixin.qq.com/s/GMPkm9TMbvv-BL_aMhJw9g

和弦图

// R

#https://mp.weixin.qq.com/s/YZBqackQAqfKpUmoakiQ4w

#https://mp.weixin.qq.com/s/kW7Q_BmcUILD5_18bItYLQ

富集环图

// R

#https://mp.weixin.qq.com/s/QnO0-ZoQGI69h4aIvSb27w

聚类热图+词云图

Small extracellular vesicles from young plasma reverse age-related functional declines by improving mitochondrial energy metabolism. Fig3D
// R

#https://mp.weixin.qq.com/s/BmROSJCTEzHRj9yiM8rcmA

6、GSEA通路富集可视化

GSEA图

柱状图

分组柱状图

气泡图

Obesity reshapes regulatory T cells in the visceral adipose tissue by disrupting cellular cholesterol homeostasis. Fig1A

雷达图

用于展示不同分组/亚群的不同得分

热图

7、免疫浸润

1、箱线图

Y chromosome loss in cancer drives growth by evasion of adaptive immunity. Fig4A

使用MCP counter计算TCGA样本的免疫浸润分数,并进行统计检验。

Last updated