使用源在R中绘制线框图

使用源在R中绘制线框图,r,plot,R,Plot,我有一个R脚本,它构建一个数据帧DF,然后使用source调用目录rscript中的每个脚本来生成绘图。所以一个典型的执行看起来像 pdf('output.pdf') source('Rscripts/make_plot.r') dev.off() 其中rscript/make_plot.r可能包含以下内容 plot(DF$x, DF$y) 到目前为止,这一策略效果很好(尽管我不知道这是否是推荐的方法)。然而,我现在遇到了麻烦。我的一个RScript使用线框而不是绘图进行绘图,因此出于某种原

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

pdf('output.pdf')
source('Rscripts/make_plot.r')
dev.off()
其中
rscript/make_plot.r
可能包含以下内容

plot(DF$x, DF$y)
到目前为止,这一策略效果很好(尽管我不知道这是否是推荐的方法)。然而,我现在遇到了麻烦。我的一个RScript使用
线框
而不是
绘图
进行绘图,因此出于某种原因,在该文件上调用
源代码
不会生成绘图。在
make\u 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)))
库(“晶格”)
N这在

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

最可能的原因是您忘记告诉R显示图形。xyplot()等晶格函数创建图形对象,但不显示它(ggplot2图形和S-PLUS中的网格图形也是如此)。graph对象的print()方法生成实际显示。当您在命令行中以交互方式使用这些函数时,结果将自动打印,但在source()或您自己的函数中,您将需要显式的print()语句

由于
wireframe()
是一个晶格函数,因此需要将其包装在
print()