On Wed, 2007-03-21 at 14:40 -0400, Mike Prager wrote: > Marc Schwartz <[EMAIL PROTECTED]> wrote: > > > On Tue, 2007-03-20 at 18:04 -0400, Michael H. Prager wrote: > > > 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. > > > > > > # 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(). > > > > HTH, > > > > Marc Schwartz > > > > Thanks, Marc, for this solution and thanks equally to Jim Lemon > for a similar idea. This seems promising. Since this is to go > into a function (and should work without intervention), I'll > need to devise an algorithm to decide at what interval the > labels should be plotted. Clearly "axis()" has such an > algorithm. Unfortunately, it reports its result only by placing > the labels. > > Mike
Mike, To get a feel for how axis() creates the default tick positions when 'at' is the default NULL, see ?axTicks, which provides functionality similar to the internal C routine. You could also look at ?pretty HTH, Marc ______________________________________________ R-help@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 and provide commented, minimal, self-contained, reproducible code.