[R] Putting 2 breaks on Y axis

Marc Schwartz marc_schwartz at comcast.net
Thu Apr 12 22:13:36 CEST 2007

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


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:


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

If number 2 is more appropriate, you could also use par("mfcol") to set
up side by side plots. See ?par.


Marc Schwartz

More information about the R-help mailing list