In the documentation for PlotRange, there is the following line:

  • If a particular minimum or maximum is specified as {Automatic, α}, this means that the range should in effect be cut off beyond a fraction $α$ of points in the plot. When smooth curves or surfaces are plotted, the measure of points is based on projected length or area.

I would like to use this option to cut off, say, 10 percent of the points in a ListPlot. I am aware that ListPlot's default PlotRange -> Automatic option does cut off a fraction of the points, but I would like to control how many points are cut off. However, whenever I try to use the pair {Automatic, 0.1} in place of a coordinate's maximum or minimum I get the following error:

Value of option PlotRange -> (*PlotRange specification*) is not All, Full, Automatic, 
a positive machine number, or an appropriate list of range specifications.

Am I misunderstanding or incorrectly applying the documentation here, or is there an actual error in the documentation here?

  • 1
    $\begingroup$ I'm just as confused by the docs as you are. It's either a bug or bad wording. $\endgroup$ – N.J.Evans Jun 19 '15 at 17:15
  • $\begingroup$ I agree: I had not noticed that part of the documentation before, but I do interpret it as OP did. I have been playing around with it a bit, but I can't seem to do anything more than setting explicit PlotRanges when using the suggested syntax... Strange. $\endgroup$ – MarcoB Jun 19 '15 at 18:55
  • $\begingroup$ is is bad wording regardless of whether its also bug ( or an abandoned feature perhaps? ). Liam, can you include an example of the actual syntax you tried that produces that error in the question. $\endgroup$ – george2079 Jun 20 '15 at 13:25
  • $\begingroup$ Here's an example of syntax which gave the aforementioned error: ListPlot[Table[{n, Exp[-n] Sin[n]}, {n, 1, 10}], PlotRange -> {{0, 10}, {{Automatic, 0.1}, {Automatic, 0.2}}}] $\endgroup$ – Liam Baker Jun 25 '15 at 20:50
mydata = Table[RandomReal[], {100}]

If you want to cut off the top .1 and bottom .1 of the data, just use the proper quantiles:

 PlotRange -> Quantile[mydata, {.1, .9}]]

or interactively...

  PlotRange -> Quantile[mydata, {i, 1 - i}]
  ], {i, 0, .5}]
  • $\begingroup$ As far as I can tell, your first option chooses an automatic value for the minimum y value, and sets 0.5 as the maximum value... And your second option clips the data from (ymin,ymax) to (ymin+0.3,ymax-0.3) instead of cutting off 30% of the points. But thank you! $\endgroup$ – Liam Baker Jun 19 '15 at 15:48

Your Answer

