使用for Loop在R中使用GGPLOT绘制分离的图

时间:2018-09-16 01:26:49

标签: r ggplot2

d是我的数据框:

set.seed(0)
date<-seq(as.Date("2000/1/1"), as.Date("2000/1/10"), by = "days")
x <- c(rep(1:10, 2,5)+rnorm(20)/4, rep(6:15, 2,5) + rnorm(20)/5)
y <- c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5)
replicate <- gl(4, 10, 40)
d <- data.frame(replicate=replicate,date=date,y=y,x=x)

我想使用for循环内的数据框在同一图上绘制y和x。 X轴将为date列。因为我只有4个不同的组(重复是索引组),所以我将必须有4个图,其中X轴是日期列,正如我之前提到的。我一直在尝试这样做,但是没有用:

for (var in unique(d$replicate)) {
  dev.new()
  print(ggplot(d[d$replicate==var,],aes(date=date, y=y, colour=replicate)) + geom_line())
}

有帮助吗?

1 个答案:

答案 0 :(得分:1)

首先,在您的aes()调用中,第一个参数应命名为x而不是date,这样调用将变为:aes(x=date, y=y, colour=replicate))。代码应该起作用。

但是,要在同一日期的x轴上绘制x和y,则需要执行以下操作:

for (i in unique(d$replicate)){
  dev.new()
  p <- ggplot(filter(d, replicate == i),
              aes(date)) +
    geom_line(aes(y = y, colour = "blue")) +
    geom_line(aes(y = x, colour = "red"))
  print(p)
}