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