From mathieu.ribatet at math.univ-montp2.fr  Thu Nov 17 23:39:45 2011
From: mathieu.ribatet at math.univ-montp2.fr (Mathieu Ribatet)
Date: Thu, 17 Nov 2011 23:39:45 +0100
Subject: [Rd] Small inconsistency with boxplot
Message-ID: <20C3C05D-872C-43D2-80C6-24FAEBADC7E3@math.univ-montp2.fr>

Dear R-core team,

I think I found a small inconsistency in the boxplot function. I don't want to post it as a bug since I'm not sure this might be considered as one according to the FAQ --- and this is not a major problem. Don't hesitate to tell me if I'm wrong.

If you try to do a boxplot on a matrix and set the "at" argument to some vector different from 1:n, n is the number of columns of your matrix, then some boxplots will be hidden since the default "xlim" value will be set to c(0.5, n + 0.5) during the call of the bxp function.

Currently you can easily bypass this problem by setting "xlim" appropriately when calling the boxplot function.

I think it will be better if all boxplots were always shown unless the "xlim" argument is specified. (I realized this behavior when I tried to do boxplots on conditional simulations of a stochastic process ; in which case the suggested behavior might be useful.)

Here's an example

par(mfrow = c(1, 3))
data <- matrix(rnorm(10 * 50), 50)
colnames(data) <- letters[1:10]
x.pos <- seq(-10, 10, length = 10)
boxplot(data, at = x.pos) ## only the last 5 boxplots will appear
boxplot(data, at = 1:10) ## all boxplots will appear
boxplot(data, at = x.pos, xlim = range(x.pos) + c(-0.5, 0.5)) ## all boxplots will be shown

I tried to do a patch if you want to change the current behavior --- note this is my first patch ever so maybe I'm doing it wrong.

*** Downloads/R-2.14.0/src/library/graphics/R/boxplot.R	Mon Oct  3 00:02:21 2011
--- boxplot.R	Thu Nov 17 23:02:45 2011
***************
*** 203,209 ****
      }
  
      if(is.null(pars$xlim))
!         xlim <- c(0.5, n + 0.5)
      else {
  	xlim <- pars$xlim
  	pars$xlim <- NULL
--- 203,209 ----
      }
  
      if(is.null(pars$xlim))
!         xlim <- c(min(at) - 0.5, max(at) + 0.5)
      else {
  	xlim <- pars$xlim
  	pars$xlim <- NULL


----------------------------------------------------------------- 
I3M, UMR CNRS 5149
Universite Montpellier II,
4 place Eugene Bataillon
34095 Montpellier cedex 5   France
http://www.math.univ-montp2.fr/~ribatet
Tel: + 33 (0)4 67 14 41 98



[Rd] Small inconsistency with boxplot
Mathieu Ribatet