[R] A question on grid - grid.points not spaced properly

Paul Murrell p.murrell at auckland.ac.nz
Tue Dec 5 23:41:41 CET 2006


Hi


Saptarshi Guha wrote:
> Hi,
> 	Thank you for the detailed explanation.
>> If it's any consolation, this is true of the predefined plotting  
>> symbols
> 
> True. Its good to be aware of the structure of R graphics. Have been  
> planning to pick up the Grid book.
> 
>> p.s.  An exercise for the reader:  why do all of these plusses look  
>> the
>> same on screen?
>>
>> plot(1:10, 1:10, pch="+")
> 
> Is this because we are getting the system/device font renderer(e.g  
> the postscript renderer, OS X font renderer)
> to draw the character "+" so the widths/height will be exactly  
> measure, but R is drawing itself when doing pch=3 ?


Yep.  (Slightly more accurately, it's the difference between getting the
system to draw a couple of lines and getting the system to draw a
character from a font.)  Which suggests that if you want to design a new
plotting symbol that looks good everywhere, all you have to do is design
a new font! :)

Paul


> Thanks
> Saptarshi
> 
> Saptarshi Guha | sapsi at pobox.com | http://www.stat.purdue.edu/~sguha
> 
> 
> On Dec 5, 2006, at 3:58 PM, Paul Murrell wrote:
> 
>> Hi
>>
>>
>> Saptarshi Guha wrote:
>>> Hi,
>>>     Thank you for the explanation. I have one further question -  
>>> should
>>> i wish to plot to the screen, which units (apart from bigpts) for  
>>> exact
>>> plotting.
>>> Essentially i wish to create my own plotting character - hence the
>>> pch="." and the surrounding dots - so it would be nice if i could  
>>> place
>>> the surrounding dots exactly.
>>
>> R graphics is a vector system rather than a raster system, which means
>> that all locations and dimensions are effectively on an infinite
>> resolution device.  There are no "pixels" to refer to.  So you are
>> already placing the dots exactly.
>>
>> When graphics are rendered by a specific device, there will be  
>> rounding
>> if the device is raster (e.g., screen).  So not all devices can render
>> your dots exactly.
>>
>> If you know that your plotting character will only be rendered on a
>> raster device, "native" coordinates in the top-level grid viewport  
>> refer
>> (approximately) to pixels, e.g.,
>>
>>> grid.newpage()
>>> grid.rect(x=0, y=0, width=10, height=10, default.units="native",
>>             just=c("left", "bottom"))
>>> grid.rect(x=10, y=10, width=10, height=10, default.units="native",
>>             just=c("left", "bottom"))
>>> grid.rect(x=20, y=20, width=10, height=10, default.units="native",
>>             just=c("left", "bottom"))
>>
>> but you can still get rounding problems and these coordinates are not
>> available in any other grid viewport.
>>
>> In other words, you cannot predict exactly which pixels will get  
>> turned
>> on when you draw something on screen with R graphics.
>>
>> If it's any consolation, this is true of the predefined plotting  
>> symbols
>> too!  (do all the plusses look the same on screen?)
>>
>> plot(1:10, 1:10, pch=3)
>>
>> Paul
>>
>> p.s.  An exercise for the reader:  why do all of these plusses look  
>> the
>> same on screen?
>>
>> plot(1:10, 1:10, pch="+")
>>
>>
>>>     Thank you
>>>     Saptarshi Guha
>>>
>>>
>>> Paul Murrell wrote:
>>>> Hi
>>>>
>>>>
>>>> Saptarshi Guha wrote:
>>>>
>>>>> Hello,
>>>>> 	How can i 'fix' the following output.
>>>>>
>>>>> 	v=viewport(x=216/2, y=216/2,w=216, h=216,default.units = "bigpts")
>>>>> 	pushViewport(v)
>>>>> 	x=c(119,130,140,151)
>>>>> 	y=c(124,124,124,124)
>>>>> 	grid.points(x,y,size=unit 
>>>>> (1,"bigpts"),default.units="bigpts",pch=".")
>>>>> 	grid.points(x-2,y,size=unit 
>>>>> (1,"bigpts"),default.units="bigpts",pch=".")
>>>>> 	grid.points(x+2,y,size=unit 
>>>>> (1,"bigpts"),default.units="bigpts",pch=".")
>>>>> 	grid.points(x,y-2,size=unit 
>>>>> (1,"bigpts"),default.units="bigpts",pch=".")
>>>>> 	grid.points(x,y+2,size=unit 
>>>>> (1,"bigpts"),default.units="bigpts",pch=".")
>>>>>
>>>>>
>>>>> 	One would expect to get a 4 figures composed of 5 dots each  - 2
>>>>> vertically spaced and 2 horizontally spaced symmetrically around  
>>>>> the
>>>>> center dot.
>>>>> 	However i seem to get odd results - e.g on Quartz(OS X) output,  
>>>>> the
>>>>> last command, places the dot bang next to the center dot.
>>>>> 	On 'jpeg' output with higest quality, this oddity happens with  
>>>>> the 'x
>>>>> +2' command.
>>>>>
>>>>> 	This doesn't happen to all of the points, only some - and not  
>>>>> necc.
>>>>> the edge figures.
>>>>>
>>>>> 	Is there anyway i can control this?
>>>>>
>>>> I think you are seeing a rasterization effect.  Both on screen  
>>>> and in a
>>>> bitmap format you are essentially turning on a single pixel at a  
>>>> time.
>>>> The locations you are giving do not necessarily correspond to an  
>>>> exact
>>>> pixel location (bigpoints are in 1/72 inches, but your screen  
>>>> might have
>>>> a resolution of 96 ppi) so you just get the nearest pixel to that
>>>> location.  So the gap you specify of two bigpoints sometimes  
>>>> comes out
>>>> as 2 pixels, sometimes as 1 pixel (for example).
>>>>
>>>> For comparison, try running your code on a PDF (or other vector  
>>>> format)
>>>> device;  the result is much more what you are expecting I think.
>>>>
>>>> Paul
>>>>
>>>>
>>>>
>>>>> 	Thanks
>>>>> 	Saptarshi
>>>>>
>>>>> Saptarshi Guha | sapsi at pobox.com | http://www.stat.purdue.edu/ 
>>>>> ~sguha
>>>>>
>>>>> ______________________________________________
>>>>> R-help at stat.math.ethz.ch mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>> PLEASE do read the posting guide http://www.R-project.org/ 
>>>>> posting-guide.html
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>> -- 
>> 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/

-- 
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/




More information about the R-help mailing list