最近一段时间在捣鼓如何在连接Linux系统的SSH securyshell中R编程的问题,今天总算是有了些眉目,就写写这过程中容易出现的问题和解决办法。在Linux环境下安装R软件包和R中package的安装已经有很多软件介绍了,这里就不再做介绍。下面主要介绍如何在SSH中打开X11绘图设备的问题。
刚开始安装好R后,如果想绘图(比如利用plot()函数)就会没有任何结果出来。输入命令dev.list(),查看当前所使用的绘图设备,结果显示Null,没有任何的绘图设备在使用。然后查看当前可用的绘图设备,输入命令capabilities(),结果就会像如下显示:
jpeg png tiff tcltk X11 aqua http/ftp sockets
TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE
libxml fifo cledit iconv NLS profmem cairo
TRUE TRUE TRUE TRUE TRUE FALSE TRUE
其中第一三行分别代表的不同绘图设备,二四行代表了不同设备在当前环境下的可用性。因为在windows下使用RGui中绘图,一般都是直接调用X11这个绘图设备(个人认为X11设备属于交互性的画图工具,可用及时展示R命令的要求),从上面结果中可以看出,X11这个设备是不可用的,而其它的画图设备是可以用的,比如jpeg(如果你想使用某个画图设备输入命令:“设备名()”就行了,前提是可用)。
对于不可用的设备,如果输入,比如X11()命令,则会报错:
Error inX11(d$display, d$width, d$height, d$pointsize, d$gamma,d$colortype, :
unable tostart device X11cairo
In addition:Warning message:
In x11() :unable to open connection to X11 display ''
如何来安装X11绘图设备呢,在哪里安装呢?在网上我看了许多帖子,没发现有解决办法。最后去请教了一个北大的师兄,终于把这个问题解决了。就是要本地(我本地是XP)安装一个叫Xmanager的软件。后来看了一下这个软件,发现其主要功能就是接受从服务器上传回的绘图指令,然后再在本地安装这个指令画图。它实际上监听了一个端口,这个端口(11号端口?)就是跟绘图相关的。所以现在本地运行Xmanager后,再在SSH上R中绘图,就可以啦!命令capabilities(),我们也可以看到X11变成TRUE。