GGbiplot дополнительный цвет для некоторых точек данных - PullRequest
0 голосов
/ 05 мая 2018

Возможно ли в пакете ggbiplot в R пометить некоторые специальные точки данных, такие как точка данных, с Alcohol = 13.2 другим цветом, чем в кластерах. Я хочу выделить некоторые конкретные данные.

data(wine)
wine.pca <- prcomp(wine, scale. = TRUE)
print(ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, 
   ellipse = TRUE, circle = TRUE))

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Да, поскольку ggbiplot является действительным ggplot2 объектом, вы можете добавить geom к нему так же, как и с другими ggplots.

cond <- wine.pca$x[which(wine$Alcohol == 13.2),]
cond[1:2]

Возвращает:

       PC1        PC2 
-2.2032498 -0.3324551 

Вот код. Обратите внимание, что мы используем geom_point и указываем на PC1 и PC2 соответственно для осей x и y, где wine$Alcohol==13.2:

library(ggbiplot)
data(wine) 
wine.pca <- prcomp(wine, scale. = TRUE)
ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, ellipse = TRUE, circle = TRUE) + 
geom_point(aes(x=cond[1], y=cond[2]), col="goldenrod2", size=3) 

enter image description here

0 голосов
/ 05 мая 2018

Я не уверен, что это можно сделать в вызове ggbiplot, но это, безусловно, возможно, добавив еще один слой. Вот пример:

library(ggbiplot)

data(wine)
wine.pca <- prcomp(wine, scale. = TRUE)
p <- ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, 
               ellipse = TRUE, circle = TRUE)

теперь поднабор точек, которые вы хотели бы выделить:

wine.pca$x[wine$Alcohol == 13.2, 1:2, drop = FALSE] #drop = FALSE to keep matrix class

и укажите это как data до geom_point:

p + geom_point(data = wine.pca$x[wine$Alcohol == 13.2, 1:2, drop = FALSE],
              aes(x = PC1, y = PC2), color = "black")

enter image description here

Вы также можете сделать что-то вроде этого:

p + geom_point(data = wine.pca$x[wine$Alcohol == 13.2, 1:2, drop = FALSE],
               aes(x = PC1, y = PC2), color = "black", shape = 21, size = 7)

enter image description here

однако это может быть слишком много, если вы хотите выделить много точек:

p + geom_point(data = wine.pca$x[wine$Alcohol >= 13.2, 1:2],
               aes(x = PC1, y = PC2), color = "black", shape = 21, size = 7)

enter image description here

...