[R] overlaying plots from a list of data frames

Timothy W. Hilton twh142 at psu.edu
Tue Feb 3 22:54:37 CET 2009


Hello R list,

I have a list of data frames, in the form (dump output for an example
list follows message):

$site1
  year        data
1 2000  0.03685042
2 2001  0.02583885
6 2005  0.02480015
7 2006  0.03458745

$site2
  year          data
1 2002  4.071134e-03
2 2003 -4.513524e-08
3 2004  8.336272e-08
4 2005  2.270803e-08
5 2006  1.263597e-02
6 2007           NaN

I would like to plot each site's data on a single plot, using a
different color and marker for each site.  I can't figure out an
elegant way to do this; right now I am calling plot on site1, then
points on site2 ... siteN.  This leads to recycling the list of plot
parameters (color, pch, etc.).

The following code allows me to use 
do.call(FUN, lapply(list.of.sites, etc.

if (dev.cur() > 1) FUN <- points                                              
  else FUN <- plot 

Now I would like to include several panels in one figure (there are
actually several columns of data in the data frame).  I set up the
window with the panels, but that messes up the dev.cur() test I am
doing.

I would be most grateful for any suggestions of a more elegant setup,
or for a different condition to decide whether points or plot should
be called.  Something like axis.already.exists(), but I can't figure
out what that test should be.

Many, many thanks.
-Tim

--

Timothy W. Hilton   
PhD Candidate, Department of Meteorology and Atmospheric Science
The Pennsylvania State University
415 Walker Building, University Park, PA   16802
hilton at meteo.psu.edu

example list of data frames:
foo <-
structure(list(site1 = structure(list(year = structure(1:8, .Label =
c("2000", 
"2001", "2002", "2003", "2004", "2005", "2006", "2007"), class =
c("ordered", 
"factor")), data = c(0.0368504167319695, 0.0258388514332078, 
0.0432316303304793, 0.0104757403348321, -0.00942333944266443, 
0.0248001501763526, 0.03458745330367, NaN)), .Names = c("year", 
"data"), class = "data.frame", row.names = c(NA, -8L)), site2 =
structure(list(
    year = structure(1:6, .Label = c("2002", "2003", "2004", 
    "2005", "2006", "2007"), class = c("ordered", "factor")), 
    data = c(0.00407113433104158, -4.51352402858745e-08,
8.33627186959167e-08, 
    2.27080257687498e-08, 0.0126359731744113, NaN)), .Names =
c("year", 
"data"), class = "data.frame", row.names = c(NA, -6L)), site3 =
structure(list(
    year = structure(1:7, .Label = c("2000", "2001", "2002", 
    "2003", "2004", "2005", "2006"), class = c("ordered", "factor"
    )), data = c(0.0297773868339168, 0.0212836833675155,
0.0301490879766663, 
    0.000944393402486824, -2.70247618264114e-09,
-2.84624718656657e-07, 
    NaN)), .Names = c("year", "data"), class = "data.frame", row.names
= c(NA, 
-7L)), site4 = structure(list(year = structure(1:5, .Label = c("2000", 
"2001", "2002", "2003", "2004"), class = c("ordered", "factor"
)), data = c(0.000418478048104973, 0.00530609034999336,
0.020077837088374, 
0.0326921217142046, NaN)), .Names = c("year", "data"), class =
"data.frame", row.names = c(NA, 
-5L)), site5 = structure(list(year = structure(1:5, .Label = c("2000", 
"2001", "2003", "2004", "2005"), class = c("ordered", "factor"
)), data = c(0.00618165243153993, 0.00303216804813299,
-5.51581146266983e-08, 
1.44109415817357e-09, 0.0336487468345765)), .Names = c("year", 
"data"), class = "data.frame", row.names = c(NA, -5L)), site6 =
structure(list(
    year = structure(1:6, .Label = c("2001", "2002", "2003", 
    "2004", "2005", "2006"), class = c("ordered", "factor")), 
    data = c(-6.33889022834333e-10, 1.34668283090261e-08,
4.17885398551684e-08, 
    0.00202872966966414, -3.82189201782033e-09, NaN)), .Names =
c("year", 
"data"), class = "data.frame", row.names = c(NA, -6L))), .Names =
c("site1", 
"site2", "site3", "site4", "site5", "site6"))




More information about the R-help mailing list