使用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
相关产品推荐
相关产品推荐

