Florian Hahne
2005-Dec-08 19:22 UTC
[Rd] grid graphics gpar(fill) argument and jpeg device
Hi everybody, I just notice a strange behaviour of gpar's fill argument when using non-postscript devices: The default of the argument is transparent (according to get.gpar("fill")). So as expected, the following code draws a nice red rectangle in the middle of my X11 or postscript device. pushViewport(viewport(width=0.5, height=0.5)) grid.rect(gp=gpar(fill="red")) grid.rect() However, when plotting on a jpeg device (or any other pixel device), the output of the above code is an empty (=white) rectangle. Obviously the second grid.rect() which should produce a transparent rectangle turns out to be filled white on the jpeg device. When I set the fill argument to NA, the second rectangle is transparent as it is supposed to be. grid.rect(gp=gpar(fill="red")) grid.rect(gp=gpar(fill=NA)) Is this a bug or a feature??? I'm using R version 2.2.0 on a SUSE 10.0 linux machine. Cheers, Florian
Hi Florian Hahne wrote:> Hi everybody, > I just notice a strange behaviour of gpar's fill argument when using > non-postscript devices: > The default of the argument is transparent (according to get.gpar("fill")). > So as expected, the following code draws a nice red rectangle in the > middle of my X11 or postscript device. > > pushViewport(viewport(width=0.5, height=0.5)) > grid.rect(gp=gpar(fill="red")) > grid.rect() > > However, when plotting on a jpeg device (or any other pixel device), > the output of the above code is an empty (=white) rectangle. Obviously > the second grid.rect() which should produce a transparent rectangle > turns out to be filled white on the jpeg device. When I set the fill > argument to NA, the second rectangle is transparent as it is supposed to be. > > grid.rect(gp=gpar(fill="red")) > grid.rect(gp=gpar(fill=NA)) > > Is this a bug or a feature??? > I'm using R version 2.2.0 on a SUSE 10.0 linux machine.Feature. The top-level grid viewport (representing the entire device) takes starting values for things like text size, background colour, etc from the device; from R version 2.2, this includes using 'fg' and 'bg' from the device for gpar(col) and gpar(fill). This is so that if you start a device using something like postscript(bg="red"), the gpar(fill) for the top-level grid viewport will be "red". The default 'bg' for PostScript is "transparent", but for jpeg the default 'bg' is "white". Paul -- Dr Paul Murrell Department of Statistics The University of Auckland Private Bag 92019 Auckland New Zealand 64 9 3737599 x85392 paul at stat.auckland.ac.nz http://www.stat.auckland.ac.nz/~paul/