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
aligning axis labels in a colorkey from levelplot
6 messages · ilai, Deepayan Sarkar, Stephen Eglen
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20120616/53f428af/attachment.pl>
1 day later
On Sat, Jun 16, 2012 at 1:41 PM, Stephen Eglen
<S.J.Eglen at damtp.cam.ac.uk> wrote:
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))
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
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"))
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:
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"))
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.
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:
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)))
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