Ändern Sie den Plotstil als Funktion des Parameters in ParametricPlot

Sep 13 2020

Das ManipulateFolgende erzeugt einen Pfad, der den Halbkreis der oberen Einheit durchquert, von {1,0}0 zum {-1,0}Zeitpunkt 1/2, dann denselben oberen Halbkreis durchquert, jedoch in umgekehrter Richtung, von {-1,0}1/2 zu {1,0}1 zurück.

Man kann jedoch die umgekehrte Hälfte des Pfades nicht "sehen", da sie auf demselben Halbkreis liegt, aber in umgekehrter Richtung von der vorderen Hälfte durchquert wird.

Ist es möglich, eine PlotStyleoder eine andere Anweisung zu verwenden, um den Stil der Kurve zum Zeitpunkt 1/2 so zu ändern, dass beispielsweise der Plot von da an dicker ist und eine andere Farbe hat?

f[t_ /; 0 <= t <= 1/2] := ReIm[Exp[2 \[Pi] I t]]
f[t_ /; 1/2 < t <= 1] := ReIm[Exp[2 \[Pi] I (1 - t)]]

Manipulate[
 ParametricPlot[f[t], {t, 0, v}, 
  PlotRange -> {{-1, 1}, {-1, 1}}], {{v, 0.01}, 0.01, 1}]

(Mir ist klar, dass es eine Möglichkeit gibt, das gewünschte Ergebnis zu fälschen, indem ich die Funktion fim Halbintervall {1/2, 1}so ändere, dass sie einen etwas größeren Radius als 1 hat. Aber ich würde den Radius lieber unverändert lassen und "nur" "Ändern Sie den Stil der Dicke und / oder Farbe der Kurve in diesem halben Intervall.)

Antworten

3 BobHanlon Sep 13 2020 at 02:01
Clear["Global`*"]

f[t_ /; 0 <= t <= 1/2] := ReIm[Exp[2 \[Pi] I t]]
f[t_ /; 1/2 < t <= 1] := ReIm[Exp[2 \[Pi] I (1 - t)]]

Du könntest benutzen ColorFunction

BEARBEITEN:

Manipulate[
 ParametricPlot[f[t], {t, 0, v},
  PlotRange -> {{-1, 1}, {-1, 1}},
  ColorFunction -> (If[#3 < 1/2, Blue, Red] &),
  ColorFunctionScaling -> False],
 {{v, 0.01}, 0.01, 1, 0.01, Appearance -> "Labeled"}]
3 MichaelE2 Sep 13 2020 at 04:20

Die Darstellung einer einzelnen Funktion ohne Singularitäten führt zu einem einzelnen LineObjekt, das nur eine einzige Dicke haben kann. Um zwei Dicken zu erhalten, müssten Sie zwei Linien zeichnen. Dies kann akzeptabel sein oder auch nicht, da es nicht wie eine einzelne Funktion aussieht.

Entweder

Manipulate[
 ParametricPlot[{
   Style[ConditionalExpression[f[t], t <= 1/2], AbsoluteThickness[1], Blue],
   Style[ConditionalExpression[f[t], t >= 1/2], AbsoluteThickness[3], Red]},
  {t, 0, v},
  PlotRange -> {{-1, 1}, {-1, 1}},
  PlotRangePadding -> Scaled[0.01]],
 {{v, 0.01}, 0.01, 1, 0.01, Appearance -> "Labeled"}]

oder

Manipulate[
 ParametricPlot[{
   ConditionalExpression[f[t], t <= 1/2],
   ConditionalExpression[f[t], t >= 1/2]},
  {t, 0, v},
  PlotRange -> {{-1, 1}, {-1, 1}},
  PlotStyle -> {
    Directive[AbsoluteThickness[1], Blue],
    Directive[AbsoluteThickness[3], Red]},
  PlotRangePadding -> Scaled[0.01]],
 {{v, 0.01}, 0.01, 1, 0.01, Appearance -> "Labeled"}]
1 kglr Sep 13 2020 at 07:07

Sie können auch verwenden MeshFunctions, Meshund MeshShadingOptionen wie folgt:

Manipulate[ParametricPlot[f[t], {t, 0, v}, 
   MeshFunctions -> {#3 &}, 
   Mesh -> {{1/2}}, 
   MeshStyle -> None, 
   MeshShading -> {Directive[CapForm["Butt"], AbsoluteThickness[7], Blue], 
      Directive[CapForm["Butt"], AbsoluteThickness[4], 
         Dashing[{Large, Medium}], Red]}, 
   PlotRange -> {{-1, 1}, {-1, 1}} 1.1],
 {{v, 0.01}, 0.01, 1}]

Verwenden

MeshShading -> {Directive[AbsoluteThickness[1], Blue], 
     Directive[AbsoluteThickness[7], Dashing[{Large, Medium}], Opacity[.5, Red]]}

bekommen

SteffenJaeschke Sep 13 2020 at 01:02
f[t_ /; 0 <= t <= 1/2] := ReIm[Exp[2 π I t]]
f[t_ /; 1/2 < t <= 1] := ReIm[Exp[2 π I (1 - t)]]

Manipulate[
 ParametricPlot[f[t], {t, 0, v}, PlotRange -> {{-1, 1}, {-1, 1}}, 
  ColorFunction -> Function[{t}, If[t > 1/4, Blue, Black]], 
  ColorFunctionScaling -> False], {{v, 0.01}, 0.01, 1}]

Manipulate[
 ParametricPlot[f[t], {t, 0, v}, PlotRange -> {{-1, 1}, {-1, 1}}, 
  PlotStyle -> If[v > 1/4, {Blue, Bold}, {Black, Dashed}]], {{v, 
   0.01}, 0.01, 1}]