如何将两个图形(ggplot)合并为一个图形?

56

使用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 hereenter image description here
3个回答

70

将您当前的数据设置合并到一个图中,结果看起来可能是这样的

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)

25

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

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

按照个人口味调整颜色等。

输入图像描述


16

只需要将它们组合在一起。我认为这样应该可以,但尚未经过测试:

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)

1
我认为你不需要为第二个数据集指定美学(因为它们都具有相同的列名),你只需指定 data=visual2 即可。 - colcarroll
谢谢@JLLagrange - 你说得对。我只是快速地复制和修改了海报的代码 - 我根本没有试图清理它。 - rrs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接