изменить цвет поля условных обозначений в ggplot

#r #ggplot2

#r #ggplot2

Вопрос:

Я хотел бы изменить цвет полей в легенде для типа линии на следующем графике:

 set.seed(123)

df <- data.frame(x = rep(1:3, each = 9),
                 y = abs(rnorm(27)),
                 gr1 = rep(letters[1:3], each = 3),
                 gr2 = rep(letters[24:26], 3))

library(ggplot2)

ggplot(df, aes(x = x, y = y, linetype = gr1, fill = gr2))   
  geom_col(position = "dodge", col = "black") 
  

Поскольку легенда типа линии неясна, было бы неплохо изменить цвет фона. Желаемый результат должен выглядеть следующим образом:

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

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

1. Пытаетесь добавить guides(linetype = guide_legend(override.aes = list(fill = "white"))) ?

2. @Z.Lin, пожалуйста, отправьте ответ.

3. Да, это решает проблему! Большое вам спасибо. Опубликуйте это как ответ, я приму его.

Ответ №1:

Вы можете добавить список желаемых изменений к override.aes опции в guide_legend() , чтобы переопределить эстетические параметры по умолчанию для ключей условных обозначений.

 p <- ggplot(df, aes(x = x, y = y, linetype = gr1, fill = gr2))   
  geom_col(position = "dodge", col = "black"); p

p  
  guides(linetype = guide_legend(override.aes = list(fill = "white")))

# equivalent to above
p  
  scale_linetype_discrete(guide = guide_legend(override.aes = list(fill = "white")))
  

график

(Обычно я использую этот прием для прозрачности: например, диаграмма рассеяния разных цветов с низким alpha значением для видимости перекрывающихся точек, но высоким alpha значением в цветовой легенде, чтобы сделать их отличительными. В целом, override.aes обеспечивает большую универсальность при управлении внешним видом легенды.)