使用source在R中制作线框图

时间:2014-07-11 19:53:24

标签: r plot

我有一个构建数据框DF的R脚本,然后使用Rscripts调用目录source中的每个脚本来生成图。所以典型的执行看起来像

pdf('output.pdf')
source('Rscripts/make_plot.r')
dev.off()

其中Rscripts/make_plot.r可能包含类似

的内容
plot(DF$x, DF$y)

到目前为止,这种策略运作得非常好(虽然我不知道它是否是推荐的做事方式)。但是,我现在正在撞墙。我的一个Rscripts使用wireframe而非plot制作图表,因此出于某种原因,在该文件上调用source并不会产生图表。通过将以下内容放入make_plot.r

,可以找到重现此问题的一个小示例
library("lattice")
N <- 10
s <- seq(0, 1, 0.1)
wireframe(z~x*y, data=data.frame(x=rep(s, each=N), y=rep(s, N), z=rep(s, N)))

在单独调用时有效,但在通过source调用时不生成绘图。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

R FAQ

中介绍了这一点
  

为什么格子/格子图形不起作用?

     

最可能的原因是你忘了告诉R显示图表。诸如xyplot()之类的格子函数创建了一个图形对象,但不显示它(ggplot2图形和S-PLUS中的Trellis图形也是如此)。图形对象的print()方法产生实际显示。当您在命令行以交互方式使用这些函数时,结果会自动打印,但在source()或您自己的函数内部,您将需要一个显式的print()语句。

由于wireframe()是莱迪思函数,因此您需要将其包装在print()