Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Errors from tick formatting with yscale=log10 #1490

Closed
glwagner opened this issue Dec 1, 2021 · 1 comment
Closed

Errors from tick formatting with yscale=log10 #1490

glwagner opened this issue Dec 1, 2021 · 1 comment

Comments

@glwagner
Copy link

glwagner commented Dec 1, 2021

lines throws a few different errors under some conditions when data is closely spaced and axis = (; yscale=log10) is provided. For example,

julia> lines(1:3, 10000 .+ rand(3), axis = (; yscale=log10))
ERROR: Char × doesn't have a unicode superscript
Click to see the whole stacktrace.
julia> lines(1:3, 10000 .+ rand(3), axis = (; yscale=log10))
ERROR: Char × doesn't have a unicode superscript
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] to_superscript
    @ ~/.julia/packages/UnicodeFun/QjvWn/src/sub_super_scripts.jl:166 [inlined]
  [3] to_superscript(io::IOBuffer, x::String)
    @ UnicodeFun ~/.julia/packages/UnicodeFun/QjvWn/src/sub_super_scripts.jl:13
  [4] (::UnicodeFun.var"#7#8"{String})(io::IOBuffer)
    @ UnicodeFun ~/.julia/packages/UnicodeFun/QjvWn/src/sub_super_scripts.jl:9
  [5] sprint(::Function; context::Nothing, sizehint::Int64)
    @ Base ./strings/io.jl:105
  [6] sprint
    @ ./strings/io.jl:101 [inlined]
  [7] to_superscript
    @ ~/.julia/packages/UnicodeFun/QjvWn/src/sub_super_scripts.jl:9 [inlined]
  [8] _broadcast_getindex_evalf
    @ ./broadcast.jl:648 [inlined]
  [9] _broadcast_getindex
    @ ./broadcast.jl:621 [inlined]
 [10] _getindex
    @ ./broadcast.jl:645 [inlined]
 [11] _getindex
    @ ./broadcast.jl:644 [inlined]
 [12] _broadcast_getindex
    @ ./broadcast.jl:620 [inlined]
 [13] getindex
    @ ./broadcast.jl:575 [inlined]
 [14] macro expansion
    @ ./broadcast.jl:984 [inlined]
 [15] macro expansion
    @ ./simdloop.jl:77 [inlined]
 [16] copyto!
    @ ./broadcast.jl:983 [inlined]
 [17] copyto!
    @ ./broadcast.jl:936 [inlined]
 [18] copy
    @ ./broadcast.jl:908 [inlined]
 [19] materialize
    @ ./broadcast.jl:883 [inlined]
 [20] get_ticks(l::LogTicks{WilkinsonTicks}, scale::typeof(log10), #unused#::MakieCore.Automatic, vmin::Float32, vmax::Float32)
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/lineaxis.jl:506
 [21] get_ticks(#unused#::MakieCore.Automatic, scale::typeof(log10), any_formatter::MakieCore.Automatic, vmin::Float32, vmax::Float32)
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/lineaxis.jl:496
 [22] (::Makie.MakieLayout.var"#177#208")(::Tuple{Float32, Tuple{Float32, Float32}, Bool}, limits::Tuple{Float32, Float32}, ticks::MakieCore.Automatic, tickformat::MakieCore.Automatic, scale::Function)
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/lineaxis.jl:187
 [23] (::Observables.MapUpdater{Makie.MakieLayout.var"#177#208", Tuple{Vector{Float64}, Vector{String}}})(::Tuple{Float32, Tuple{Float32, Float32}, Bool}, ::Vararg{Any, N} where N)
    @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:372
 [24] (::Observables.OnUpdate{Observables.MapUpdater{Makie.MakieLayout.var"#177#208", Tuple{Vector{Float64}, Vector{String}}}, Tuple{Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}, Observable{Any}, Observable{Any}, Observable{Any}}})(#unused#::Tuple{Float32, Float32})
    @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:334
 [25] #invokelatest#2
    @ ./essentials.jl:708 [inlined]
 [26] invokelatest
    @ ./essentials.jl:706 [inlined]
 [27] notify
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined]
 [28] setindex!
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined]
 [29] (::Observables.var"#3#4"{Any, Observable{Any}})(value::Tuple{Float32, Float32})
    @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:58
 [30] #invokelatest#2
    @ ./essentials.jl:708 [inlined]
 [31] invokelatest
    @ ./essentials.jl:706 [inlined]
 [32] notify
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined]
 [33] setindex!
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined]
 [34] (::Makie.MakieLayout.var"#254#285"{Observable{Tuple{Float32, Float32}}, Observable{Tuple{Float32, Float32}}})(lims::GeometryBasics.HyperRectangle{2, Float32})
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:207
 [35] #invokelatest#2
    @ ./essentials.jl:708 [inlined]
 [36] invokelatest
    @ ./essentials.jl:706 [inlined]
 [37] notify
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined]
 [38] setindex!
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined]
 [39] adjustlimits!(la::Axis)
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:916
 [40] #268
    @ ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:447 [inlined]
 [41] (::Observables.OnUpdate{Makie.MakieLayout.var"#268#301"{Axis}, Tuple{Observable{GeometryBasics.HyperRectangle{2, Int64}}, Observable{GeometryBasics.HyperRectangle{2, Float32}}}})(#unused#::GeometryBasics.HyperRectangle{2, Float32})
    @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:334
 [42] #invokelatest#2
    @ ./essentials.jl:708 [inlined]
 [43] invokelatest
    @ ./essentials.jl:706 [inlined]
 [44] notify
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined]
 [45] setindex!
    @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined]
 [46] reset_limits!(ax::Axis; xauto::Bool, yauto::Bool, zauto::Bool)
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:547
 [47] reset_limits!
    @ ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:472 [inlined]
 [48] plot!(::Axis, ::Type{Lines{ArgType} where ArgType}, ::Attributes, ::UnitRange{Int64}, ::Vararg{Any, N} where N; kw_attributes::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:664
 [49] plot!(::Axis, ::Type{Lines{ArgType} where ArgType}, ::Attributes, ::UnitRange{Int64}, ::Vector{Float64})
    @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:653
 [50] plot(::Type{Lines{ArgType} where ArgType}, ::UnitRange{Int64}, ::Vararg{Any, N} where N; axis::NamedTuple{(:yscale,), Tuple{typeof(log10)}}, figure::NamedTuple{(), Tuple{}}, kw_attributes::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Makie ~/.julia/packages/Makie/NL7Xw/src/figureplotting.jl:38
 [51] lines(::UnitRange{Int64}, ::Vararg{Any, N} where N; attributes::Base.Iterators.Pairs{Symbol, NamedTuple{(:yscale,), Tuple{typeof(log10)}}, Tuple{Symbol}, NamedTuple{(:axis,), Tuple{NamedTuple{(:yscale,), Tuple{typeof(log10)}}}}})
    @ MakieCore ~/.julia/packages/MakieCore/S8PkO/src/recipes.jl:31

However, this works:

julia> lines(1:3, 1000 .+ rand(3), axis = (; yscale=log10))

as does

julia> lines(1:3, 10000 .+ rand(3))

and

julia> lines(1:3, 10000000 .+ rand(3), axis = (; yscale=log10))

So this error only occurs with axis = (; yscale=log10) and for intermediate parameters.

In the course of preparing this MWE I also found another error:

julia> lines(1:10, 1 .+ 1e-9 * rand(10), axis = (; yscale=log10))
ERROR: Invalid text boundingbox
Click to see the whole stacktrace! ```julia julia> lines(1:10, 1 .+ 1e-9 * rand(10), axis = (; yscale=log10)) ERROR: Invalid text boundingbox Stacktrace: [1] error(s::String) @ Base ./error.jl:33 [2] boundingbox(glyphcollection::Makie.GlyphCollection, position::Point{3, Float32}, rotation::Quaternionf0) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/boundingbox.jl:121 [3] (::Makie.var"#725#726")(layout::Makie.GlyphCollection, pos::Point{3, Float32}, rot::Quaternionf0) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/boundingbox.jl:133 [4] broadcast_foreach(::Function, ::Vector{Makie.GlyphCollection}, ::Vararg{Any, N} where N) @ Makie ~/.julia/packages/Makie/NL7Xw/src/utilities/utilities.jl:176 [5] boundingbox(layouts::Vector{Makie.GlyphCollection}, positions::Vector{Point{3, Float32}}, rotations::Quaternionf0) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/boundingbox.jl:131 [6] boundingbox(x::MakieCore.Text{Tuple{Vector{Makie.GlyphCollection}}}) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/boundingbox.jl:152 [7] atomic_limits(x::MakieCore.Text{Tuple{Vector{Makie.GlyphCollection}}}) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/data_limits.jl:128 [8] data_limits(x::MakieCore.Text{Tuple{Vector{Makie.GlyphCollection}}}) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/data_limits.jl:9 [9] data_limits(plots::Vector{AbstractPlot}) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/data_limits.jl:156 --- the last 2 lines are repeated 1 more time --- [12] data_limits @ ~/.julia/packages/Makie/NL7Xw/src/layouting/data_limits.jl:9 [inlined] [13] raw_boundingbox @ ~/.julia/packages/Makie/NL7Xw/src/layouting/boundingbox.jl:6 [inlined] [14] boundingbox(x::MakieCore.Text{Tuple{Vector{Tuple{AbstractString, Point{2, Float32}}}}}) @ Makie ~/.julia/packages/Makie/NL7Xw/src/layouting/boundingbox.jl:39 [15] (::Makie.MakieLayout.var"#170#201"{Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}})(::Vector{Tuple{AbstractString, Point{2, Float32}}}, ::Vararg{Any, N} where N) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/lineaxis.jl:93 [16] (::Observables.MapUpdater{Makie.MakieLayout.var"#170#201"{Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}}, Float32})(::Vector{Tuple{AbstractString, Point{2, Float32}}}, ::Vararg{Any, N} where N) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:372 [17] (::Observables.OnUpdate{Observables.MapUpdater{Makie.MakieLayout.var"#170#201"{Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}}, Float32}, Tuple{Observable{Vector{Tuple{AbstractString, Point{2, Float32}}}}, Observable{Any}, Observable{Any}, Observable{Any}, Observable{Any}}})(#unused#::Vector{Tuple{AbstractString, Point{2, Float32}}}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:334 [18] #invokelatest#2 @ ./essentials.jl:708 [inlined] [19] invokelatest @ ./essentials.jl:706 [inlined] [20] notify @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined] [21] setindex! @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined] [22] (::Makie.MakieLayout.var"#191#222"{Observable{Vector{Point{2, Float32}}}, Observable{Vector{Float32}}, Observable{Float32}, Observable{Vector{Tuple{AbstractString, Point{2, Float32}}}}, Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}, Observable{Any}})(tickstrings::Vector{AbstractString}, labelgap::Float32, flipped::Bool) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/lineaxis.jl:301 [23] (::Observables.OnUpdate{Makie.MakieLayout.var"#191#222"{Observable{Vector{Point{2, Float32}}}, Observable{Vector{Float32}}, Observable{Float32}, Observable{Vector{Tuple{AbstractString, Point{2, Float32}}}}, Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}, Observable{Any}}, Tuple{Observable{Vector{AbstractString}}, Observable{Float32}, Observable{Any}}})(#unused#::Vector{AbstractString}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:334 [24] #invokelatest#2 @ ./essentials.jl:708 [inlined] [25] invokelatest @ ./essentials.jl:706 [inlined] [26] notify @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined] [27] setindex!(observable::Observable{Vector{AbstractString}}, val::Vector{String}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [28] (::Makie.MakieLayout.var"#178#209"{Observable{Vector{AbstractString}}, Observable{Vector{Point{2, Float32}}}, Observable{Vector{Float32}}, Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}, Attributes})(tickvalues_labels_unfiltered::Tuple{Vector{Float64}, Vector{String}}, reversed::Bool) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/lineaxis.jl:232 [29] (::Observables.OnUpdate{Makie.MakieLayout.var"#178#209"{Observable{Vector{AbstractString}}, Observable{Vector{Point{2, Float32}}}, Observable{Vector{Float32}}, Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}, Attributes}, Tuple{Observable{Tuple{Vector{Float64}, Vector{String}}}, Observable{Any}}})(#unused#::Tuple{Vector{Float64}, Vector{String}}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:334 [30] #invokelatest#2 @ ./essentials.jl:708 [inlined] [31] invokelatest @ ./essentials.jl:706 [inlined] [32] notify @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined] [33] setindex!(observable::Observable{Tuple{Vector{Float64}, Vector{String}}}, val::Tuple{Vector{Float64}, Vector{String}}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [34] (::Observables.MapUpdater{Makie.MakieLayout.var"#177#208", Tuple{Vector{Float64}, Vector{String}}})(::Tuple{Float32, Tuple{Float32, Float32}, Bool}, ::Vararg{Any, N} where N) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:372 [35] (::Observables.OnUpdate{Observables.MapUpdater{Makie.MakieLayout.var"#177#208", Tuple{Vector{Float64}, Vector{String}}}, Tuple{Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Any}, Observable{Any}, Observable{Any}, Observable{Any}}})(#unused#::Tuple{Float32, Float32}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:334 [36] #invokelatest#2 @ ./essentials.jl:708 [inlined] [37] invokelatest @ ./essentials.jl:706 [inlined] [38] notify @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined] [39] setindex! @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined] [40] (::Observables.var"#3#4"{Any, Observable{Any}})(value::Tuple{Float32, Float32}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:58 [41] #invokelatest#2 @ ./essentials.jl:708 [inlined] [42] invokelatest @ ./essentials.jl:706 [inlined] [43] notify @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined] [44] setindex! @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined] [45] (::Makie.MakieLayout.var"#254#285"{Observable{Tuple{Float32, Float32}}, Observable{Tuple{Float32, Float32}}})(lims::GeometryBasics.HyperRectangle{2, Float32}) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:207 [46] #invokelatest#2 @ ./essentials.jl:708 [inlined] [47] invokelatest @ ./essentials.jl:706 [inlined] [48] notify @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined] [49] setindex! @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined] [50] adjustlimits!(la::Axis) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:916 [51] #268 @ ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:447 [inlined] [52] (::Observables.OnUpdate{Makie.MakieLayout.var"#268#301"{Axis}, Tuple{Observable{GeometryBasics.HyperRectangle{2, Int64}}, Observable{GeometryBasics.HyperRectangle{2, Float32}}}})(#unused#::GeometryBasics.HyperRectangle{2, Float32}) @ Observables ~/.julia/packages/Observables/OFj0u/src/Observables.jl:334 [53] #invokelatest#2 @ ./essentials.jl:708 [inlined] [54] invokelatest @ ./essentials.jl:706 [inlined] [55] notify @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:88 [inlined] [56] setindex! @ ~/.julia/packages/Observables/OFj0u/src/Observables.jl:248 [inlined] [57] reset_limits!(ax::Axis; xauto::Bool, yauto::Bool, zauto::Bool) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:547 [58] reset_limits! @ ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:472 [inlined] [59] plot!(::Axis, ::Type{Lines{ArgType} where ArgType}, ::Attributes, ::UnitRange{Int64}, ::Vararg{Any, N} where N; kw_attributes::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:664 [60] plot!(::Axis, ::Type{Lines{ArgType} where ArgType}, ::Attributes, ::UnitRange{Int64}, ::Vector{Float64}) @ Makie.MakieLayout ~/.julia/packages/Makie/NL7Xw/src/makielayout/layoutables/axis.jl:653 [61] plot(::Type{Lines{ArgType} where ArgType}, ::UnitRange{Int64}, ::Vararg{Any, N} where N; axis::NamedTuple{(:yscale,), Tuple{typeof(log10)}}, figure::NamedTuple{(), Tuple{}}, kw_attributes::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ Makie ~/.julia/packages/Makie/NL7Xw/src/figureplotting.jl:38 [62] lines(::UnitRange{Int64}, ::Vararg{Any, N} where N; attributes::Base.Iterators.Pairs{Symbol, NamedTuple{(:yscale,), Tuple{typeof(log10)}}, Tuple{Symbol}, NamedTuple{(:axis,), Tuple{NamedTuple{(:yscale,), Tuple{typeof(log10)}}}}}) @ MakieCore ~/.julia/packages/MakieCore/S8PkO/src/recipes.jl:31 ```

But I don't know if it's related.

@jkrumbiegel
Copy link
Collaborator

Fixed in #1487

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants