You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ggcorrplot仅显示显著相关系数值并保留色块颜色

问题:ggcorrplot仅显示显著相关系数,保留不显著项色块

我正在使用ggcorrplot可视化相关系数矩阵,需求是仅在相关性显著时显示单元格内的相关系数数值;对于不显著的相关性,不展示数值但保留对应色块的颜色。以下是我的尝试代码及对应效果:

尝试1:显示所有相关系数

library(ggplot2)
library(ggcorrplot)

# 生成相关系数矩阵 
corr <- round(cor(mtcars),1)

# 生成对应相关系数的p值矩阵
corr_p <- cor_pmat(mtcars)

# 显示所有相关系数
ggcorrplot(corr,
           lab = TRUE)

显示所有系数

尝试2:为不显著项标记X

# 在不显著的相关性上标记X
ggcorrplot(corr,
           lab = TRUE,
           p.mat = corr_p)

标记不显著项

尝试3:移除不显著项数值但丢失色块

# 移除不显著项的数值但同时删除了色块
# 我希望保留色块
ggcorrplot(corr,
           lab = TRUE,
           p.mat = corr_p,
           insig = 'blank')

移除数值但丢失色块


解决方案

ggcorrplot的insig = 'blank'参数会同时清空色块和标签,无法满足保留色块的需求。要实现仅隐藏不显著标签、保留色块,可通过构建自定义标签矩阵实现:将不显著的相关系数替换为空字符串,再传入lab_matrix参数。

实现代码

library(ggplot2)
library(ggcorrplot)

# 生成相关系数矩阵和p值矩阵
corr <- round(cor(mtcars), 1)
corr_p <- cor_pmat(mtcars)

# 自定义标签矩阵:仅保留显著(p<0.05)的相关系数,不显著项设为空字符串
lab_matrix <- ifelse(corr_p < 0.05, as.character(corr), "")

# 绘制图形
ggcorrplot(corr,
           lab = TRUE,
           lab_matrix = lab_matrix)

说明

  • 默认采用0.05作为显著性阈值,若需调整,修改corr_p < 0.05中的数值即可。
  • lab_matrix会覆盖默认的标签显示逻辑,不显著位置显示为空,而色块颜色由原相关系数矩阵corr决定,完美保留颜色信息。

内容的提问来源于stack exchange,提问作者tassones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:27:16