目录
- 0、引言(绘制相关性热图)
- [1. 椭圆相关图 corrgram(高级期刊老派高级风)](#1. 椭圆相关图 corrgram(高级期刊老派高级风))
- [2. 相关性网络图 qgraph(最唬人!高维变量首选)](#2. 相关性网络图 qgraph(最唬人!高维变量首选))
- [3. circlize 环形相关性圈图(封面图级别,视觉最强)](#3. circlize 环形相关性圈图(封面图级别,视觉最强))
- [4. ComplexHeatmap 复合热图(顶刊天花板,ComplexHeatmap)](#4. ComplexHeatmap 复合热图(顶刊天花板,ComplexHeatmap))
- [5. GGally::ggpairs 散点-相关复合矩阵图](#5. GGally::ggpairs 散点-相关复合矩阵图)
- [6. 气泡相关性图(ggplot2实现,气泡大小映射相关系数)](#6. 气泡相关性图(ggplot2实现,气泡大小映射相关系数))
0、引言(绘制相关性热图)
除普通热图,整理 6 种SCI 常用、视觉冲击力强的相关图,包含:气泡相关图、网络图、圆环相关图、Dendrogram + 热图复合、散点矩阵热图、椭圆相关图,全部可直接复制运行。

数据集依旧 mtcars,替换成你的数据框即可,全部支持 Pearson / Spearman 相关系数。
r
# 一次性安装全部需要包
# install.packages(c("corrplot","corrgram","qgraph","circlize","ComplexHeatmap","ggpairs","tidyverse"))
library(tidyverse)
library(corrplot)
data(mtcars)
corr <- cor(mtcars, method = "pearson")
pmat <- cor.mtest(mtcars)$p # 相关性P值矩阵


1. 椭圆相关图 corrgram(高级期刊老派高级风)
椭圆宽窄代表相关强弱,倾斜方向代表正负,比色块信息量更大。
r
library(corrgram)
corrgram(mtcars,
order=TRUE, # 按聚类重排变量
lower.panel=panel.ellipse, # 椭圆
upper.panel=panel.cor, # 上三角打印相关系数
text.panel=panel.txt,
main="Correlation Ellipse Plot")
特点:椭圆越扁相关性越强;向右倾斜正相关,向左倾斜负相关。

2. 相关性网络图 qgraph(最唬人!高维变量首选)
变量为节点,连线粗细=相关系数大小,颜色区分正负相关,高维数据效果炸裂。
r
library(qgraph)
qgraph(corr,
layout = "spring", # 布局 spring / circle
edge.color = c("blue","red"), # 蓝负,红正
vsize = 6, # 节点大小
esize = 1.2, # 连线粗细
threshold = 0.3, # 只展示 |r|>0.3 的相关,过滤噪声
labels=colnames(corr),
title="Correlation Network Graph")
threshold=0:展示全部相关;高维一定要设置阈值,图不会一团乱。- 适合:样本变量多(>15个变量),EDM、组学论文大量出现。

3. circlize 环形相关性圈图(封面图级别,视觉最强)
圆环,弦连接变量,弦宽度映射相关系数,很多SCI封面用这个图。
r
library(circlize)
circos.clear()
circos.par(gap.degree = 3)
chordDiagram(corr,
symmetric = TRUE,
grid.col = rainbow(ncol(corr)),
transparency = 0.5,
link.lwd = 1,
link.border = NA)
title("Circular Correlation Chord Diagram")
注意:变量不要太多,20个以内效果最佳;变量过多会密密麻麻。

4. ComplexHeatmap 复合热图(顶刊天花板,ComplexHeatmap)
可以叠加行注释、列注释、分组条、显著性标记、聚类树,Nature子刊同款热图 ,比pheatmap自由度高得多。
备注,安不上该包的可以参考链接。
r
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("ComplexHeatmap")
r
library(ComplexHeatmap)
library(circlize)
col_fun = colorRamp2(c(-1,0,1), c("#2166ac","white","#b2182b"))
Heatmap(corr,
col = col_fun,
name = "r",
show_row_names = TRUE,
show_column_names = TRUE,
cluster_rows = TRUE,
cluster_columns = TRUE,
show_heatmap_legend = TRUE,
cell_fun = function(j, i, x, y, width, height, fill) {
grid.text(sprintf("%.2f", corr[i,j]), x, y, gp = gpar(fontsize =7))
})
亮点:可以拼接多个注释条、样本分组、p值星号标记,适合教育挖掘、多组学数据。

增加显著性*标记(cell_fun里面加逻辑)
r
Heatmap(corr,
col = col_fun, name="r",
cell_fun = function(j,i,x,y,w,h,fill){
txt <- sprintf("%.2f",corr[i,j])
if(pmat[i,j]<0.05) txt <- paste0(txt,"*")
grid.text(txt,x,y,gp=gpar(fontsize=6.5))
})

5. GGally::ggpairs 散点-相关复合矩阵图
下三角原始散点,对角线分布直方图,上三角相关系数。
兼具分布+相关性,答辩报告效果极佳。
r
library(GGally)
ggpairs(mtcars[,1:5], # 变量不要选太多,选前5个演示
upper = list(continuous = wrap("cor", size=3.5)),
lower = list(continuous = wrap("points", size=1.2)),
diag = list(continuous = wrap("densityDiag")))+
theme_bw()
⚠️ 变量不能多,建议5‑8个变量,多了图爆炸。适合小维度变量探索。

6. 气泡相关性图(ggplot2实现,气泡大小映射相关系数)
色块换成气泡,颜色正负,气泡大小代表|r|,很多社科、教育数据挖掘论文使用。
r
cor_df <- corr %>%
as.data.frame() %>%
rownames_to_column("V1") %>%
pivot_longer(-V1, names_to="V2", values_to="r")
ggplot(cor_df, aes(x=V1,y=V2))+
geom_point(aes(size=abs(r), fill=r), shape=21)+
scale_fill_gradient2(low="#2166ac",mid="white",high="#b2182b",limits=c(-1,1))+
scale_size(range = c(1,10))+
theme_bw()+
theme(axis.text.x = element_text(angle=45,hjust=1))+
labs(fill="Correlation r",size="|r|")
