问题
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
回答1:
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
.
回答2:
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