Diferentes claves de leyenda dentro de la misma leyenda en ggplot2

Digamos que no necesito una asignación de variable 'adecuada', pero me gustaría tener claves de leyenda para ayudar a comprender el gráfico. Mis datos reales son similares a los siguientes df

df <- data.frame(id = 1:10, line = rnorm(10), points = rnorm(10))

library(ggplot2)

ggplot(df) +
  geom_line(aes(id, line, colour = "line")) +
  geom_point(aes(id, points, colour = "points"))

Básicamente, me gustaría la clave de la leyenda relativa apoints Para ser ... solo un punto, sin la línea en el medio. Me acerqué a eso con esto:

library(reshape2)

df <- melt(df, id.vars="id")

ggplot() +
  geom_point(aes(id, value, shape = variable), df[df$variable=="points",]) +
  geom_line(aes(id, value, colour = variable), df[df$variable=="line",])

pero define dos leyendas separadas. Arreglar el segundo código (y tener que remodelar mis datos) también estaría bien, pero preferiría una forma (si existe) de cambiar manualmente cualquier clave de leyenda (y seguir usando el primer enfoque). ¡Gracias!

EDITAR:

gracias @alex, quien actualizó mi memoria sobre el mapeo de variables. Sin embargo, la forma más fácil que tengo hasta ahora es la siguiente (¡muy mal truco!):

df <- data.frame(id = 1:10, line = rnorm(10), points = rnorm(10))

ggplot(df) +
  geom_line(aes(id, line, colour = "line")) +
  geom_point(aes(id, points, shape = "points")) +
  theme(legend.title=element_blank())

que simplemente está ocultando el título de los dosdiferente leyendas

Otras ideas mas que bienvenidas !!!

Respuestas a la pregunta(2)

Su respuesta a la pregunta