gpt4 book ai didi

r - R 中 prcomp 对象的子集

转载 作者:行者123 更新时间:2023-12-04 16:47:34 24 4
gpt4 key购买 nike

我基本上是在计算一组变量的 PCA,一切正常。可以说我以 iris 数据为例,但我的数据不同。虹膜数据应该足以解释我的问题:

data(iris)
log.ir <- log(iris[, 1:4])
log.ir[mapply(is.infinite, log.ir)] <- 0
ir.groups<- iris[, 5]
ir.pca <- prcomp(log.ir, center = TRUE, scale. = TRUE)

library(ggbiplot)

g <- ggbiplot(ir.pca, obs.scale = 1,var.scale = 1,groups = ir.groups, var.axes=F)
g <- g + scale_color_discrete(name = '')
g <- g + theme(legend.direction = 'horizontal',
legend.position = 'top') + theme(legend.text=element_text(size=15), legend.key.size = unit(2.5, "lines")) + theme(text = element_text(size=20))
ggsave("pca2.pdf", g, width=15, height=15)

当我得到绘图时,一些组被绘制得太靠近了,所以我想为这个组子集制作一个新绘图(不为子集计算新的 PCA)。

有没有办法让 ir.pca 对象的子集只选择特定的 groups 来绘制?

最佳答案

我认为你可以用 ggplot2::coord_equal 定义一个新的图形窗口,例如:

g + coord_equal(xlim=c(0, 3))

将从图形中排除 setosa,而不是从 PCA 中排除。


考虑到您的评论,您可以通过编程方式进行:

# first we filter the scores
filtered_scores <- ir.pca$x[which(iris$Species != "setosa"), ]
# then on PC1 and PC2
g + coord_equal(xlim=range(filtered_scores[, 1]), ylim=range(filtered_scores[, 2]))

这是你想要的吗?

关于r - R 中 prcomp 对象的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com