Thanks to all for the answers. After looking more into this, I think I found a method that works for me. I thought I describe it here. The idea is to use `ListPlot3D` with `DataRange->All`. But to use this, I needed to modify my data structure a little to make each entry in the list as `{x,time,u(x,t)}`. Not a big problem for me to do that. Here is an animation of some made up function in time, showing the 3D view of the solution in time with the normal 2D view on the side. Below that I post the example code which generated this: ![enter image description here][1] and the code (just for illustration of the method) make up the data 1 = .05; f2 = .2; simulationTime = 20; u = N@Table[ Table[{x, t, Exp[-.01 t] Cos[f1 t x ] Sin[ f2 t x ]}, {x, -2 Pi, 2 Pi, .2}], {t, 0, simulationTime, .1}]; do the animation Grid[{ { Animate[ListPlot3D[u[[1 ;; i]], AxesLabel -> {"x", "time", "u(x,t)"}, PlotLabel -> Row[{"u(x,t) at time ", u[[i]][[1, 2]], " sec"}], MaxPlotPoints -> 10, PlotRange -> {{-2 Pi, 2 Pi}, {0, simulationTime}, {-1, 1}}, DataRange -> All, PerformanceGoal -> "Quality", Mesh -> Automatic ], {i, 2, Length[u], 1} ] , Animate[ListPlot[u[[i, All, {1, 3}]], AxesLabel -> {"x", Row[{"u(x) at time ", u[[i]][[1, 2]], " sec"}]}, PlotRange -> {{-2 Pi, 2 Pi}, {-1, 1}}, Joined -> True, Mesh -> All ], {i, 2, Length[u], 1} ] } }] [1]: https://i.sstatic.net/5UVGe.gif