Hi:

Based on an old R-help post,

http://tolstoy.newcastle.edu.au/R/e2/help/06/09/1579.html

I managed to get the desired plot with the following call:

dotplot(reorder(lvl, rsp) ~ rsp | cat, data = xx,
    type = c('h', 'p'), layout = c(1, 2),
    scales = list(y = list(relation = 'free', rot = 0)),
    prepanel = function(x, y, ...) {
         yy <- y[, drop = TRUE]
         list(ylim = levels(yy),
              yat = sort(unique(as.numeric(yy))))
          },
    panel = function(x, y, ...) {
               yy <- y[, drop = TRUE]
               panel.dotplot(x, yy, ...)
              }
    )

Trivial :)

HTH,
Dennis

On Thu, Jan 14, 2010 at 10:53 AM, Dennis Murphy <djmu...@gmail.com> wrote:

> Hi:
>
> I can get you halfway there, but I haven't figured out yet how to get rid
> of the
> unused levels...
>
> dotplot(reorder(lvl, rsp) ~ rsp | cat, data = xx,
>     type = c('h', 'p'), layout = c(1, 2))
>
> I'll play with this for a few more minutes...if I get something, I'll let
> you know.
>
> HTH,
> Dennis
>
>
> On Thu, Jan 14, 2010 at 9:25 AM, <boris.vasil...@forces.gc.ca> wrote:
>
>> Hi,
>>
>> I am trying to create a dotplot where each panel shows levels vs.
>> responses; the levels are sorted by responses but levels vary from one
>> panel to another.  However, I run into problems with controlling the
>> y-limits and y-labels.
>>
>> In particular, suppose I have a data frame
>>
>> rsp <- c(10,2,4,0,2,3)
>> lvl <-
>> factor(c("L1","L2","L3","L2","L3","L4"),levels=c("L1","L2","L3","L4"))
>> cat <- factor(c("A","A","A","B","B","B"),levels=c("A","B"))
>> xx <- data.frame(cat,lvl,rsp)
>> print(xx)
>>
>>  cat lvl rsp
>> 1   A  L1  10
>> 2   A  L2   2
>> 3   A  L3   4
>> 4   B  L2   0
>> 5   B  L3   2
>> 6   B  L4   3
>>
>> I tried to follow the "Lattice ..." book and used
>>
>> dotplot(lvl~rsp|cat,data=xx,type=c("h","p"),
>>            panel=function(x,y,...){y1 <- reorder(y,x)
>>                                  y1 <- y1[,drop=TRUE]
>>                                  panel.dotplot(x,y1,...)},
>>          prepanel=function(x,y){y1 <- reorder(y,x)
>>                                 y1 <- y1[,drop=TRUE]
>>                                 return(list(ylim=levels(y1)))},
>>          layout=c(1,2))
>>
>> However, the resulting has incorrect y-labels:
>>
>> Desired Plot      Achieved Plot
>>
>> Panel B:          Panel B:
>>
>>                  L4
>> L4 ----o          L1 ----o
>> L3 ---o           L3 ---o
>> L2 o              L3 o
>>
>> panel A:          Panel A:
>>
>>                  L4
>> L1 ----------o    L1 ----------o
>> L3 ----o          L3 ----o
>> L2 --o            L2 --o
>>
>> It appears that the y-limits and y-labels specified by the pre-panel
>> function are overwritten by something in dotplot.  Can anybody suggest
>> what I am doing incorrectly?
>>
>> Regards,
>> Boris.
>>
>> ______________________________________________
>> 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.
>>
>
>

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

Reply via email to