[R] Putting 2 breaks on Y axis

Stephen Weigand weigand.stephen at gmail.com
Thu Apr 12 22:32:03 CEST 2007


On 4/12/07, Marc Schwartz <marc_schwartz at comcast.net> wrote:
> On Thu, 2007-04-12 at 13:41 -0500, Inman, Brant A. M.D. wrote:
> > R plotting experts:
> >
> > I have a bivariate dataset composed of 300 (x,y) continuous datapoints.
> > 297 of these points are located within the y range of [0,10], while 2
> > are located at 20 and one at 55.  No coding errors, real outliers.
> >
> > When plotting these data with a scatterplot, I obviously have a problem.
> > If I plot the full dataset with ylim = c(0,55), then I cannot see the
> > structure in the data in the [0, 10] range.  If I truncate the y axis
> > with ylim = c(0,10), then I cannot see the 3 outliers.  If I break the y
> > axis from 10 to 20 (using plotrix functions), I still do not see the
> > data optimally because of the white space from y=20 to y=55.
> >
> > What I would like to do is break the y axis at 2 points, roughly 10-20
> > and 20-55. Is there a function that can break an axis in 2 places?
> >
> > Thanks in advance for any suggestions.
> >
> > Brant
>
>
> Brant,
>
> I am not a particular fan of broken axes (though others will disagree),
> much less two breaks.
>
> Presuming that your data might look something like this:
>
> http://www.itl.nist.gov/div898/handbook/eda/section3/scattera.htm
>
> A couple of thoughts:
>
> 1. Not being sure if your data range above actually includes 0, you may
> want to consider a log scaled axis, if not.
>
> 2. I might be tempted to use two plots:
>
>   A. A first a plot of the entire data set, showing the 3 outliers
>
>   B. A second plot of the 297 pairs with axes constrained to the
>      appropriate ranges to enable better visualization of the data
>      structure.
>
> If number 2 is more appropriate, you could also use par("mfcol") to set
> up side by side plots. See ?par.
>
> HTH,
>
> Marc Schwartz
>

I was thinking plot the data without the outliers and include a
smaller inscribed plot in a corner showing all the data (the "global
view"). But I couldn't figure out how to do this.

(I think legend() works very hard to do this type of thing.)

Stephen



More information about the R-help mailing list