Как объединить 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]()
Ответы
Ответ 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)