On Wed, Sep 26, 2012 at 3:36 PM, maxbre <mbres...@arpa.veneto.it> wrote:
> sorry for my slow reply, this is what I worked out so far…
>
> my reproducible example and the code
>
> test<-structure(list(site = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
> 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
> 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L), .Label = c("A",
> "B", "C", "D", "E"), class = "factor"), conc = c(2.32, 0.902,
> 0.468, 5.51, 1.49, 0.532, 0.72, 0.956, 0.887, 20, 30, 2.12, 0.442,
> 10, 50, 110, 3.36, 2.41, 20, 70, 3610, 100, 4.79, 20, 0.0315,
> 30, 60, 1, 3.37, 80, 1.21, 0.302, 0.728, 1.29, 30, 40, 90, 30,
> 0.697, 6.25, 0.576, 0.335, 20, 10, 620, 40, 9.98, 4.76, 2.61,
> 3.39, 20, 4.59), samp.time = structure(c(2L, 4L, 4L, 4L, 4L,
> 4L, 5L, 4L, 8L, 8L, 8L, 8L, 8L, 9L, 8L, 7L, 8L, 8L, 8L, 8L, 3L,
> 3L, 2L, 4L, 4L, 4L, 4L, 4L, 1L, 4L, 6L, 4L, 8L, 4L, 8L, 4L, 3L,
> 8L, 4L, 8L, 4L, 8L, 4L, 9L, 3L, 8L, 8L, 8L, 8L, 8L, 8L, 1L), .Label = c("2",
> "4", "12", "24", "96", "135", "167", "168", "169"), class = "factor")),
> .Names = c("site",
> "conc", "samp.time"), row.names = c(NA, 52L), class = "data.frame")
>
> test$samp.time.new <- with(test, reorder(samp.time:site, as.numeric(site)))
>
> m<-match(unique(droplevels(test$samp.time.new)),test$samp.time.new)
> lab<-as.character(test$samp.time[m])
>
> dotplot(samp.time.new~conc|site, data=test,
>         ylim=lab,
>         scales=list(x=list(log=10), y = list(relation = "free")),
>         layout=c(1,5), strip=FALSE, strip.left=TRUE
>         )
>
> Now labels are correctly spaced and sorted out but still a “slight” problem
> persist: i.e. the reordering of samp.time.new within each site; in fact, I
> would like to have an ascending order of sampling time but for some reason
> I’m not able to work it out properly…

For that, it should be enough to just reorder again by samp.time. Your
label code doesn't work then (I haven't tried to figure out why), but
your earlier idea using strsplit() does:


test$samp.time.new <-
    with(test, reorder(reorder(samp.time:site, as.numeric(site)),
                as.numeric(samp.time)))

lab <- sapply(strsplit(levels(test$samp.time.new), ":", fixed=TRUE), "[", 1)

dotplot(samp.time.new~conc|site, data=test,
        ylim=lab,
        scales=list(x=list(log=10), y = list(relation = "free")),
        layout=c(1,5), strip=FALSE, strip.left=TRUE
        )

-Deepayan

______________________________________________
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