I'm running R-shiny (R version 3.0.1 (2013-05-16)) on a VM (Red Hat Enterprise Linux Server release 6.4). Everything works, i.e., server starts up, and application runs etc... as long as I don't try to plot a graph
renderPlot
I then see on the main panel a message [error : unable to start device png]. I would post my whole code but this problem I think has to do with rendering plots as when I use renderText and spit out some data it works just fine.
Actually when I just type in png() in R I get this error [ Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width, : unable to start device PNG In addition: Warning message: In png() : unable to open connection to X11 display '' ] of course if I forward via ssh -X to my mac, I can type in png() no problem and plot data etc...
-A few more things to note, when I type in capabilties() I find the only things that are false are jpeg, tiff, X11, aqua, and profmem (so png and cairo are True)
-I've installed libpng, cairo, and libX11, libX11-devel, libXt, libXt-devel before building R from source
I'm guessing my problem is that I need to have X server running. In addition the DISPLAY variable is null.
So, I guess when it boils down to it my question is ... assuming my logic is correct.
1) Do I need to run / start X server [ currently it terminates after starting for some reason] or can I just set the DISPLAY variable?
2) If I can just set my DISPLAY variable what should I set it to (localhost:0.0 hasn't worked)
Obviously if there is something I'm missing these questions may be irrelevant.
Thanks in advance and sorry for rambling, wanted to be thorough.
PJ
Does it help if you set option(bitmapType = 'cairo')
? I have been skeptical about how R chooses the bitmap device type using .Call(C_cairoProps, 2L)
in grDevices:::.onLoad()
(this might be a bug, but I cannot say it for sure).
The option bitmapType
falls back to Xlib
if the test of cairo
fails, thus giving you a cryptic error message about X11
. Note the type
argument 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)
The default value of this argument is getOption('bitmapType')
, and in your case it is Xlib
due to the test in grDevices:::.onLoad()
. If you are 100% sure that cairo
works, you can change this option, say, in your ~/.Rprofile
.
I was able to resolve this by installing a few additional development packages and then uninstalling/reinstalling R from source. All the other recommended options did not work for me until this.
sudo yum install pango-devel pango libpng-devel
Go to directory where source R file was installed:
make uninstall
./configure --with-readline=no (or ./configure might work for you)
make
make install
来源:https://stackoverflow.com/questions/17243648/cant-display-png