R语言入门——相关性热图(建模常用二)

目录

  • 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|")
相关推荐
躺柒19 小时前
读数据可视化16大规模多变量空间数据(下)
人工智能·信息可视化·可视化·数据可视化·空间·大数据分析
知识分享小能手2 天前
概理论与数理统计学习教程,从入门到精通,在数理统计中应用R软件(22)
开发语言·学习·r语言
ACQTEC研索仪器2 天前
Psylotech xTS 原位加载系统在颗粒材料力学研究中的应用实践
可视化·高分辨率·材料力学·原位加载·颗粒材料·应变率
躺柒2 天前
读数据可视化15大规模多变量空间数据(上)
信息可视化·可视化·数据可视化·空间计算·空间
知识分享小能手2 天前
概理论与数理统计学习教程,从入门到精通,在数理统计中应用R软件(21)
开发语言·学习·r语言
躺柒5 天前
读数据可视化12可视化设计原则
信息可视化·数据分析·可视化·数据可视化·大数据分析
数据智研5 天前
【数据分享】中国农产品价格调查年鉴(2004-2025)
大数据·人工智能·数据分析·可视化·数据可视化
躺柒6 天前
读数据可视化11数据可视化基础
大数据·信息可视化·数据分析·可视化·数据可视化·大数据分析
躺柒7 天前
读数据可视化10数据(下)
信息可视化·数据分析·可视化·数据可视化·大数据分析