使用 ggplot 用图例覆盖来自不同大小数据集的 2 个图

overlaying 2 plots from different sized dataset with legends using ggplot

我有 2 个不同大小的数据集。我如何简单地绘制它们并让每个具有不同的颜色和图例? 所以在这种情况下,图例将是 count1、count2,图例标题是我选择的,比方说:mylegend。我需要更改或添加以下命令什么?

x <- data.frame(Q=1:10, count1=21:30)
y <- data.frame(Q=seq(1,10,0.5), count2=seq(11,20, 0.5))
ggplot() + geom_line(data=x, aes(x=Q, y=count1)) + geom_point(data=y, aes(x=Q, y=count2)) 

最简单的解决方案是将您的数据合并到同一个 data.frame 中,然后在 ggplot 中设置美学 (aes)。

这是一种可以组合所有内容的方法:

df <- data.frame(Q = c(x$Q, y$Q), 
             count = c(x$count1, y$count2),
             type = c(rep("count1", 10), rep("count2", 19))
             )

但您也可以使用 rbind()melt() 等命令(来自 reshape2 库)。

与数据合二为一data.frame:

ggplot(df, aes(x=Q, y=count, colour=type)) + geom_point() + geom_line() + 
   scale_colour_discrete(name="mylegend")

这是一个基本示例,我强烈推荐 Hadley Wickham 的 ggplot2 book,以及搜索 google(Stack Overflow、R Cookbook 等)以寻找特定绘图问题的解决方案或更多方法自定义您的情节。