Natalie, I'm assuming this is some kind of passive animal sampling? Instream PIT tags for fish? In that case, you can get what I think you want using ggplot2 and something like this:
dat$TagID <- as.factor(dat$TagID) dat$Station <- as.factor(dat$Station) dat$Station2 <- as.numeric(dat$Station) ggplot(dat, aes(datetime, Station2, colour = TagID)) + geom_line() + scale_y_continuous(breaks = 1:nlevels(dat$Station), labels = levels(dat$Station)) This assumes that the stations are equidistant. If you have actual distances between your sampling stations and would like your graphs to reflect that you can easily modify the code above so that you plot the distances on the y axis and then label the axis using scale_y_continuous. Using facet_wrap or facet_grid will let you separate the animals into different plots. Regards, Jason Law Statistician City of Portland Bureau of Environmental Services Water Pollution Control Laboratory 6543 N Burlington Avenue Portland, OR 97203-5452 jason....@portlandoregon.gov -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Duncan Mackay Sent: Sunday, November 24, 2013 4:06 PM To: 'Natalie Houghton McNair' Cc: R Subject: Re: [R] Plotting multiple trends on one graph Hi Natalie Here is an option using lattice. I think below will get you some way to what you want This is your data formatted. in future please dput your data as your data was scrambled. # dput(dat) dat <- structure(list(TagID = c(4926L, 4926L, 4926L, 4926L, 4926L, 4926L, 4926L, 4926L, 4926L, 4926L, 4926L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L, 4929L), Station = c("KLB", "MS01", "MS02", "MS03", "MS04", "MS05", "MS06", "MS07", "MS08", "MS09", "MS10", "KLB", "MS01", "MS02", "MS03", "MS04", "MS05", "MS06", "MS07", "MS08", "MS09", "MS10", "MS11", "MS12", "MS13"), datetime = c("12/21/2012 1:52", "12/21/2012 2:38", "12/21/2012 3:48", "12/21/2012 4:19", "12/21/2012 4:34", "12/21/2012 5:01", "12/21/2012 6:54", "12/21/2012 7:21", "12/21/2012 10:23", "12/21/2012 12:16", "12/21/2012 14:38", "12/21/2012 1:08", "12/21/2012 2:12", "12/21/2012 3:33", "12/21/2012 3:59", "12/21/2012 4:13", "12/21/2012 5:00", "12/21/2012 6:52", "12/21/2012 7:32", "12/21/2012 10:16", "12/21/2012 11:43", "12/21/2012 14:02", "12/22/2012 2:50", "12/22/2012 5:04", "12/22/2012 13:59"), gspd_mps = c(NA, 0.851, 0.629, 0.86, 1.131, 0.9, 0.798, 0.853, 0.694, 0.6, 0.647, NA, 0.611, 0.563, 1.04, 1.082, 0.475, 0.796, 0.563, 0.809, 0.783, 0.657, 0.326, 0.709, 0.688)), .Names = c("TagID", "Station", "datetime", "gspd_mps"), class = "data.frame", row.names = c(NA, -25L)) # factor of id dat[,1] <- factor(dat[,1]) # convert to datetime x <- paste(dat[,3]) x <- strptime(x, "%m/%d/%Y %H:%M") I have added a few extra formatting options but I will leave you to format the x labels as an exercise. # lattice plot conditioned by station library(lattice) xyplot(gspd_mps ~ as.POSIXct(x)|Station, dat, as.table = TRUE, layout = c(1,14), groups = TagID, strip = FALSE, type = c("p","g"), par.settings = list(strip.background = list(col = "transparent"), superpose.symbol = list(cex = c(1,0.7), col = c("red","blue"), pch = c(20,3))), strip.left = strip.custom(par.strip.text = list(cex = 0.65) ), scales = list(x = list(alternating = FALSE, rot = 90)), auto.key = TRUE ) # using latticeExtra conditioned by station and tag library(latticeExtra) useOuterStrips(strip = strip.custom(factor.levels = paste("TagID", unique(dat$TagID)), par.strip.text = list(cex = 0.85)), strip.left = strip.custom(horizontal = TRUE, par.strip.text = list(cex = 0.75)), strip.left.lines = 2, xyplot(gspd_mps ~ as.POSIXct(x)|TagID*Station, dat, as.table = TRUE, scales = list(x = list(alternating = FALSE, rot = 90)), type = c("p","g") ) ) ## useOuterStrips useOuterStrips(strip = strip.custom(factor.levels = paste("TagID", unique(dat$TagID)), par.strip.text = list(cex = 0.85)), strip.left = strip.custom(horizontal = TRUE, par.strip.text = list(cex = 0.75)), strip.left.lines = 2, xyplot(gspd_mps ~ as.POSIXct(x)|TagID*Station, dat, as.table = TRUE, scales = list(x = list(alternating = FALSE, rot = 90)), panel = function(x,y, ...){ panel.grid(h = 0, v= -1) panel.xyplot(x,y,...) } ) ) ## useOuterStrips HTH Duncan Duncan Mackay Department of Agronomy and Soil Science University of New England Armidale NSW 2351 Email: home: mac...@northnet.com.au -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Natalie Houghton McNair Sent: Monday, 25 November 2013 02:49 To: R-help@r-project.org Subject: [R] Plotting multiple trends on one graph > > Hello all, > > I am tracking hundreds of animals through a system with multiple > timing points. I want to graph the movement of individuals through > the whole array on one graph, but I can't figure out how to do that. > An example of my data is below. Basically for each 'TagID', I want to graph the 'date' > or 'gspd_mps' on the X axis and 'Station' on the Y axis, with all > TagID's on one graph. > Thanks for the help!! I'm very new to R. Natalie TagID Station datetime gspd_mps 4926 KLB 12/21/2012 1:52 NA 4926 MS01 12/21/2012 2:38 0.851 4926 MS02 12/21/2012 3:48 0.629 4926 MS03 12/21/2012 4:19 0.86 4926 MS04 12/21/2012 4:34 1.131 4926 MS05 12/21/2012 5:01 0.9 4926 MS06 12/21/2012 6:54 0.798 4926 MS07 12/21/2012 7:21 0.853 4926 MS08 12/21/2012 10:23 0.694 4926 MS09 12/21/2012 12:16 0.6 4926 MS10 12/21/2012 14:38 0.647 4929 KLB 12/21/2012 1:08 NA 4929 MS01 12/21/2012 2:12 0.611 4929 MS02 12/21/2012 3:33 0.563 4929 MS03 12/21/2012 3:59 1.04 4929 MS04 12/21/2012 4:13 1.082 4929 MS05 12/21/2012 5:00 0.475 4929 MS06 12/21/2012 6:52 0.796 4929 MS07 12/21/2012 7:32 0.563 4929 MS08 12/21/2012 10:16 0.809 4929 MS09 12/21/2012 11:43 0.783 4929 MS10 12/21/2012 14:02 0.657 4929 MS11 12/22/2012 2:50 0.326 4929 MS12 12/22/2012 5:04 0.709 4929 MS13 12/22/2012 13:59 0.688 > > [[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. ______________________________________________ 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.