using CairoMakie, Meshes
odeSol(x, y) = Point2f(-x, 2y) # x'(t) = -x, y'(t) = 2y
fig = Figure(resolution = (600, 400))
ax = Axis(fig[1, 1], xlabel = "x", ylabel = "y", backgroundcolor = :black)
streamplot!(ax, odeSol, -2 .. 4, -2 .. 2, colormap = Reverse(:plasma),
gridsize = (32, 32), arrow_size = 10)
fig
Function passed to streamplot must return Point2 or Point3
Stacktrace:
** [1] error(s::String)**
** @ Base ./error.jl:33**
** [2] streamplot_impl(CallType::Type, f::typeof(odeSol), limits::GeometryBasics.HyperRectangle{2, Int64}, resolutionND::Tuple{Int64, Int64}, stepsize::Float64, maxsteps::Int64, dens::Float64)**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/basic_recipes/streamplot.jl:112**
** [3] (::Makie.var"#611#616")(f::Function, limits::GeometryBasics.HyperRectangle{2, Int64}, resolution::Tuple{Int64, Int64}, stepsize::Float64, maxsteps::Int64, density::Float64)**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/basic_recipes/streamplot.jl:167**
** [4] lift(::Function, ::Observable{typeof(odeSol)}, ::Observable{GeometryBasics.HyperRectangle{2, Int64}}, ::Vararg{Any}; kw::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/interaction/nodes.jl:13**
** [5] lift(::Function, ::Observable{typeof(odeSol)}, ::Observable{GeometryBasics.HyperRectangle{2, Int64}}, ::Observable{Any}, ::Vararg{Observable{Any}})**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/interaction/nodes.jl:10**
** [6] plot!(p::StreamPlot{Tuple{typeof(odeSol), GeometryBasics.HyperRectangle{2, Int64}}})**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/basic_recipes/streamplot.jl:161**
** [7] plot!(scene::Scene, P::Type{StreamPlot{Tuple{typeof(odeSol), IntervalSets.ClosedInterval{Int64}, IntervalSets.ClosedInterval{Int64}}}}, attributes::Attributes, input::Tuple{Observable{typeof(odeSol)}, Observable{IntervalSets.ClosedInterval{Int64}}, Observable{IntervalSets.ClosedInterval{Int64}}}, args::Observable{Tuple{typeof(odeSol), GeometryBasics.HyperRectangle{2, Int64}}})**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/interfaces.jl:787**
** [8] plot!(::Scene, ::Type{StreamPlot}, ::Attributes, ::Function, ::Vararg{Any}; kw_attributes::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/interfaces.jl:698**
** [9] plot!(::Scene, ::Type{StreamPlot}, ::Attributes, ::Function, ::IntervalSets.ClosedInterval{Int64}, ::IntervalSets.ClosedInterval{Int64})**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/interfaces.jl:667**
** [10] plot!(::Axis, ::Type{StreamPlot}, ::Attributes, ::Function, ::Vararg{Any}; kw_attributes::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})**
** @ Makie.MakieLayout ~/.julia/packages/Makie/c5WJV/src/makielayout/layoutables/axis.jl:643**
** [11] plot!(::Axis, ::Type{StreamPlot}, ::Attributes, ::Function, ::IntervalSets.ClosedInterval{Int64}, ::IntervalSets.ClosedInterval{Int64})**
** @ Makie.MakieLayout ~/.julia/packages/Makie/c5WJV/src/makielayout/layoutables/axis.jl:638**
** [12] plot!(::Type{StreamPlot}, ::Axis, ::Function, ::Vararg{Any}; kw_attributes::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol, Symbol}, NamedTuple{(:colormap, :gridsize, :arrow_size), Tuple{Reverse{Symbol}, Tuple{Int64, Int64}, Int64}}})**
** @ Makie.MakieLayout ~/.julia/packages/Makie/c5WJV/src/makielayout/layoutables/axis.jl:655**
** [13] streamplot!(::Axis, ::Vararg{Any}; attributes::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol, Symbol}, NamedTuple{(:colormap, :gridsize, :arrow_size), Tuple{Reverse{Symbol}, Tuple{Int64, Int64}, Int64}}})**
** @ Makie ~/.julia/packages/Makie/c5WJV/src/recipes.jl:19**
** [14] top-level scope**
** @ In[39]:6**
** [15] eval**
** @ ./boot.jl:373 [inlined]**
** [16] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)**
** @ Base ./loading.jl:1196**