根据 R 中的 PCA 图中原始数据集中的列提供的范围,以渐变着色的点绘制

问题描述 投票:0回答:1

我正在使用 fviz_pca_ind() 在 pca 分析后绘制观察结果。

我想根据原始数据集中的给定列以梯度方式绘制我的观察结果的子样本。其余数据为灰色圆圈。

假设我想根据 Rsq 为第 1-4 组的点着色,知道第 5 组没有那个值,但我仍然想在背景中看到灰色的第 5 组。

iris_mod <- iris %>% mutate(Group = sample(1:5, 150, replace = TRUE))
iris_mod <- iris_mod %>% mutate(Rsq = case_when(Group == 1 ~ 0.05, 
                                                Group == 2 ~ 0.5, 
                                                Group == 3 ~ 0.65, 
                                                Group == 4 ~ 0.75, 
                                                Group == 5 ~ NA))

iris.pca <- prcomp(iris_mod[,1:4], scale. = TRUE)
r plot pca
1个回答
0
投票

一个选项是使用

geom_point()
手动添加您的点,您可以使用例如从原始数据中添加其他列
dplyr::bind_cols
。因为这样做可能会过度绘制一些标签,我还建议手动添加标签。此外,我通过设置
fviz_pca_ind
删除了由
geom= "blank"
添加的图层。最后,您可以通过
na.value´ argument of e.g. 
scale_color_gradient` 设置您想要的“灰色”颜色:

library(dplyr, warn=FALSE)
library(factoextra)

fviz_pca_ind(iris.pca, geom = "blank") +
  geom_point(data = ~ bind_cols(.x, iris_mod[-c(1:4)]), aes(color = Rsq)) +
  geom_label(aes(label = name),
    hjust = .5, vjust = 0, label.size = 0, fill = NA,
    label.padding = unit(6, "pt")
  ) +
  scale_color_gradient(na.value = "grey80")

© www.soinside.com 2019 - 2024. All rights reserved.