2010-06-01 7 views
0

J'essaie de comprendre comment avoir plus d'une série sur une parcelle, en utilisant les données suivantes.Comment tracer plus d'une série à l'aide de qplot?

Year <- c('1950', '1960', '1970', '1980') 
Bus <- c(10,20,30,40) 
Bus.sd <- c(1.1, 2.2, 3.3, 4.4) 
Car <- c(20, 20, 40, 40) 
Car.sd <- c(1.1, 2.2, 3.3, 4.4) 

sample_data = data.frame(Year, Bus, Bus.sd, Car, Car.sd) 

qplot(Year, Bus, data=sample_data, geom="pointrange", 
ymin = Bus - Bus.sd/2, ymax = Bus + Bus.sd/2) 

Par exemple, en utilisant les données ci-dessus, comment puis-je montrer à la fois SAMPLE_DATA $ Bus et SAMPLE_DATA $ Car sur la même parcelle dans des couleurs différentes?

Ce que j'ai essayé de faire était:

p <- qplot(...) 

puis

p <- p + qplot(...) 

où je reproduit la ligne précédente, mais cela m'a donné une erreur.

Je ne comprends pas très bien comment fonctionne AES. J'ai étudié les exemples de ggplot2, mais j'ai de la difficulté à comprendre les exemples pertinents ici. Ou, s'il est possible de faire une barre empilée (geom_bar) en utilisant ces données, je pense que cela le représenterait également de manière appropriée.

+0

Pouvez-vous reproduire le graphique dans le paquet 'graphs'? Ou esquisser en quelque sorte ... – aL3xa

Répondre

0

J'espère que cette aide

gplot2 fonctionne mieux avec les données au format long, comme ceci:

Year score sd variable 
1 1950 10 1.1  bus 
2 1960 20 2.2  bus 
3 1970 30 3.3  bus 
4 1980 40 4.4  bus 
5 1950 20 1.1  car 
6 1960 20 2.2  car 
7 1970 40 3.3  car 
8 1980 40 4.4  car 

Cela les données dans votre R:

data <- structure(list(Year = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 
4L), class = "factor", .Label = c("1950", "1960", "1970", "1980" 
)), score = c(10, 20, 30, 40, 20, 20, 40, 40), sd = c(1.1, 2.2, 
3.3, 4.4, 1.1, 2.2, 3.3, 4.4), variable = c("bus", "bus", "bus", 
"bus", "car", "car", "car", "car")), .Names = c("Year", "score", 
"sd", "variable"), row.names = c(NA, -8L), class = "data.frame") 

Et cela fera l'intrigue, avec esquiver un tout. Vous avez vraiment besoin de l'esquive, car vos données se chevauchent. Vous pouvez contrôler la quantité d'esquive avec la valeur "W".

ggplot(data, aes(x=Year, y=score,col=variable))+ 
geom_point(position=position_dodge(w=0.2))+ 
geom_pointrange(aes(ymin=score-sd, ymax=score+sd,group=Year),position=position_dodge(w=0.2)) 
+0

Que signifie le format long? Est-ce comme un vecteur empilé? – djq

+0

cf. l'exemple "data". "Bus" et "Car", ne sont pas deux variables différentes - mais plutôt deux classes de la même variable "imaginarie", par ex. "véhicule". La même chose vaut pour SD et le score. – Andreas

+0

Les paquets de fusion et de fusion Hadley sont très efficaces pour transformer des jeux de données en différentes formes. – Andreas