如何提升R中相关系数图的色彩对比度并将0.7设为偏蓝色
自定义GGally::ggcorr颜色映射,让0.7对应偏蓝色
数据与问题
给定数据:
dat <- structure(list(`2022.09.16` = c(1, 5, 1, 8, NA, 1, NA, 7, 4, NA), `2022.10.11` = c(2, 6, 4, 8, 1, 2, 2, 8, 7, 11), `2022.10.18` = c(4, 8, 5, 8, 2, NA, 2, 7, 9, 9)), row.names = c("p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10"), class = "data.frame")
使用GGally::ggcorr(dat, label = TRUE)生成的相关系数图色彩对比度不足,需将相关系数0.7对应的颜色设置为偏蓝色。
解决方案
ggcorr基于ggplot2构建,通过自定义填充色的比例尺即可实现需求。以下提供两种可行方法:
方法1:使用scale_fill_gradient2指定中间点颜色
适合需要指定某一中间值颜色的场景,将0.7设为颜色转换的中间点:
library(GGally) GGally::ggcorr(dat, label = TRUE) + scale_fill_gradient2( midpoint = 0.7, # 设定0.7为颜色转换的中间点 mid = "#4285F4", # 0.7对应的偏蓝色(可替换为你偏好的蓝色代码) low = "#FFFFFF", # 低相关系数的颜色(用白色增强对比度) high = "#EA4335", # 高相关系数的颜色(用红色区分) limits = c(0, 1) # 限定颜色范围为0-1,适配数据中全为正相关的情况 )
方法2:使用scale_fill_gradientn精准映射颜色断点
如果需要更精细的颜色分段控制,可直接指定多个数值对应的颜色:
GGally::ggcorr(dat, label = TRUE) + scale_fill_gradientn( colors = c("#FFFFFF", "#4285F4", "#EA4335"), values = c(0, 0.7, 1) # 明确映射:0→白色,0.7→蓝色,1→红色 )
说明:你的数据中所有变量的相关系数均为正值(约0.96-0.99),限定颜色范围在0-1可以有效提升色彩的区分度,避免因默认范围包含负值导致的对比度不足。
内容的提问来源于stack exchange,提问作者neversaint
相关产品推荐
相关产品推荐

