Labels on axes with log scales with lattice
On 8/14/05, Jamieson Cobleigh <cobleigh at gmail.com> wrote:
I using lattice to make some plots and I want to make the y-axis on some of these plots use a log scale. In the following plot: x <- 1:10 y <- 2^x xyplot(log10(y) ~ x) I get tick marks on the y-axis at 0.5, 1.0, 1.5, 2.0, 2.5, and 3.0. I would rather have just 3 tick marks at 1.0, 2.0, and 3.0 but labeled 10, 100, and 1000. I know this can be done using the "at" and "labels" parameters to the "x" parameter to the "scales" parameter to the "xyplot" command. xyplot(log10(y) ~ x, scales=list(y=list(at=c(1, 2, 3), labels=c(10, 100, 1000)))) My problem is that I am making multiple plots and cannot set the labels on each plot individually. I need to automate the computation of the "at" and "labels" parameters. I think the "axTicks" command can compute the information I need to set "at" and "labels" correctly, but I am having trouble determining how to set its parameters to make it compute the information I need. Perhaps "pretty" might work to, but "axTicks" seems better designed for handling logarithmic axes. Does anyone have any suggestions?
The `right' way to do this is xyplot(y ~ x, scales = list(y = list(log = 10))) Unfortunately, the labeling for this doesn't use axTicks, it takes the easy way out by using labels of the form "10^2", "10^3", etc. This is partly due to laziness on my part, and also the fact that axTicks doesn't support all the features 'scales' claims to. My intended `solution' to this (currently vapourware) is to allow the user to specify a function to calculate tick positions and labels. In principle, this could be useful for other transformations, e.g. sqrt for rootograms. I haven't thought through what the API for this would be like, and I don't know when I will get around to actually implementing it. Deepayan