Small working examples
For more details, see Jupyter notebook.
EDIT: For instructions on how to set up the subplot layout, see Layouts · Plots
The following code is copied from https://diffeq.sciml.ai/stable/basics/plot/#Example
using DifferentialEquations, Plots
function lorenz(du,u,p,t)
du[1] = p[1]*(u[2]-u[1])
du[2] = u[1]*(p[2]-u[3]) - u[2]
du[3] = u[1]*u[2] - p[3]*u[3]
end
u0 = [1., 5., 10.]
tspan = (0., 100.)
p = (10.0,28.0,8/3)
prob = ODEProblem(lorenz, u0, tspan,p)
sol = solve(prob);
Create data of simple arrays for test plotting:
t = range(sol.prob.tspan...; length=10^4+1)
X, Y, Z = ((t -> sol(t)[i]).(t) for i in 1:3)
xlim, ylim, zlim = extrema.((X, Y, Z));
Animate 3D plottings with gr() backend:
gr(fmt = :png)
anim = @animate for i in 1:100:length(X)
@views x, y, z = X[1:i], Y[1:i], Z[1:i]
A = plot(x, y, z; label="", lw=0.5, xlim, ylim, zlim)
B = plot(x, y; label="", lw=0.2, title="x, y", titlefontsize=8, xlim=xlim, ylim=ylim)
C = plot(x, z; label="", lw=0.2, title="x, y", titlefontsize=8, xlim=xlim, ylim=zlim)
D = plot(y, z; label="", lw=0.2, title="x, y", titlefontsize=8, xlim=ylim, ylim=zlim)
layout = @layout [
a{0.7h}
[b c d]
]
plot(A, B, C, D; layout, size=(640, 640))
end
gif(anim, "lorenz2.gif")
Animate rotated 3D plottings with pyplot() backend:
pyplot(fmt = :png)
anim = @animate for (k, i) in enumerate(1:50:length(X))
@views x, y, z = X[1:i], Y[1:i], Z[1:i]
A = plot(x, y, z; label="", lw=0.3, xlim, ylim, zlim, camera=(360k/100, 30))
B = plot(x, y; label="", lw=0.15, title="x, y", titlefontsize=8, xlim=xlim, ylim=ylim)
C = plot(x, z; label="", lw=0.15, title="x, z", titlefontsize=8, xlim=xlim, ylim=zlim)
D = plot(y, z; label="", lw=0.15, title="y, z", titlefontsize=8, xlim=ylim, ylim=zlim)
layout = @layout [a{0.75w} [b; c; d]]
plot(A, B, C, D; layout, size=(720, 500))
end
PyPlot.clf()
gif(anim, "lorenz4.gif")
Small size version (full size version)