O ggplot2 pode controlar o tamanho do ponto e o tamanho da linha (espessura da linha) separadamente em uma legenda?

Um exemplo usandoggplot2 para representar graficamente grupos de pontos e linhas de dados conectando as médias de cada grupo, mapeadas com o mesmoaes parashape e paralinetype:

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))

Problema é que os símbolos de ponto na legenda parecem um pouco pequenos demais para serem vistos, em relação aos símbolos de linha:

Tentandoaumentar o tamanho do ponto na legenda também aumenta a espessura da linha, de modo que não é útil aqui.

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

Seria bom se a espessura da linha fosse uma estética distintasize. Eu tentei adicionar

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

o que apenas dá um aviso.

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

Parece não fazer diferença se eu mover olinetype aes fora deggplot() e emstat_summary(). Se eu quisesse apenas os símbolos de ponto, poderia eliminar as linhas da legendadeste jeito.

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

Em vez disso, (mantendo pequenos símbolos de ponto no próprio gráfico) eu queroum único lenda comambos símbolos de pontos grandes como nesta última imageme símbolos de linhas finas como na primeira imagem. Existe uma maneira de fazer isso?

questionAnswers(4)

yourAnswerToTheQuestion