Укажите эстетику легенды гида с несколькими слоями geom_point - PullRequest
2 голосов
/ 15 апреля 2020

Я хотел бы создать точечный график и выделить несколько точек.

Использование mtcars данных:

library(ggplot2);library(dplyr)

ggplot(data=mtcars, aes(x=drat, y=mpg, fill =factor(gear)))+ 
        geom_point(pch =21) 

Это дает мне график без выделенной конкретной c точки с желаемой эстетикой для руководства по легендам.

enter image description here

ggplot(data=mtcars, aes(x=drat, y=mpg, fill =factor(gear))) + 
         geom_point(pch =21) + 
         geom_point(data=filter(mtcars, hp >= 220), pch=22, color = 'red')

Однако эстетика руководства легенды была заменена на эстетику последнего слоя geom_point (квадраты выделены красным)

enter image description here

Как заставить руководство легенды отображаться с эстетикой первого слоя geom_point (черные кружки)?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Попробуй это. Несколько иной подход, использующий только один слой geom_point и задающий форму и цвет с использованием scale_xxx_manual, в то время как guide_legend позволяет получить легенду правильно.

library(ggplot2)

ggplot(mtcars, aes(drat, mpg, fill = factor(gear), shape = hp >= 220, color = hp >= 220)) + 
  geom_point() +
  scale_shape_manual(values = c("TRUE" = 22, "FALSE" = 21)) +
  scale_color_manual(values = c("TRUE" = "red", "FALSE" = "black")) +
  guides(fill = guide_legend(override.aes = list(shape = 21, fill = scales::hue_pal()(3), color = "black")),
         color = FALSE,
         shape = FALSE)

Создано в 2020-04-15 пакетом Представление (v0.3.0)

2 голосов
/ 15 апреля 2020

используйте show.legned=FALSE в вашем втором слое:

ggplot(data=mtcars, aes(x=drat, y=mpg, fill =factor(gear))) + 
  geom_point(pch =21) + 
  geom_point(data=filter(mtcars, hp >= 220), pch=22, color = 'red', show.legend = FALSE)

enter image description here

...