這種圖比一般的熱圖要好看一些,圖中的橢圓越細,表明相關性越高(正相關為紅色,負相關為藍色)。
我們在前面也給大家介紹過:你沒見過的兩種高顏值單細胞亞群相關性熱圖

圖注:
「Figure 6」 Crosstalk between fibroblasts and macrophages in peritoneal metastases of gastric cancer. (A) Heatmap displaying the correlations across all cell types in the single-cell data.
如果是樣本數或者基因數或者細胞亞群數比較多的時候,是這個效果:

下面就看試試!
示例數據
這里就用以前的帖子:多分組差異表達分析實戰:GSE126848(DESeq2版本)
這個數據有四個分組,每組樣本數如下:
- 「健康正常體重個體」:healthy normal weight (n 14),共14例,作為對照組,其體重處于正常范圍,沒有肝臟疾病。
- 「肥胖個體」:obese (n 12),共12例,體重超出正常范圍,但文中未明確說明這些肥胖個體是否伴有肝臟疾病,可能僅用于對比正常體重個體的肝臟狀態。
- 「NAFL患者」:NAFL (n 15),非酒精性脂肪肝患者NAFLD,共15例。這類患者肝臟存在脂肪堆積,但未達到非酒精性脂肪性肝炎的嚴重程度。
- 「NASH患者」:NASH (n 16),非酒精性脂肪性肝炎患者NASH,共16例。這類患者不僅存在肝臟脂肪堆積,還伴有炎癥和肝細胞損傷,是NAFL的更嚴重形式。
樣本表達矩陣與分組信息處理就用上面這個帖子中的代碼,這里直接加載處理好的數據:
rm(list=ls())
options(scipen = 1000)
# 加載seurat數據集
library(tidyverse)
library(ggpubr)
library(magrittr)
library(ggsignif)
library(ggrastr)
# devtools::install_github("LKremer/ggpointdensity")
library(ggpointdensity)
# InstallData("pbmc3k")
# BiocManager::install('caijun/ggcorrplot2')
library(ggcorrplot2) # 繪制下三角相關性橢圓圖ggcorrplot
library(ggplot2)
library(sur)
library(reshape2)
library(psych) # 相關性計算
## 加載數據
load("/nas2/zhangj/project/02-bulk-rnaseq/2019-GSE126848-nash病人的4分組轉錄組/GSE126848/step1-output.Rdata")
ls()
head(dat) # cpm標準化值
symbol_matrix[1:5,1:5] # counts值
table(group_list) # 57個樣本,分組信息
length(group_list)

相關性圖繪制
上面這種圖有負的相關性和正的相關性做起來會比較好看,不太適用于樣本與樣本之間的相關性(基本上都是正相關),因為 ggcorrplot 函數里面顏色的映射范圍為[-1,1]。
這里我們就先做基因表達相關性吧,下次想辦法搞個樣本間的相關性。
這里的基因我們隨便選擇20個,如果是自己做項目,可以根據差異基因或者預后或者其他什么條件篩選一些基因出來進行展示:
# 選擇差異變化大的基因算相關性
# mad: 絕對中位差
# sd:標準差
exprSet <- dat
exprSet <- exprSet[names(sort(apply(exprSet, 1, mad),decreasing = T)[1:20]),]
exprSet <- t(exprSet)
dim(exprSet)
pheatmap::pheatmap(cor(exprSet))
cor_value <- cor(exprSet)
cor_test_mat <- corr.test(exprSet)$p
cor_pp1 <- ggcorrplot(cor_value, method = "ellipse",type = "lower",
p.mat = cor_test_mat,
col = c("#8aa3db", "white", "#fd9a9a"),
pch.cex = 4.5, # 顯著性*號的大小
insig = "label_sig", sig.lvl = c(0.05, 0.01, 0.001) # (e.g. "*", "**", "***")
) +
guides(color = guide_legend(override.aes = list(size = 1))) +
theme(axis.text = element_text(size=10),
legend.key.width = unit(0.5, "lines"), # 調整圖例鍵的寬度
legend.key.height = unit(0.5, "lines") # 調整圖例鍵的高度
)
cor_pp1
ggsave(filename = 'gene_cor.pdf',width = 8,height = 8,plot = cor_pp1 )
結果如下:

是不是很漂亮!