MakieLayout.jl icon indicating copy to clipboard operation
MakieLayout.jl copied to clipboard

StackOverflowError with lots of layouts & plots

Open IanButterworth opened this issue 4 years ago • 5 comments

I have a layout with 5 sub layouts, each with n different image plots, lineplots, scatter plots that are updated with observables. It's all working really well (🎉) when n<6 but above that, I guess I'm pushing the limits on some indexing because I'm hitting a StackOverflowError.

ERROR: StackOverflowError:
Stacktrace:
 [1] exec(::Ptr{Nothing}, ::String, ::Int64, ::UInt32, ::Ptr{Nothing}) at ./pcre.jl:155
 [2] exec_r_data at ./pcre.jl:172 [inlined]
 [3] match(::Regex, ::String, ::Int64, ::UInt32) at ./regex.jl:277
 [4] match at ./regex.jl:275 [inlined]
 [5] match at ./regex.jl:294 [inlined]
 [6] iswhitespace at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lineaxis.jl:298 [inlined]
 [7] (::MakieLayout.var"#compute_protrusions#185"{Text{...}})(::String, ::Float32, ::Float32, ::Bool, ::Float32, ::Bool, ::Bool, ::Bool, ::Bool, ::Float32, ::Float32, ::Symbol, ::Symbol) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/laxis.jl:289
 [8] (::MakieLayout.var"#162#186"{Observables.Observable{GridLayoutBase.RectSides{Float32}},MakieLayout.var"#compute_protrusions#185"{Text{...}}})(::String, ::Vararg{Any,N} where N) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/laxis.jl:310
 [9] (::Observables.OnUpdate{MakieLayout.var"#162#186"{Observables.Observable{GridLayoutBase.RectSides{Float32}},MakieLayout.var"#compute_protrusions#185"{Text{...}}},Tuple{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Float32},Observables.Observable{Float32},Observables.Observable{Any},Observables.Observable{Any}}})(::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [10] setindex!(::Observables.Observable{Float32}, ::Float32; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [11] setindex!(::Observables.Observable{Float32}, ::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [12] (::Observables.MapUpdater{MakieLayout.var"#116#137"{Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Text{...}},Float32})(::Bool, ::Vararg{Any,N} where N) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:241
 [13] (::Observables.OnUpdate{Observables.MapUpdater{MakieLayout.var"#116#137"{Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Text{...}},Float32},Tuple{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Float32},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any}}})(::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [14] setindex!(::Observables.Observable{Any}, ::Float32; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [15] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [16] (::MakieLayout.var"#98#119"{Observables.Observable{Any}})(::Float32, ::AbstractPlotting.Automatic) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lineaxis.jl:69
 [17] (::Observables.OnUpdate{MakieLayout.var"#98#119"{Observables.Observable{Any}},Tuple{Observables.Observable{Float32},Observables.Observable{Any}}})(::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [18] setindex!(::Observables.Observable{Float32}, ::Float32; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [19] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [20] MapUpdater at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:241 [inlined]
 [21] (::Observables.OnUpdate{Observables.MapUpdater{MakieLayout.var"#97#118"{Observables.Observable{Any},Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Annotations{...}},Float32},Tuple{Observables.Observable{Array{Tuple{String,GeometryBasics.Point{2,Float32}},1}},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any}}})(::Array{Tuple{String,GeometryBasics.Point{2,Float32}},1}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [22] setindex!(::Observables.Observable{Array{Tuple{String,GeometryBasics.Point{2,Float32}},1}}, ::Array{Tuple{String,GeometryBasics.Point{2,Float32}},1}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [23] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [24] (::MakieLayout.var"#109#130"{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Observables.Observable{Array{Tuple{String,GeometryBasics.Point{2,Float32}},1}},Observables.Observable{Float32},Observables.Observable{Array{Float32,1}},Observables.Observable{Array{GeometryBasics.Point{2,Float32},1}}})(::Array{String,1}, ::Float32, ::Bool) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lineaxis.jl:201
 [25] (::Observables.OnUpdate{MakieLayout.var"#109#130"{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Observables.Observable{Array{Tuple{String,GeometryBasics.Point{2,Float32}},1}},Observables.Observable{Float32},Observables.Observable{Array{Float32,1}},Observables.Observable{Array{GeometryBasics.Point{2,Float32},1}}},Tuple{Observables.Observable{Array{String,1}},Observables.Observable{Float32},Observables.Observable{Any}}})(::Array{String,1}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [26] setindex!(::Observables.Observable{Array{String,1}}, ::Array{String,1}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [27] setindex!(::Observables.Observable{Array{String,1}}, ::Array{String,1}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [28] (::MakieLayout.var"#105#126"{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Observables.Observable{Array{Float32,1}},Observables.Observable{Array{GeometryBasics.Point{2,Float32},1}},Observables.Observable{Array{String,1}}})(::Array{Float64,1}, ::Bool, ::AbstractPlotting.Automatic) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lineaxis.jl:180
 [29] (::Observables.OnUpdate{MakieLayout.var"#105#126"{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Observables.Observable{Array{Float32,1}},Observables.Observable{Array{GeometryBasics.Point{2,Float32},1}},Observables.Observable{Array{String,1}}},Tuple{Observables.Observable{Array{Float64,1}},Observables.Observable{Any},Observables.Observable{Any}}})(::Array{Float64,1}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [30] setindex!(::Observables.Observable{Array{Float64,1}}, ::Array{Float64,1}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [31] setindex!(::Observables.Observable{Array{Float64,1}}, ::Array{Float64,1}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [32] (::Observables.MapUpdater{MakieLayout.var"#104#125",Array{Float64,1}})(::Tuple{Float32,Tuple{Float32,Float32},Bool}, ::Vararg{Any,N} where N) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:241
 [33] (::Observables.OnUpdate{Observables.MapUpdater{MakieLayout.var"#104#125",Array{Float64,1}},Tuple{Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Observables.Observable{Any},Observables.Observable{Any}}})(::Tuple{Float32,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [34] setindex!(::Observables.Observable{Any}, ::Tuple{Float32,Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [35] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [36] (::Observables.var"#3#4"{Any,Observables.Observable{Any}})(::Tuple{Float32,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:47
 [37] #invokelatest#1 at ./essentials.jl:712 [inlined]
 [38] invokelatest at ./essentials.jl:711 [inlined]
 [39] setindex!(::Observables.Observable{Tuple{Float32,Float32}}, ::Tuple{Float32,Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:132
 [40] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [41] MapUpdater at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:241 [inlined]
 [42] (::Observables.OnUpdate{Observables.MapUpdater{typeof(MakieLayout.ylimits),Tuple{Float32,Float32}},Tuple{Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}}})(::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [43] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [44] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [45] adjustlimits!(::MakieLayout.LAxis) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/laxis.jl:573
 [46] #163 at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/laxis.jl:339 [inlined]
 [47] (::Observables.OnUpdate{MakieLayout.var"#163#187"{MakieLayout.LAxis},Tuple{Observables.Observable{GeometryBasics.HyperRectangle{2,Int64}},Observables.Observable{Any}}})(::GeometryBasics.HyperRectangle{2,Int64}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [48] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Int64}}, ::GeometryBasics.HyperRectangle{2,Int64}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [49] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [50] MapUpdater at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:241 [inlined]
 [51] (::Observables.OnUpdate{Observables.MapUpdater{AbstractPlotting.var"#70#71",GeometryBasics.HyperRectangle{2,Int64}},Tuple{Observables.Observable{GeometryBasics.HyperRectangle{2,Int64}},Observables.Observable{GeometryBasics.HyperRectangle{2,Int64}}}})(::GeometryBasics.HyperRectangle{2,Int64}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [52] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Int64}}, ::GeometryBasics.HyperRectangle{2,Int64}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [53] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [54] (::MakieLayout.var"#5#6"{Observables.Observable{GeometryBasics.HyperRectangle{2,Int64}}})(::GeometryBasics.HyperRectangle{2,Float32}, ::GeometryBasics.HyperRectangle{2,Float32}, ::Nothing) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/helpers.jl:50
 [55] (::Observables.OnUpdate{MakieLayout.var"#5#6"{Observables.Observable{GeometryBasics.HyperRectangle{2,Int64}}},Tuple{Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}},Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}},Observables.Observable{Any}}})(::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [56] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [57] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [58] (::GridLayoutBase.var"#115#116"{Observables.Observable{Tuple{Any,Any}},Observables.Observable{Tuple{Union{Nothing, Float32},Union{Nothing, Float32}}},Observables.Observable{Any},Observables.Observable{GridLayoutBase.RectSides{Float32}},Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}})(::GeometryBasics.HyperRectangle{2,Float32}, ::Tuple{Symbol,Symbol}, ::Tuple{Nothing,Nothing}) at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/layoutobservables.jl:279
 [59] (::Observables.OnUpdate{GridLayoutBase.var"#115#116"{Observables.Observable{Tuple{Any,Any}},Observables.Observable{Tuple{Union{Nothing, Float32},Union{Nothing, Float32}}},Observables.Observable{Any},Observables.Observable{GridLayoutBase.RectSides{Float32}},Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}},Tuple{Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}},Observables.Observable{Any},Observables.Observable{Tuple{Union{Nothing, Float32},Union{Nothing, Float32}}}}})(::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [60] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [61] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [62] align_to_bbox!(::GridLayoutBase.GridLayout, ::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/gridlayout.jl:700
 [63] (::GridLayoutBase.var"#10#12"{GridLayoutBase.GridLayout})(::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/gridlayout.jl:54
 [64] #invokelatest#1 at ./essentials.jl:712 [inlined]
 [65] invokelatest at ./essentials.jl:711 [inlined]
 [66] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:132
 [67] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [68] (::GridLayoutBase.var"#115#116"{Observables.Observable{Tuple{Any,Any}},Observables.Observable{Tuple{Union{Nothing, Float32},Union{Nothing, Float32}}},Observables.Observable{GridLayoutBase.AlignMode},Observables.Observable{GridLayoutBase.RectSides{Float32}},Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}})(::GeometryBasics.HyperRectangle{2,Float32}, ::Tuple{Symbol,Symbol}, ::Tuple{Nothing,Nothing}) at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/layoutobservables.jl:279
 [69] (::Observables.OnUpdate{GridLayoutBase.var"#115#116"{Observables.Observable{Tuple{Any,Any}},Observables.Observable{Tuple{Union{Nothing, Float32},Union{Nothing, Float32}}},Observables.Observable{GridLayoutBase.AlignMode},Observables.Observable{GridLayoutBase.RectSides{Float32}},Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}},Tuple{Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}},Observables.Observable{Any},Observables.Observable{Tuple{Union{Nothing, Float32},Union{Nothing, Float32}}}}})(::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [70] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [71] setindex!(::Observables.Observable{GeometryBasics.HyperRectangle{2,Float32}}, ::GeometryBasics.HyperRectangle{2,Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [72] (::GridLayoutBase.var"#11#13"{GridLayoutBase.GridLayout})(::Bool) at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/gridlayout.jl:72
 [73] #invokelatest#1 at ./essentials.jl:712 [inlined]
 [74] invokelatest at ./essentials.jl:711 [inlined]
 [75] setindex!(::Observables.Observable{Bool}, ::Bool; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:132
 [76] setindex!(::Observables.Observable{Bool}, ::Bool) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [77] (::GridLayoutBase.var"#18#19"{GridLayoutBase.GridLayout})(::Bool) at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/gridlayout.jl:156
 [78] #invokelatest#1 at ./essentials.jl:712 [inlined]
 [79] invokelatest at ./essentials.jl:711 [inlined]
 [80] setindex!(::Observables.Observable{Bool}, ::Bool; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:132
 [81] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [82] (::GridLayoutBase.var"#14#16"{GridLayoutBase.GridContent{GridLayoutBase.GridLayout,MakieLayout.LAxis}})(::GridLayoutBase.RectSides{Float32}) at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/gridlayout.jl:127
 [83] #invokelatest#1 at ./essentials.jl:712 [inlined]
 [84] invokelatest at ./essentials.jl:711 [inlined]
 [85] setindex!(::Observables.Observable{GridLayoutBase.RectSides{Float32}}, ::GridLayoutBase.RectSides{Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:132
 [86] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [87] #105 at /Users/ian/.julia/packages/GridLayoutBase/Z0vpC/src/layoutobservables.jl:26 [inlined]
 [88] (::Observables.OnUpdate{GridLayoutBase.var"#105#107"{Observables.Observable{GridLayoutBase.RectSides{Float32}}},Tuple{Observables.Observable{GridLayoutBase.RectSides{Float32}},Observables.Observable{Any}}})(::GridLayoutBase.RectSides{Float32}) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [89] setindex!(::Observables.Observable{GridLayoutBase.RectSides{Float32}}, ::GridLayoutBase.RectSides{Float32}; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [90] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 ... (the last 83 lines are repeated 324 more times)
 [26983] (::MakieLayout.var"#162#186"{Observables.Observable{GridLayoutBase.RectSides{Float32}},MakieLayout.var"#compute_protrusions#185"{Text{...}}})(::String, ::Vararg{Any,N} where N) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/laxis.jl:310
 [26984] (::Observables.OnUpdate{MakieLayout.var"#162#186"{Observables.Observable{GridLayoutBase.RectSides{Float32}},MakieLayout.var"#compute_protrusions#185"{Text{...}}},Tuple{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Float32},Observables.Observable{Float32},Observables.Observable{Any},Observables.Observable{Any}}})(::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [26985] setindex!(::Observables.Observable{Float32}, ::Float32; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [26986] setindex!(::Observables.Observable{Float32}, ::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [26987] (::Observables.MapUpdater{MakieLayout.var"#116#137"{Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Text{...}},Float32})(::Bool, ::Vararg{Any,N} where N) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:241
 [26988] (::Observables.OnUpdate{Observables.MapUpdater{MakieLayout.var"#116#137"{Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Text{...}},Float32},Tuple{Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Float32},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any}}})(::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [26989] setindex!(::Observables.Observable{Any}, ::Float32; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [26990] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [26991] (::MakieLayout.var"#98#119"{Observables.Observable{Any}})(::Float32, ::AbstractPlotting.Automatic) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lineaxis.jl:69
 [26992] (::Observables.OnUpdate{MakieLayout.var"#98#119"{Observables.Observable{Any}},Tuple{Observables.Observable{Float32},Observables.Observable{Any}}})(::Float32) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [26993] setindex!(::Observables.Observable{Float32}, ::Float32; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [26994] setindex! at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126 [inlined]
 [26995] MapUpdater at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:241 [inlined]
 [26996] (::Observables.OnUpdate{Observables.MapUpdater{MakieLayout.var"#97#118"{Observables.Observable{Any},Observables.Observable{Tuple{Float32,Tuple{Float32,Float32},Bool}},Annotations{...}},Float32},Tuple{Observables.Observable{Array{Tuple{String,GeometryBasics.Point{2,Float32}},1}},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any},Observables.Observable{Any}}})(::Bool) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:218
 [26997] setindex!(::Observables.Observable{Any}, ::Bool; notify::Observables.var"#6#8") at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:130
 [26998] setindex!(::Observables.Observable{Any}, ::Bool) at /Users/ian/.julia/packages/Observables/0wrF6/src/Observables.jl:126
 [26999] setproperty!(::MakieLayout.LAxis, ::Symbol, ::Bool) at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/lobject.jl:25
 [27000] #hidexdecorations!#201 at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/laxis.jl:803 [inlined]
 [27001] hidexdecorations! at /Users/ian/.julia/packages/MakieLayout/3a66O/src/lobjects/laxis.jl:799 [inlined]

IanButterworth avatar Jun 12 '20 03:06 IanButterworth

This probably happens because the layout is stuck in an infinite update loop where one change causes another. This is a known problem ever since I made the tick label spacing automatic. Are you using aspect = DataAspect() or autolimitaspect = 1? If so, can you try setting those parameters after doing tight_ticklabel_spacing!(ax) with all your LAxes? That keeps the tick labels from readjusting again and again.

jkrumbiegel avatar Jun 12 '20 05:06 jkrumbiegel

Indeed. Doing axReg.autolimitaspect = 1 after hiding the decorations fixed this:

hidexdecorations!(axReg)
hideydecorations!(axReg) 
axReg.autolimitaspect = 1

thanks

IanButterworth avatar Jun 12 '20 12:06 IanButterworth

A general takeaway for me here is that if you're going to hidexdecorations! etc. do it before plotting. It speeds things up a lot, even beyond this issue

IanButterworth avatar Jun 12 '20 12:06 IanButterworth

Does it speed up your code? Hiding decorations still leaves almost all underlying computations intact, the labels are just visually hidden (that's a side effect of using Observables, which are all still connected). Of course, when they're hidden, they don't affect the layout anymore and sparing you the layout recalculations could save some time I guess.

jkrumbiegel avatar Jun 12 '20 15:06 jkrumbiegel

I didn't measure the improvement. It could be placebo..

IanButterworth avatar Jun 12 '20 19:06 IanButterworth