R: легенда ggbiplot не показывает разные цвета и формы

Я признаю, что этот вопрос уже задавали как минимум два раза, но ни один из предоставленных ответов не помог мне.

Мои данные очень похожи на пример ggbiplot wine, поэтому я просто использую его для иллюстрации своей проблемы.

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

require(scales)
library(devtools)
install_github("vqv/ggbiplot")
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, var.axes=FALSE) +
  scale_color_discrete(name = '') +
  geom_point(aes(colour=wine.class,shape=wine.class),size=2) +
  theme(legend.direction = 'horizontal', legend.position = 'top')

выдает это: введите здесь описание изображения

Легенда явно не то, что я хочу. Формы и цвета должны быть в одной легенде.

(В качестве бонуса я также хотел бы удалить маленькие линии из точек, но если это нелегко сделать, я могу с ними жить.)

Я уже пробовал то, что было предложено здесь и здесь.

Первое предложение

data(wine)
wine.pca <- prcomp(wine, scale. = TRUE)
ggbiplot(wine.pca, obs.scale = 1, var.scale = 1,
  groups = wine.class, ellipse = TRUE, circle = TRUE, var.axes=FALSE) +
  scale_color_discrete(name = '') +
  geom_point(aes(colour = wine.class), size = "2") +
  scale_color_manual(values=c(16,17,18)) +

  theme(legend.direction = 'horizontal', legend.position = 'top')

выдает это сообщение об ошибке (и вообще нет графика)

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.
Fehler in coords$size * .pt : 
  nicht-numerisches Argument für binären Operator

(последние две строки переводятся как «ошибка в координатах $ size * .pt: нечисловой аргумент для бинарного оператора)

Второе предложение

  data(wine)
  wine.pca <- prcomp(wine, scale. = TRUE)
  ggbiplot(wine.pca, obs.scale = 1, var.scale = 1,
    groups = wine.class, ellipse = TRUE, circle = TRUE, var.axes=FALSE) +
    scale_color_discrete(name = '') +
    geom_point(size = 2) +
    scale_colour_manual(name = "Wines",
                        labels = c("barolo","grignolino","barbera"),
                        values = c("blue", "red", "green")) +   
    scale_shape_manual(name = "Wines",
                       labels = c("barolo","grignolino","barbera"),
                       values = c(17,18,19))

дает мне это сообщение об ошибке

Scale for 'colour' is already present. Adding another scale for 'colour',
which will replace the existing scale.

и забавный график с цветными эллипсами, легенда с цветными точками, но черные точки данных.

Боюсь, моих знаний о построении графиков R недостаточно, чтобы что-то из этого сделать. Может ли кто-нибудь указать мне правильный путь?


person Anca    schedule 26.07.2016    source источник