在R语言的lattice包中,如何将levelplot()图形保存到文件?

3
我发现我的脚本出现了非常奇怪的问题:
pdf("name.pdf")
levelplot(my_data)
dev.off()

如果我想保存绘图到文件,lattice的levelplot无法工作。我阅读了lattice包手册和levelplot帮助函数,但没有找到关于这个特定问题的任何信息。


你说的“不起作用”是什么意思?PDF文件是空白的吗?你能提供更多关于你的数据的信息吗?在我这里它运行良好。 - João Daniel
是的,它创建了一个空的PDF文件。感谢Gavin Simpson的答案,我现在知道我必须使用print()。然而,这只对我目前在交互式会话中有效,我想知道如何从R脚本中实现它。 - user2015601
那么,如果在非交互式会话中可以正常工作,那么就有其他问题了。 - Gavin Simpson
1个回答

12

如果您在非交互式模式下运行代码,那么我假设您的代码中包含“脚本”?无论如何,仅调用基于网格的图形函数(例如在 lattice 或者 ggplot2 包中)不会绘制任何图形 - 它只是创建一个描述图形的 R 对象。您需要使用 print 命令来要求 R 绘制图形。

在交互式环境中,对象会自动打印输出,但是在脚本中不会(例如在循环中也不会自动打印输出)。

请尝试:

pdf("name.pdf")
print(levelplot(my_data))
dev.off()

如果那样不起作用,你需要解释更多,因为我无法想象如果您按照给定的代码运行且my_data没有问题,为什么那样不起作用。


谢谢,交互式会话目前可以工作。但是我能否从R脚本中完成这个操作呢?因为我有很多数据需要绘制,在交互式会话中完成将非常繁琐。 - user2015601
@bluewoodtree 你在说什么?!我已经向你展示了如何做到这一点 - 将 levelplot() 调用包装在 print() 中。如果这不起作用,那么其他问题就出现了,并且您提供的信息远远不足以开始诊断出错原因。我展示的内容对于我来说确实在非交互式会话中有效(或者在 source() 脚本(.R 文件)中)。 - Gavin Simpson
很抱歉,我遇到了另一个问题,但现在问题已经解决了,谢谢! - user2015601

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接