#r #ggplot2
#r #ggplot2
Вопрос:
Этот код:
mtcars %>%
group_by(carb, gear, am) %>%
summarise(mpg = mean(mpg)) %>%
ggplot(aes(x = carb, y = mpg, color = as.factor(gear), linetype = as.factor(am), group = interaction(gear, am)))
geom_line()
geom_point()
theme(legend.box.background = element_rect(color = "black", size = 1))
Выдает следующее изображение:
Тем не менее, я бы хотел, чтобы легенда о цвете и легенда о типе линии были в отдельных полях условных обозначений. Я сделал желаемый результат в Paint, и мне интересно, как добиться этого с помощью ggplot:
Комментарии:
1. Попробуйте
legend.background
. Это дает вам поля вокруг каждой легенды, но размер поля зависит от содержимого, например, длины заголовка легенды и меток ключей
Ответ №1:
Отдельные блоки условных обозначений могут быть достигнуты с помощью legend.background
вместо legend.background.box
. Это дает вам поля вокруг каждой легенды, но размер поля зависит от содержимого, например, длины заголовка легенды и меток ключей. Чтобы получить поля одинаковой ширины, вы можете добавить несколько пробелов в заголовок легенды, например stringr::str_pad
, чтобы получить заголовки одинаковой ширины. Попробуйте это:
library(ggplot2)
library(dplyr)
mtcars %>%
group_by(carb, gear, am) %>%
summarise(mpg = mean(mpg)) %>%
ggplot(aes(x = carb, y = mpg, color = as.factor(gear), linetype = as.factor(am), group = interaction(gear, am)))
geom_line()
geom_point()
labs(linetype = stringr::str_pad("as.factor(am)", 15), color = stringr::str_pad("as.factor(gear)", 15))
theme(legend.background = element_rect(color = "black", size = 1))
#> `summarise()` regrouping output by 'carb', 'gear' (override with `.groups` argument)