`geom_line ()` conecta puntos mapeados a diferentes grupos

me gustaríagroup Mis datos se basan en la interacción de dos variables, pero solo asignan una estética a una de esas variables. (La otra variable representa réplicas que, en teoría, deberían ser equivalentes entre sí). Puedo encontrar formas poco elegantes de hacer esto, pero parece que debería haber una forma más elegante de hacerlo.

Por ejemplo

# Data frame with two continuous variables and two factors 
set.seed(0)
x <- rep(1:10, 4)
y <- c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5)
treatment <- gl(2, 20, 40, labels=letters[1:2])
replicate <- gl(2, 10, 40)
d <- data.frame(x=x, y=y, treatment=treatment, replicate=replicate)

ggplot(d, aes(x=x, y=y, colour=treatment, shape=replicate)) + 
  geom_point() + geom_line()

Esto casi lo hace bien, excepto que no quiero representar los puntos con diferentes formas. Parece quegroup=interaction(treatment, replicate) ayudaría (por ejemplo, basado enesta pregunta, perogeom_line() Todavía conecta puntos en diferentes grupos:

ggplot(d, aes(x=x, y=y, colour=treatment, group=interaction("treatment", "replicate"))) + 
  geom_point() + geom_line()

Puedo resolver el problema creando manualmente una columna de interacción ygrouppor eso

d$interact <- interaction(d$replicate, d$treatment)

ggplot(d, aes(x=x, y=y, colour=treatment, group=interact)) + 
  geom_point() + geom_line()

Pero parece que debería haber una másggplot2-nativa forma de conseguirgeom_line Sólo para conectar puntos del mismo grupo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta