Видаліть "a" з легенди, використовуючи естетику та geom_text


124

Як я можу видалити букву "a" з легенди, породженої цим кодом? Якщо я видаляю 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.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  = F )

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


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

14

У мене була подібна проблема . Рішення Саймона спрацювало на мене, але потрібен був незначний поворот. Я не усвідомлював, що мені потрібно додати аргументи geom_text "show_guide = F", а не замінювати його наявними аргументами - ось що показує рішення Саймона. Для nob ggplot2, як я, це було не так очевидно. Власний приклад використав би код ОП і просто додав такий аргумент, як цей:

..
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

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


Чи є спосіб налаштувати 'a' на щось інше, як 'r'?
асаліміх

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 = "")
  )
)

Створено 2019-04-29 пакетом reprex (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

У мене була аналогічна проблема: "a" з'явилося за різними кольоровими точками, які я намагався позначити geom_text_repel. Щоб видалити 'a', щоб воно просто показувало крапку без 'a' позаду нього, мені довелося додати show.legend=FALSEяк аргумент у geom_text_repel.

Сподіваюся, що це має сенс для всіх, хто може працювати над тим же питанням!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.