Message-ID: <CANLFJPo+oKh9uMpOXWO9QMEsO0gn1455HX0dJqpaU0By1rDPsg@mail.gmail.com>
Date: 2011-10-17T02:50:44Z
From: Baptiste Auguie
Subject: right justify right-axis tick values in lattice
In-Reply-To: <4E9B72FB.4000106@auckland.ac.nz>
Hi,
You could also pad the text labels with phantom 0s,
ghostrighter <- function(x, ...){
n <- sapply(x, nchar)
nmax <- max(n)
padaone <- function(ii){
si <- paste(rep("0", length= nmax - n[ii]), collapse="")
as.expression(bquote(phantom(.(si)) * .(x[ii]) ))
}
sapply(seq_along(x), padaone)
}
## ghostrighter(c(1, 23, 145))
panel.right<- function(x, y, ...) {
panel.barchart(x, y, ...)
print(x);print(y)
panel.axis(side="right", at=pretty(y), lab=ghostrighter(pretty(y)),
outside=TRUE)
}
mybar<- function(...) {
args<- list(...)
args$par.settings=list(clip=list(panel="off"))
args$par.settings$layout.widths$axis.key.padding<- 4
do.call("barchart", args)
}
mybar(c(1,10,100,10,1) ~ "abcd", panel=panel.right, ylab.right="right")
HTH,
baptiste
On 17 October 2011 13:12, Paul Murrell <p.murrell at auckland.ac.nz> wrote:
> Hi
>
> On 16/10/2011 6:17 p.m., Richard M. Heiberger wrote:
>>
>> How can I right justify the right-axis tick values? ?They appear in the
>> example below as left-justified.
>>
>> I have tried several different ways and all fail in different ways.
>>
>> The example below creates the right axis tick value with no attempt at
>> adjustment.
>>
>> alternates I have tried are
>> 1. formatting the values. ?This doesn't work because they are in a
>> proportional font and the blanks
>> are too narrow.
>>
>> 2. gsub all leading " " characters into two " ?" characters. ?This
>> overcompenates because a blank
>> is slightly wider than half a digit width.
>>
>> I prefer to keep the default font. ?I am willing to go to a fixed width
>> font
>> (courier for example), but I haven't
>> figured out the incantation to make that work in graphics.
>>
>> here is my example:
>>
>> panel.right<- function(x, y, ...) {
>> ? panel.barchart(x, y, ...)
>> ? print(x);print(y)
>> ? panel.axis(side="right", at=pretty(y), outside=TRUE)
>> }
>> mybar<- function(...) {
>> ? args<- list(...)
>> ? args$par.settings=list(clip=list(panel="off"))
>> ? args$par.settings$layout.widths$axis.key.padding<- 4
>> ? do.call("barchart", args)
>> }
>> mybar(c(1,10,100,10,1) ~ "abcd", panel=panel.right, ylab.right="right")
>
> You could do this ...
>
> library(grid)
> oldx <- grid.get("plot_01.ticklabels.right.panel.1.1")$x
> grid.edit("plot_01.ticklabels.right.panel.1.1",
> ? ? ? ? ?just="right",
> ? ? ? ? ?x=oldx + stringWidth("000"))
>
> Paul
>
>>
>>
>> thanks
>> Rich
>>
>> ? ? ? ?[[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
> --
> Dr Paul Murrell
> Department of Statistics
> The University of Auckland
> Private Bag 92019
> Auckland
> New Zealand
> 64 9 3737599 x85392
> paul at stat.auckland.ac.nz
> http://www.stat.auckland.ac.nz/~paul/
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>