This raises the question of "best practice." My answer was predicated
on the fact that Jin Li had been attempting to use grid.circle in the first
place without success. I rashly made the assumption that there was already a
move to try and use some of the more sophisticated techniques within R.
This is a good example of the comments in the "hidden costs" thread,
where the pathways to learning R came under some scrutiny. It is also similar to
the "[R] How to insert one element into a vector?" where it is noted
that append can be used to insert the element. That is the function appears to
be originally written for one purpose, but it is evident that it has a broader
application that is not immediately recognizable from the function name. When
you are new to R it can seem confusing that you use rect for rectangles but
symbols for circles, or segments for lines and lines for not lines, but they
really are lines.
I am not yet proficient enough to always know which is the best approach.
That's even with defining best as quickest, most easily maintained or most
readable etc etc.
Now to the point. I have formed a collection of graphics that I have prepared
over the last two years which I use to remind myself of the little
idiosyncrasies of the various techniques. These of course have evolved as I
have. They mostly use data that I cannot make available. I thought it might be a
good idea to produce reproducible code that shows the bewildering variety ways
to skin the proverbial animal. That is to produce code that can create a PDF
flipbook of plots. One of the first things that I do when I load a package, is
to run the examples that produce graphical output. I tend to work backwards and
understand processes better when I know what the final output looks like. I am
mathematically challenged, but can often appreciate what is happening once I see
the plot. Ideally the code would include all the bells and whistles. I say this
because I have spent hours trying to figure out just exactly what something is
supposed to do before finally figuring out that it was really much simpler than
I had thought. The bells and whistles should also show how you sometimes have to
use par outside of the function (or remember that the ... is there for a reason)
to get the effect that you want. For example when I load the vcd package to do
mosaicplots I think I have to use par(xpd = TRUE) to get my multi-line labels
not to be clipped.
As an evolving beast I see this as a way of demonstrating the techniques that
are generally regarded as being "best practice" in a comprehensive
manner.
In short I am volunteering. What for? I am not quite sure, but it includes
example plots using data that helps in clarifying how the plot should be used.
The last point means that I am not capable of producing some plots (and the
examples in some packages already do this well) as I have no idea what they mean
even when I have plotted the example.
Tom Mulholland
-----Original Message-----
From: Paul Murrell [mailto:p.murrell at auckland.ac.nz]
Sent: Tuesday, 23 November 2004 3:05 AM
To: Mulholland, Tom
Cc: Jin.Li at csiro.au; r-help at stat.math.ethz.ch
Subject: Re: [R] How to correct this
Hi
Mulholland, Tom wrote:> Taking note of the first post, this is what I assume you wish. Note
Paul's caveat in the help file
>
> "If you resize the device, all bets are off!"
>
> require(gridBase)
> x<-seq(0,1,0.2)
> y<-x
> pred<-matrix(c(0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.7, 0.7, 0.7, 0.7,
> 0.5, 0.5, 0.7, 0.9, 0.9, 0.7, 0.5, 0.5, 0.7, 0.9, 0.9, 0.7, 0.5, 0.5,
> 0.7, 0.7, 0.7, 0.7, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5), 6, 6)
> image(x, y, pred, col = gray(20:100/100), asp='s', axes=F,
xlab=" ",
> ylab="")
> points(0.5, 0.5, col = 5) # the centre of the image
In this case, using grid (or gridBase) is probably overkill. The
symbols() function should do what you want. For example, ...
symbols(rep(0.5, 4), rep(0.5, 4), circles=1:4, add=TRUE)
Paul
> vps <- baseViewports()
> pushViewport(vps$plot)
> grid.circle(x=0.5, y=0.5, r=0.1, draw=TRUE, gp=gpar(col=5))
> grid.circle(x=0.5, y=0.5, r=0.3, draw=TRUE, gp=gpar(col=5))
> grid.circle(x=0.5, y=0.5, r=0.5, draw=TRUE, gp=gpar(col=5))
>
>
>
> -----Original Message-----
> From: Jin.Li at csiro.au [mailto:Jin.Li at csiro.au]
> Sent: Monday, 22 November 2004 1:21 PM
> To: r-help at stat.math.ethz.ch
> Subject: RE: [R] How to correct this
>
>
> Hi there,
>
> I would like to add a few circles to the following image:
> x<-seq(0,1,0.2)
> y<-x
> pred<-matrix(c(0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.7, 0.7, 0.7, 0.7,
> 0.5, 0.5, 0.7, 0.9, 0.9, 0.7, 0.5, 0.5, 0.7, 0.9, 0.9, 0.7, 0.5, 0.5,
> 0.7, 0.7, 0.7, 0.7, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5), 6, 6)
> image(x, y, pred, col = gray(20:100/100), asp='s', axes=F,
xlab=" ",
> ylab="")
> points(0.5, 0.5, col = 5) # the centre of the image
>
> The centre of these circles needs to be overlapped with the centre of
> the image. Any helps are greatly appreciated.
> Regards,
> Jin
>
>
> -----Original Message-----
> From: Mulholland, Tom [mailto:Tom.Mulholland at dpi.wa.gov.au]
> Sent: Monday, 22 November 2004 12:29 P
> To: Li, Jin (CSE, Atherton)
> Subject: RE: [R] How to correct this
>
> I think you need to create a complete set of code that can be replicated
> by anyone trying to help.
> I ran the three grid.circle commands on my current plot and it did what
> I expected it to do. It plotted three circles centred in the current
> viewport. See the jpeg.
>
> The last command using points makes me think that you need to understand
> about units and the setting up of viewports. I have not played around
> with this much but I think thr newsletter had an article which may be of
> use (although it uses old code I think the differences are minor)
>
> Ciao, Tom
>
> -----Original Message-----
> From: Jin.Li at csiro.au [mailto:Jin.Li at csiro.au]
> Sent: Monday, 22 November 2004 10:07 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] How to correct this
>
>
> Hi there,
>
>
>
> I tried to add a few circles on an existing figure using the following
> codes
>
>
>
> grid.circle(x=0.5, y=0.5, r=0.1, draw=TRUE, gp=gpar(col=5))
>
> grid.circle(x=0.5, y=0.5, r=0.3, draw=TRUE, gp=gpar(col=5))
>
> grid.circle(x=0.5, y=0.5, r=0.5, draw=TRUE, gp=gpar(col=5))
>
> points(0.5, 0.5, col = 5) # centre of the circle
>
>
>
> , but all circles moved away from the centre. Could we do any
> corrections to this? Thanks.
>
>
>
> Regards,
>
>
>
> Jin
>
> =========================>
> Jin Li, PhD
>
> Climate Impacts Modeller
>
> CSIRO Sustainable Ecosystems
>
> Atherton, QLD 4883
>
> Australia
>
> Ph: 61 7 4091 8802
>
> Email: jin.li at csiro.au <mailto:jin.li at csiro.au>
>
> =========================>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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
>
> ______________________________________________
> 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
>
> ______________________________________________
> 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
--
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/