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]; > > For your example: > > 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