```
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**