我正在使用 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)
一个选项是使用
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")