我正在VM(Red Hat Enterprise Linux Server 6.4版)上运行R-shiny(R版本3.0.1(2013-05-16))。一切正常,即服务器启动,应用程序运行等...只要我不尝试绘制图形
renderPlot
然后我在主面板上看到一条消息[错误:无法启动设备png]。我会发布我的整个代码,但我认为这个问题与我使用时的渲染图有关 renderText 并吐出一些工作得很好的数据。
其实当我输入时 PNG() 在R我得到这个错误 [ .External2中的错误(C_X11,粘贴(“png ::”,文件名,sep =“”),g $ width ,: 无法启动设备PNG 另外:警告信息: 在png()中:无法打开与X11显示的连接'' ] 当然,如果我通过ssh -X转发到我的mac,我可以输入 png()没问题并绘制数据等......
- 还有一些事情需要注意,当我输入功能时()我发现唯一不对的是jpeg,tiff,X11,aqua和profmem(所以png和cairo都是True)
- 我在从源代码构建R之前安装了libpng,cairo和libX11,libX11-devel,libXt,libXt-devel
我猜我的问题是我需要运行X服务器。此外,DISPLAY变量为null。
所以,我猜它归结为它我的问题是......假设我的逻辑是正确的。
1)我是否需要运行/启动X服务器[目前因某种原因启动后终止]或者我可以设置DISPLAY变量吗?
2)如果我可以设置我的DISPLAY变量应该将它设置为什么(localhost:0.0没有工作)
显然,如果有什么我想念的话,这些问题可能无关紧要。
提前致谢并且对于漫无边际的对不起,想要彻底。
PJ
答案 0 :(得分:9)
如果设置option(bitmapType = 'cairo')
会有帮助吗?我一直怀疑R如何使用.Call(C_cairoProps, 2L)
中的grDevices:::.onLoad()
选择位图设备类型(这可能是一个错误,但我不能肯定地说出来。)
如果bitmapType
的测试失败,则Xlib
选项会回退到cairo
,因此会向您提供有关X11
的含义错误消息。请注意type
中的png()
参数:
> args(png)
function (filename = "Rplot%03d.png", width = 480, height = 480,
units = "px", pointsize = 12, bg = "white", res = NA, ...,
type = c("cairo", "cairo-png", "Xlib", "quartz"), antialias)
此参数的默认值为getOption('bitmapType')
,在您的情况下,由于Xlib
中的测试,它为grDevices:::.onLoad()
。如果您100%确定cairo
有效,则可以在~/.Rprofile
中更改此选项。
答案 1 :(得分:1)
我能够通过安装一些额外的开发包然后从源代码卸载/重新安装R来解决这个问题。在此之前,所有其他推荐的选项对我都不起作用。
sudo yum install pango-devel pango libpng-devel
转到安装了源R文件的目录:
make uninstall
./configure --with-readline=no (or ./configure might work for you)
make
make install