Chciałbym group
moje dane na podstawie interakcji dwóch zmiennych, ale tylko mapować estetyczne do jednej z tych zmiennych. (Druga zmienna reprezentuje powtórzenia, które teoretycznie powinny być sobie równoważne). Mogę znaleźć nieelegancki sposób, aby to zrobić, ale wydaje się, że powinien być bardziej elegancki sposób na to.`geom_line()` łączy punkty mapowane z różnymi grupami
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, poza tym, że nie chcę, aby reprezentować punkty o różnych kształtach. Wydaje się group=interaction(treatment, replicate)
pomogłoby (np na podstawie this question, ale geom_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ć ten problem, ręcznie tworząc kolumnę interakcji i group
ing przez 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ć więcej ggplot2
-natywny sposób uzyskania geom_line
, aby łączyć tylko punkty z tej samej grupy.
Dlaczego wstawiasz "interakcja (" traktuj "," replikuj ")" w drugim przykładzie, a nie faktyczne nazwy kolumn? Dla mnie 'grupa = interakcja (leczenie, replikacja)' daje oczekiwany wynik –
możliwy duplikat [grupy przez dwie kolumny w ggplot2] (http://stackoverflow.com/questions/9968976/group-by-two-columns-in- ggplot2) –
Różnica polega na tym, że w cytowanym pytaniu (które pierwotnie miałem zamiar połączyć, teraz edytowałem, aby dodać link) odpowiedź _does_ używa cytatów - ale używa też 'qplot'. Domyślam się, że 'qplot' potrzebuje zmiennych w cudzysłowach, podczas gdy' ggplot' pobiera je bezpośrednio. –