Re: [R] lattice dotplot reorder contiguous levels

2012-09-26 Thread maxbre
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…

any help much appreciated

max



--
View this message in context: 
http://r.789695.n4.nabble.com/lattice-dotplot-reorder-contiguous-levels-tp4643741p4644215.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.


Re: [R] lattice dotplot reorder contiguous levels

2012-09-26 Thread Deepayan Sarkar
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.


Re: [R] lattice dotplot reorder contiguous levels

2012-09-21 Thread Deepayan Sarkar
On Thu, Sep 20, 2012 at 7:48 PM, maxbre mbres...@arpa.veneto.it wrote:
 my reproducible example

 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)



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


 my objective is to use “site” as conditioning variable but with “samp.time”
 correctly grouped by “site”; the problem here is to ensure that levels of
 “samp.time” within each “site” are contiguous as otherwise they would be not
 contiguous in the dot plot itself (i.e, avoid that sort of holes in between
 y axis categories -see dotplot -)


 I’ve been trying with this but without much success

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


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

 I think (I hope) a possible different solution is to create for ylim a
 proper character vector of different length to pass to each panel of the
 dotplot (I’m not posting this attempt because too much confused up to now)

 can anyone point me in the right direction?

The problem here is that there is crossing between sites and
samp.time. You can try some imaginative permutations of site, such as

test$samp.time.new - with(test, reorder(samp.time,
as.numeric(factor(site, levels = c(A, C, D, B, E)

which gets all but site B right. There may be another permutation that
works for everything, but it would be much easier to make a nested
factor, i.e.,

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

That just leaves getting the y-labels right, which I will leave for
you to figure out.

(Hint: ylim = some_function_of(levels(test$samp.time.new)))

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


Re: [R] lattice dotplot reorder contiguous levels

2012-09-21 Thread Massimo Bressan
thank you all for your helpful replies

to bert
the problem with relation =same is the plotting along y axis of all 
categories (samp.time) for all groups (sites); instead, I need to 
plot along y axis just the categories for each group effectively having 
a corresponding observation

to danny
your solution with ggplot works like a charm; I will keep an eye to 
ggplot2 for other new charts but for some reasons now I must stick on 
lattice (which is also my favourite by the way)

to richard
result3 is close to what I need but still not exactly what I’m aiming to;
I need y axis to be plotted as categories not as a continuous scale…
I need the result proposed by danny to be translated into lattice…

to deepayan
thank you so much, I’ll carefully consider your hint and I’ll try to 
make it works (but still I’m not sure I fully understand how to do it);
as long as I can get to a viable solution I’ll post it back


Just for your information my effort up to now (NOT WORKING!) was 
pointing toward this direction:
1- new character variable from samp.time to be used later as label for 
the plot:
test$samp.lab-as.character(test$samp.time)

2- new factor variable with as many levels as the observations:
test$samp.id - gl(length(test$samp.time), 1)

3- new factor variable based on “samp.time” but with the order of levels 
based on “site”, something like this (I think this is the crucial point 
where I'm likely to fail):
test$samp.time.site - with(test, reorder(samp.time, as.numeric(site)))

4- new numeric level:
nl - as.numeric(levels(test$samp.time.site))

5- plotting (wrong):
dotplot(samp.time~conc|site, data=test,
ylim=test$samp.lab[nl],
scales=list(x=list(log=10), y = list(relation = free)),
layout=c(1,5), strip=FALSE, strip.left=TRUE
)

Il 21/09/2012 08:55, Deepayan Sarkar ha scritto:
 On Thu, Sep 20, 2012 at 7:48 PM, maxbrembres...@arpa.veneto.it  wrote:
 my reproducible example

 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)



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


 my objective is to use “site” as conditioning variable but with 
 “samp.time”
 correctly grouped by “site”; the problem here is to ensure that levels of
 “samp.time” within each “site” are contiguous as otherwise they 
 would be not
 contiguous in the dot plot itself (i.e, avoid that sort of holes in between
 y axis categories -see dotplot -)


 I’ve been trying with this but without much success

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


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

 I think (I hope) a possible different solution is to create for ylim a
 proper character vector of different length to pass to each panel of the
 dotplot (I’m not posting this attempt because too much confused up to now)

 can anyone point me in the right direction?
 The problem here is that there is crossing between sites and
 samp.time. You can try some imaginative permutations of site, such as

 test$samp.time.new - with(test, reorder(samp.time,
 as.numeric(factor(site, levels = c(A, C, D, B, E)

 which gets all but site B right. There may be another permutation that
 works for everything, but it would be much easier to make a nested
 factor, i.e.,

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

 That just leaves getting the y-labels right, which I will leave for
 you to figure out.

 (Hint: ylim = some_function_of(levels(test$samp.time.new)))

 -Deepayan




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


Re: [R] lattice dotplot reorder contiguous levels

2012-09-21 Thread Massimo Bressan

deepayan, is that what you mean?
but still the problem persists: nor correct neither contiguous labelling!
I must probably reconsider everything from scratch: I'm bit confused now...

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

s-strsplit(levels(test$samp.time.new), :)
s1- sapply(s, '[', 1)

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

Il 21/09/2012 08:55, Deepayan Sarkar ha scritto:

On Thu, Sep 20, 2012 at 7:48 PM, maxbre mbres...@arpa.veneto.it wrote:

my reproducible example

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)



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


my objective is to use “site” as conditioning variable but with “samp.time”
correctly grouped by “site”; the problem here is to ensure that levels of
“samp.time” within each “site” are contiguous as otherwise they would be not
contiguous in the dot plot itself (i.e, avoid that sort of holes in between
y axis categories -see dotplot -)


I’ve been trying with this but without much success

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


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

I think (I hope) a possible different solution is to create for ylim a
proper character vector of different length to pass to each panel of the
dotplot (I’m not posting this attempt because too much confused up to now)

can anyone point me in the right direction?

The problem here is that there is crossing between sites and
samp.time. You can try some imaginative permutations of site, such as

test$samp.time.new - with(test, reorder(samp.time,
as.numeric(factor(site, levels = c(A, C, D, B, E)

which gets all but site B right. There may be another permutation that
works for everything, but it would be much easier to make a nested
factor, i.e.,

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

That just leaves getting the y-labels right, which I will leave for
you to figure out.

(Hint: ylim = some_function_of(levels(test$samp.time.new)))

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


[R] lattice dotplot reorder contiguous levels

2012-09-20 Thread maxbre
my reproducible example

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)



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


my objective is to use “site” as conditioning variable but with “samp.time”
correctly grouped by “site”; the problem here is to ensure that levels of
“samp.time” within each “site” are contiguous as otherwise they would be not
contiguous in the dot plot itself (i.e, avoid that sort of holes in between
y axis categories -see dotplot -)


I’ve been trying with this but without much success

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


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

I think (I hope) a possible different solution is to create for ylim a
proper character vector of different length to pass to each panel of the
dotplot (I’m not posting this attempt because too much confused up to now)

can anyone point me in the right direction?
any help much appreciated

thank you




--
View this message in context: 
http://r.789695.n4.nabble.com/lattice-dotplot-reorder-contiguous-levels-tp4643741.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.


Re: [R] lattice dotplot reorder contiguous levels

2012-09-20 Thread Bert Gunter
I don't entirely understand what you want as an alternative. What is
wrong with relation =same, the default?

In any case, it sounds like you'll need to write your own panel
function. If you look at panel.dotplot(), you'll see it's fairly
straightforward, so modification should not be difficult.

BTW, thanks for the reproducible example. I wouldn't have bothered at
all without it, although maybe the result is the same so far as your
concerned.

Cheers,
Bert

On Thu, Sep 20, 2012 at 7:18 AM, maxbre mbres...@arpa.veneto.it wrote:
 my reproducible example

 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)



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


 my objective is to use “site” as conditioning variable but with “samp.time”
 correctly grouped by “site”; the problem here is to ensure that levels of
 “samp.time” within each “site” are contiguous as otherwise they would be not
 contiguous in the dot plot itself (i.e, avoid that sort of holes in between
 y axis categories -see dotplot -)


 I’ve been trying with this but without much success

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


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

 I think (I hope) a possible different solution is to create for ylim a
 proper character vector of different length to pass to each panel of the
 dotplot (I’m not posting this attempt because too much confused up to now)

 can anyone point me in the right direction?
 any help much appreciated

 thank you




 --
 View this message in context: 
 http://r.789695.n4.nabble.com/lattice-dotplot-reorder-contiguous-levels-tp4643741.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.



-- 

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm

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


Re: [R] lattice dotplot reorder contiguous levels

2012-09-20 Thread Richard M. Heiberger
Is result3 what you are looking for?



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)

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


test$sample.time - as.numeric(as.character(test$samp.time))

result1 -
xyplot(sample.time ~ conc | site,
   data=test,
   scales=list(x=list(log=10), y = list(relation = same)),
   layout=c(1,5), strip=FALSE, strip.left=TRUE,
   panel=panel.dotplot)
result1

result2 -
update(result1, panel=function(x, y, ...) {
panel.xyplot(x, y, ...)
panel.rug(y=y)
}
)
result2

trellis.par.get(superpose.line)
new.col - c(trellis.par.get(superpose.line)$col, darkgreen, darkblue)
trellis.par.set(superpose.line=list(col=new.col),
superpose.symbol=list(col=new.col))


result3 -
xyplot(sample.time ~ conc | site,
   groups=samp.time, pch=16,
   data=test,
   scales=list(x=list(log=10), y = list(relation =
same), alternating=1),
   layout=c(1,5), strip=FALSE, strip.left=TRUE,
   par.settings = list(clip = list(panel = off)),
   panel=function(x, y, ...) {
 panel.xyplot(x, y, ...)
 gg - list(...)$groups
 subs - list(...)$subscripts
 col=trellis.par.get(superpose.line)$col
 panel.rug(y=unique(y),
col=unique(col[match(gg[subs], levels(gg))]))
 for (uy in unique(y))
  panel.axis(side=right, at=uy, outside=TRUE,
 text.col=col[match(uy, levels(gg))],
 line.col=col[match(uy, levels(gg))])
 }
   )
result3


On 9/20/12, maxbre mbres...@arpa.veneto.it wrote:
 my reproducible example

 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)



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


 my objective is to use “site” as conditioning variable but with “samp.time”
 correctly grouped by “site”; the problem here is to ensure that levels of
 “samp.time” within each “site” are contiguous as otherwise they would be not
 contiguous in the dot plot itself (i.e, avoid that sort of holes in between
 y axis categories -see dotplot -)


 I’ve been trying with this but without much success

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


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

 I think (I hope) a possible different solution is to create for ylim a
 proper character vector of different length to pass to each panel of the
 dotplot (I’m not posting this attempt because too much confused up to now)

 can anyone point me in the right direction?
 any help much appreciated

 thank you




 --
 View this message in context: