首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用FactoMineR创建一个双情节?

如何用FactoMineR创建一个双情节?
EN

Stack Overflow用户
提问于 2014-03-13 14:23:00
回答 2查看 3.9K关注 0票数 2

这个问题很简单。我想双写PCA(mydata)的结果,这是我用FactoMineR做的。看来,我只能用内置的绘图装置显示变量或个人:

代码语言:javascript
复制
 plot.PCA(pca1, choix="ind/var").

我知道使用princomp()的结果可以很容易地做到这一点,但我非常喜欢FactoMineR处理NA的方式,而且在许多方面对我来说似乎更容易。

有办法吗?我在某种程度上看到了它是用ggplot2完成的,但同样只使用princomp()的结果,而且我不知道如何修改代码,以便它能够与PCA()一起工作。

我还看到了用ggplot2 (看下面)分别处理个人和变量绘图的解决方案,但是如何将它们结合起来呢?

也许解决方案是在第一个链接中,但我没有真正理解它:/。

我希望我说清楚了!

问候

卢卡斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-13 15:13:53

嗨,您可以将第一个链接的代码用于FactoMineR中的PCA对象,如下所示:

代码语言:javascript
复制
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建议的库

票数 1
EN

Stack Overflow用户

发布于 2015-08-13 16:38:48

您也可以使用ggord来实现它,如果您为其他排序对象添加了额外的S3方法,那么代码很容易适应它们:

代码语言:javascript
复制
install.packages("devtools")
library(devtools)
install_github("fawda123/ggord")
library(ggord)
library(FactoMineR)
ord <- PCA(iris[, 1:4], graph = FALSE)
ggord(ord, iris$Species)

(不同类型的缩放是可能的,例如行主体(表单双图)、列主体(协方差双图)、对称双图等,这些都是goord目前不支持的。尽管编辑ggord.PCA S3方法或goord.default方法来支持这一点很容易。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22381560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档