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|")
相关推荐
躺柒14 小时前
读数据可视化36可视化软件
信息可视化·可视化·数据可视化·科学可视化·医学可视化
赵钰老师16 小时前
基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析
python·arcgis·数据分析·r语言
xhload3d1 天前
图扑智慧工厂 | 继电器产线仿真态势管控平台
物联网·低代码·webgl·数字孪生·可视化·智慧工厂·工业互联网·hightopo
躺柒2 天前
读数据可视化35商业智能与金融数据
信息可视化·金融·可视化·数据可视化·商业智能·风险分析
躺柒3 天前
读数据可视化34其他科学与艺术
网络安全·信息可视化·气象学·可视化·数据可视化·气候模型
躺柒4 天前
读数据可视化33生命科学(下)
信息可视化·可视化·数据可视化·医学·临床医学·生命科学
ManageEngine卓豪4 天前
如何用 OpenTelemetry 实现企业分布式应用的全链路可视化?Applications Manager 集成方案与配置
可视化·apm·应用性能管理·分布式应用
User_芊芊君子5 天前
RStudio 鸿蒙 PC 适配全记录:以 Qt 原生工作区承载嵌入式 R
qt·r语言·harmonyos
临床数据科学和人工智能兴趣组5 天前
399元现在超值!学R语言,订阅我们专栏就够了,包括了所有的内容,不断更新!
人工智能·数据挖掘·r语言·r语言-4.2.1·临床研究
babe小鑫5 天前
生物统计学专业校招:SAS、R、Python学习顺序实用指南
python·学习·r语言