R无法启动设备PNG - 功能()对于PNG是否为TRUE?

时间:2014-07-28 16:39:10

标签: r

我正在更广泛的管道中使用R脚本,似乎不适用于某些版本的Rscript但与其他版本一起使用。由于无法连接到X11,调用失败,这是可以理解的,因为这是在服务器上。但我在本地安装Rscript能够处理这个问题吗?

我的本​​地安装版本是3.0.1,而报告此问题的其他用户的版本是3.0.2。

这是一个简单的测试用例 - 首先是.R文件:

#!/usr/bin/env Rscript

capabilities()

png("abc")

dev.off()

使用我的本地环境运行:

-bash-4.1$ ./test.R
    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    FALSE     TRUE     TRUE    FALSE     TRUE 
null device 
          1 

运行其他人试图使用的Rscript安装:

    jpeg      png     tiff    tcltk      X11     aqua http/ftp  sockets 
    TRUE     TRUE    FALSE     TRUE    FALSE    FALSE     TRUE     TRUE 
  libxml     fifo   cledit    iconv      NLS  profmem    cairo 
    TRUE     TRUE    FALSE     TRUE     TRUE    FALSE     TRUE 
Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width,  : 
  unable to start device PNG
Calls: png
In addition: Warning message:
In png("abc") : unable to open connection to X11 display ''
Execution halted

4 个答案:

答案 0 :(得分:17)

如果有人在谷歌上找到这个,解决方案就是

png("abc", type="cairo")

答案 1 :(得分:5)

您可以在R命令

中运行它
options(bitmapType='cairo')
png("xzvf.png")
plot(z~x)
dev.off()

答案 2 :(得分:4)

尝试使用

Rscript添加前缀
  xvfb-run

甚至

 xvfb-run --server-args="-screen 0 1024x768x24"

如png,如果内存服务,则使用x11字体信息。由xvfb-run启动的虚拟x11服务器提供它,因此它有助于无头设置,cron作业等pp

答案 3 :(得分:0)

我在Ubuntu 14.04的全新安装上遇到了同样的问题。

简单地安装xvfb-run解决了这个问题,即使在启动R之前没有运行它。