Skip to content

Static Arrays Error with Simple Plot #5429

@matthewgcooper

Description

@matthewgcooper
  • what version of Makie are you running? (0.24.7)
  • can you reproduce the bug with a fresh environment ? (]activate --temp; add Makie)
  • What platform + GPU are you on? (Ubuntu 22.04, Nvidia RTX 2000 Ada)
  • Which backend are you using? (GLMakie)
  • Please provide an minimal example of the failing code. If the problem is with the visualization, please provide a picture or video of it.

A simple line plot does not seem to work with StaticArrays. Here is a minimum working example:

using GLMakie, StaticArrays

fig = Figure()
ax = Axis(fig[1,1])
lines!(ax, SA[1,2,3], SA[1,2,3])
fig

and here is the error below:

ERROR: 1-element ExceptionStack:
MethodError: Cannot `convert` an object of type Point{2, Float64} to an object of type Float32
The function `convert` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  convert(::Type{T}, ::IntervalArithmetic.ExactReal) where T<:Real
   @ IntervalArithmetic ~/.julia/packages/IntervalArithmetic/IbaUP/src/intervals/exact_literals.jl:120
  convert(::Type{T}, ::Unitful.Quantity) where T<:Real
   @ Unitful ~/.julia/packages/Unitful/sxiHA/src/conversion.jl:167
  convert(::Type{T}, ::Unitful.Level) where T<:Real
   @ Unitful ~/.julia/packages/Unitful/sxiHA/src/logarithm.jl:46
  ...

Stacktrace:
  [1] macro expansion
    @ ~/.julia/packages/StaticArraysCore/7xxEJ/src/StaticArraysCore.jl:88 [inlined]
  [2] convert_ntuple
    @ ~/.julia/packages/StaticArraysCore/7xxEJ/src/StaticArraysCore.jl:84 [inlined]
  [3] Point{3, Float32}(x::Tuple{Point{2, Float64}, Point{2, Float64}, Point{2, Float64}})
    @ GeometryBasics ~/.julia/packages/GeometryBasics/yB1f1/src/fixed_arrays.jl:21
  [4] to_ndim(T::Type{Point{3, Float32}}, vec::SVector{3, Point{2, Float64}}, fillval::Int64)
    @ Makie ~/.julia/packages/Makie/UjJJY/src/utilities/utilities.jl:294
  [5] f32_convert
    @ ~/.julia/packages/Makie/UjJJY/src/float32-scaling.jl:240 [inlined]
  [6] apply_transform_and_f32_conversion(float32convert::Makie.LinearScaling, transform_func::Tuple{typeof(identity), typeof(identity)}, model::SMatrix{4, 4, Float64, 16}, data::SVector{3, Point{2, Float64}}, space::Symbol)
    @ Makie ~/.julia/packages/Makie/UjJJY/src/float32-scaling.jl:337
  [7] map(::typeof(Makie.apply_transform_and_f32_conversion), ::Union{Scene, Plot}, ::Observable{Makie.LinearScaling}, ::Observable{Any}, ::Vararg{Any}; ignore_equal_values::Bool, priority::Int64)
    @ Makie ~/.julia/packages/Makie/UjJJY/src/scenes.jl:177
  [8] map
    @ ~/.julia/packages/Makie/UjJJY/src/scenes.jl:174 [inlined]
  [9] apply_transform_and_f32_conversion(plot::Lines{Tuple{SVector{3, Point{2, Float64}}}}, f32c::Observable{Makie.LinearScaling}, data::Observable{SVector{3, Point{2, Float64}}}, space::Observable{Any}, model::Observable{Any})
    @ Makie ~/.julia/packages/Makie/UjJJY/src/float32-scaling.jl:301
 [10] (::GLMakie.var"#draw_atomic##22#draw_atomic##23"{GLMakie.Screen{GLFW.Window}, Scene, Lines{Tuple{SVector{3, Point{2, Float64}}}}})(gl_attributes::Dict{Symbol, Any})
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/drawing_primitives.jl:545
 [11] (::GLMakie.var"#cached_robj!##0#cached_robj!##1"{GLMakie.var"#draw_atomic##22#draw_atomic##23"{GLMakie.Screen{GLFW.Window}, Scene, Lines{Tuple{SVector{…}}}}, GLMakie.Screen{GLFW.Window}, Scene, Lines{Tuple{SVector{3, Point{…}}}}}
)()
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/drawing_primitives.jl:350
 [12] get!(default::GLMakie.var"#cached_robj!##0#cached_robj!##1"{GLMakie.var"#draw_atomic##22#draw_atomic##23"{…}, GLMakie.Screen{…}, Scene, Lines{…}}, h::Dict{UInt64, GLMakie.GLAbstraction.RenderObject}, key::UInt64)
    @ Base ./dict.jl:458
 [13] cached_robj!(robj_func::GLMakie.var"#draw_atomic##22#draw_atomic##23"{GLMakie.Screen{GLFW.Window}, Scene, Lines{Tuple{SVector{…}}}}, screen::GLMakie.Screen{GLFW.Window}, scene::Scene, plot::Lines{Tuple{SVector{3, Point{…}}}})
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/drawing_primitives.jl:233
 [14] draw_atomic(screen::GLMakie.Screen{GLFW.Window}, scene::Scene, plot::Lines)
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/drawing_primitives.jl:511
 [15] insert!(screen::GLMakie.Screen{GLFW.Window}, scene::Scene, x::Plot)
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/drawing_primitives.jl:368
 [16] insertplots!(screen::GLMakie.Screen{GLFW.Window}, scene::Scene)
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/screen.jl:578
 [17] insertplots!(screen::GLMakie.Screen{GLFW.Window}, scene::Scene) (repeats 2 times)
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/screen.jl:581
 [18] display_scene!(screen::GLMakie.Screen{GLFW.Window}, scene::Scene)
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/screen.jl:502
 [19] GLMakie.Screen(scene::Scene, config::GLMakie.ScreenConfig; visible::Nothing, start_renderloop::Bool)
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/screen.jl:520
 [20] GLMakie.Screen(scene::Scene, config::GLMakie.ScreenConfig)
    @ GLMakie ~/.julia/packages/GLMakie/m1hRX/src/screen.jl:515
 [21] getscreen(::Module, ::Scene, ::Dict{Symbol, Any})
    @ Makie ~/.julia/packages/Makie/UjJJY/src/display.jl:436
 [22] display(figlike::Figure; backend::Module, inline::Bool, update::Bool, screen_config::@Kwargs{})
    @ Makie ~/.julia/packages/Makie/UjJJY/src/display.jl:165
 [23] display(figlike::Figure)
    @ Makie ~/.julia/packages/Makie/UjJJY/src/display.jl:130
 [24] (::REPL.var"#print_response##2#print_response##3")()
    @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:590
 [25] repl_backend_loop(backend::REPL.REPLBackend, get_module::Function)
    @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:445
 [26] start_repl_backend(backend::REPL.REPLBackend, consumer::Any; get_module::Function)
    @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:427
 [27] start_repl_backend
    @ ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:424 [inlined]
 [28] run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool, backend::Any)
    @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:653
 [29] run_repl(repl::REPL.AbstractREPL, consumer::Any)
    @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:639
 [30] run_std_repl(REPL::Module, quiet::Bool, banner::Symbol, history_file::Bool)
    @ Base ./client.jl:478
 [31] run_main_repl(interactive::Bool, quiet::Bool, banner::Symbol, history_file::Bool)
    @ Base ./client.jl:499
 [32] repl_main
    @ ./client.jl:586 [inlined]
 [33] _start()
    @ Base ./client.jl:561
Stacktrace:
 [1] print_response(errio::IO, response::Any, backend::Union{Nothing, REPL.REPLBackendRef}, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
   @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:599
 [2] (::REPL.var"#print_response##0#print_response##1"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
   @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:558
 [3] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
   @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:833
 [4] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
   @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:556
 [5] (::REPL.var"#do_respond#73"{Bool, Bool, REPL.var"#setup_interface##12#setup_interface##13"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
   @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:1192
 [6] run_interface(terminal::Base.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
   @ REPL.LineEdit ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/LineEdit.jl:2854
 [7] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
   @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:1663
 [8] (::REPL.var"#61#62"{REPL.LineEditREPL, REPL.REPLBackendRef})()
   @ REPL ~/.julia/juliaup/julia-1.12.2+0.x64.linux.gnu/share/julia/stdlib/v1.12/REPL/src/REPL.jl:650
Some type information was truncated. Use `show(err)` to see complete types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions