Plotting without asyptotes.
- To: mathgroup <mathgroup at yoda.physics.unc.edu>
- Subject: Plotting without asyptotes.
- From: HAY at leicester.ac.uk
- Date: Mon, 13 SEP 93 14:43:54 BST
Here is a lazy man)s way of plotting without asymptotes - you don)t need to know where they are. The third entry is roughly the slope beyond which the line elements are to be removed. The function Split may be of independent interest. The treatment can be varied by, for example, adding an option to Plot instead of defining a new object, and the deletion process can be refined, particularly for dealing with multiple plots. Allan Hayes hay at leicester.ac.uk PlotNA[f_,{x_,min_, max_},n:(_?NumberQ):25, opts___?OptionQ] := Module[ {graph,graphNA,pairs,slope,posns}, graph = Plot[f, {x,min,max}, DisplayFunction->Identity,opts]; graphNA = graph/.Line[lst_] :> ( pairs = Partition[lst, 2, 1]; slope = Abs[ (Max[Last/@lst] -Min[Last/@lst])/ (Max[First/@lst] -Min[First/@lst]) ]; posns = Position[ pairs, { a_List,b_List}/; Less@@(Abs/@((a-b){n slope,1})) ]//Flatten; Line/@Split[lst,posns] ); Show[graphNA, DisplayFunction -> $DisplayFunction] ] Split[list_List, {breaks___Integer}]/; Less[0,breaks,Length[list]]:= With[ {takes = Partition[ Flatten[{1,{#,#+1}&/@{breaks},Length[list]}], {2} ] }, Take[list,#]&/@takes ]; Examples: f[x_] := Which[ x<2, x^2, x<6, Cos[x], True, Sin[x] ] PlotNA[Tan[x], {x,0,2Pi}, 100, PlotRange ->{-2,2},AspectRatio->1] PlotNA[{f[x],Tan[x]},{x,0,9}, PlotStyle->{RGBColor[1,0,0], RGBColor[0,0,1]}, PlotRange -> {-3,3} ]