2013-06-21 54 views
5

我在虛擬機(紅帽企業Linux服務器版本6.4)上運行R-shiny(R版本3.0.1(2013-05-16))。一切正常,也就是說,服務器啓動和應用程序運行等......只要我不試圖繪製圖形無法顯示png

renderPlot 

然後我在主面板上看到一條消息[錯誤:無法啓動設備png]。我會發布我的整個代碼,但是我認爲這個問題與渲染圖的時候一樣,因爲當我使用 renderText 並吐出一些數據的時候,它工作得很好。

其實當我只需鍵入 PNG() 在RI得到這個錯誤 [ 錯誤.External2(C_X11,粘貼( 「PNG ::」,文件名,月= 「」),G $寬度, : 無法啓動設備PNG 此外:警告消息: 在PNG():無法打開連接到X​​11顯示「」 ]如果我向前通過ssh -X我的Mac當然 ,我可以輸入png()沒問題,繪圖數據等等...

- 當我輸入capabilties()時,還有一些注意事項我發現唯一的東西是假的是jpeg,tiff,X11,aqua和profmem(所以png和cairo都是真的)

- 我安裝了libpng,cairo和libX11,libX11-devel,libXt,libXt-devel在構建源代碼之前

我猜我的問題是我需要運行X服務器。另外DISPLAY變量爲空。

所以,我想當它歸結爲它我的問題是......假設我的邏輯是正確的。

1)我是否需要運行/啓動X服務器[目前它由於某種原因啓動後終止],還是我可以設置DISPLAY變量?

2)如果我可以把我的DISPLAY變量,我應該將其設置爲(本地主機:0.0沒有工作)

顯然,如果有什麼我失蹤這些問題可能是無關緊要的。

在此先感謝,抱歉抱怨,想徹底。

PJ

+0

的'DISPLAY'變量應指向一個工作的X服務器,否則有很少感設置它。 –

+1

可能會指出你在正確的方向:http://trestletechnology.net/2013/02/graphical-tools-rgl-on-a-headless-shiny-server/ –

回答

7

它是否幫助,如果你設置option(bitmapType = 'cairo')?我一直懷疑R如何使用.Call(C_cairoProps, 2L)grDevices:::.onLoad()中選擇位圖設備類型(這可能是一個錯誤,但我不能肯定地說)。

如果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中更改此選項。

+0

你好Yihui。你是否建議在'server.R'文件中設置'option(bitmapType ='cairo')'? –

+0

@StéphaneLaurent是的,這也是一種方式;我在上面提到了'〜/ .Rprofile',這意味着爲你的所有R會話全局設置這個選項 –

+0

我已經在'server.R'文件中嘗試過'options(bitmapType ='cairo')'但是這並沒有改變任何東西。 –

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