[R] Boxplot across levels of a factor
Prof Brian Ripley
ripley at stats.ox.ac.uk
Tue Aug 24 09:03:58 CEST 2004
On Tue, 24 Aug 2004, Ivar Herfindal wrote:
> I think Paul wanted one plot for each box, not all boxes in one plot (sorry
> if I misunderstand).
> One way to solve this can be like this:
> with(data, by(1:nrow(data), Type, function(x) boxplot(Locus[x]~data[x]))
Actually, that does not come close to working. Did you try it?
(Please read the documentation for by().) The following does work
by(data, Type, function(x) boxplot(x$Locus,
but that would be a very unusual plot, and one in which the three plots
had different scalings so the boxplots could not be compared.
For something like that, lattice's bwplot is a better option.
bwplot(Locus ~ Type, data=data) 1 panel
bwplot(Locus ~ factor(rep(1, 182)) | Type, data=data) 3 panels
> Hope this works for you.
> On Tue, 24 Aug 2004 07:27:57 +0100 (BST), Prof Brian Ripley
> <ripley at stats.ox.ac.uk> wrote:
> > On Tue, 24 Aug 2004, Paul Boutros wrote:
> >> Hello,
> >> I have a data-frame in which one-column is a factor:
> >> > str(data);
> >> `data.frame': 194 obs. of 8 variables:
> >> $ Type : Factor w/ 3 levels "Nuclear-Rec..",..: 1 2 2 2 2 2 2 2
> >> 2 2
> >> ...
> >> $ Locus : num 0.000571 0.004000 0.001429 0.004857 0.007429 ...
> >> And I'd like to make a boxplot of the data$Locus values, where each
> >> level of
> >> the factor gets its own box-and-whiskers plot. I'm weak in R, but I
> >> thought
> >> there might be some shortcut to automating this instead of just creating
> >> a
> >> new data-structure with all the separate values?
> > There are two. The simpler is
> > boxplot(Locus ~ Type, data=data)
> > and you can also use
> > with(data, boxplot(split(Locus, Type)))
> > (split() does automate the construction of a suitable data structure.)
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-help