如何用geom_encircle在ggbiplot的PCA图中实现颜色一致的圈?
解决ggbiplot中geom_encircle与点颜色映射不一致的问题
问题根源
你当前手动构造fill向量的方式没有和wine.class建立映射关联,不仅容易因分组数量变化出错,还无法和点的颜色映射逻辑统一,导致颜色不匹配。
修正后的代码
library(ggalt) library(ggbiplot) data(wine) # 执行PCA分析 wine.pca <- prcomp(wine, scale. = TRUE) ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, ellipse = F, circle = F) + theme(legend.direction = 'horizontal', legend.position = 'top') + # 统一点的颜色映射 geom_point(aes(color = wine.class), size = 1) + scale_color_manual(name = "Saturday", values = c("red","green","blue")) + # 让圈选填充色与分组变量绑定,共享颜色映射 geom_encircle(aes(group = wine.class, fill = wine.class), alpha = 0.3, show.legend = F, colour = NA) + # 同步填充色与点的颜色参数 scale_fill_manual(values = c("red","green","blue"))
关键改动说明
- 将
geom_encircle的fill参数从手动构造的向量改为wine.class,使其基于分组变量自动映射颜色 - 添加
scale_fill_manual并使用和scale_color_manual完全一致的颜色值,确保点颜色和圈选填充色一一对应 - 移除手动生成fill向量的冗余代码,避免分组样本数变化时出现匹配错误
内容的提问来源于stack exchange,提问作者Charité Learner
相关产品推荐
相关产品推荐

