I would like to animate a stochastic process with GLMakie. I have two related questions. First, in the code below, how do I fix the conversion error? Second, how can I programatically generate lines based on the number of columns in the matrix evidence
? The example below has two columns, but there could be fewer or more columns.
Thank you.
Code
using GLMakie
using SequentialSamplingModels
# simulate the decision process
model = RDM()
# evidence is a sample by choice matrix
times, evidence = simulate(model)
idx = Observable(1)
# setup plot accumulator for choice 1
ys_1 = @lift(evidence[$idx,1])
# setup plot accumulator for choice 2
ys_2 = @lift(evidence[$idx,2])
fig = lines(times, ys_1, color = :blue, linewidth = 4,
axis = (title = @lift("t = $(round(times[$idx], digits = 1))"),))
lines!(times, ys_2, color = :red, linewidth = 4)
indices = 1:length(times)
record(fig, "time_animation.mp4", indices;
framerate = length(times)) do i
idx[] = i
end
Error
Summary
ERROR: ArgumentError: Conversion failed for Lines (With conversion trait PointBased()) with args: Tuple{Vector{Float64}, Float64} .
Lines requires to convert to argument types Tuple{AbstractVector{<:Union{Point2, Point3}}}, which convert_arguments didn't succeed in.
To fix this overload convert_arguments(P, args...) for Lines or PointBased() and return an object of type Tuple{AbstractVector{<:Union{Point2, Point3}}}.`
Stacktrace:
[1] conversion_pipeline(P::Type{…}, used_attrs::Tuple{}, args::Tuple{…}, args_obs::Tuple{…}, user_attributes::Dict{…}, deregister::Vector{…}, recursion::Int64)
@ Makie ~/.julia/packages/Makie/GtFuI/src/interfaces.jl:240
[2] conversion_pipeline(P::Type{…}, used_attrs::Tuple{}, args::Tuple{…}, args_obs::Tuple{…}, user_attributes::Dict{…}, deregister::Vector{…}, recursion::Int64)
@ Makie ~/.julia/packages/Makie/GtFuI/src/interfaces.jl:233
[3] conversion_pipeline(P::Type{…}, used_attrs::Tuple{}, args::Tuple{…}, args_obs::Tuple{…}, user_attributes::Dict{…}, deregister::Vector{…})
@ Makie ~/.julia/packages/Makie/GtFuI/src/interfaces.jl:213
[4] (Lines)(user_args::Tuple{Vector{Float64}, Observable{Float64}}, user_attributes::Dict{Symbol, Any})
@ Makie ~/.julia/packages/Makie/GtFuI/src/interfaces.jl:271
[5] _create_plot(::Function, ::Dict{Symbol, Any}, ::Vector{Float64}, ::Vararg{Any})
@ Makie ~/.julia/packages/Makie/GtFuI/src/figureplotting.jl:316
[6] lines(::Vector{Float64}, ::Vararg{Any}; kw::@Kwargs{color::Symbol, linewidth::Int64, axis::@NamedTuple{…}})
@ MakieCore ~/.julia/packages/MakieCore/UpNdE/src/recipes.jl:436
[7] top-level scope
@ ~/.julia/dev/sandbox/turing_predict/example.jl:77
Some type information was truncated. Use `show(err)` to see complete types.