Cómo combinar 2 parcelas (ggplot) en una parcela?


Usando R, ¿es posible colocar 2 ggplot juntos (es decir, en la misma parcela)? Quiero mostrar una tendencia de 2 marcos de datos diferentes y en lugar de ponerlos uno al lado del otro, me gustaría integrarlos juntos en una parcela y solo cambiar el color de uno de ellos (el punto negro).

Para ser más específico, tengo los siguientes 2 visuales:

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

Y

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

Se ven así (ambos tienen puntos negros y necesitaré cambiar uno de ellos a algo diferente):

introduzca la descripción de la imagen aquí

Y

introduzca la descripción de la imagen aquí

Author: Gavin Simpson, 2014-01-17

3 answers

Crear un solo gráfico combinado con su configuración de datos actual se vería algo como esto

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)

Sin embargo, si puede combinar los conjuntos de datos antes de trazar, entonces ggplot lo hará automáticamente le dará una leyenda, y en general el código se ve un poco más limpio

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
Author: Stuples,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-17 17:53:44

Datos ficticios (debe proporcionarnos esto)

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))

Combinar:

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

Ahora haz:

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

Y ajustar los colores, etc. al gusto.

introduzca la descripción de la imagen aquí

 21
Author: Spacedman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-17 19:09:39

Solo combínalos. Creo que esto debería funcionar, pero no está probado:

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
Author: rrs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-17 17:25:47