Re: avoid spurious vertical segment in step function plot

• To: mathgroup at smc.vnet.net
• Subject: [mg23394] Re: avoid spurious vertical segment in step function plot
• From: Murray Eisenberg <murray at math.umass.edu>
• Date: Fri, 5 May 2000 02:07:34 -0400 (EDT)
• Organization: Mathematics & Statistics, Univ. of Mass./Amherst
• References: <8elmsq\$sie@smc.vnet.net> <8er7hm\$h69@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```These will do.  Thanks!

Allan Hayes wrote:
>
> Murray,
> Here is two ways based on Split.
>
>  DeleteVerticals[gr_Graphics, slopeMax_] :=
>  gr /. Line[lst_] :>
>       Map[Line,
>    Split[lst, Abs[Divide @@ Reverse[#1 - #2]] < slopeMax &],
>         1];
>
>
> gr = Plot[UnitStep[x], {x, -1, 1}, Frame -> True,
>     PlotRange -> {-.1, 1.1}, Axes -> False]
>
> Show[DeleteVerticals[gr, 10]];
>
> gr = Plot[UnitStep[x], {x, -1, 1}, Frame -> True,
>     PlotRange -> {-.1, 1.1}, Axes -> False];
>
> We often need to experiment to avoid cutting out steep sections that we want
> to retain (thought sometives the dotted forms can be useful)
>
> gr = Plot[UnitStep[x], {x, -1, 1}, Frame -> True,
>     PlotRange -> {-.1, 1.1}, Axes -> False]
>
> gr2 = Plot[Tan[x], {x, -2Pi, Pi}];
>
> Show[DeleteVerticals[gr2, 100]];
>
> Show[DeleteVerticals[gr2, 30000]];
>
> Here is a version that uses peceived slope. I may be easier to use but it is
> affected by chabges in the asspect ratio
>
>  DeleteVerticals2[gr_Graphics, slopeMax_] :=
>  gr /. Line[lst_] :>
>       Module[{xmin, xmax, ymin, ymax, ar, scl},
>         (*get the plot range and the aspect ratio used*)
>         {{{xmin, xmax}, {ymin, ymax}}, ar} =
>           Last /@ AbsoluteOptions[gr, {PlotRange, AspectRatio}];
>         (*
>           multiplying by scl converts a slope in user coordinates to the \
> slope as seen - see note below*)
>         scl =    ar (xmax - xmin)/(ymax - ymin);
>         Map[Line,
>    Split[lst, Abs[Divide @@ Reverse[#1 - #2]] scl < slopeMax &],
>           1]];
>
> Show[DeleteVerticals2[gr2, 200]];
>
> --
> Allan
> ---------------------
> Allan Hayes
> Mathematica Training and Consulting
> Leicester UK
> www.haystack.demon.co.uk
> hay at haystack.demon.co.uk
> Voice: +44 (0)116 271 4198
> Fax: +44 (0)870 164 0565
>
> "Murray Eisenberg" <murray at math.umass.edu> wrote in message
> news:8elmsq\$sie at smc.vnet.net...
> > Several packages available from MathSource deal with eliminating the
> > spurious parts of plots of discontinuous functions across vertical
> > asymptotes.
> >
> > Is there some simple way of dealing with the similar problem of
> > eliminating the spurious vertical line segment in plotting a function
> > with jumps -- for example, in the following?
> >
> >   Plot[UnitStep[x], {x, -1, 1}]
> >
> > --
> > Murray Eisenberg                     murray at math.umass.edu
> > Mathematics & Statistics Dept.       phone 413 549-1020 (H)
> > Univ. of Massachusetts                     413 545-2859 (W)
> > Amherst, MA 01003-4515
> >

--
Murray Eisenberg                     murray at math.umass.edu
Mathematics & Statistics Dept.       phone 413 549-1020 (H)
Univ. of Massachusetts                     413 545-2859 (W)
Amherst, MA 01003-4515

```

• Prev by Date: Re: Integrate query
• Next by Date: Multiple Headers in Complex Data File
• Previous by thread: Re: avoid spurious vertical segment in step function plot
• Next by thread: Re: FindRoot inside a loop