Re: Plotting w/o artifacts at discontinuities
- To: mathgroup@smc.vnet.net
- Subject: [mg12156] Re: Plotting w/o artifacts at discontinuities
- From: nicolas.martignoni@unifr.ch (Nicolas Martignoni)
- Date: Mon, 27 Apr 1998 01:46:40 -0400
- Organization: Unisource Business Networks
- References: <6hpeed$dck@smc.vnet.net>
In article <6hpeed$dck@smc.vnet.net>, bic@cgl.ucsf.EDU (Bruce Cohen
%FEC) wrote:
>I would like to be able to get plots that do not have artifacts from
>discontinuities without having to know where the problem[s] will be in
>advance.
>
>For example, I would like to be able to say
> Plot[1/(1+x), {x,-2,1}]
>and get a graph without the vertical line at x==-1. Though
> p1=Plot[1/(1+x), {x,-2,-1}, DisplayFunction->Identity];
> p2=Plot[1/(1+x), {x,-1,1}, DisplayFunction->Identity];
> Show[p1,p2, DisplayFunction->$DisplayFunction]; does the trick, it
>requires my anticipation of the problem at x==1.
>
>
>Thanks.
>
>-Bruce
> Bruce Cohen | INTERNET: bic@cgl.ucsf.edu
> Lick-Wilmerding High School |
>bic@lick.pvt.k12.ca.us
> 755 Ocean Avenue | VOICE: (415) 333-4021
> San Francisco, CA 94112 | FAX: (415) 333-9443 --
> Bruce Cohen | INTERNET: bic@cgl.ucsf.edu
> Lick-Wilmerding High School |
>bic@lick.pvt.k12.ca.us
> 755 Ocean Avenue | VOICE: (415) 333-4021
> San Francisco, CA 94112 | FAX: (415) 333-9443
You could use this program. It could certainly be improved, but it
works. However it doesn't treat the plotting of a list of functions.
NewPlot[f_, range:{x_, __}, opts___] :=
Module[{theplot, pos2 = {}, pos1 = {1}, current = counter = 0},
theplot = Plot[f, range,
DisplayFunction -> Identity, opts];
points = theplot[[1,-1,1,1]];
Scan[
(If[# current<0 && Abs[#] + Abs[current] > 10^5,
AppendTo[pos2, counter]; AppendTo[pos1, counter+1]];
counter++;
current=#)&,
Map[Last, points]
];
AppendTo[pos2, counter];
points = MapThread[Take[points, {#1, #2}]&, {pos1, pos2}];
theplot[[1,-1]] = Map[Line, points];
Show[theplot, DisplayFunction -> $DisplayFunction] ]
Regards,
Nicolas
**************************************************************** Nicolas
Martignoni Voice ++ 41 26 424 36 03 Route du Levant 2 Email
mailto:nicolas.martignoni@unifr.ch CH-1700 Fribourg Location
+46d48m 07d09m East
****************************************************************