tags:

views:

479

answers:

2

I am using ggplot2 library and am working with the qplot command I know I can save my output as an anti-aliased image file by using the following command after my qplot

ggsave(file="filename.png")

But how about my LCD display? is there any way to see a plot on the monitor as anti-aliased grpah?

+1  A: 

Ok, I just checked. I was wrong in my earlier comment. From help(x11) where a lot of detail is available -- the new Cairo-based devices do have anti-aliasing available:

x11 package:grDevices R Documentation

X Window System Graphics

Description:

 ‘X11’ starts a graphics device driver for the X Window System
 (version 11).  This can only be done on machines/accounts that
 have access to an X server.

 ‘x11’ is recognized as a synonym for ‘X11’.

Usage:

 X11(display = "", width, height, pointsize, gamma, bg, canvas,
     fonts, xpos, ypos, title, type, antialias)

 X11.options(..., reset = FALSE)

Arguments:

[...]

 fonts: X11 font description strings into which weight, slant and
      size will be substituted.  There are two, the first for fonts
      1 to 4 and the second for font 5, the symbol font.  See
      section ‘Fonts’.

[...]

 antialias: for cairo types, the typeof anti-aliasing (if any) to be
      used.  One of ‘c("default", "none", "gray", "subpixel")’.

[...]

Details:

 The defaults for all of the arguments of ‘X11’ are set by
 ‘X11.options’: the ‘Arguments’ section gives the ‘factory-fresh’
 defaults.

 The initial size and position are only hints, and may not be acted
 on by the window manager.  Also, some systems (especially laptops)
 are set up to appear to have a screen of a different size to the
 physical screen.

 Option ‘type’ selects between two separate devices: R can be built
 with support for neither, ‘type = "Xlib"’ or both.  Where both are
 available, types ‘"cairo"’ and ‘"nbcairo"’ offer

    * antialiasing of text and lines.

    * translucent colours.

    * scalable text, including to sizes like 4.5 pt.

    * 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.

 ‘type = "nbcairo"’ is the same device as ‘type="cairo"’ without
 buffering: which is faster will depend on the X11 connection.
 Both will be slower than ‘type = "Xlib"’, especially on a slow X11
 connection as all the rendering is done on the machine running R
 rather than in the X server.

 All devices which use an X11 server (including the ‘type = "Xlib"’
 versions of bitmap devices such as ‘png’) share internal
 structures, which means that they must use the same ‘display’ and
 visual.  If you want to change display, first close all such
 devices.

[...and more...]

Dirk Eddelbuettel
Alright, now here is my question: I get an error when I type X11(type="cairo") I get "Error in X11(type = "cairo") : unused argument(s) (type = "cairo")" I have cairo loaded but do not know how I can change my X11. I am using R 2.9.2 on a Win XP. Do I need to trash my whole system and get a Mac to get anti-aliasing on my display?
Mark
I was sort-of worried about that part. I know Cairo came from Gnome / Gtk and is right at home on Linux, but I thought this was cross-platform. What do you get when you call `capabilities()` in your R session on XP? I have a 'cairo' TRUE there right at the end.
Dirk Eddelbuettel
I get FALSE, but thanks anyways, very interesting journey. I will try it on an Ubuntu later. Thanks again for looking into it.
Mark
My pleasure. Cairo is a good thing with anti-aliasing, alpha-blending and all that -- but it also has a cost of slower rendering.
Dirk Eddelbuettel
Ahh, and I see that Felix had the goods. So on Windows you need one of the Cairo packages which require you to get Gtk+ for the underlying technologies. Makes sense.
Dirk Eddelbuettel
+10  A: 

On Windows, there is no built-in anti-aliasing. I don't know whether it is planned for future releases or not. You can get a Cairo-based graphics device from either the cairoDevice or Cairo packages; however, you will need to install GTK+ first:

Download and install Gtk+ 2.12.9 Runtime Environment Revision 2 from http://gladewin32.sourceforge.net/

Another option would be to use Java-based graphics through JGR (http://jgr.markushelbig.org/). Also a Qt-based device is under development, I think.

Felix Andrews
Fantastic, thanks you so much
Mark