Вы можете сделать что-то подобное, в вашем случае вам нужно привязать информацию о группах к фрейму данных P C:
library(ggfortify)
library(ggplot2)
library(patchwork)
set.seed(111)
data = mtcars
# we make up a group here
data$group = sample(letters[1:3],nrow(data),replace=TRUE)
res.pca = prcomp(log2(data[,-ncol(data)]+1))
autoplot(res.pca,data=data,col="group")
Затем используйте тот же pca для создания осыпи:
#variance explained
varExp = (100*res.pca$sdev^2)/sum(res.pca$sdev^2)
varDF = data.frame(Dimensions=1:length(varExp),
varExp=varExp)
ggplot(varDF,aes(x=Dimensions,y=varExp)) + geom_point() +
geom_col(fill="steelblue") + geom_line() +
theme_bw() + scale_x_continuous(breaks=1:nrow(varDF)) +
ylim(c(0,100)) + ylab("Perc variance explained")