[R] Contour plot overlayed with line plot

Jonathan Greenberg jgreenberg at arc.nasa.gov
Thu May 11 20:41:29 CEST 2006


I was using filled.contour, when I went back and just used contour it worked
fine -- so there is NOT an easy way to get filled contour to work with an
overlay?

--j

--

Jonathan A. Greenberg, PhD
NRC Research Associate
NASA Ames Research Center
MS 242-4
Moffett Field, CA 94035-1000
Phone: 415-794-5043
AIM: jgrn3007
MSN: jgrn3007 at hotmail.com

-----Original Message-----
From: Roger Bivand [mailto:Roger.Bivand at nhh.no] 
Sent: Thursday, May 11, 2006 12:37 AM
To: Jonathan Greenberg
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] Contour plot overlayed with line plot

On Wed, 10 May 2006, Jonathan Greenberg wrote:

> Duncan (and others):
> 
> 	I figured it out (thank you!), I ended up doing a
> contour(interp(x,y,z)), and I did figure out lines(), but I can't get the
> output of lines to "sync" with the proper coordinates of the contour()
> output (its overlaying the line over the contour plot, but not in the
proper
> location).  Any ideas?

To fake your input data from the built-in volcano data set:

set.seed(1)
NAs <- sample(1:length(volcano), 5000)
volcanoNAs <- volcano
is.na(volcanoNAs) <- NAs 
crds <- 10*(which(!is.na(volcanoNAs), arr.ind=TRUE))
crdsz <- cbind(crds, c(volcanoNAs[!is.na(c(volcanoNAs))]))

giving a three-column matrix of two coordinates and elevation values.

library(akima)
new_volcano <- interp(x=crdsz[,1], y=crdsz[,2], z=crdsz[,3])
str(new_volcano)

to see what it looks like, by default a 40 by 40 grid, and

contour(new_volcano, asp=1)
points(x=crdsz[,1], y=crdsz[,2], pch=4, col="grey")

plots the points on the same coordinate system. 

What are the specific command you are using, say in relation to this toy 
data set?

Bets are off if you use filled.contour(); that lets you insert extra
graphics, but the have to be done in the function arguments, not
afterwards.

> 
> --j
> 
> --
> 
> Jonathan A. Greenberg, PhD
> NRC Research Associate
> NASA Ames Research Center
> MS 242-4
> Moffett Field, CA 94035-1000
> Phone: 415-794-5043
> AIM: jgrn3007
> MSN: jgrn3007 at hotmail.com
> 
> -----Original Message-----
> From: Duncan Murdoch [mailto:murdoch at stats.uwo.ca] 
> Sent: Wednesday, May 10, 2006 8:41 PM
> To: Jonathan Greenberg
> Subject: Re: [R] Contour plot overlayed with line plot
> 
> On 5/10/2006 11:24 PM, Jonathan Greenberg wrote:
> > Keeping with the "newbie" questions -- I'm having a hard time figuring
out
> > how to order the data -- I have x,y,z triplets, but I'm getting this
> error:
> > 
> > ...increasing 'x' and 'y' values expected
> > 
> > I saw in the documentation they should be ordered, but a) how do I do
> this,
> > and b) do I need to sort by x first then y?  
> 
> I think you don't understand the requirements of contour().  It wants 
> the z values to be in an M x N matrix, and x to be a vector of length N, 
> y a vector of length M.  (Or did I get those transposed? It's late...) 
> The x values are the x coordinates of each column of z, the y values are 
> the y coordinates of them.
> 
> If you have triplets (x,y,z) of data that you want to plot as a surface, 
> you need to convert them to the form above, e.g. using the interp() 
> function from the akima package.
> 
> If I completely misunderstood your question:  you can use the sort() 
> function to order x and y.
> 
> Duncan Murdoch
> > 
> > Thanks!
> > 
> > --j
> > 
> > --
> > 
> > Jonathan A. Greenberg, PhD
> > NRC Research Associate
> > NASA Ames Research Center
> > MS 242-4
> > Moffett Field, CA 94035-1000
> > Phone: 415-794-5043
> > AIM: jgrn3007
> > MSN: jgrn3007 at hotmail.com
> > 
> > -----Original Message-----
> > From: Duncan Murdoch [mailto:murdoch at stats.uwo.ca] 
> > Sent: Wednesday, May 10, 2006 7:43 PM
> > To: Jonathan Greenberg
> > Subject: Re: [R] Contour plot overlayed with line plot
> > 
> > On 5/10/2006 7:46 PM, Jonathan Greenberg wrote:
> >> I apologize for what may be a newbie question: I have two sets of data,
> > one
> >> is X,Y,Z data that I'd like to make a contour plot of (Z defining the
> >> contours), and a second set of X,Y data (Y as a function of X) which I
> > would
> >> like made into a line plot OVERLAYED on the contour plot (X and Y from
> > both
> >> plots are in the same units and will have overlapping values).  Any
> >> suggestions on how to do this in R?  Thanks!\
> > 
> > Use contour() first in the usual way, then use the lines() function to 
> > add lines to it. (Or points(), etc.)
> > 
> > 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
> 
> ______________________________________________
> 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
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no




More information about the R-help mailing list