Может ли ggplot2 контролировать размер точки и размер линии (вес линии) отдельно в одной легенде?

Пример использованияggplot2 построить график групп точек данных и линий, соединяющих средства для каждой группы, сопоставленных сaes заshape и дляlinetype:

p <- ggplot(mtcars, aes(gear, mpg, shape = factor(cyl), linetype = factor(cyl))) + 
  geom_point(size = 2) +
  stat_summary(fun.y = mean, geom = "line", size = 1) +
  scale_shape_manual(values = c(1, 4, 19))

проблема что точечные символы в легенде кажутся слишком маленькими, чтобы их можно было увидеть по сравнению с линейными символами:

Пытаясьувеличить размер точки в легенде также увеличивает вес линии, так что это не полезно здесь.

p1 <- p + guides(shape = guide_legend(override.aes = list(size = 4)))

Было бы неплохо, если бы вес линии отличался отsize, Я пытался добавить

+ guides(linetype = guide_legend(override.aes = list(size = 1)))

который просто дает предупреждение.

> Warning message:
In guide_merge.legend(init, x[[i]]) : Duplicated override.aes is ignored.

Кажется, нет никакой разницы, если я переместитьlinetype aes снаружиggplot() и вstat_summary(), Если бы я хотел только точечные символы, я мог бы удалить линии из легендысюда.

p2 <- p + guides(shape = guide_legend(override.aes = list(size = 4, linetype = 0)))

Вместо этого (сохраняя маленькие точечные символы в самом графике) я хочуодин единственный легенда си то и другое символы большой точки, как на этом последнем изображенииа также тонкие линии символов, как на первом изображении. Есть ли способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос