R& D中的弹出窗口Emacs的

时间:2011-02-19 20:31:55

标签: r emacs ess

我在使用ES时使用ESS以便留在Emacs中。每当我创建一个绘图时,会出现一个带有图形的新弹出窗口。这个新窗口似乎是Emacs内部调用的R进程的一部分。因此,新窗口不是缓冲区列表的一部分,似乎位于Emacs环境之外。

R可以创建一个新窗口,包含例如plot()或ggplot2 / lattice中的各个函数调用的图形被强制保留在Emacs环境中?因此该图可用作新的缓冲区。

谢谢!

5 个答案:

答案 0 :(得分:9)

哦,是的,它可以......

在ESS中,请执行以下操作:

png(file="tmp.png")
plot(1:10)
dev.off()
# [[tmp.png]]

无。现在做ESC X iimage-mode(是的,两个我在那里)。

这会将缓冲区置于iimage次模式,它应该发现[[tmp.png]]并将图像加载到那里。这应该很容易自动化。这是我第一次为自己发现这个,所以可能有更好的方法来做到这一点。

在ESS清单上显然有一些关于此事的喋喋不休:

https://stat.ethz.ch/pipermail/ess-help/2009-August/005474.html

但我很惊讶它还没有在ESS核心......

答案 1 :(得分:3)

不,对不起,它不能。 Emacs缓冲区是文本。图形窗口是图形设备。

但你可以自己做。在绘制之前,甚至在会话开始之前,请说

pdf(file="/tmp/myplotfile.pdf")

现在情节会去那里。然后你可以在Emacs中打开pdf文件,最近的版本包括在Emacs中的pdf预览(至少在我的Linux boxen上,不确定我是否需要额外的模式)。那将接近你的要求。

答案 2 :(得分:0)

试试这个:

X11()   #  starts a X11 graphics device
plot(c(1:10),c(1:10))
savePlot(filename = "try_save_X11.png",type = c("png"))

答案 3 :(得分:0)

此解决方案非常引人注目,可能对您不起作用,因为它会影响ESS之外的工作流程。但是exwm是emacs中的X窗口管理器,它允许您将非emacs窗口用作emacs缓冲区。它将使您可以将R图用作emacs缓冲区,并可以使用通常的emacs窗口和缓冲区键绑定进行完全管理。

这是一个非常简单的示例,以显示如下内容:

enter image description here

答案 4 :(得分:0)

这不能完全回答OP的问题,因为它不在ESS范围内,但可能与某些问题有关,因为它仍然与使用R生成可以在Emacs内部查看的图形有关。

您可以使用Emacs iPython Notebook(ein)执行此操作。您必须先设置Jupyter,但此后非常简单,并且可以使用不同的内核(R,Python,Julia等)。下面是屏幕截图

Screenshot of R plot in ein