我想将两个ggplots从两个不同的data.frames组合成一个图。您将在下面找到代码。我想结合图1和2或图3和4。
df1 <- data.frame(p=c(10,8,7,3,2,6,7,8),
v=c(100,300,150,400,450,250,150,400))
df2 <- data.frame(p=c(10,8,6,4), v=c(150,250,350,400))
plot1 <- qplot(df1$v, df1$p)
plot2 <- qplot(df2$v, df2$p, geom="step")
plot3 <- ggplot(df1, aes(v, p)) + geom_point()
plot4 <- ggplot(df2, aes(v, p)) + geom_step()
这一定非常容易,但不知怎的,我无法让它发挥作用。谢谢你的时间。
答案 0 :(得分:62)
正如Baptiste所说,你需要在geom级别指定数据参数。任
#df1 is the default dataset for all geoms
(plot1 <- ggplot(df1, aes(v, p)) +
geom_point() +
geom_step(data = df2)
)
或
#No default; data explicitly specified for each geom
(plot2 <- ggplot(NULL, aes(v, p)) +
geom_point(data = df1) +
geom_step(data = df2)
)
答案 1 :(得分:44)
对我来说唯一可行的解决方案是在geom_line而不是基础对象ggplot中定义数据对象。
像这样:
ggplot() +
geom_line(data=Data1, aes(x=A, y=B), color='green') +
geom_line(data=Data2, aes(x=C, y=D), color='red')
而不是
ggplot(data=Data1, aes(x=A, y=B), color='green') +
geom_line() +
geom_line(data=Data2, aes(x=C, y=D), color='red')
答案 2 :(得分:3)
您可以将此技巧仅用于qplot。使用内部变量$mapping
。您甚至可以将color =添加到您的绘图中,这样也可以将其放置在贴图中,然后您的绘图自动与图例和颜色结合使用。
cpu_metric2 <- qplot(y=Y2,x=X1)
cpu_metric1 <- qplot(y=Y1,
x=X1,
xlab="Time", ylab="%")
combined_cpu_plot <- cpu_metric1 +
geom_line() +
geom_point(mapping=cpu_metric2$mapping)+
geom_line(mapping=cpu_metric2$mapping)