I want to make a parametric plot like this:
ParametricPlot[{{2 t, -10 t^2}, {t, 2 t}}, {t, 0, 2}]
I have tried the following but it doesn't work:
ParametricPlot[{{2 t, -10 t^2}, {t, 2 t}}, {{t, 0, 2}, {t, 4, 7}}]
ConditionalExpression[]
works nicely:
ParametricPlot[{ConditionalExpression[{2 t, -10 t^2}, 0 <= t <= 2],
ConditionalExpression[{t, 2 t}, 4 <= t <= 7]}, {t, 0, 7},
AspectRatio -> 1/GoldenRatio]
Without conditional constructs, just building a list of your functions and limits
intervals = {{{2 t, -10 t^2}, {0, 2}}, {{t, 2 t}, {4, 7}}};
Show[ParametricPlot[#[[1]], Evaluate@{t, Sequence @@ #[[2]]}] & /@ intervals,
PlotRange -> Automatic, AspectRatio -> 1/GoldenRatio]
Edit
You may prefer to use \[FormalT]
instead of simply t
for protection against possible definitions of t
elsewhere.
Edit 2
A more featured implementation, taking the color switching from @Mr's answer and forcing it to cycle so allowing to take any number of curves as argument:
f[{var_, l1_}] := Module[{style = ColorData[1] /@ Range@5},
Show[ParametricPlot[#[[1]], Evaluate@{var, Sequence @@ #[[2]]}] & /@ l1 /.
x_Line :> {First@(style = RotateRight[style]), x},
PlotRange -> Automatic, AspectRatio -> 1/GoldenRatio]]
Usage:
l = {\[FormalT],Array[{{RandomInteger[10]\[FormalT],RandomInteger[{-10,10}]
\[FormalT]^RandomReal[2]},RandomInteger[10,2]}&,10]};
f[l]
t
is defined this fails. I think you should add a Block
or at least a warning. (+1 nevertheless)
$\endgroup$
Apr 3, 2013 at 9:13
\[FormalT]
, but I rather prefer to keep the code clean here
$\endgroup$
Apr 3, 2013 at 9:18
MapThread[]
instead of Map[]
myself...
$\endgroup$
Apr 3, 2013 at 9:41
For version 7 users without ConditionalExpression
there is Piecewise
:
ParametricPlot[
Piecewise[{{{2 t, -10 t^2}, 0 <= t <= 2}, {{t, 2 t}, 4 <= t <= 7}}], {t, 0, 7},
AspectRatio -> 1/GoldenRatio
]
To get separate styles requires additional work:
ParametricPlot[
pwSplit @ Piecewise[{{{2 t, -10 t^2}, 0 <= t <= 2}, {{t, 2 t}, 4 <= t <= 7}}],
{t, 0, 7},
AspectRatio -> 1/GoldenRatio,
PlotStyle -> {Red, Blue},
Evaluated -> True
]
pwSplit
code from here. Or:
Module[{style = {Red, Blue}, i = 1},
ParametricPlot[
Piecewise[{{{2 t, -10 t^2}, 0 <= t <= 2}, {{t, 2 t}, 4 <= t <= 7}}], {t, 0, 7},
AspectRatio -> 1/GoldenRatio
] /. x_Line :> {style[[i++]], x}
]
x_Line :> {First@(style = RotateRight[style]), x}
in your last piece of code?
$\endgroup$
Apr 3, 2013 at 9:29
Mod
.
$\endgroup$
Apr 3, 2013 at 9:34