Comment combiner 2 parcelles (ggplot) en une seule parcelle?

en utilisant R, est-il possible de placer 2 ggplot ensemble (c.-à-d. sur la même parcelle)? Je tiens à montrer une tendance à partir de 2 différentes trames de données et au lieu de les mettre l'un à côté de l'autre, j'aimerais intégrer l'ensemble dans un complot et qu'à changer la couleur de l'un d'eux (le point noir).

Pour être plus précis, j'ai les 2 visuels:

ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth(fill="blue", colour="darkblue", size=1)

et

ggplot(visual2, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth(fill="red", colour="red", size=1)

Ils ressemblent à ceci (les deux ont des points noirs et je vais avoir besoin de changer l'un d'eux à quelque chose de différent):

enter image description here

et

enter image description here

38
demandé sur Gavin Simpson 2014-01-17 21:21:17

3 réponses

la création d'un simple graphique combiné avec vos données actuelles ressemblerait à quelque chose comme ceci

p <- ggplot() +
      # blue plot
      geom_point(data=visual1, aes(x=ISSUE_DATE, y=COUNTED)) + 
      geom_smooth(data=visual1, aes(x=ISSUE_DATE, y=COUNTED), fill="blue",
        colour="darkblue", size=1) +
      # red plot
      geom_point(data=visual2, aes(x=ISSUE_DATE, y=COUNTED)) + 
      geom_smooth(data=visual2, aes(x=ISSUE_DATE, y=COUNTED), fill="red",
        colour="red", size=1)

cependant si vous pouvez combiner les ensembles de données avant de tracer alors ggplot sera automatiquement vous donner une légende, et en général le code semble un peu plus propre

visual1$group <- 1
visual2$group <- 2

visual12 <- rbind(visual1, visual2)

p <- ggplot(visual12, aes(x=ISSUE_DATE, y=COUNTED, group=group, col=group, fill=group)) +
      geom_point() +
      geom_smooth(size=1)
48
répondu Stuples 2014-01-17 17:53:44

données Factices (vous devez fournir ce pour nous)

visual1 = data.frame(ISSUE_DATE=runif(100,2006,2008),COUNTED=runif(100,0,50))
visual2 = data.frame(ISSUE_DATE=runif(100,2006,2008),COUNTED=runif(100,0,50))

combiner:

visuals = rbind(visual1,visual2)
visuals$vis=c(rep("visual1",100),rep("visual2",100)) # 100 points of each flavour

Maintenant faire:

 ggplot(visuals, aes(ISSUE_DATE,COUNTED,group=vis,col=vis)) + 
   geom_point() + geom_smooth()

et ajuster les couleurs etc. au goût.

enter image description here

21
répondu Spacedman 2014-01-17 19:09:39

il suffit de les combiner. Je pense que cela devrait fonctionner, mais il est non testé:

p <- ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + 
     geom_smooth(fill="blue", colour="darkblue", size=1)

p <- p + geom_point(data=visual2, aes(ISSUE_DATE,COUNTED)) + 
     geom_smooth(data=visual2, fill="red", colour="red", size=1)

print(p)
12
répondu rrs 2014-01-17 17:25:47