2011-12-21 16 views
21

chciałbym wykreślić szereg czasowy, który wygląda tak:Połącz punkty z linii z ggplot2

enter image description here

co wykreślić z:

qplot(Jahr, Wert, data=tu, group = Geschlecht, color = Altersgr) + facet_grid(Geschlecht ~ Land) 

Moje dane wygląda następująco:

Land Altersgr Geschlecht Jahr Wert 
1 DE < 20 J.   m 2000 13.0 
2 DE 20-<65 J.   m 2000 25.7 
3 DE  65+ J.   m 2000 70.1 
4 DE 65-<80 J.   m 2000 44.2 
5 DE  80+ J.   m 2000 213.5 
6 BB < 20 J.   m 2000 26.8 

Wszystko jest w porządku do tej pory. Ale muszę połączyć odpowiednie punkty (ten sam kolor) z linią. Nie mogłem wymyślić, jak to zrobić. Jeśli używam geom_line() Mam ten wynik:

enter image description here

co nie jest to, co chcę ... Mam tylko wrażenie, że coś przeoczyć ...

Wszelkie sugestie? Dziękuję za pomoc.

+4

Może chciałeś 'group = Altersgr'? – joran

+0

Jaki jest dokładny kod użyty do wygenerowania drugiej figury? –

+0

@joran: Masz rację! setting group = Altersgr i add geom_line() działa poprawnie. – Dominik

Odpowiedz

23

może się okazać, że przy użyciu `grupy” AES pomoże Ci uzyskać wynik chcesz. Na przykład:

tu <- expand.grid(Land  = gl(2, 1, labels = c("DE", "BB")), 
        Altersgr = gl(5, 1, labels = letters[1:5]), 
        Geschlecht = gl(2, 1, labels = c('m', 'w')), 
        Jahr  = 2000:2009) 

set.seed(42) 
tu$Wert <- unclass(tu$Altersgr) * 200 + rnorm(200, 0, 10) 

ggplot(tu, aes(x = Jahr, y = Wert, color = Altersgr, group = Altersgr)) + 
    geom_point() + geom_line() + 
    facet_grid(Geschlecht ~ Land) 

która produkuje działka znaleźć tutaj:

enter image description here

+0

Było groupsetting że niesłusznie. Ale dzięki za twój przykład! – Dominik

11

Poniższy przykład przy użyciu zestawu danych przysłony działa dobrze:

dat = melt(subset(iris, select = c("Sepal.Length","Sepal.Width", "Species")), 
     id.vars = "Species") 
ggplot(aes(x = 1:nrow(iris), y = value, color = variable), data = dat) + 
     geom_point() + geom_line() 

enter image description here