Skip to content

Tyler throws error when plotting in an already displayed figure #157

@felixcremer

Description

@felixcremer

When I plot a Tyler.Map into an already existing figure and axis which are otherwise empty I get the error below.
This only happens if the figure is already displayed. If I suppress the display with a semicolon this doesn't throw an error.
The error doesn't stop the tyler map from functioning.

using Tyler, GLMakie

julia> figure = Figure()

julia> axis = Axis(figure[1, 1])
Axis with 0 plots:


julia> tyler = Tyler.Map(Extent(Y=(-27.0, 0.025), X=(0.04, 38.0)); 
           figure, axis
       )
┌ Error: Failed to update renderobject - skipping update
│   exception =
│    Failed to resolve gl_renderobject:
│    [ComputeEdge] gl_renderobject = #register_robj!##0((space, alpha_colormap, scaled_color, scaled_colorrange, positions_transformed_f32c, faces, normals, texturecoordinates, lowclip_color, highclip_color, nan_color, model_f32c, matcap, diffuse, specular, shininess, backlight, world_normalmatrix, view_normalmatrix, pattern_uv_transform, fetch_pixel, interpolate_in_fragment_shader, uniform_clip_planes, uniform_num_clip_planes, depth_shift, visible, fxaa, resolution, projection, projectionview, view, upvector, eyeposition, view_direction, ), changed, cached)
│      @ /home/fcremer/.julia/packages/GLMakie/vdrwE/src/plot-primitives.jl:245
│    [ComputeEdge] raw_color, scaled_color, fetch_pixel, auto_colorrange = (::MapFunctionWrapper(#register_colormapping!##0))((mesh_color, colorscale, alpha, ), changed, cached)
│      @ unknown method location
│    [ComputeEdge] mesh_color, interpolate_in_fragment_shader = (::MapFunctionWrapper(#register_mesh_decomposition!##2))((arg1, mesh, color, ), changed, cached)
│      @ unknown method location
│    [ComputeEdge] color = (::InputFunctionWrapper(:color, #add_attributes!##8))((color, ), changed, cached)
│      @ /home/fcremer/.julia/packages/Makie/Vn16E/src/compute-plots.jl:642
│    [Input] color = (::InputFunctionWrapper(:color, #add_attributes!##8))(transparent)
│      @ /home/fcremer/.julia/packages/Makie/Vn16E/src/compute-plots.jl:642
│    Due to ERROR: MethodError: Cannot `convert` an object of type Symbol to an object of type ColorTypes.RGBA{Float32}
│    The function `convert` exists, but no method is defined for this combination of argument types.
│    
│    Closest candidates are:
│      (::Type{C})(::Any) where C<:ColorTypes.TransparentColor
│       @ ColorTypes ~/.julia/packages/ColorTypes/L7biZ/src/types.jl:540
│      (::Type{C})(::Any, ::Any) where C<:ColorTypes.TransparentColor
│       @ ColorTypes ~/.julia/packages/ColorTypes/L7biZ/src/types.jl:541
│      (::Type{C})(::Any, ::Any, ::Any, ::Any) where C<:(ColorTypes.TransparentColor{C, T, 4} where {C<:ColorTypes.Color, T})
│       @ ColorTypes ~/.julia/packages/ColorTypes/L7biZ/src/types.jl:543...
│    
│    Stacktrace:
│      [1] setproperty!(x::Base.RefValue{ColorTypes.RGBA{Float32}}, f::Symbol, v::Symbol)
│        @ Base ./Base_compiler.jl:57
│      [2] setindex!(b::Base.RefValue{ColorTypes.RGBA{Float32}}, x::Symbol)
│        @ Base ./refvalue.jl:60
│      [3] resolve!(input::ComputePipeline.Input{ComputePipeline.ComputeGraph})
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:427
│      [4] _resolve!(computed::ComputePipeline.Computed)
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:652
│      [5] foreach
│        @ ./abstractarray.jl:3188 [inlined]
│      [6] (::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}})()
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:661
│      [7] lock(f::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}}, l::ReentrantLock)
│        @ Base ./lock.jl:335
│      [8] resolve!(edge::ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph})
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:659
│      [9] _resolve!(computed::ComputePipeline.Computed)
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:652
│     [10] foreach
│        @ ./abstractarray.jl:3188 [inlined]
│     [11] (::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}})()
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:661
│     [12] lock(f::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}}, l::ReentrantLock)
│        @ Base ./lock.jl:335
│     [13] resolve!(edge::ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph})
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:659
│     [14] _resolve!(computed::ComputePipeline.Computed)
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:652
│     [15] foreach
│        @ ./abstractarray.jl:3188 [inlined]
│     [16] (::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}})()
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:661
│     [17] lock(f::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}}, l::ReentrantLock)
│        @ Base ./lock.jl:335
│     [18] resolve!(edge::ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph})
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:659
│     [19] _resolve!(computed::ComputePipeline.Computed)
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:652
│     [20] foreach
│        @ ./abstractarray.jl:3188 [inlined]
│     [21] (::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}})()
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:661
│     [22] lock(f::ComputePipeline.var"#resolve!##4#resolve!##5"{ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph}}, l::ReentrantLock)
│        @ Base ./lock.jl:335
│     [23] resolve!(edge::ComputePipeline.ComputeEdge{ComputePipeline.ComputeGraph})
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:659
│     [24] _resolve!(computed::ComputePipeline.Computed)
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:652
│     [25] resolve!(computed::ComputePipeline.Computed)
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:644
│     [26] getindex(computed::ComputePipeline.Computed)
│        @ ComputePipeline ~/.julia/packages/ComputePipeline/soTSa/src/ComputePipeline.jl:563
│     [27] (::GLMakie.var"#poll_updates##2#poll_updates##3"{GLMakie.Screen{GLFW.Window}})()
│        @ GLMakie ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:1072
│     [28] with_context(f::GLMakie.var"#poll_updates##2#poll_updates##3"{GLMakie.Screen{GLFW.Window}}, context::GLFW.Window)
│        @ GLMakie.GLAbstraction ~/.julia/packages/GLMakie/vdrwE/src/GLAbstraction/GLAbstraction.jl:59
│     [29] (::GLMakie.var"#poll_updates##0#poll_updates##1"{GLMakie.Screen{GLFW.Window}})()
│        @ GLMakie ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:1063
│     [30] poll_updates
│        @ ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:1062 [inlined]
│     [31] (::GLMakie.var"#on_demand_renderloop##0#on_demand_renderloop##1"{GLMakie.Screen{GLFW.Window}})()
│        @ GLMakie ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:1094
│     [32] with_context(f::GLMakie.var"#on_demand_renderloop##0#on_demand_renderloop##1"{GLMakie.Screen{GLFW.Window}}, context::GLFW.Window)
│        @ GLMakie.GLAbstraction ~/.julia/packages/GLMakie/vdrwE/src/GLAbstraction/GLAbstraction.jl:59
│     [33] on_demand_renderloop(screen::GLMakie.Screen{GLFW.Window})
│        @ GLMakie ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:1092
│     [34] renderloop(screen::GLMakie.Screen{GLFW.Window})
│        @ GLMakie ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:1120
│     [35] (::GLMakie.var"#start_renderloop!##0#start_renderloop!##1"{GLMakie.Screen{GLFW.Window}})()
│        @ GLMakie ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:945
└ @ GLMakie ~/.julia/packages/GLMakie/vdrwE/src/screen.jl:1074

System and Package Information

Pkg.status()
Status `~/.julia/environments/tyler/Project.toml`
  [411431e0] Extents v0.1.6
  [e9467ef8] GLMakie v0.13.8
  [e170d443] Tyler v0.2.5

versioninfo()
Julia Version 1.12.4
Commit 01a2eadb047 (2026-01-06 16:56 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 16 × AMD Ryzen 7 PRO 5850U with Radeon Graphics
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver3)
  GC: Built with stock GC
Threads: 1 default, 1 interactive, 1 GC (on 16 virtual cores)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions