[R] Overlaying trellis xyplot on contourplot

hadley wickham h.wickham at gmail.com
Thu Dec 13 22:07:25 CET 2007


Hi Seth,

An alternative would be to use ggplot2, http://had.co.nz/ggplot2:

model <- function(a,b,c,X1,X2)  {
  (exp(a + b*X1 + c*X2)) / (1 + exp(a + b*X1 + c*X2))
}

g <- expand.grid(X1 = seq(0.40, 0.8,0.01), X2 = seq(0.03,0.99,0.03))
a <- -37.61
b <- 34.88
c <- 28.44
g$z<- model(a, b, c, g$X1,g$X2)

ph <-c(0.42,0.47,0.59,0.40)
phh <-c(0.76,0.81,0.82,0.71)
d <- data.frame(ph,phh)

library(ggplot2)
qplot(X1, X2, data = g, fill = z, geom="tile", xlab="p(H)", ylab="p(H|H)")+
 geom_contour(aes(z=z)) +
 geom_point(aes(x = ph, y = phh, fill = NULL), data=d)

Plots in ggplot2 have multiple layers which can have different data sources.

Hadley


On 12/13/07, Seth W Bigelow <sbigelow at fs.fed.us> wrote:
>
> Friends: I wish to overlay data points on a contour graph.  The following
> example produces a nice contour plot, but I have not mastered the concept
> of using panel functions to modify plots. Can someone show me how to
> overlay the data points (given after contour plot statement) on the
> contourplot?
> --Seth
>
>
> model <- function(a,b,c,X1,X2)                        # provide model
> function for contour plot
>  {(exp(a + b*X1 + c*X2)) / (1 + exp(a + b*X1 + c*X2))}
>
> g <- expand.grid(X1 = seq(0.40, 0.8,0.01), X2 = seq(0.03,0.99,0.03)) #
> create gridded data for contour plot
> a <- -37.61                               # Assign value to 'a' parameter
> b <- 34.88                                # Assign value to 'b' parameter
> c <- 28.44                                # Assign value to 'c' parameter
> g$z<- model(a, b, c, g$X1,g$X2)                       # Create variable z
> using gridded data, model, and variables
>
> contourplot(z ~ X1 * X2,                              # specify the basic
> equation for the contour plot
>  data=g,                                  # Specify the data frame to be
> used
>  contour=TRUE,                                  # Make sure it adds
> contours
>  xlim=c(0.4,0.8), ylim=c(0.401,0.999), zlim=c(0,1),         # Set axis
> ranges
>  xlab="p(H)", ylab="p(H|H)",                    # Add axis labels
>  region = TRUE,                                 # Add nice colors
>  cuts=10                                  # Specify number of contour
> slices
>  )
>
> # Data to superimpose as xyplot on the contourplot....
>
> ph <-c(0.42,0.47,0.59,0.40)                     # Create a vector of values
> under variable 'ph'
> phh <-c(0.76,0.81,0.82,0.71)                          # Create vector of
> values for variable 'phh'
> d <- data.frame(ph,phh)                               # Group variables ph
> & phh in data frame 'd'
>
>
>
>
> Dr. Seth  W. Bigelow
> Biologist, Sierra Nevada Research Center
> Pacific Southwest Research Station, USDA Forest Service
> Mailing address: 2121 2nd St Suite A101, Davis CA 95616
> www.fs.fed.us/psw/programs/snrc/staff/bigelow
> www.smbigelow.net
> Phone: 530 759 1718
> Fax: 530 747 0241
>
> ______________________________________________
> R-help at r-project.org 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.
>


-- 
http://had.co.nz/



More information about the R-help mailing list