Re: Graphics--How to plot all functions issued from For loop and
- To: mathgroup at smc.vnet.net
- Subject: [mg71826] Re: Graphics--How to plot all functions issued from For loop and
- From: Peter Pein <petsie at dordos.net>
- Date: Thu, 30 Nov 2006 06:05:34 -0500 (EST)
- References: <ekjg15$df7$1@smc.vnet.net>
abdou.oumaima at hotmail.com schrieb: > Hello MathGroup, > I'd like to plot all functions issued from For Loop then color them automatically. If my loop is =10 it'll be very hard to write all Hue commands and all legends. Is there any way to plot and color and legend all functions automatically. I don't want to do that manually. > Please Help. > Many thanks in advance. > Cheers. > Lian. > > NB: Please copy and past the code bellow into a notebook file to see what I did manually then evaluate it. > > \!\(\* > RowBox[{\(<< Graphics`;\), > "\[IndentingNewLine]", \(<< "\<Graphics`Legend`\>";\), > "\[IndentingNewLine]", "\[IndentingNewLine]", \(listps = {};\), > "\[IndentingNewLine]", > RowBox[{ > RowBox[{"For", "[", > RowBox[{\(k = 0\), ",", \(k \[LessEqual] 5\), ",", > RowBox[{"{", "\[IndentingNewLine]", > RowBox[{ > RowBox[{"ps", "=", > RowBox[{ > StyleBox["PolarPlot", > FontColor->RGBColor[1, 0, 0]], > "[", \(Sin[k\ x], {x, \(-Pi\)/2, Pi/2}, > PlotStyle \[Rule] Hue[\(k - 1\)\/7], > AxesLabel \[Rule] {\[Theta], \[Psi]}, \ > DisplayFunction \[Rule] Identity\), "]"}]}], ";", > "\[IndentingNewLine]", > "\[IndentingNewLine]", \(listps = Join[listps, List[ps]]\), > ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "}"}], > ",", \(k++\)}], "\[IndentingNewLine]", "]"}], ";"}], > "\[IndentingNewLine]", > RowBox[{ > RowBox[{"pc", "=", > RowBox[{ > StyleBox["PolarPlot", > FontColor->RGBColor[1, 0, 0]], "[", \(Cos[x], {x, Pi/2, 3\ Pi/2}, > PlotStyle \[Rule] Hue[\ 0.8], \ > AxesLabel \[Rule] {\[Theta], \[Psi]}, \ > DisplayFunction \[Rule] Identity\), "]"}]}], ";"}], > "\[IndentingNewLine]", > "\[IndentingNewLine]", \(ShowLegend[ > DisplayTogether[listps, pc, Ticks \[Rule] {PiScale, Automatic}, > PlotRange \[Rule] {{\(-Pi\)/2, Pi/2}, Automatic}, > ImageSize \[Rule] 700, > DisplayFunction \[Rule] > Identity], {{{Hue[0], "\<1\>"}, {Hue[1\/7], "\<Sin(x)\>"}, {Hue[ > 2\/7], "\<Sin(2x)\>"}, {Hue[3\/7], "\<Sin(3 x)\>"}, {Hue[ > 4\/7], "\<Sin(4 x)\>"}, {Hue[5\/7], "\<Sin(5 x)\>"}, {Hue[ > 0.8], "\<Cos (x)\>"}}, LegendPosition \[Rule] { .8, .1}, > LegendSize \[Rule] { .3, .2}, \ > LegendShadow \[Rule] { .02, \(- .02\)}}];\)}]\) > > Link to the forum page for this post: > http://www.mathematica-users.org/webMathematica/wiki/wiki.jsp?pageName=Special:Forum_ViewTopic&pid=15758#p15758 > Posted through http://www.mathematica-users.org [[postId=15758]] > > Hello, I had a hard time to understand, why the whole work of the For-loop is done in the "increment" part, while the body of your loop consists only of k++... I'll send you two versions; the first one reproduces your graphic and the second one comes with a correct legend (it seems you've been confused by the unusal use of For[start,test,incr,body] too ;-) ). The trick is, to automate the lists of hues and function-names as far as possible and to assemble them in the "oneliner", which does the work. 1.) huelist = Hue /@ Flatten[{Range[0, 5]/7, 0.8}]; namelist = Flatten[{"1", Table[StringJoin["Sin(", StringReplace[ToString[k], "1" -> " "], "x)"], {k, 5}], "Cos( x)"}]; ShowLegend[ DisplayTogether[ Inner[PolarPlot[#1, {x, -Pi/2, Pi/2}, PlotStyle -> #2] & , Flatten[{Sin[Range[6]*x], Cos[x]}], huelist, List], AxesLabel -> {\[Theta], \[Psi]}, Ticks -> {PiScale, Automatic}, PlotRange -> {Pi*{-1, 1}/2, Automatic}, ImageSize -> 700, DisplayFunction -> (#&)], {Transpose[{huelist, namelist}], LegendPosition -> {0.8, 0.1}, LegendSize -> {0.3, 0.2}, LegendShadow -> {0.02, -0.02}}]; 2.) huelist = Hue /@ (Range[0, 6]/7); (* 6/7 ~ 0.86 instead of .8 *) namelist = Flatten[{Table[StringJoin["Sin(", StringReplace[ToString[k], "1" -> " "], "x)"], {k, 6}], "Cos( x)"}]; ShowLegend[ DisplayTogether[ Inner[PolarPlot[#1, {x, -Pi/2, Pi/2}, PlotStyle -> #2] & , Flatten[{Sin[Range[6]*x], Cos[x]}], huelist, List], AxesLabel -> {\[Theta], \[Psi]}, Ticks -> {PiScale, Automatic}, PlotRange -> {Pi*{-1, 1}/2, Automatic}, ImageSize -> 700, DisplayFunction -> (#&)], {Transpose[{huelist, namelist}], LegendPosition -> {0.8, 0.1}, LegendSize -> {0.3, 0.2}, LegendShadow -> 0.02*{1, -1}}]; HTH, Peter