嗨,你能適應你的第一個link爲PCA的代碼FactoMineR
這樣的對象:
PCbiplot2 <- function(res.pca, x="Dim.1", y="Dim.2") {
if(!require(ggplot2)) install.packages("ggplot2")
# res.pca being a PCA object
data <- data.frame(obsnames=row.names(res.pca$ind$coord), res.pca$ind$coord)
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(res.pca$var$coord), res.pca$var$coord)
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
}
library(FactoMineR)
fit2 <- PCA(USArrests, graph=F)
PCbiplot2(fit2)
告訴我,如果它的工作原理!
編輯:添加庫,例如jlhoward表明
此問題以前曾被問及回答[here](http://stackoverflow.com/q/10252639/1036500)和[這裏](http://stackoverflow.com/q/6578355/1036500)。 – Ben
有趣的是,您是如何發佈我在問題中發佈的相同鏈接的。我也發現了這些帖子,但第一個沒有生成雙標圖,而是一個變量和個人情節,這可以使用factominer輕鬆完成,而不是問題。正如問題中所述,第二個鏈接也僅提供了princomp輸出的解決方案。所以不,它沒有被回答。 – Lukas