如何将2个图(ggplot)组合成一个图?

adh*_*dhg 46 plot visualization r graph ggplot2

通过使用R,是否可以将2 ggplot放在一起(即,在同一图上)?我希望显示来自2个不同的数据帧趋势,而不是把他们一个挨着另一个,我想他们在一个情节集成在一起,只改变其中一个颜色(黑点).

更具体地说,我有以下2个视觉效果:

ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth(fill="blue", colour="darkblue", size=1)
Run Code Online (Sandbox Code Playgroud)

ggplot(visual2, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth(fill="red", colour="red", size=1)
Run Code Online (Sandbox Code Playgroud)

他们看起来像这样(两个都有黑点,我需要将其中一个更改为不同的东西):

在此输入图像描述

在此输入图像描述

Stu*_*les 57

使用当前数据设置创建单个组合图将看起来像这样

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)
Run Code Online (Sandbox Code Playgroud)

但是如果你可以在绘图之前组合数据集,那么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)
Run Code Online (Sandbox Code Playgroud)


Spa*_*man 22

虚拟数据(你应该为我们提供)

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))
Run Code Online (Sandbox Code Playgroud)

结合:

visuals = rbind(visual1,visual2)
visuals$vis=c(rep("visual1",100),rep("visual2",100)) # 100 points of each flavour
Run Code Online (Sandbox Code Playgroud)

现在做:

 ggplot(visuals, aes(ISSUE_DATE,COUNTED,group=vis,col=vis)) + 
   geom_point() + geom_smooth()
Run Code Online (Sandbox Code Playgroud)

并调整颜色等品味.

在此输入图像描述


rrs*_*rrs 12

把它们结合起来.我认为这应该有效但是未经测试:

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)
Run Code Online (Sandbox Code Playgroud)