Skip to content

aligning axis labels in a colorkey from levelplot

6 messages · ilai, Deepayan Sarkar, Stephen Eglen

#
R does a great job with the fine details regarding plots.  e.g in the
following:

library(lattice)
y <- -4:4/10
xyplot(y~1, las=1)

the y axis is labelled with numbers -0.4, -0.2, 0.0, 0.2, 0.4 with the 
numbers aligned on the decimal point.

How do I get the same behaviour in the colorkey of a levelplot?  e.g.

levelplot(matrix(y,3,3))

the numbers in the colorkey seem left-aligned, and because of the minus
sign, the numbers now do not align on the decimal point.  Likewise when
the number of digits changes:

levelplot(matrix(4:12,3,3))

Thanks, Stephen
1 day later
#
On Sat, Jun 16, 2012 at 1:41 PM, Stephen Eglen
<S.J.Eglen at damtp.cam.ac.uk> wrote:
Justification is hard-coded, and that's not easy to change. This is
not only for the colorkey; e.g.,

  xyplot(y~1, scales = list(alternating = 3))

will also give you left-aligned axes on the right.

My only suggestion (other than custom labels as suggested by ilai) is

 levelplot(matrix(4:12,3,3), colorkey = list(space = "left"))

-Deepayan
1 day later
#
Thanks Deepayan; I tried the custom labels approach, but unfortunately I
don't think that works as-is; the labels are of different widths as the
font is not fixed-width.

Stephen
2 days later
#
On Tue, Jun 19, 2012 at 10:55 PM, Stephen Eglen
<S.J.Eglen at damtp.cam.ac.uk> wrote:
You can specify a fixed-width fontfamily if that helps:

levelplot(matrix(seq(4,120,l=9),3,3),
          colorkey = list(at = seq(0, 120, 20),
                          labels = list(labels = c('  0',' 20',' 40','
60',' 80','100','120'),
                                        fontfamily = "courier",
                                        font = 1)))

-Deepayan
3 days later
#
Deepayan Sarkar <deepayan.sarkar at gmail.com> writes:
Thanks Deepayan; I think I finally found a solution which worked much
easier than I thought:

## Thanks to "R graphics, 2nd ed" Paul Murrell, page 250 shows how to edit
## an existing plot.
levelplot(matrix(-90:89,20,20))
grid.edit("[.]colorkey.labels$", grep=TRUE, just="right",
          global=T, x=unit(0.95, "npc"))

I can live with adjusting the x position by hand.

Stephen