Interactive Cobweb Diagram
InteractiveDynamics.brainscan_poincaresos
— Functionbrainscan_poincaresos(A::Dataset, j::Int; kwargs...)
brainscan_poincaresos(As::Vector{Dataset}, j::Int; kwargs...)
Launch an interactive application for scanning a Poincare surface of section of A
like a "brain scan", where the plane that defines the section can be arbitrarily moved around via a slider. Return figure, ax3D, ax2D
.
The input dataset must be 3 dimensional, and here the crossing plane is always chosen to be when the j
-th variable of the dataset crosses a predefined value. The slider automatically gets all possible values the j
-th variable can obtain.
If given multiple datasets, the keyword colors
attributes a color to each one, e.g. colors = [JULIADYNAMICS_COLORS[mod1(i, 6)] for i in 1:length(As)]
.
The keywords linekw, scatterkw
are named tuples or dictionaries that are propagated to as keyword arguments to the line and scatter plot respectively, while the keyword direction = -1
is propagated to the function DyamicalSystems.poincaresos
.
The animation at the top of this page was done with
using GLMakie, DynamicalSystems, InteractiveDynamics
using OrdinaryDiffEq
ds = Systems.henonheiles()
diffeq = (alg = Vern9(),)
u0s = [
[0.0, -0.25, 0.42081, 0.0],
[0.0, 0.1, 0.5, 0.0],
[0.0, -0.31596, 0.354461, 0.0591255]
]
trs = [trajectory(ds, 10000, u0; diffeq...)[:, SVector(1,2,3)] for u0 ∈ u0s]
for i in 2:length(u0s)
append!(trs[1], trs[i])
end
# Inputs:
j = 2 # the dimension of the plane
tr = trs[1]
brainscan_poincaresos(tr, j)