[R] Draw a circle on a filled.contour() plot

Petr Pikal petr.pikal at precheza.cz
Mon Dec 18 09:19:39 CET 2006


Hi

On 17 Dec 2006 at 10:04, Duncan Murdoch wrote:

Date sent:      	Sun, 17 Dec 2006 10:04:37 -0500
From:           	Duncan Murdoch <murdoch at stats.uwo.ca>
To:             	Webmaster <webmaster at citedesjeunes.com>
Copies to:      	r-help at stat.math.ethz.ch
Subject:        	Re: [R] Draw a circle on a filled.contour() plot

> On 12/17/2006 9:31 AM, Webmaster wrote:
> >> The output produced by 'filled.contour' is actually a combination
> >>      of two plots; one is the filled contour and one is the legend.
> >>      Two separate coordinate systems are set up for these two
> >>      plots, but they are only used internally - once the function
> >>      has  
> >> returned
> >>      these coordinate systems are lost.  If you want to annotate
> >>      the main contour plot, for example to add points, you can
> >>      specify graphics commands in the 'plot.axes' argument.  An
> >>      example is given below.
> > 
> > Thanks!
> > 
> > I now have another question (hopefully the last) for which I
> > couldn't  find an answer in the mailing-list archives: how can I get
> > rid of the  color key on the contour.filled() plot? I that question,
> > unanswered,  in a post one year ago on this same list, so I hope
> > it's by any mean  possible... (I think it's possible to change the
> > code completely and  use image(), but it's much less pretty).

You possibly can use

image(...)
contour(..., add=T)

to get contours overlayed e.g.

x <- y <- seq(-4*pi, 4*pi, len=27)
r <- sqrt(outer(x^2, y^2, "+"))
image(z = z <- cos(r^2)*exp(-r/6), col=gray((0:32)/32))
image(z, axes = FALSE, main = "Math can be beautiful ...",
      xlab = expression(cos(r^2) * e^{-r/6}))
contour(z, add = TRUE, drawlabels = FALSE)

HTH
Petr



> 
> I don't see any option in there, so you might have to write your own
> version to do it.  The source for the regular function is in
> 
> http://svn.r-project.org/R/trunk/src/library/graphics/R/filled.contour
> .R
> 
> and the part that plots the key is
> 
>      ## Plot the 'plot key' (scale):
>      mar <- mar.orig
>      mar[4] <- mar[2]
>      mar[2] <- 1
>      par(mar = mar)
>      plot.new()
>      plot.window(xlim=c(0,1), ylim=range(levels), xaxs="i", yaxs="i")
>      rect(0, levels[-length(levels)], 1, levels[-1], col = col) if
>      (missing(key.axes)) {
>          if (axes)
>              axis(4)
>      }
>      else key.axes
>      box()
>      if (!missing(key.title))
>  key.title
> 
> You'd probably also want to change the layout, because you won't want
> the blank space there.  Or possibly you could get the results you want
> from contour(), which doesn't plot the scale.
> 
> Duncan Murdoch
> 
> ______________________________________________
> 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.

Petr Pikal
petr.pikal at precheza.cz



More information about the R-help mailing list