#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
обеспечивает большую универсальность при управлении внешним видом легенды.)