R-devel has new versions of the X11(), png() and jpeg() devices on Unix-alikes. The intention is that these are used identically to the previous versions (which remain available) but will produce higher-quality output with more features. Pros: Antialiasing of text and lines (can be turned off) but no blurring of fills. Buffering of the X11 display and fast repainting from a backing image. (The intention is to emulate the timer-based buffering of the windows() device in due course, but not for 2.7.0.) Ability to use translucent colours, including backgrounds, and produce partially transparent PNG files. Scalable text, including to sizes like 4.5 pt. This allows more accurate sizing on non-standard screen sizes (e.g. my home machine has a 90dpi 1650x1024 display whereas standard X11 fonts are set up for 75 or 100 dpi). Full support for UTF-8, so on systems with suitable fonts you can plot in many languages on a single figure (and this will work even in non-UTF-8 locales). The output should be locale-independent (unlike the current devices where even English text is rendered slightly differently in Latin-1 and UTF-8 locales). A utility function savePlot() to make a PNG/JPEG/TIFF copy of the current plot. The new png() and jpeg() devices do not require an X server to be running. Cons: Needs more software installed - cairo, pango and support packages (which on all the systems we have looked at are pulled in by the packages checked for). You will see something like Additional capabilities: PNG, JPEG, iconv, MBCS, NLS, cairo ^^^^^ if configure finds the software we are looking for. Slower under some circumstances (although on the test systems much faster than packages Cairo and cairoDevice). This will be particularly true for X11() with a slow connection between the machine running R and the X server. The additional software might not work correctly. The new versions are not currently the default, but can be made so by setting X11.options(type="Cairo"), e.g. as a load hook for package grDevices. I am using setHook(packageEvent("grDevices", "onLoad"), function(...) { grDevices::ps.options(horizontal=FALSE) if(getRversion() >= '2.7.0') grDevices::X11.options(type="Cairo") }) Please try these out and let us know how you get on. As a check, try the TestChars() examples in ?points - on one Solaris 10 system a few of the symbol font characters were incorrect. It worked on an FC5 system with auk% pkg-config --modversion pango 1.12.4 auk% pkg-config --modversion cairo 1.0.4 so the versions required are not all recent. Although these devices would in principle work on Mac OS X, neither cairo nor pango is readily available. We are working on other versions for Mac OS (X11 based on cairo/freetype, png/jpeg based on Quartz). There are also new svg() and tiff() devices. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
(Apologies, I meant to 'Reply to all' the first time but forgot). I built r44608 of R-devel with (I think) cairo support. At least, that's what the configure script told me. In addition, 'capabilities("cairo")' is TRUE. Calling X11(type = "Cairo") gives me the error: Error in X11() : X11 module cannot be loaded In addition: Warning message: In X11() : unable to load shared library '/home/rpeng/install/R-devel/lib64/R/modules//R_X11.so': /home/rpeng/install/R-devel/lib64/R/modules//R_X11.so: undefined symbol: cairo_image_surface_get_data I figured I must be missing a library somewhere, but I'm not sure how to track down which one. Any thoughts here? I'm on a FC5 system with: cairo-devel-1.0.4-1 cairo-1.0.4-1 cairo-1.0.4-1 and pango-1.12.4-4 pango-devel-1.12.4-4 pango-1.12.4-4 Also, I have [rpeng at audrey R-source]$ pkg-config --modversion pango 1.12.4 [rpeng at audrey R-source]$ pkg-config --modversion cairo 1.0.4 -roger On Mon, Feb 25, 2008 at 11:56 AM, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:> R-devel has new versions of the X11(), png() and jpeg() devices on > Unix-alikes. The intention is that these are used identically to the > previous versions (which remain available) but will produce higher-quality > output with more features. > > Pros: > > Antialiasing of text and lines (can be turned off) but no blurring of > fills. > > Buffering of the X11 display and fast repainting from a backing image. > (The intention is to emulate the timer-based buffering of the windows() > device in due course, but not for 2.7.0.) > > Ability to use translucent colours, including backgrounds, and produce > partially transparent PNG files. > > Scalable text, including to sizes like 4.5 pt. This allows more accurate > sizing on non-standard screen sizes (e.g. my home machine has a 90dpi > 1650x1024 display whereas standard X11 fonts are set up for 75 or 100 > dpi). > > Full support for UTF-8, so on systems with suitable fonts you can plot in > many languages on a single figure (and this will work even in non-UTF-8 > locales). The output should be locale-independent (unlike the current > devices where even English text is rendered slightly differently in > Latin-1 and UTF-8 locales). > > A utility function savePlot() to make a PNG/JPEG/TIFF copy of the current > plot. > > The new png() and jpeg() devices do not require an X server to be running. > > Cons: > > Needs more software installed - cairo, pango and support packages (which > on all the systems we have looked at are pulled in by the packages checked > for). You will see something like > > Additional capabilities: PNG, JPEG, iconv, MBCS, NLS, cairo > ^^^^^ > if configure finds the software we are looking for. > > Slower under some circumstances (although on the test systems much faster > than packages Cairo and cairoDevice). This will be particularly true for > X11() with a slow connection between the machine running R and the X > server. > > The additional software might not work correctly. > > > The new versions are not currently the default, but can be made so by > setting X11.options(type="Cairo"), e.g. as a load hook for package > grDevices. I am using > > setHook(packageEvent("grDevices", "onLoad"), > function(...) { > grDevices::ps.options(horizontal=FALSE) > if(getRversion() >= '2.7.0') grDevices::X11.options(type="Cairo") > }) > > > Please try these out and let us know how you get on. As a check, try the > TestChars() examples in ?points - on one Solaris 10 system a few of the > symbol font characters were incorrect. It worked on an FC5 system with > > auk% pkg-config --modversion pango > 1.12.4 > auk% pkg-config --modversion cairo > 1.0.4 > > so the versions required are not all recent. > > Although these devices would in principle work on Mac OS X, neither cairo > nor pango is readily available. We are working on other versions for > Mac OS (X11 based on cairo/freetype, png/jpeg based on Quartz). > > There are also new svg() and tiff() devices. > > -- > Brian D. Ripley, ripley at stats.ox.ac.uk > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Roger D. Peng | http://www.biostat.jhsph.edu/~rpeng/
On Mon, Feb 25, 2008 at 10:56 AM, Prof Brian Ripley <ripley@stats.ox.ac.uk> wrote:> R-devel has new versions of the X11(), png() and jpeg() devices on > Unix-alikes. The intention is that these are used identically to the > previous versions (which remain available) but will produce higher-quality > output with more features. > > Pros: > > Antialiasing of text and lines (can be turned off) but no blurring of > fills. > > Buffering of the X11 display and fast repainting from a backing image. > (The intention is to emulate the timer-based buffering of the windows() > device in due course, but not for 2.7.0.) > > Ability to use translucent colours, including backgrounds, and produce > partially transparent PNG files. > > Scalable text, including to sizes like 4.5 pt. This allows more accurate > sizing on non-standard screen sizes (e.g. my home machine has a 90dpi > 1650x1024 display whereas standard X11 fonts are set up for 75 or 100 > dpi). > > Full support for UTF-8, so on systems with suitable fonts you can plot in > many languages on a single figure (and this will work even in non-UTF-8 > locales). The output should be locale-independent (unlike the current > devices where even English text is rendered slightly differently in > Latin-1 and UTF-8 locales). > > A utility function savePlot() to make a PNG/JPEG/TIFF copy of the current > plot. > > The new png() and jpeg() devices do not require an X server to be running. > > Cons: > > Needs more software installed - cairo, pango and support packagesWould it be at all feasible to make the cairo backend available on all platforms and have it provide a public API through which an arbitrary cairo context could be passed as the drawing target? That would allow e.g. cairoDevice to be a much simpler module that draws the cairo context to a GTK+ window and manages the window and events. In that case, it would need to be renamed to 'gtkDevice2' or something. Michael (which> on all the systems we have looked at are pulled in by the packages checked > for). You will see something like > > Additional capabilities: PNG, JPEG, iconv, MBCS, NLS, cairo > ^^^^^ > if configure finds the software we are looking for. > > Slower under some circumstances (although on the test systems much faster > than packages Cairo and cairoDevice). This will be particularly true for > X11() with a slow connection between the machine running R and the X > server. > > The additional software might not work correctly. > > > The new versions are not currently the default, but can be made so by > setting X11.options(type="Cairo"), e.g. as a load hook for package > grDevices. I am using > > setHook(packageEvent("grDevices", "onLoad"), > function(...) { > grDevices::ps.options(horizontal=FALSE) > if(getRversion() >= '2.7.0') grDevices::X11.options(type="Cairo") > }) > > > Please try these out and let us know how you get on. As a check, try the > TestChars() examples in ?points - on one Solaris 10 system a few of the > symbol font characters were incorrect. It worked on an FC5 system with > > auk% pkg-config --modversion pango > 1.12.4 > auk% pkg-config --modversion cairo > 1.0.4 > > so the versions required are not all recent. > > Although these devices would in principle work on Mac OS X, neither cairo > nor pango is readily available. We are working on other versions for > Mac OS (X11 based on cairo/freetype, png/jpeg based on Quartz). > > There are also new svg() and tiff() devices. > > -- > Brian D. Ripley, ripley@stats.ox.ac.uk > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/<http://www.stats.ox.ac.uk/%7Eripley/> > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >[[alternative HTML version deleted]]
The now default Cairo results in much prettier graphs, but dense graphs such as plot(rnorm(1e4)) take considerably longer to plot than using X11(type="Xlib"). This has already been mentioned, but I was wondering if we users could expect Cairo speed increases in the near future?>Slower under some circumstances (although on the test systems much fasterthan packages Cairo and cairoDevice). This will be particularly true for X11() with a slow connection between the machine running R and the X server. Using R 2.7.0 on Ubuntu 8.04 (Pentium 4 1.70 GHz on one machine and Centrino Duo on another) -- View this message in context: http://www.nabble.com/New-version-of-X11%2C-png-and-jpeg-tp15672580p16987759.html Sent from the R devel mailing list archive at Nabble.com.
On Wed, 30 Apr 2008, Maarten Blaauw wrote:> > The now default Cairo results in much prettier graphs, but dense graphs such > as plot(rnorm(1e4)) take considerably longer to plot than using > X11(type="Xlib"). This has already been mentioned, but I was wondering if we > users could expect Cairo speed increases in the near future?Some. As Michael Lawrence has already said, cairo speed is an issue and unlilkely to improve any time soon. And anti-aliasing takes some CPU time. What we can do is to reduce the information passing between R and the X server. I already have timer-based double buffering running (the same scheme as on Windows), and that helps a lot in the circumstances mentioned (lots of small symbols). There are some event-loop-interface issues to sort out before it get committed to R-devel. type="nbcairo" is likely to be faster in your example, but not as fast as the buffered device planned for 2.8.0. The X11 server does make quite a difference -- I am running fairly decent Nvidia cards with the Nvidia X server module, and that has much higher performance than the vanilla one that Fedora ships. In the end the reason we offer a choice of types is that there are different needs on the quality vs speed axis.>> Slower under some circumstances (although on the test systems much faster > than packages Cairo and cairoDevice). This will be particularly true for > X11() with a slow connection between the machine running R and the X server. > > Using R 2.7.0 on Ubuntu 8.04 (Pentium 4 1.70 GHz on one machine and Centrino > Duo on another) > -- > View this message in context: http://www.nabble.com/New-version-of-X11%2C-png-and-jpeg-tp15672580p16987759.html > Sent from the R devel mailing list archive at Nabble.com. > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595