[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