R + ggplot:绘制多个页面
我试图写一个函数,绘制一个ggplot facet_wrap
图在多个页面。 这只是一个黑客,因为这个function似乎是在ggplot2function待办事项列表。 我做了一些小的计算,以find我需要的页数,我的data.frame
的行数, data.frame
需要我等。我非常有信心,这一切工作。
pdf(filename) for (i in seq(num_pages)){ slice = seq(((i-1)*num_rows)+1,(i*num_rows)) slice = slice[!(slice > nrow(df.merged))] df.segment=df.merged[slice,] p <- ggplot(df.segment, aes(y=mean,x=phenotype)) p <- p + geom_bar(stat="identity",fill="white",colour="black") p + facet_wrap("ID",scales="free_y",ncol=n_facets,nrow=n_facets) } dev.off()
我的问题是,通过在pdf()
和dev.off()
函数之间将它们全部封装在for循环中,for循环似乎并不等待ggplot完成它的工作,非常快速地通过其循环并输出无效的PDF。
如果我设置i = 1
,启动pdf()
,在for循环中运行上面的代码,然后设置i=2
,然后运行代码,等等,直到我感到无聊( i=3
),然后closures设备由此产生的PDF是辉煌的。
有没有一种方法,我可以让循环等待最后一行完成绘图,然后再进入下一个迭代?
我认为问题在于你需要在最后一行(p + …)中使用print()来实际打印到for循环中的设备。 。 。
究竟。 ggplot2书的第39页告诉我们,当你创buildggplot2对象时,你可以用“print()”在屏幕上渲染它,当交互式运行时会自动发生,但是在循环或者函数中,它自己“。