[R] Ticks on barplots

Jim Lemon jim at bitwrit.com.au
Wed Mar 21 11:37:51 CET 2007


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)
> 
Hi Mike,
PDF didn't get through, but I think I understand what you want. Here's a 
suggestion:

oddaxlab<-function(side=1,at,labels) {
  at<-at[which(nchar(labels)>0)]
  labels<-labels[which(nchar(labels)>0)]
  axis(side,at,labels)
}
groupie<-matrix(rnorm(32)+3,nrow=8)
labels<-matrix(c(c("1","","","","5","","7",""),
  c("","","","","13","","",""),
  c("17","","","20","","","",""),
  c("25","","","","","","31","")),nrow=8)
bpos<-barplot(groupie,beside=TRUE)
oddaxlab(at=barpos,labels=labels)

What the function does is only draw ticks and labels where there is a 
non-empty label. You pass only those labels that you want to appear. 
Hope I have gotten the right idea.

Jim



More information about the R-help mailing list