You would use layout to set up the page in base graphics. It sets up the page to receive multiple plots. Unfortunately, this will *not* give you side by side plots because filled.contour is restricted to a full page per its help page

layout(matrix(c(1,2,3,4), 2,2 byrow=TRUE)
for (i in 1:4) {
filled.contour(seven[ , , i] }


Lattice graphics looks to be your only option:

levelplot( in package lattice) has methods for arrays. This is what its help page says: "Both levelplot and wireframe have methods for matrix, array, and table objects, in which case x provides the z vector described above, while its rows and columns are interpreted as the x and y vectors respectively. This is similar to the form used in filled.contour and image. For higher-dimensional arrays and tables, further dimensions are used as conditioning variables. "

Note that the matrix type is limited to 2 dimensions and you would need to use an "array" rather than a matrix. I just tested contourplot with the "three" example below and got encouraging results as well, so I think you are in luck. I would try simply this:

library(lattice)
contourplot(seven)   # can it really be this simple ?!?!

So your your data arrangement is in accord with that description. The desired 2 x 2 plot might happen automagically with your third dimension of the array = 4. The other more typical way to do it would be with a dataframe object that had x,y,z and grouping variables and to specify a formula like z ~ x + y | group. There is an example in the help page.

To that form with as.data.frame.table. Run this demo:

three <- array(1:27, c(3,3,3))
three
three.long <- as.data.frame.table(three) # would need to relabel variable names
names(three.long) <- c("row", "col", instance", "Z")

HTH;
David Winsemius



On Mar 15, 2009, at 2:15 PM, Thomas Levine wrote:

I want to plot them side by side.

On Sun, Mar 15, 2009 at 12:41 PM, David Winsemius <dwinsem...@comcast.net > wrote: What is it that you want to do with these 4 plots? Overlay them with different color contours or plot them side-by-side on the same page?

?par # for filled.contour but the implementation will be different for those two options.

contourplot is is a lattice plotting function. See Figure 6.10 on Sarkar's Lattice book pages. levelplot is the closest analog to filled contour in lattice.
--
David Winsemius



On Mar 15, 2009, at 12:22 PM, Thomas Levine wrote:

I have four large two-dimensional matrices of which I want to create contour
plots. Something like

filled.contour(<matrix>)
contourplot(<matrix>)

works but only gives me one plot at a time. If I combine the four matrices into one three-dimensional matrix, which I'll name "seven", there should be
a way of doing something like this

contourplot(seven[,,k] for k in 1 to 4)

such that they come out as one plot rather than four. I couldn't figure out how to do this, so I tried a disgusting alternative that involved generating
x,y and k vectors, but I'd rather do it properly.

Tom

       [[alternative HTML version deleted]]

______________________________________________
R-help@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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT



David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to