web-dev-qa-db-fra.com

Comment combiner 2 parcelles (ggplot) en une parcelle?

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

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

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 devoir changer l’un d’eux en quelque chose de différent):

enter image description here

et

enter image description here

43
adhg

Créer un seul tracé combiné avec votre configuration de données actuelle ressemblerait à 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, ggplot vous donnera automatiquement une légende, et en général, le code sera 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)
55
Stuples

Données factices (vous devez nous les fournir)

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 ajustez les couleurs, etc. au goût.

enter image description here

22
Spacedman

Il suffit de les combiner. Je pense que cela devrait marcher mais ça n'a pas été 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
rrs