[R] Ticks on barplots

Marc Schwartz marc_schwartz at comcast.net
Wed Mar 21 03:40:59 CET 2007


On Tue, 2007-03-20 at 18:04 -0400, Michael H. Prager wrote:
> Dear Gurus,
> 
> Using R 2.4.1 on Windows XP
> 
> I am generating stacked barplots of age-composition of fish populations 
> (Y) over time (X).  As there are many years, not every bars is labeled.  
> When looking at the plot, it becomes difficult to associate labels with 
> their bars.
> 
> We have improved this a bit by using axis() to add a tickmark below each 
> bar.  Can anyone suggest a way to draw ticks ONLY at bars where a tick 
> label is drawn?  Or to make such ticks longer than those where there is 
> no label?
> 
> This is going into a function, so I'm hoping for a method that doesn't 
> require looking at the plot first.
> 
> I have attached a PDF.
> 
> # sample code (simplified) #
> mp <- barplot(t(N.age), xlab = "Year", axisnames = FALSE)
> axis(side = 1, at = mp, labels = rownames(N.age), tcl = -0.75)
> 
> Thanks!
> 
> Mike Prager
> NOAA, Beaufort, NC

Mike,

How about something like this:

  mp <- barplot(1:50, axisnames = FALSE)

  # Create short tick marks at each bar
  axis(1, at = mp, labels = rep("", 50), tcl = -0.25)

  # Create longer tick marks every 5 years with labels
  axis(1, at = mp[seq(1, 50, 5)], 
       labels = 1900 + seq(0, 45, 5), tcl = -0.75, las = 2, 
       cex.axis = 0.75)


Just pick which labels you want to be shown (eg. every 5 years) and
synchronize the values of those with the 'at' argument in axis().

BTW, your PDF did not come through.

HTH,

Marc Schwartz



More information about the R-help mailing list