Say I want to create an ordinary
xyplot without explicitly specifying axis limits, then how are axis limits calculated?
The following line of code produces a simple scatter plot. However, axis limits do not exactly range from 1 to 10, but are slightly expanded to the left and right and top and bottom sides (roughly by 0.5).
xyplot(1:10 ~ 1:10, cex = 1.5, pch = 20, col = "black",
xlab = "x", ylab = "y")
Is there any way to determine the factor by which the axes were expanded on each site, e.g. using
trellis.par.get? I already tried the following after executing the above-mentioned
downViewport(trellis.vpname(name = "figure"))
 0 1
 0 1
Unfortunately, the panel limits are returned as normalized parent coordinates, which makes it impossible to obtain the "real" limits. Any suggestions would be highly appreciated!
plot, the data range (and consequently the axis limits) is by default extended by 4% on each side, see
?par. But this factor doesn't seem to apply to 'trellis' objects. So what I am looking for is an analogue to the 'xaxs' (and 'yaxs') argument implemented in
Axis limits for
xyplot are calculated in the
extend.limits function. This function isn't exported from the lattice package, so to see it, type
lattice:::extend.limits. Concerning a numeric vector, this function is passed the range of values from the corresponding data (
c(1, 10) in this example). The final limits are calculated according to the following equation:
lim + prop * d * c(-1, 1)
limare the limits of the data, in this case
lattice.getOption("axis.padding")$numeric, which by default is
diff(as.numeric(lim)), in this case
The result in this case is
In case you're interested, the call stack from