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.