`geom_line ()` łączy punkty mapowane do różnych grup

Chciałbymgroup moje dane oparte są na interakcji dwóch zmiennych, ale tylko odwzorowuję estetykę na jedną z tych zmiennych. (Druga zmienna reprezentuje repliki, które teoretycznie powinny być sobie równoważne). Mogę znaleźć nieeleganckie sposoby na zrobienie tego, ale wygląda na to, że powinien to być bardziej elegancki sposób.

Na przykład

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

To prawie robi to dobrze, z wyjątkiem tego, że nie chcę reprezentować punktów o różnych kształtach. To wygląda jakgroup=interaction(treatment, replicate) pomoże (np. na podstawieto pytanie, alegeom_line() nadal łączy punkty w różnych grupach:

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

Mogę rozwiązać problem, ręcznie tworząc kolumnę interakcji igroupprzez to:

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

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

ale wydaje się, że powinno być coś więcejggplot2-natywny sposób zdobywaniageom_line łączyć tylko punkty z tej samej grupy.

questionAnswers(1)

yourAnswerToTheQuestion