¿Puede ggplot2 controlar el tamaño de punto y el tamaño de línea (grosor de línea) por separado en una leyenda?

Un ejemplo usandoggplot2 para graficar grupos de puntos de datos y líneas que conectan los medios para cada grupo, mapeados con el mismoaes parashape y 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 es que los símbolos de puntos en la leyenda parecen demasiado pequeños para ver, en relación con los símbolos de línea:

Tratando deampliar tamaño de punto en leyenda También aumenta el grosor de línea, por lo que no es útil aquí.

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

Sería bueno si el grosor de línea fuera una estética distinta desize. Traté de agregar

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

que solo da una advertencia.

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

Parece que tampoco hay diferencia si muevo ellinetype aes fuera deggplot() y enstat_summary(). Si solo quisiera los símbolos de puntos, podría eliminar líneas de la leyendade esta manera.

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

En cambio, (manteniendo pequeños símbolos de puntos en el gráfico) quierouno solo leyenda conambos símbolos de puntos grandes como en esta última imageny símbolos de línea delgada como en la primera imagen. ¿Hay alguna forma de hacer esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta