Подтвердить что ты не робот

Как объединить 2 сюжета (ggplot) в один сюжет?

Используя R, можно ли разместить 2 ggplot вместе (т.е. на одном и том же участке)? Я хочу показать тенденцию из двух разных кадров данных и вместо того, чтобы ставить их один рядом друг с другом, я хотел бы объединить их в один сюжет и только изменить цвет одного из них (черная точка).

Чтобы быть более конкретным, у меня есть следующие 2 изображения:

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

и

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

Они выглядят так (оба имеют черные точки, и мне нужно будет изменить один из них на что-то другое):

enter image description here

и

enter image description here

4b9b3361

Ответ 1

Создание единого комбинированного графика с вашей текущей настройкой данных будет выглядеть примерно так.

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)

однако, если вы можете комбинировать наборы данных перед графикой, тогда ggplot будет автоматически дает вам легенду, и в целом код выглядит немного чище

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)

Ответ 2

Dummy data (вы должны предоставить это для нас)

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

скомбинировать:

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

Теперь выполните:

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

и отрегулируйте цвета и т.д. по вкусу.

enter image description here

Ответ 3

Просто объедините их. Я думаю, что это должно работать, но оно не проверено:

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)