使用 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 等)以寻找特定绘图问题的解决方案或更多方法自定义您的情节。
我有 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 等)以寻找特定绘图问题的解决方案或更多方法自定义您的情节。