PCA с многоточием без цвета в R - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь сделать сюжет PCA для публикации. Это значит без цветов. Однако все пакеты, которые я пробовал, окрашивают график в тот момент, когда вы говорите ему сгруппировать категории данных.

Я уже попробовал пакеты: ggbiplot, ggfortify и factoextra. К сожалению, безуспешно.

В коде, который я пробовал (от здесь ):

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)

И вернуть Это изображение

Но мне нужно что-то: вот так

Надеюсь, я был достаточно ясен.

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

В ответе @SantiagoCapobianco есть все части, но они не объединены.

Использование 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')

Data Ellipses

1 голос
/ 19 марта 2019

Это может быть половина ответа, так как в нем отсутствуют эллипсы:

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)

Результатов: enter image description here

Чтобы построить эллипсы, выможно использовать автомобильный пакет:

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

enter image description here

Кредит на этот вопрос: Рисование эллипса в R

...