用于 littler 或 Rscript 的外部图形设备

5

我非常喜欢使用littler软件包进行R脚本编写。但是我不知道如何像gnuplot一样使用外部图形设备(例如使用Octave)。我能够生成所需的图形,但必须使用Sys.sleep,我不想这么做,因为我想以交互方式自己关闭它或更好地继续脚本而不关闭设备。

到目前为止,这就是我的代码:

#!/usr/bin/env r -t


suppressMessages(require(Cairo))

CairoX11()
plot(rnorm(1000), pch = 19)
Sys.sleep(50)

# some code without closing the graphics window

我的问题是:你知道实现这个的方法吗?
任何提示、文档、链接或代码都将不胜感激。
2个回答

2

我不知道有什么方法可以做到这一点,因为这些是有意为之的交互式运行R的方式。我建议在交互式的R会话中运行您的脚本,并使用par(ask=T)。这样它将在图形之间为用户暂停,就像R文档中的演示一样。


谢谢您的建议。但是对于我的目的,我不能使用交互式的R会话。 - dickoa

2
除了John的建议,您可以明确地调用一个GUI包来打开一个新的“frame”(或“window”),然后显示绘图。这将一直保留在屏幕上,直到用户(或外部事件)终止该窗口。 tcltk包可以与tkrplot包一起使用;这是最便携的。RGtk2更现代,但在Windows上安装/使用较困难,因为Gtk2在那里并不完全本地化。还有更多-在此处和其他地方搜索R GUI。

首先,我想感谢你(和Jeffrey Horner)为Littler所做的贡献,它真的非常有用,而且比Rscript更容易使用(我甚至在我的Kubuntu上使用R进行了一些系统管理!!)。你关于外部框架的看法是正确的,到目前为止,我尝试了tkrplot、新的r qt界面(qtbase和qtpaint),甚至是gnuplot(通过TeachingDemos),并且我最终找到了一种方法来保持我的R图形而不使用Sys.sleep(我使用locator代替,并右键单击以继续脚本)。我将尝试找到一个更优雅的解决方案来解决这个问题。再次感谢。 - dickoa
很高兴能够提供帮助。如果您有一个简洁的小演示,可能只涉及tcltk和tkrplot,我很乐意将其添加到软件包中(当然会给予您完整的信用等)。您在这里提出的问题是相关的,我们应该附带一个示例解决方案。 - Dirk Eddelbuettel
好主意,当我完成这项工作时,我很乐意给你发送一份可复制的代码或在此处发布它。 - dickoa

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