gpt4 book ai didi

r - 使用 ggplot2 绘制 pca biplot

转载 作者:行者123 更新时间:2023-12-03 08:50:39 29 4
gpt4 key购买 nike

我想知道是否可以用 ggplot2 绘制 pca biplot 结果。假设我想用 ggplot2 显示以下双标图结果

fit <- princomp(USArrests, cor=TRUE)
summary(fit)
biplot(fit)

任何帮助将不胜感激。谢谢

最佳答案

也许这会有所帮助——它改编自我前段时间写的代码。它现在也绘制箭头。

PCbiplot <- function(PC, x="PC1", y="PC2") {
# PC being a prcomp object
data <- data.frame(obsnames=row.names(PC$x), PC$x)
plot <- ggplot(data, aes_string(x=x, y=y)) + geom_text(alpha=.4, size=3, aes(label=obsnames))
plot <- plot + geom_hline(aes(0), size=.2) + geom_vline(aes(0), size=.2)
datapc <- data.frame(varnames=rownames(PC$rotation), PC$rotation)
mult <- min(
(max(data[,y]) - min(data[,y])/(max(datapc[,y])-min(datapc[,y]))),
(max(data[,x]) - min(data[,x])/(max(datapc[,x])-min(datapc[,x])))
)
datapc <- transform(datapc,
v1 = .7 * mult * (get(x)),
v2 = .7 * mult * (get(y))
)
plot <- plot + coord_equal() + geom_text(data=datapc, aes(x=v1, y=v2, label=varnames), size = 5, vjust=1, color="red")
plot <- plot + geom_segment(data=datapc, aes(x=0, y=0, xend=v1, yend=v2), arrow=arrow(length=unit(0.2,"cm")), alpha=0.75, color="red")
plot
}

fit <- prcomp(USArrests, scale=T)
PCbiplot(fit)

您可能想要更改文本的大小,以及透明度和颜色,以适应口味;使它们成为函数的参数很容易。
注意:我想到这适用于 prcomp,但您的示例适用于 princomp。同样,您可能需要相应地调整代码。
注2: geom_segment()的代码是从从评论链接到 OP 的邮件列表帖子中借用的。

PC biplot

关于r - 使用 ggplot2 绘制 pca biplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6578355/

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