[Rd] barplot() does not draw bars correctly in R 1.9.0 (PR#6776)
Prof Brian Ripley
ripley at stats.ox.ac.uk
Fri Apr 16 17:05:11 CEST 2004
Please be careful with your replies, folks: you have already created two
new items in R-bugs and so duplicate posts to R-devel. You need to ensure
that (PR#6776) is on the first line of the subject.
On Fri, 16 Apr 2004, Achim Zeileis wrote:
> On Fri, 16 Apr 2004 09:59:02 -0400 Duncan Murdoch wrote:
>
> > On Fri, 16 Apr 2004 15:44:52 +0200, Achim Zeileis
> > <Achim.Zeileis at wu-wien.ac.at> wrote :
> >
> > >On Fri, 16 Apr 2004 11:40:46 +0200 (CEST) phgrosjean at sciviews.org
> > >wrote:
> > >
> > >> Bars are not stacked, but superimposed. This happens even with the
> > >> first example of barplot:
> > >>
> > >> tN <- table(Ni <- rpois(100, lambda=5))
> > >> r <- barplot(tN, col='gray')
> > >
> > >AFAICS, this problem occurs exactly for 1-way tables like above. If
> > >
> > >barplot(as.vector(tN), col = "gray")
> > >
> > >is used instead, everything is as it was in 1.8.1. The reason is that
> > >in the new version of barplot.default the following code (which
> > >remained unchanged) does not do anymore what do what one would want:
> > >
> > > if (is.vector(height)) {
> > > height <- cbind(height)
> > > beside <- TRUE
> > > }
> > > else if (is.array(height) && (length(dim(height)) == 1)) {
> > > height <- rbind(height)
> > > beside <- TRUE
> > > }
> > >
> > >that is, vectors and 1-way tables are treated differently which lead
> > >to the problem. Using cbind() instead of rbind() in the second half,
> > >overcomes this problem.
> > >However, the colors are then chosen in the same way as for vectors,
> > >resulting in different colors than in R 1.8.1. Maybe the default
> > >color choice should then be modified as well.
> >
> > I'm pretty sure the problem is due to this change,
>
> Of course, yes. Kurt and I have been working on this and as I recall
> used mainly vectors and matrices for testing and obviously not 1-way
> tables.
>
> > a few lines below the ones you listed:
> >
> > 1.8.1: width <- rep(width, length.out = NR * NC)
> >
> > 1.9.0: width <- rep(width, length.out = NR)
> >
> > This change was made at the same time as the offset arg was
> > introduced; is it intentional?
>
> Yes, we changed it in that way so that the col, width and offset
> arguments are expanded (if necessary) in a similar way. Compare for
> example
>
> x <- cbind(1:3, 2)
> barplot(x, width = 1:2, beside = FALSE)
> barplot(x, width = 1:2, beside = TRUE)
>
> in 1.8.1 and 1.9.0. In the new version the code tries to find a
> (statistically) sensible grouping in both cases. One could argue that in
> certain cases the widths of each bar should be controlled and they
> should not be grouped...depends on what you want to do if length(width)
> does not match the number of bars drawn.
> Z
>
>
>
>
>
> > Duncan Murdoch
> >
> >
>
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
>
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list