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

展示相关矩阵上/下半部分时,如何正确放置显著相关系数?

解决ggcorrplot半矩阵模式下显著相关系数值错位问题

使用ggcorrplot可视化相关矩阵时,需要移除不显著的相关系数值但保留单元格颜色。完整矩阵展示时可实现该需求,但切换到下半/上半矩阵模式时,系数值会出现位置错位。


完整矩阵的正确实现(对比参考)

先给出完整矩阵的实现代码,作为功能正常的对照:

library(ggplot2)
library(ggcorrplot)

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

# 创建与相关系数对应的p值矩阵
corr_p <- cor_pmat(mtcars)

# 展示完整矩阵时的代码
ggcorrplot(corr, lab = FALSE, p.mat = corr_p, sig.level = 1) +
  geom_text(
  aes(x = Var2, y = Var1, label = round(value, 1)),
  \(d) subset(d, pvalue < 0.05))

完整矩阵可视化效果


下半矩阵的修正方案

原代码问题

直接沿用完整矩阵的geom_text筛选逻辑时,会把上半区域的显著值也绘制出来,导致数值错位:

# 导致错位的下半矩阵代码
ggcorrplot(corr, lab = FALSE, p.mat = corr_p, sig.level = 1, type = 'lower') +
  geom_text(
    aes(x = Var2, y = Var1, label = round(value, 1)),
    \(d) subset(d, pvalue < 0.05))

下半矩阵可视化效果(错位)

修正代码

在数据子集筛选中,额外添加下半矩阵的区域判断(Var1 >= Var2),只保留下半区域的显著值:

# 修正后的下半矩阵代码
ggcorrplot(corr, lab = FALSE, p.mat = corr_p, sig.level = 1, type = 'lower') +
  geom_text(
    aes(x = Var2, y = Var1, label = round(value, 1)),
    \(d) subset(d, pvalue < 0.05 & Var1 >= Var2))

上半矩阵的修正方案

原代码问题

同样,未筛选上半区域时,下半区域的显著值会错位显示到上半矩阵中:

# 导致错位的上半矩阵代码
ggcorrplot(corr, lab = FALSE, p.mat = corr_p, sig.level = 1, type = 'upper') +
  geom_text(
    aes(x = Var2, y = Var1, label = round(value, 1)),
    \(d) subset(d, pvalue < 0.05))

上半矩阵可视化效果(错位)

修正代码

添加上半矩阵的区域判断(Var1 <= Var2),只保留上半区域的显著值:

# 修正后的上半矩阵代码
ggcorrplot(corr, lab = FALSE, p.mat = corr_p, sig.level = 1, type = 'upper') +
  geom_text(
    aes(x = Var2, y = Var1, label = round(value, 1)),
    \(d) subset(d, pvalue < 0.05 & Var1 <= Var2))

内容的提问来源于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:47:04