Я признаю, что этот вопрос уже задавали как минимум два раза, но ни один из предоставленных ответов не помог мне.
Мои данные очень похожи на пример 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 недостаточно, чтобы что-то из этого сделать. Может ли кто-нибудь указать мне правильный путь?
color
иshape
, как вы это сделали, а затем изменить имя двух шкал, чтобы оно было одним и тем же (а-ля здесь а>). На первом графике вы изменили имя легендыcolor
, но обратите внимание на имя легендыshape
. Чтобы вывести линию из легенды, вы можете установить тип линии на 0 inoverride.aes
в пределахguide_legend
. - person aosmith   schedule 26.07.2016