2011-12-21 62 views
21

me gustaría trazar una serie temporal que se parece a esto:Combinar puntos con líneas con ggplot2

enter image description here

lo que parcela con:

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

Mis datos tiene el siguiente aspecto:

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 

Todo está bien hasta el momento. Pero tengo que conectar los puntos correspondientes (mismo color) con una línea. No pude entender cómo hacer eso. Si uso geom_line() Tengo este resultado:

enter image description here

que no es lo que quiero ... Sólo tengo la sensación que pasar por alto algo ...

¿Alguna sugerencia? Gracias por tu ayuda.

+4

Tal vez querían 'grupo = Altersgr'? – joran

+0

¿Cuál es el código exacto que utilizó para generar la segunda cifra? –

+0

@joran: ¡Tienes razón! setting group = Altersgr y add geom_line() funciona bien. – Dominik

Respuesta

23

Es posible que el uso de las aes `grupo' le ayudará a obtener el resultado deseado. Por ejemplo:

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) 

que produce la parcela encontrar aquí:

enter image description here

+0

Fue el groupetting lo que estuvo mal. Pero gracias por tu ejemplo! – Dominik

11

el siguiente ejemplo se utiliza el conjunto de datos del iris funciona bien:

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