Since the plotting functionality is implemented as a recipe to Plots.jl, all of the options open to Plots.jl can be used in our plots. In addition, there are special features specifically for differential equation plots. This tutorial will teach some of the most commonly used options. Let's first get the solution to some ODE. Here I will use one of the Lorenz ordinary differential equation. As with all commands in DifferentialEquations.jl, I got a plot of the solution by calling solve
on the problem, and plot
on the solution:
using DifferentialEquations, Plots, ParameterizedFunctions gr() lorenz = @ode_def Lorenz begin dx = σ*(y-x) dy = ρ*x-y-x*z dz = x*y-β*z end σ β ρ p = [10.0,8/3,28] u0 = [1., 5., 10.] tspan = (0., 100.) prob = ODEProblem(lorenz, u0, tspan, p) sol = solve(prob)
retcode: Success Interpolation: automatic order switching interpolation t: 1341-element Array{Float64,1}: 0.0 0.0354861341350177 0.060663987304508726 0.10188870843348657 0.1448498679508511 0.19835698662820245 0.2504996228815297 0.3056774805827286 0.35452829390108126 0.40770996764610945 ⋮ 99.40191484990574 99.47703618501833 99.5658234308723 99.64807844262198 99.72393302893481 99.80148021054468 99.87335069245553 99.95168876649775 100.0 u: 1341-element Array{Array{Float64,1},1}: [1.0, 5.0, 10.0] [2.3156522358261684, 5.897559436807755, 9.406792559102836] [3.237795350433643, 7.041031570475972, 9.233678311348145] [4.993868184294177, 9.832941470623643, 9.626109614367385] [7.42118455058636, 13.9492707343288, 11.582332131961147] [11.459763300544093, 19.75311392425321, 18.104295519177246] [15.47610807576506, 21.51087067675479, 29.88726710651812] [16.447464107891538, 13.124038426772515, 40.97121918674208] [12.877766779212395, 2.6188678957805847, 41.25247282418837] [7.136964977854118, -3.093417466070861, 35.505128642604284] ⋮ [4.7078175125017845, 7.13104508677844, 18.651036529533698] [6.95971825488835, 10.593018553812076, 18.7863316112588] [10.646351699805901, 14.856180479322331, 23.998423289322353] [12.889615395081899, 13.273612975413583, 32.38413265349776] [11.146319066255193, 6.620076861975365, 34.91435700264157] [7.21823680615282, 2.4325891343715225, 31.07382292211859] [4.528555141302391, 1.9195182135779243, 26.403651898710038] [3.35872786591478, 2.855562241006029, 22.042971594934365] [3.3579402595045926, 3.829807498655525, 19.879219936458707]
plot(sol)
Now let's change it to a phase plot. As discussed in the plot functions page, we can use the vars
command to choose the variables to plot. Let's plot variable x
vs variable y
vs variable z
:
plot(sol,vars=(1, 2, 3))