Then add some salt
q = 20;
pos = Table[.1 i, {i, q}];
{start, end} = RandomReal[1, {2, q}];
pts[i_Integer, t_Real] := {pos[[i]], (1 - t) start[[i]] + t end[[i]]}
c[t_Real] := Interpolation[Table[pts[i, t], {i, q}], Method -> "Spline"];
Manipulate[
Plot[c[t][x], {x, 0.1, 2},
PlotRange -> {{0, 2.1}, {-.5, 1.2}},
Epilog -> {
Red, PointSize[0.01], Point@Table[pts[i, t], {i, q}],
Green, Line@Partition[Riffle[Transpose[{pos, start}], Transpose[{pos, end}]], 2]
}],
{t, 0.01, .99, .05}]
Edit
Found some code I used in a project eons ago. You could do very weird things with your points' trajectories if you take some precautions:
(*Let's create a points file sample *)
s = Transpose@Table[{i + Cos[2 Pi k/10], Sin[2 Pi i/10] + Sin[2 Pi (k + 3)/10]},
{i, 0, 10, 1.}, {k, 0, 10, 1.}];
Export["c:\\table.csv", Flatten[s, 1]];
ClearAll[s];
(*Main fun def*)
maniPointPlot[pts_, n_] := Module[{sets, steps, curve, pp, enlarge, bounds, apt},
sets = MapIndexed[{#2[[1]], #1} &, Partition[pts, n], {2}];(*Add time indicator*)
bounds = {Min@#, Max@#} & /@ Transpose@pts;(*Bounds for Plot*)
steps = Length@sets;(*Time span*)
(*Memoize Positions of point # over time " / All Points Together*)
apt[t_] := apt[t] = Interpolation[#, Method -> "Spline"][t] & /@ Transpose@sets;
(*Curve at time t*)
curve[t_] := Interpolation[apt@t, Method -> "Spline"];
(*aux func for interval dilation*)
enlarge[{a_, b_}] := {a - #, b + #} &@(Abs[b - a]/10);
(*Green Points traces*)
pp = ParametricPlot[apt@t, {t, 1, steps}, ColorFunction -> (Green &)];
(*Our little beast follows*)
Manipulate[
Show@{Plot[curve[t][x], Evaluate@{x, Sequence@@bounds[[1]]}, PlotRange -> enlarge /@ bounds],
Graphics[Point@apt@t],
pp}, {t, 1, steps}]];
(*Now your code*)
s = Import["c:\\table.csv"]; (*Read the table*)
nbr = 11; (*number of points in each set*)
Off[InterpolatingFunction::dmval];
maniPointPlot[s, nbr]
Cozy crawling cardioids:
Map[ListPlot, {t1Points, t2Points, ...}]
and then useListAnimate[]
on those... $\endgroup$