【问题标题】:PCA with ellipsis without colour in R带有省略号的PCA,R中没有颜色
【发布时间】:2019-03-19 17:08:17
【问题描述】:

我正在尝试制作 PCA 图以供发布。这意味着没有颜色。但是,我尝试过的所有包都在您告诉它对数据类别进行分组的那一刻为绘图着色。

我已经尝试过以下软件包:ggbiplot、ggfortify 和 factoextra。不幸的是,没有成功。

关于我尝试过的代码(来自here):

library(ggbiplot)
mtcars.pca <- prcomp(mtcars[,c(1:7,10,11)], center = TRUE,scale. = TRUE)

ggbiplot(mtcars.pca)

ggbiplot(mtcars.pca, labels=rownames(mtcars))

mtcars.country <- c(rep("Japan", 3), rep("US",4), rep("Europe", 7),rep("US",3), "Europe", rep("Japan", 3), rep("US",4), rep("Europe", 3), "US", rep("Europe", 3))

ggbiplot(mtcars.pca,ellipse=TRUE,  labels=rownames(mtcars), groups=mtcars.country)

然后返回This image

但我需要的是一些东西:like this

希望我已经足够清楚了。

【问题讨论】:

    标签: r colors pca


    【解决方案1】:

    @SantiagoCapobianco 的答案包含所有部分,但没有将它们放在一起。

    使用 car 包中的dataEllipse 可以一直使用正确的参数。

    library(car)
    
    mtcars.country <- factor(mtcars.country)
    
    dataEllipse(mtcars.pca$x[,1], mtcars.pca$x[,2], mtcars.country, 
        levels=0.8, xlim=c(-5,5), ylim=c(-4,4), center.pch=0,
        col=rep("black", 3), pch=15:17)
    legend("topleft", legend=levels(mtcars.country), pch=15:17, bty='n')
    

    【讨论】:

      【解决方案2】:

      这可能是答案的一半,因为它缺少省略号:

      data("mtcars")
      
      mtcars.pca <- prcomp(mtcars[, c(1:7, 10, 11)], center = TRUE, scale = TRUE)
      mtcars$country <- as.factor(c(rep("Japan", 3), rep("US",4), rep("Europe", 7),rep("US",3), "Europe", rep("Japan", 3), rep("US",4), rep("Europe", 3), "US", rep("Europe", 3)))
      
      plot(mtcars.pca$x, pch = as.numeric(mtcars$country))
      legend("topright", legend = c("Japan", "US", "Europe"), pch = 1:3)
      

      结果:

      要绘制椭圆,可以使用 car 包:

      library(car)
      dataEllipse(mtcars.pca$x[, 1:2], groups = mtcars$country, levels = 0.98, add = TRUE)
      

      感谢这个问题: Drawing ellipse in R

      【讨论】:

      • OP 明确要求椭圆 没有颜色。为此,您必须在对dataEllipse 的调用中使用参数col = rep(1, nrow(mtcars))。并且要在 之后绘制图例,椭圆会更好。
      • @RuiBarradas 感谢您的评论。我没有花时间真正发布一个好的答案。幸运的是 G5W 做得很好。我也没有更改椭圆的颜色,因为当以黑白打印时,颜色无关紧要。
      猜你喜欢
      • 2017-08-16
      • 2017-12-28
      • 2019-06-02
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多