Как установить другой цвет заливки для направляющей шкалы в geom_jitter?

#r #ggplot2 #geom-point

Вопрос:

Я хочу создать график, на котором геометрические точки (или колебания) заполняются после заданного значения, но их цвет линий белый.

Однако установка цвета на белый делает так, что в легенде отображаются невидимые точки, и это довольно бесполезно. Как я могу заставить легенду отображать черные точки правильного размера, но фактический сюжет имеет другой цвет и заливку?

Пример того, что я получил за работу:

 mtcars %>% 
  ggplot(aes(disp, mpg, size = cyl, fill = mpg))  
  geom_jitter(alpha = 0.8, pch = 21)  
  scale_size_continuous(trans = 'log10')  
  scale_fill_viridis_c()
 

Как я могу сидеть color = 'white' внутри geom_jitter , не создавая бесполезную легенду?

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

Ответ №1:

Вы можете переопределить определенную эстетику в легенде масштаба с помощью guide_legend(override.aes = list(...)) . Пример ниже:

 library(ggplot2)

ggplot(mtcars, aes(disp, mpg, size = cyl, fill = mpg))  
  geom_jitter(alpha = 0.8, pch = 21, colour = "white")  
  scale_size_continuous(
    trans = 'log10',
    guide = guide_legend(override.aes = list(fill = "black"))
  )  
  scale_fill_viridis_c()
 

Создано 2021-05-26 пакетом reprex (v1.0.0)

Комментарии:

1. есть ли мнение, как эти 2 легенды будут вынуждены отображаться fill и size в то же время?

2. Блестяще, это было именно то, что я искал! Большое спасибо!

3. @bird вы можете объединить легенды только в том случае, если они имеют одинаковые свойства (заголовки, разрывы, метки и т.д.). Самый простой способ сделать это-установить эстетику в один и тот же столбец, aes(size = var, fill = var) т. Е. Поскольку заливка здесь непрерывная, вам следует установить в руководстве условные обозначения вместо цветовой панели по умолчанию.