[R] Split graph labels in 2 levels

P Ehlers ehlers at math.ucalgary.ca
Thu Dec 29 16:54:32 CET 2005



Marc Schwartz wrote:

> On Thu, 2005-12-29 at 14:49 +0100, Andrej Kastrin wrote:
> 
>>Dear R users,
>>
>>is there any simple low-level function that split "single-line" graph 
>>labels and produce something like (e.g. for x axis):
>>
>>100    300    500   700...
>>     200    400   600
>>
>>Cheers, Andrej
> 
> 
> You could do something like this:
> 
>  # Draw some points
>  # Do not plot the x axis
>  plot(rnorm(1000), xaxt = "n")
> 
>  # Now create the x axis labels, using "\n" for the odd values
>  # This puts the following even values one line below
>  x.lab <- paste(seq(0, 1000, 100), c("", "\n"), sep = "")
> 
>  # Now do the axis, but tickmarks only
>  axis(1, at = seq(0, 1000, 100), labels = NA)
> 
>  # Now do the labels
>  mtext(1, at = seq(0, 1000, 100), text = x.lab, line = 2)
> 
> 
> See ?axis, ?paste and ?mtext for more information.
> 

Another way is to use the padj argument to axis:

   plot(rnorm(1000), xaxt = "n")
   axis(1, at = seq(0, 1000, 100), padj = c(0, 1))

Adjust padj to suit your needs; e.g. padj = c(1, -0.2)

Peter Ehlers


> You might also want to look at R FAQ 7.27 on rotating axis labels,
> depending upon your requirements.
> 
> HTH,
> 
> Marc Schwartz
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html




More information about the R-help mailing list