繁体   English   中英

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

[英]R unable to start device PNG - capabilities() has TRUE for PNG?

我正在更广泛的管道中使用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

万一有人在谷歌上找到这个,解决方案是

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

您可以在R命令中运行它

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

尝试使用前缀来调用Rscript

  xvfb-run

甚至

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM