2013-06-21 8 views
5

Sto eseguendo R-shiny (R versione 3.0.1 (2013-05-16)) su una VM (Red Hat Enterprise Linux Server versione 6.4). Tutto funziona, vale a dire, il server si avvia, e l'applicazione funziona ecc ... finché io non cerco di tracciare un graficoImpossibile visualizzare png

renderPlot 

ho poi vedere sul pannello principale di un messaggio [di errore: impossibile avviare dispositivo png]. Vorrei pubblicare il mio intero codice ma questo problema penso abbia a che fare con il rendering di grafici come quando uso renderText e sputare alcuni dati funziona perfettamente.

In realtà quando ho Basta digitare png() in RI ottenere questo errore [ Error in .External2 (C_X11, pasta ("png ::", il nome del file, settembre = ""), g $ larghezza, : in grado di avviare dispositivo PNG Inoltre: messaggio di avviso: in png(): in grado di aprire il collegamento alla visualizzazione X11 '' ] , naturalmente, se io ora via ssh -X al mio mac, posso digitare png() nessun problema e dati di trama, ecc ...

-Che poche altre cose da notare, quando digito in capabilties() trovo le uniche cose che sono false sono jpeg, tiff, X11, aqua e profmem (quindi png e cairo sono True)

-Io ho installato libpng, cairo e libX11, libX11-devel, libXt, libXt-devel prima di costruire R dalla fonte

Sto indovinando il mio problema è che ho bisogno di avere il server X in esecuzione. Inoltre la variabile DISPLAY è null.

Quindi, credo che quando si riduce ad esso la mia domanda è ... assumendo la mia logica è corretta.

1) Devo eseguire/avviare X server [attualmente termina dopo l'avvio per qualche motivo] o posso semplicemente impostare la variabile DISPLAY?

2) Se riesco a impostare la mia variabile DISPLAY cosa devo impostarlo (localhost: 0.0 non ha funzionato)

Ovviamente se c'è qualcosa che mi manca a queste domande può essere irrilevante.

Grazie in anticipo e mi dispiace per le escursioni, voleva essere approfondito.

PJ

+0

La variabile 'display' dovrebbe puntare ad un X server funzionante, altrimenti non c'è molto poco senso nella creazione di esso. –

+1

Potrebbe indirizzarti nella giusta direzione: http://trestletechnology.net/2013/02/graphical-tools-rgl-on-a-headless-shiny-server/ –

risposta

7

Aiuta se si imposta option(bitmapType = 'cairo')? Sono stato scettico su come R scelga il tipo di dispositivo bitmap usando .Call(C_cairoProps, 2L) in grDevices:::.onLoad() (questo potrebbe essere un bug, ma non posso dirlo con certezza).

L'opzione bitmapType ricade Xlib se il test di cairo fallisce, dando così un messaggio di errore criptico su X11. Si noti l'argomento type in 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) 

Il valore di default di questo argomento è getOption('bitmapType'), e nel tuo caso è Xlib dovuta alla prova in grDevices:::.onLoad(). Se sei sicuro al 100% che cairo funzioni, puoi modificare questa opzione, ad esempio, nel tuo ~/.Rprofile.

+0

Ciao Yihui. Suggerite di impostare l'opzione '(bitmapType = 'cairo')' nel file 'server.R'? –

+0

@ StéphaneLaurent sì, anche questo è un modo per andare; Ho menzionato '~/.Rprofile' sopra, che significa impostare questa opzione globalmente per tutte le tue sessioni R –

+0

Ho provato' options (bitmapType = 'cairo') 'nel file' server.R' ma questo non cambia nulla . –

1

Sono stato in grado di risolvere questo problema installando alcuni pacchetti di sviluppo aggiuntivi e quindi disinstallando/reinstallando R dall'origine. Tutte le altre opzioni raccomandate non hanno funzionato per me fino a questo momento.

sudo yum install pango-devel pango libpng-devel 

Vai alla directory in cui è stato installato il file sorgente R:

make uninstall 
./configure --with-readline=no (or ./configure might work for you) 
make 
make install