在R中使用ggplot2覆盖两个图

时间:2016-10-28 02:39:48

标签: r ggplot2

有两个数据框 - df1& df2我需要使用ggplot2创建线图并在同一图表上显示。

df1

 x   y 
2   30
4   25
6   20
8   15

df2

 x   y 
2   12
4   16
6   20
8   24

用于绘制第一个df,

p1 <- ggplot( df1, aes(x = df1[,1] , y = log(df1[,2]) ) )
p1 <- p1 + geom_line(aes(y = log(df1[,2])))
p1

我们如何在数据框df2

的同一图表上获得相同的地图叠加层

1 个答案:

答案 0 :(得分:9)

您只需重新定义您从中获取的data即可。 ggplot将始终关注美学的初始化调用并尝试从那里继承。此外,无需使用df[,2]语法,ggplot在设置df1时就已在data = df1内查看。

df1 <- data.frame(x = seq(2, 8, by = 2),
                  y = seq(30, 15, by = -5))
df2 <- data.frame(x = seq(2, 8, by = 2),
                  y = seq(12, 24, by = 4))

ggplot(df1, aes(x, log(y))) + 
   geom_line() +
   geom_line(data = df2, color = "red") # re-define and overwrite top layer inheritance

enter image description here