[R] Rotate x-axis label on log scale

Tim Elwell-Sutton tesutton at hku.hk
Wed Aug 25 05:37:08 CEST 2010


Hi Jim
Thanks for this. The staxlab function seems very useful. Unfortunately, the
rotation option doesn't seem to work for me when the y-axis is on a log
scale. It will stagger the labels but not rotate them. There's no error
message. On a linear axis the rotation works nicely. Any ideas?
The example below works if you omit log='y' or srt=45

Thanks very much
Tim

#Create plot with log-scale on the y-axis
par(mar = c(7, 4, 4, 2) + 0.1)
plot(1, type='n', bty='n',
        xlab="",
        ylab='Odds Ratio',
        xlim= c(0.5,4.5),
        ylim= c(0.75, 2),
        cex=2, xaxt='n', yaxt='n', cex.lab=1.3,
        log='y')  

#Estimates and confidence intervals
points(c(1:4),c(1.1,1.32,1.14,1.36), pch=17, cex=1.5, col='blue')
segments (c(1:4),c(0.93,1.11,0.94,1.15),c(1:4),c(1.3,1.58,1.37,1.61),
          col='blue', lwd=2)  

#Add x- and y-axes
axis(1,c(1:4), labels= F)
axis(2, at=seq(0.75,2, by=0.25), labels=seq(0.75,2, by=0.25), las=1)

# Add x-axis labels
labels <- paste("Label", 1:4, sep = " ")
staxlab(side=1, at=1:4, labels, srt=45)

-----Original Message-----
From: Jim Lemon [mailto:jim at bitwrit.com.au] 
Sent: Tuesday, August 24, 2010 7:48 PM
To: tesutton
Cc: r-help at r-project.org
Subject: Re: [R] Rotate x-axis label on log scale

On 08/24/2010 11:44 AM, Tim Elwell-Sutton wrote:
> Hi
>
> I'd appreciate some help with plotting odds ratios. I want to rotate the
> labels on the x-axis by 45 degrees.
>
> The usual way of doing this, using text - e.g. text(1,
par('usr')[3]-2.25..)
> -  gives no result when the y-axis is a log scale.
>
> I guess this is because, as the par help says, for a logarithmic y-axis:
> y-limits will be 10 ^ par("usr")[3:4]
>
Hi Tim,
If you know where to put the labels, try:

library(plotrix)
staxlab(1,at=...,labels=...,srt=45)

Jim



More information about the R-help mailing list