Re: Graphics--How to plot all functions issued from For loop and
- To: mathgroup at smc.vnet.net
- Subject: [mg71829] Re: Graphics--How to plot all functions issued from For loop and
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Thu, 30 Nov 2006 06:05:37 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <ekjg15$df7$1@smc.vnet.net>
abdou.oumaima at hotmail.com wrote: > 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. Although the following expression is not fully and nicely craft, it should accomplish what you need. Append[Table[{Hue[n/7], StringReplace[ToString[sin(n x)], "s" -> "S"]}, {n, 0, 5}] /. "0" -> 1, {Hue[0.8], "Cos (x)"}] Just replace your list of pairs {hue, text} by it and change the numbers as required by the number of functions you are actually plotting. (See the bottom of the mail.) Regards, Jean-Marc > 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\)}}];\)}]\) > In[1]:= << "Graphics`"; << "Graphics`Legend`"; listps = {}; For[k = 0, k <= 5, {ps = PolarPlot[Sin[k*x], {x, -Pi/2, Pi/2}, PlotStyle -> Hue[(k - 1)/7], AxesLabel -> {θ, Ï?}, DisplayFunction -> Identity]; listps = Join[listps, {ps}]; }, k++]; pc = PolarPlot[Cos[x], {x, Pi/2, 3*(Pi/2)}, PlotStyle -> Hue[0.8], AxesLabel -> {θ, Ï?}, DisplayFunction -> Identity]; ShowLegend[DisplayTogether[listps, pc, Ticks -> {PiScale, Automatic}, PlotRange -> {{-Pi/2, Pi/2}, Automatic}, ImageSize -> 700, DisplayFunction -> Identity], {Append[Table[{Hue[n/7], StringReplace[ToString[sin(n x)], "s" -> "S"]}, {n, 0, 5}] /. "0" -> 1, {Hue[0.8], "Cos (x)"}], LegendPosition -> {0.8, 0.1}, LegendSize -> {0.3, 0.2}, LegendShadow -> {0.02, -0.02}}];