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

Как я могу удалить букву «а» из легенды, созданной этим кодом? Если я удалю 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))

person user2700207    schedule 20.08.2013    source источник


Ответы (6)


Установите 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.legend в 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  = FALSE)

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

person Simon O'Hanlon    schedule 20.08.2013
comment
Установка show.legend на FALSE в ggplot2 3.2.1 полностью удалит легенду! - person NelsonGon; 08.09.2019

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

..
geom_text(aes(label=Species), show_guide = F) +
..
person Nick    schedule 10.02.2015

Мы можем использовать 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 апреля 2019 г. пакетом REPEX (v0.2.1)

person Kamil Slowikowski    schedule 29.04.2019
comment
Я думаю, что это лучшее решение, чем принятое, поскольку оно позволяет специально убрать букву «а» из легенды, в то время как остальная эстетика при желании может остаться нетронутой. - person Markel; 30.05.2020

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

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

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

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

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

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

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

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

person user2673238    schedule 15.08.2015
comment
Есть ли способ изменить букву «а» на что-нибудь вроде «r»? - person asalimih; 30.04.2020

Вы также можете использовать 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  )
person R.Andres Castaneda    schedule 17.03.2020

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

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

person arranjdavis    schedule 23.05.2020