Удалите 'a' из легенды при использовании эстетики и geom_text


124

Как я могу удалить букву «а» из легенды, созданной этим кодом? Если я уберу geom_text, буква «а» не будет отображаться в легенде. Но я хочу сохранить geom_text.

ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width, shape = Species, colour = Species)) + 
   geom_point() + 
   geom_text(aes(label = Species))

Ответы:


142

Установить show.legend = FALSEв geom_text:

ggplot(data = iris,
       aes(x = Sepal.Length, y = Sepal.Width, colour = Species, shape = Species, label = Species)) + 
    geom_point() +
    geom_text(show.legend = FALSE)

Аргумент show_guideизменил название на show.legendin ggplot2 2.0.0( см. Новости релиза ).


пред-ggplot2 2.0.0 :

С show_guide = FALSEтаким ...

ggplot( data=iris, aes(x=Sepal.Length, y=Sepal.Width , colour = Species , shape = Species, label = Species ) , size=20 ) + 
geom_point()+
geom_text( show_guide  = F )

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


3
Установка show.legendдля FALSEв ggplot23.2.1 будет удалить легенду в целом!
NelsonGon

14

У меня была похожая проблема . Решение Саймона сработало для меня, но потребовалось небольшое изменение. Я не понимал, что мне нужно добавить «show_guide = F» к аргументам geom_text, а не заменять им существующие аргументы - что и показывает решение Саймона. Для такого нуба ggplot2, как я, это было не так очевидно. Правильный пример использовал бы код OP и просто добавил бы отсутствующий аргумент следующим образом:

..
geom_text(aes(label=Species), show_guide = F) +
..

9

Как сказал Ник

следующий код все равно приведет к ошибке:

geom_text(aes(x=1,y=2,label="",show_guide=F))

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

в то время как:

geom_text(aes(x=1,y=2,label=""),show_guide=F)

вне аргумента aes устраняет a над легендой

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


Есть ли способ изменить "а" на что-то другое, например "r"?
asalimih

8

Мы можем использовать, guide_legend(override.aes = aes(...))чтобы скрыть «а» в легенде.

Ниже приведен краткий пример того, как вы можете использовать guide_legend ().

library(ggrepel)
#> Loading required package: ggplot2

d <- mtcars[c(1:8),]

p <- ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )

# Let's see what the default legend looks like.
p

# Now let's override some of the aesthetics:
p + guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

Создано 29.04.2019 пакетом REPEX (v0.2.1)


Я думаю, что это лучшее решение, чем принятое, поскольку оно позволяет специально убрать букву «а» из легенды, в то время как остальная эстетика при желании может остаться нетронутой.
Маркел

1

Вы также можете использовать show.legend = FALSEв аргументах geom_label_repel()для удаления буквы «a» в легенде. Итак, вместо

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )+ guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

ты можешь сделать,

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white",
    show.legend = FALSE  )

0

У меня была аналогичная проблема: за точками разного цвета, которые я пытался обозначить, появлялась буква «а» geom_text_repel. Чтобы удалить букву «а», чтобы она отображала точку без «а» позади нее, мне пришлось добавить show.legend=FALSEв качестве аргумента geom_text_repel.

Надеюсь, это имеет смысл для всех, кто сталкивается с той же проблемой!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.