Difference in Plots in Mathematica v4.0 and v5.0
- To: mathgroup at smc.vnet.net
- Subject: [mg50571] Difference in Plots in Mathematica v4.0 and v5.0
- From: "Gaurav Mendiratta" <gauravm at seas.upenn.edu>
- Date: Fri, 10 Sep 2004 04:06:36 -0400 (EDT)
- Organization: University of Pennsylvania
- Sender: owner-wri-mathgroup at wolfram.com
Hi, I have a code(PlotGenome) which draws perfect plots in Mathematica .4.0, but a part of the plot is cut off (mostly the leftmost) in Mathematica v5.0. Below is the code. any suggestions , on how can I correct the problem? Thanks Gaurav drawtext[s_, {x_,y_}, align_, opts___] := (xmin = Min[xmin, x]; xmax = Max[xmax, x]; ymin = Min[ymin, y]; ymax = Max[ymax, x]; Text[s, {x,y}, align, opts]) buildtree[{f_Real, t_}, h_, _, x_, y_, g_, n_, offset_, opts___] := {drawtext[NumberForm[f, n], {x, y} + offset[{0, -h(g/2)}], offset[{0, -2h g}], opts]} buildtree[{f_, t_}, h_, _, x_, y_, g_, n_, offset_, opts___] := {drawtext[f, {x, y} + offset[{0, -h(g/2)}], offset[{0, -h g}], opts]} buildtree[{f_, t_, {args___}}, h_, w_, x_, y_, g_, n_, offset_, opts___] := Module[{nx, ny, nw}, nw = w/Length[{args}]; {nx, ny} = {x, y} + offset[{-w/2 - nw/2, h}]; Flatten[{Map[{Line[{{x, y}, AddTo[{nx, ny}, offset[{nw, 0}]] + offset[{0, -g h}]}], buildtree[#, h, nw, nx, ny, g, n, offset, opts]}&, {args}], drawtext[f, {x, y} + offset[{0, -h(g/2)}], {0,0}, opts]}]] PlotGenome::orient = "Only \"Horizontal\" and \"Vertical\" are valid values of option TreeOrientation."; PlotGenome::root = "Option RootPosition -> `` does not evaluate to either 1 or -1."; PlotGenome::precision = "Option NodePrecision -> `` does not evaluate to a positive integer."; PlotGenome::space = "Option NodeSpacing -> `` does not evaluate to a number between 0 and 1."; Options[PlotGenome] = {TreeOrientation -> "Vertical", RootPosition -> 1, TextStyle -> {FontFamily -> "Ariel", FontWeight -> "Bold", FontSize -> 10}, NodeBackground -> Automatic, NodePrecision -> 2, NodeSpacing -> 0, NodeSubstitutions -> {GreaterEqual -> "\[GreaterEqual]", Greater -> ">", LessEqual -> "\[LessEqual]", Less -> "<", Times -> "×", Divide -> "÷", Plus -> "+", Subtract -> "-"}}; PlotGenome[Genome[{f_, t_}], opts___?OptionQ] := PlotGenome[Genome[{f, t, {noArguments}}], opts] PlotGenome[Genome[{f_, t_, {args___}}], opts___?OptionQ] := Module[{$RecursionLimit = Infinity}, Module[{orient, offset, root, style, subst, color, genome, h, g, n, gropts, txtopts, tree, s=0.05}, If[!checkoptions[PlotGenome::badopt, Join[Options[PlotGenome], Options[Graphics]], opts], Return[$Failed]]; orient = TreeOrientation /. {opts} /. Options[PlotGenome]; Switch[orient, "Vertical", offset = Identity, "Horizontal", offset = Reverse, _, Message[PlotGenome::orient, orient]; Return[$Failed]]; root = RootPosition /. {opts} /. Options[PlotGenome]; If[(root != 1) && (root != -1), Message[PlotGenome::root, root]; Return[$Failed]]; h = root*First[offset[{-1, 1}]]; style = TextStyle /. {opts} /. Options[PlotGenome]; color = NodeBackground /. {opts} /. Options[PlotGenome]; subst = NodeSubstitutions /. {opts} /. Options[PlotGenome]; g = NodeSpacing /. {opts} /. Options[PlotGenome]; If[Not[((Head[g] == Real) || (Head[g] == Integer)) && (g >= 0) && (g <)], Message[PlotGenome::space, g]; Return[$Failed]]; n = NodePrecision /. {opts} /. Options[PlotGenome]; If[Not[(Head[n] == Integer) && (n > 0)], Message[PlotGenome::precision, n]; Return[$Failed]]; gropts = filteroptions[Graphics, opts]; txtopts = Sequence @@ {Background -> color, filteroptions[Text, opts]}; genome = If[args === noArguments, {f, t}, {f, t, {args}}] /. subst; xmin = xmax = ymin = ymax = 0; tree = buildtree[genome, h, 1, 0, 0, g, n, offset, txtopts]; Show[Graphics[tree], TextStyle -> style, gropts, PlotRegion -> {{s,1-s},{s,1-s}}]]]