RE: question about plot
- To: mathgroup at smc.vnet.net
- Subject: [mg69596] RE: [mg69589] question about plot
- From: "David Park" <djmp at earthlink.net>
- Date: Sun, 17 Sep 2006 06:57:07 -0400 (EDT)
The DrawGraphics package from my web site below has routines to eliminate 'return lines' across discontinuities. There are three versions, SplitLineOnDistance, SplitLineOnVertical and SplitLineOnSlope. Here is an example on your function plotted over a domain that contains two discontinuities. Needs["DrawGraphics`DrawingMaster`"] h[x_] := x Tan[x] Draw2D[ {Draw[h[x], {x, 0, 2Pi}] /. SplitLineOnVertical[100]}, Axes -> True]; What is the syntactical meaning of all the '***' that you include in your postings? David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: dimmechan at yahoo.com [mailto:dimmechan at yahoo.com] To: mathgroup at smc.vnet.net ***Hello to all. ***I have a simple function ln[156]:=Quit ln[1]:=h[x_]:=x Tan[x] ***Here its Plot In[4]:=Plot[h[x],{x,0,Pi}] ***Plot has incorrectly connected the points at p/2. ***There are two approaches to deal with this bug. ***The first is to use a Block structure along with Show ln[6]:=Block[{$DisplayFunction = Identity}, g1 = Plot[h[x], {x, 0, Pi/2}]; ln[7]:=g2 = Plot[h[x], {x, Pi/2, Pi}]]; Show[g1, g2, DisplayFunction \[Rule] $DisplayFunction] ***The other is to define your code. Here is my attempt: In[12]:= plotdisc[f_,a_,b_,x0_,opts___]:=Show[Map[Plot[f,{x,#[[1]],#[[2]]}, DisplayFunction\[Rule]Identity,opts]&,Delete[Partition[{a,x0-10^-8,x0+10^-8, b},\ 2,1],2]],DisplayFunction\[Rule]$DisplayFunction] In[13]:=plotdisc[h[x],0,Pi,Pi/2,Axes->False,Frame->True] ***However my plotdisc[] function has the disadvantage that can deal with only one discontinuity each time. ***How can I modify it (or if I can't, I look for another more elegant code) so that to deal with any number of discontinuities. ***In other words I look for a function (if mine cannot be modified) which for example has the same output with ln[16]:=Block[{$DisplayFunction = Identity}, gg1 = plotdisc[h[x], 0, Pi, Pi/2]; gg2 = plotdisc[h[x], Pi, 2Pi, 3Pi/2]]; ln[17]:=Show[gg1, gg2, DisplayFunction \[Rule] $DisplayFunction] ***Thanks in advance for any assistance.