Stephen Tucker
2007-Feb-18 14:36 UTC
[R] Lattice graphics: minor tick marks and panel.axis() question(s)
Hello, I have been a long-time Traditional graphics user and now moving to try Lattice graphics. At the moment I cannot figure out how to place minor tick marks in a figure made with Lattice's xyplot(). In Traditional graphics, after calling plot() I would make two calls to axis().>From the manuals and help documentation I learned that 'scales' takesmultiple 'at' arguments only if they apply to each of the different panels, so I thought to call 'panel.axis' in my panel function. However I have a few questions regarding this procedure: 1) the placement of the ticks is not where I expect, 2) I cannot seem to get tick marks to point outwards even when I set the clipping parameter in trellis parameters to "off" 3) (for multiple panels) I cannot figure out how to specify "bottom" or "top" in each panel such that they appear on the side that the default routine places major tickmarks I have included example code at the bottom of this message. I would appreciate any help if these issues are intuitively obvious to an experienced Lattice user. Thank you very much in advance! Stephen Tucker [using Windows XP and R 2.4.0] ######### Example code ######### #+++++ Define example data +++++ # x = 0.1 to 10 uniformly spaced in lognormal(base10) scale # y = log10(x) + random noise # this is repeated for four groups: a,b,c,d xpoints = c(rep(1:9,times=2)*10^rep(c(-1,0),each=9),10) df = data.frame(x=rep(xpoints,times=4), y = rep(log10(xpoints),times=4)+rep(rnorm(length(xpoints),0,0.2),times=4), g = rep(rep(letters[1:4],each=length(xpoints)),times=4)) #+++++ #+++++ Set clipping parameter +++++ clip = trellis.par.get("clip") clip$panel = "off" trellis.par.set("clip",clip) #+++++ #+++++ Define panel function +++++ # plot x,y points # draw axis myPanelFunction = function(x,y,...) { xpoints = c(rep(1:9,times=2)*10^rep(c(-1,0),each=9),10) panel.xyplot(x,y,...) panel.axis("bottom",at=xpoints,labels=FALSE, tck=-0.5) #cannot get positive values of tck to work } #+++++ #+++++ Call to xyplot() +++++ xyplot(y~x|g,data=df, panel = myPanelFunction, scales=list(x=list(log=TRUE,at=c(0.1,1,10), labels=parse(text=paste("10^",-1:1)))), index.cond=list(c(3,4,1,2))) #+++++ ____________________________________________________________________________________ The fish are biting.