Another option,

library(ggplot2)
qplot(year, value, data=melt(foo), color= L1)

which can also be achieved "by hand",

test<- do.call(rbind,foo) # combines all data.sets
test$name <- do.call(rep, list(x=names(foo), times = unlist(lapply(foo,nrow)))) # append the name of the original dataset

library(lattice) # or ggplot2, but there seem to be a problem with the "line" geom in this case

xyplot (data ~year,data=test,groups=name,type="b",auto.key=list(space="right"))

Hope this helps,

baptiste

On 4 Feb 2009, at 08:59, Gabor Grothendieck wrote:

Create a zoo object z and plot it:

library(zoo)
f <- function(x) zoo(x$data, levels(x$year)[x$year])
z <- do.call(merge, lapply(foo, f))
plot(z, screen = 1, col = 1:6, pch = 1:6, type = "o",
       ylab = "data", xlab = "year")
legend("topright", legend = 1:6, lty = 1, pch = 1:6, col = 1:6)

See ?plot.zoo and the 3 zoo vignettes (pdf documents) in zoo package.

On Tue, Feb 3, 2009 at 4:54 PM, Timothy W. Hilton <twh...@psu.edu> wrote:
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
hil...@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"))

______________________________________________
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.


______________________________________________
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.

_____________________________

Baptiste AuguiƩ

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag

______________________________________________
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