R中带省略号的PCA没有颜色
PCA with ellipsis without colour in R
我正在尝试制作 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)
和returnThis image
但我需要的是:like this
希望我说得够清楚了。
这可能是答案的一半,因为它缺少省略号:
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)
结果:
要绘制椭圆,您可以使用汽车包:
library(car)
dataEllipse(mtcars.pca$x[, 1:2], groups = mtcars$country, levels = 0.98, add = TRUE)
归功于这个问题:
Drawing ellipse in R
@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')
我正在尝试制作 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)
和returnThis image
但我需要的是:like this
希望我说得够清楚了。
这可能是答案的一半,因为它缺少省略号:
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)
结果:
要绘制椭圆,您可以使用汽车包:
library(car)
dataEllipse(mtcars.pca$x[, 1:2], groups = mtcars$country, levels = 0.98, add = TRUE)
归功于这个问题: Drawing ellipse in R
@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')