[R] plotting box plots on same x

Marc Schwartz MSchwartz at mn.rr.com
Fri May 27 17:10:58 CEST 2005


On Fri, 2005-05-27 at 10:17 -0400, BJ wrote:
> I am trying to construct a graph of 6 box plots of blood pressures. I 
> want them to be on a single set of axis and I want the SBP to be ontop 
> of the DBP. I have an array bp with the data in it and I tried
> 
> a[1,]<-c(145,60,147,62,140,57)
> a[2,]<-c(160,75,160,74,160,70)
> a[3,]<-c(140,55,140,65,142,55)
>  boxplot(data.frame(a), main = "Blood Pressures", at=c(1,1,2,2,3,3), 
> names=c("sit","","lie","","stand",""))
> 
> which is close to what I want, but it gives me a bunch of empty space at 
> the end. is there a better way to do this to avoid this?
> 
> As always, Thank You. ~Erithid

To answer both of your posts, use the following:

# Review how your data is structured above. Your code for creating "a" 
# is not replicable. For those lacking clinical insight, explaining
# your acronyms would also be helpful...  :-)

SBP <- matrix(c(145, 160, 140, 
                147, 160, 140,
                140, 160, 142), ncol = 3)
 
DBP <- matrix(c(60, 75, 55, 
                62, 74, 65,
                57, 70, 55), ncol = 3)

colnames(SBP) <- colnames(DBP) <- c("sit","lie","stand")

# The key here is to only plot three at a time, lest boxplot() 
# default to a 'xlim' of 0.5 to 6.5 (1:# of groups +/- 0.5)
# Then use 'add = TRUE' to plot the second group of 3
# Note also that I set the 'ylim' to the range of the combined
# values in the first plot.

boxplot(data.frame(SBP), main = "Blood Pressures", 
        ylim = range(c(SBP, DBP)),
        whisklty = 0, staplelty = 0)

boxplot(data.frame(DBP), add = TRUE, whisklty = 0, staplelty = 0)

Note the final two arguments, which result in the whiskers being drawn
with an "invisible" line.

See ?boxplot and ?bxp for more information.

HTH,

Marc Schwartz




More information about the R-help mailing list