使用grid.arrange而不是mfrow循环

时间:2017-09-13 11:06:12

标签: r for-loop plot ggplot2

我有这个带有基本绘图功能的工作循环

#my_data is a data.frame defined before
day = c("2016-12-24","2016-12-25", "2016-12-31")
par(mfrow  =  c(length(day),1))
for (i in 8:length(my_data)){
    for (j in 1:length(day)){
        plot(x=my_data$Zeit[which(my_data$Datum == day[j])], y=my_data[which(my_data$Datum == day[j]),i], type="l", 
         main=colnames(my_data[i]), xlab=day[j], ylab=my_units[1,i])
    }
}

但是我想使用ggplot而不是基本的绘图功能。通过这个板上的搜索功能,我找到了de命令" grid.arrange",但它不知何故不起作用。

编辑:这是我的新代码" do.call"。谢谢你的提示。

Edit2:现在可以了。我不明白为什么,但是"#Added"它不会打印三次相同的情节。

for (i in 8:length(my_data)){
for (j in 1:length(day)){
  local({ #Added
    i <- i #Added
    t <- which(my_data$Datum == day[j])
    p[[j]] <<- ggplot(my_data[t,], aes(my_data$Zeit[t], my_data[t,i]))+  #Changed to <<-
    geom_line()+
    labs(x = "", y = my_units[[i]], title = colnames(my_units[i]))+
    theme_own()
  }) #Added
}

编辑:我想要做的是在相同的&#34;图片&#34;中绘制数天(在这个例子中为三天)的数据。我想对所有列重复此操作(8:length(my_data))。

使用这个新代码&#34; do.call&#34;我确实得到了三个我想要的情节,但这些情节都是在同一天(最后一天)。为什么前两个日期会被覆盖?

Edit2:我在这里找到了提示:for loop with ggplots produces graphs with identical values but different headings

谢谢大家的帮助:)

1 个答案:

答案 0 :(得分:0)

很难准确猜出您的目标是什么,因为您的示例在for循环中调用了grid.arrange。但请尝试使用do.call("grid.arrange", c(plist, ncol=2))