Great!
Thank you very much.  I missed the old R-help post but indeed this too
simple ...
Boris.

________________________________

From: Dennis Murphy [mailto:djmuser@gmail.com] 
Sent: Thursday, 14, January, 2010 14:40 PM
To: Vasiliev B@CEFCOM HQ@Ottawa-Hull
Cc: R-help@stat.math.ethz.ch
Subject: Re: [R] lattice dotplot with missing levels in factor variable




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 <djmuser@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.Vasiliev@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]]

