【问题标题】:Can't display png无法显示.png
【发布时间】:2013-06-19 01:56:53
【问题描述】:

我在虚拟机(Red Hat Enterprise Linux Server 版本 6.4)上运行 R-shiny(R 版本 3.0.1 (2013-05-16))。一切正常,即服务器启动,应用程序运行等......只要我不尝试绘制图表

renderPlot

然后我在主面板上看到一条消息 [错误:无法启动设备 png]。我会发布我的整个代码,但我认为这个问题与我使用时渲染图有关 渲染文本 并吐出一些数据,它工作得很好。

其实当我只是输入 () 在 R 我得到这个错误 [ .External2(C_X11, paste("png::", filename, sep = ""), g$width, 中的错误: 无法启动设备 PNG 另外:警告信息: 在 png() 中:无法打开与 X11 的连接显示 '' ] 当然,如果我通过 ssh -X 转发到我的 mac,我可以输入 png() 没问题并绘制数据等...

-还有一些需要注意的事情,当我输入 capabilties() 时,我发现唯一错误的是 jpeg、tiff、X11、aqua 和 profmem(所以 png 和 cairo 是正确的)

-在从源代码构建 R 之前,我已经安装了 libpng、cairo 和 libX11、libX11-devel、libXt、libXt-devel

我猜我的问题是我需要运行 X 服务器。此外,DISPLAY 变量为空。

所以,我想归根结底我的问题是……假设我的逻辑是正确的。

1) 我是否需要运行/启动 X 服务器 [目前由于某种原因它在启动后终止] 还是我可以只设置 DISPLAY 变量?

2) 如果我可以设置我的 DISPLAY 变量,我应该将它设置为什么(localhost:0.0 不起作用)

显然,如果我遗漏了什么,这些问题可能无关紧要。

在此先感谢,很抱歉漫无边际,希望彻底。

PJ

【问题讨论】:

  • DISPLAY 变量应该指向一个正常工作的 X 服务器,否则设置它没有什么意义。
  • 可能会为您指明正确的方向:trestletechnology.net/2013/02/…

标签: r x11 xserver shiny


【解决方案1】:

设置option(bitmapType = 'cairo')有帮助吗?我一直怀疑 R 如何在 grDevices:::.onLoad() 中使用 .Call(C_cairoProps, 2L) 选择位图设备类型(这可能是一个错误,但我不能肯定地说)。

如果cairo 的测试失败,选项bitmapType 会退回到Xlib,从而给你一个关于X11 的神秘错误消息。注意png() 中的type 参数:

> 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 中。

【讨论】:

  • 一辉你好。您是否建议在server.R 文件中设置option(bitmapType='cairo')
  • @StéphaneLaurent 是的,这也是一种方法;我在上面提到了~/.Rprofile,这意味着为您的所有 R 会话全局设置此选项
  • 我在server.R 文件中尝试过options(bitmapType='cairo'),但这并没有改变任何东西。
  • 一虎,我的同事(Linux服务器管理员)已经用cairo重新编译了R-3.0.1,现在用options(bitmapType='cairo')一切正常!谢谢!
  • 我必须将options(bitmapType='cairo') 添加到我的~/.Rprofile
【解决方案2】:

我可以通过安装一些额外的开发包然后从源代码卸载/重新安装 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多