# Compiling R with PNG support

I just compiled sage 4.6 from source on an Ubuntu 10.04 machine. I have the xorg-dev packages installed. However, I still cannot get r to save the plot of a histogram. Specifically, I am getting:

sage: r.png('/tmp/histogram.png')
RuntimeError: R was not compiled with PNG support


What does work is:

sage: r.X11()
sage: r.hist("rnorm(100)")


But I can't save the resulting graphic. (Of course, I can print-screen and get it that way, but I was hoping there would be a better way.) Can I compile R with PNG support somehow? Or is there another workaround which will give me what I want (namely, saving a picture of a histogram)?

Thanks.

edit retag close merge delete

Sort by » oldest newest most voted

I had a very similar looking problem on Ubuntu 10.04.1 server but it turned out to be the following:

I was running my Sage notebook server through ssh session in a console. This way X11 are not accessible to R and R reports no png/jpg/X11 support with capabilities().

I tried to run Sage through virtual framebuffer (xvfb-run), but it didn't work either (edit: now it works, with sage 4.6.2, go on and try it). The solution i've found was to run Sage under X11 through VNC.

more

I solved this on Ubuntu by installing the libpango1.0-dev and libcairo-dev packages. I had also earlier installed the xorg-dev package, but I don't know if it is actually needed here.

more

(This should maybe be a comment, but I'm posting as an answer for better formatting.) I just discovered the following:

sage: r.eval('capabilities("png")')
'  png \nFALSE '
sage: r.eval('capabilities("X11")')
' X11 \nTRUE '


So apparently, I have X11 support, but not PNG support. Does that suggest anything that I might be able to do?

more

This was the key. I did not have libpng installed. I installed it, re-compiled r with sage -f, and everything works. Thanks for your help, everyone!

( 2010-11-09 04:00:33 -0500 )edit

( 2010-11-09 04:05:17 -0500 )edit

could you be more specific? I apt-get installed xorg-dev and libpng12-dev, then "sage -f"'ed the package r-2...spkg, but then I had no png and no X11 capabilities. (running sage from a ssh console here: were you inside an X11 session?)

( 2010-12-24 05:09:00 -0500 )edit

This isn't an answer per se (you and I've discussed this before!), but at least I thought I'd put the following as the relevant Trac ticket: #8868.

I am puzzled as to why your Ubuntu installation isn't compiling with png support, though. R install guide says

libX11, libX11-devel, libXt and libXt-devel.

is needed, but you are right that xorg-dev should give you this. In our spkg-install it says

if [ -f /usr/include/X11/Xwindows.h ]; then
XSUPPORT=yes


so perhaps that isn't detecting your stuff. Thanks to David Kirkby, we also have

else
if [ "xuname" = xSunOS ] && [ -f /usr/X11/lib/libXv.so ] ; then
XSUPPORT=yes


but that only would work on Solaris. We really just need to ask on r-devel about this; r-help has been of no help, but I've been reluctant to join r-devel since I know very little about R internals. But we just need to figure out what R precisely needs to allow png, and then have it compile every time those things are there.

more

I don't think we've discussed this before (maybe that was Jason Grout?). The file /usr/include/X11/Xwindows.h is present on my system; I'll try at some point to take a look at the spkg-install in more detail and see if I can't figure out what is failing. Thanks for pointing out the Trac ticket!

( 2010-11-09 02:01:42 -0500 )edit

I thought you were 'ancienthart', so I thought we'd discussed this before. But if you have this file, it should definitely compile with png support. Weird. Unfortunately, I have no idea how to get the graphic that displays out, other than figuring out where it is (there are canonical temp files for such things, but I don't know exactly where they are).

( 2010-11-09 02:17:10 -0500 )edit

looking at the variable SAGE_TMP will, I think, give you an idea of where the displayed images are being stored -- for me (Mac), all the displayed images are in that directory.

It's mentioned, for example, in the Developer's Guide section about saving output files in automated tests.

more

Thanks, I'll try this.

( 2010-11-09 02:57:14 -0500 )edit

I just made a new r spkg at http://trac.sagemath.org/sage_trac/ti... which should help with graphics. Please test if you can and leave your feedback on the trac page.

more

Yeah, I saw that. Does one need the libpango/libcairo, to your knowledge?

( 2011-11-19 13:54:23 -0500 )edit