Удалить дополнительные легенды в ggplot2
У меня есть простой фрейм данных, который я пытаюсь сделать с помощью ggplot2
. Предположим, что мои данные выглядят так:
df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20),
group=c(rep("a",10),rep("b",10)))
И я пытаюсь сделать сюжет:
g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8))
g
Результат выглядит отлично с одним исключением. В нем есть дополнительная легенда, показывающая alpha
для моего слоя geom_point
.
![Extra Legend for <code>geom_point</code> transparency]()
Как я могу сохранить легенду, показывающую цвета группы, но не та, которая показывает настройки моей альфы?
Ответы
Ответ 1
Эстетика может быть установлена или отображена в вызове ggplot
.
- Эстетика, определенная в
aes(...)
, отображается из данных и создается легенда.
- Эстетичность также может быть установлена на одно значение, определяя ее вне
aes()
.
В этом случае, похоже, вы хотите установить alpha = 0.8
и отобразить colour = group
.
Чтобы сделать это,
Поместите alpha = 0.8
вне определения aes()
.
g <- ggplot(df, aes(x = x, y = y, group = group))
g <- g + geom_line(aes(colour = group))
g <- g + geom_point(aes(colour = group), alpha = 0.8)
g
![enter image description here]()
Для любой отображаемой переменной вы можете подавить появление легенды, используя guide = 'none'
в соответствующем вызове scale_...
. например.
g2 <- ggplot(df, aes(x = x, y = y, group = group)) +
geom_line(aes(colour = group)) +
geom_point(aes(colour = group, alpha = 0.8))
g2 + scale_alpha(guide = 'none')
Что будет возвращать идентичный сюжет
ИЗМЕНИТЬ
Комментарий @Joran на месте, я сделал свой ответ более всеобъемлющим.
Ответ 2
Просто добавьте код show.legend = F
после части, где вы этого не хотите.
g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)
Ответ 3
Для старых версий ggplot2 (версии до 0.9.2, выпущенные в конце 2012 года), этот ответ должен работать:
Я пробовал это с помощью colour_scale
, и это не сработало. Похоже, что элемент colour_scale_hue
работает как функция с параметром по умолчанию TRUE
. Я добавил scale_colour_hue(legend=FALSE)
, и он сработал.
Я не уверен, что это относится ко всем элементам цветовой шкалы в ggplot