Hello,

Try the following

myex <- myexample
myex$sample <- as.character(myex$sample)
myex$sample <- as.Date(myex$sample, format="%d/%m/%Y")
myex

Then, run the first attempt without bothering to order, lattice is clever and will do it for you.

Hope this helps,

Rui Barradas

Em 22-06-2012 13:20, maxbre escreveu:
Given my reproducible example

myexample<-structure(list(site = structure(c(4L, 2L, 2L, 4L, 2L, 4L, 4L,
3L, 1L, 3L, 1L, 1L, 3L, 4L, 5L, 2L), .Label = c("A", "B", "C",
"D", "E"), class = "factor"), obs = c(0.302, 0.956, 0.72, 1.21,
0.887, 0.728, 1.294, 20.493, 0.902, 0.031, 0.468, 2.318, 4.795,
89.581, 4.59, 3618.353), sample = structure(c(6L, 6L, 2L, 8L,
7L, 7L, 9L, 4L, 4L, 1L, 1L, 3L, 3L, 10L, 11L, 5L), .Label = c("18/08/2009",
"20/04/2009", "03/12/2008", "17/03/2009", "05/01/2012", "21/04/2009",
"17/07/2009", "17/04/2009", "21/07/2009", "29/01/2009", "16/07/2008"
), class = "factor", scores = structure(c(2, 3, 2, 3, 4, 4, 2,
5, 2, 4, 2), .Dim = 11L, .Dimnames = list(c("18/08/2009", "21/04/2009",
"20/04/2009", "17/07/2009", "17/04/2009", "21/07/2009", "03/12/2008",
"16/07/2008", "17/03/2009", "29/01/2009", "05/01/2012"))))), .Names =
c("site",
"obs", "sample"), row.names = c(NA, -16L), class = "data.frame")


I want to dotplot with lattice the observations (obs) against sampling dates
(sample) for each site but I need to reorder the factor levels of sampling
dates based on the value of observations  within each site (rather than
keeping the original arbitrary data)

These are my two best (?) attempts both of them not properly working for
different reasons

#start

library(lattice); library(latticeExtra)

#first attempt
myexample$sample<-
   with(myexample, reorder(sample,obs))


dotplot(sample ~ obs | site, data=myexample,
         scales=list(x=list(log=TRUE), y=list(relation="free")),
         xscale.components = xscale.components.logpower,
         strip=FALSE, strip.left=TRUE, layout=c(1,5),

         index.cond= function(x,y){median(x)},

         panel = function(x,y,...) {
           panel.dotplot(x,y,...)
           panel.abline(v = median(x), col.line="red", lty="dotted")
         }
         )


#second attempt
myexample$sample<-
   with(myexample, reorder(reorder(sample,obs), as.numeric(site)))


dotplot(sample ~ obs | site, data=myexample,
         scales=list(x=list(log=TRUE), y=list(relation="free")),
         xscale.components = xscale.components.logpower,
         strip=FALSE, strip.left=TRUE, layout=c(1,5),

         index.cond= function(x,y){median(x)},

         panel = function(x,y,...) {
           panel.dotplot(x,y,...)
           panel.abline(v = median(x), col.line="red", lty="dotted")
         }
         )

#end

There is to note the presence of some ties (i.e. same sampling dates,
particularly noticeable for site A and B).
The number of factor levels related to sampling dates (11) is different than
total number of observations (17): is this responsible for the lack of
reordering for factor sample in the dotplot?
How to fix this ? How to get a neat y axis without that “holes” in between
of the sampling dates within each site?

Should I try to make somehow as much factor levels as the observations so
that to avoid this sort of problem? Is there any alternative solution?

thank you



--
View this message in context: 
http://r.789695.n4.nabble.com/Reordering-levels-of-a-factor-within-a-lattice-dotplot-tp4634201.html
Sent from the R help mailing list archive at Nabble.com.

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

Reply via email to