From maechler at stat.math.ethz.ch  Mon Oct 15 15:25:16 2007
From: maechler at stat.math.ethz.ch (maechler at stat.math.ethz.ch)
Date: Mon, 15 Oct 2007 15:25:16 +0200 (CEST)
Subject: [Rd] boxplot() confuses x- and y-axes (PR#10345)
Message-ID: <20071015132516.0E44A2834615@mail.pubhealth.ku.dk>

>>>>> "ms" == marc schwartz <marc_schwartz at comcast.net>
>>>>>     on Mon, 15 Oct 2007 14:20:16 +0200 (CEST) writes:

    ms> On Mon, 2007-10-15 at 10:30 +0200, bob.ohara at helsinki.fi wrote:
    >> Full_Name: Bob O'Hara
    >> Version: 2.6.0
    >> OS: Windows XP
    >> Submission from: (NULL) (88.112.20.250)
    >> 
    >> 
    >> Using horizontal=TRUE with boxplot() confuses it as to what is an x- or y-axis. 
    >> At least, xlim= and ylim= are the wrong way round, log="x" (or "y") and xaxt=
    >> work as expected, I haven't looked at anything else.
    >> 
    >> Some code to see if you can reproduce the bug (or discover it's in my head...):
    >> 
    >> boxplot(count ~ spray, data = InsectSprays)
    >> 
    >> # Try to change x-axis:
    >> boxplot(count ~ spray, data = InsectSprays, xlim=c(0,50))
    >> 
    >> # Plot horizontally:
    >> boxplot(count ~ spray, data = InsectSprays, horizontal=TRUE)
    >> 
    >> # Now try to change x-axis:
    >> boxplot(count ~ spray, data = InsectSprays, horizontal=TRUE, xlim=c(0,50))
    >> # Changes y-axis!
    >> 
    >> # Now try to change y-axis:
    >> boxplot(count ~ spray, data = InsectSprays, horizontal=TRUE, ylim=c(0,50))
    >> # Changes x-axis!
    >> 
    >> # Plot x-axis on log scale:
    >> boxplot(count+1 ~ spray, data = InsectSprays, horizontal=TRUE, log="x")
    >> # Does indeed change x-axis
    >> 
    >> # Don't add ticks on x-axis:
    >> boxplot(count ~ spray, data = InsectSprays, horizontal=TRUE, xaxt="n")
    >> # Works as expected.

    ms> Hi Bob,

    ms> No, it's not in your head. This is documented in ?bxp, which is the
    ms> function that actually does the plotting for boxplot(). See the
    ms> description of 'pars' in ?bxp:

    ms> "Currently, yaxs and ylim are used ???along the boxplot???, i.e.,
    ms> vertically, when horizontal is false, and xlim horizontally."

    ms> So essentially, the named 'x' and 'y' axes are rotated 90 degrees when
    ms> you use 'horizontal = TRUE', rather than the vertical axis always being
    ms> 'y' and the horizontal axis always being 'x'. This has been discussed on
    ms> the lists previously.

Yes; thank you, Marc.

And the reason for this is very sensible I think:

If you have a longish  boxplot()  or  bxp() command,
and you just want to go from vertical to horizontal or vice
versa, it makes most sense just to have to change the
'horizontal' flag and not having to see if there are other 'x*'
and or 'y*' arguments that all need to be changed as well.

Regards,
Martin Maechler



[Rd] boxplot() confuses x- and y-axes (PR#10345)
maechler at stat.math.ethz.ch