Plotting small numbers can cause an error. I get this error fairly often. It com…plicates the construction of complex multi-axis plots when I have to deal with errors popping up in the middle so it would be nice if this could be avoided.
A reproducer was found [on Discourse](https://discourse.julialang.org/t/aog-range-step-cannot-be-zero/87624/12):
```jl
julia> using GLMakie
julia> b = 2.0^(-150)
7.006492321624085e-46
julia> Float32(b) # notice that `b` is the smallest `Float64` such that `Float32(b) != 0.0f0`
1.0f-45
julia> Float32(prevfloat(b)) # here you can see that efectively taking just the previous number bellow `b`, then `Float32(b) == 0.0`
0.0f0
julia> lines([b, b])
Error showing value of type Makie.FigureAxisPlot:
ERROR: ArgumentError: range step cannot be zero
Stacktrace:
[1] (::Colon)(start::Float32, step::Float32, stop::Float32)
@ Base ./twiceprecision.jl:412
[2] get_minor_tickvalues(i::IntervalsBetween, scale::Function, tickvalues::Vector{Float32}, vmin::Float32, vmax::Float32)
@ Makie ~/.julia/packages/Makie/Ppzqh/src/makielayout/lineaxis.jl:670
[3] (::Makie.var"#1179#1192"{Attributes, Observable{Vector{Float32}}, Observable{Tuple{Float32, Float32}}})(tickvalues::Vector{Float32}, minorticks::IntervalsBetween)
@ Makie ~/.julia/packages/Makie/Ppzqh/src/makielayout/lineaxis.jl:394
[4] (::Observables.var"#callback#13"{Makie.var"#1179#1192"{Attributes, Observable{Vector{Float32}}, Observable{Tuple{Float32, Float32}}}, Tuple{Observable{Vector{Float32}}, Observable{Any}}})(x::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:339
[5] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[6] invokelatest
@ ./essentials.jl:726 [inlined]
[7] notify
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:143 [inlined]
[8] setindex!(observable::Observable, val::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:86
[9] update_tickpos_string(closure_args::Tuple{Observable{Vector{AbstractString}}, Observable{Vector{Point{2, Float32}}}, Observable{Vector{Float32}}, Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Tuple{Float32, Float32}}}, tickvalues_labels_unfiltered::Tuple{Vector{Float64}, Vector{String}}, reversed::Bool, scale::typeof(identity))
@ Makie ~/.julia/packages/Makie/Ppzqh/src/makielayout/lineaxis.jl:191
[10] (::Observables.var"#callback#13"{typeof(Makie.update_tickpos_string), Tuple{Observable{Tuple{Observable{Vector{AbstractString}}, Observable{Vector{Point{2, Float32}}}, Observable{Vector{Float32}}, Observable{Tuple{Float32, Tuple{Float32, Float32}, Bool}}, Observable{Tuple{Float32, Float32}}}}, Observable{Tuple{Vector{Float64}, Vector{String}}}, Observable{Any}, Observable{Any}}})(x::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:339
[11] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[12] invokelatest
@ ./essentials.jl:726 [inlined]
[13] notify
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:143 [inlined]
[14] setindex!(observable::Observable, val::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:86
[15] #15
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:393 [inlined]
--- the last 6 lines are repeated 1 more time ---
[22] (::Observables.var"#callback#13"{Observables.var"#15#16"{Makie.var"#1169#1182", Observable{Tuple{Float32, Float32}}}, Tuple{Observable{Any}}})(x::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:339
[23] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[24] invokelatest
@ ./essentials.jl:726 [inlined]
[25] notify
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:143 [inlined]
[26] setindex!(observable::Observable, val::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:86
[27] (::Observables.var"#6#7"{Observable{Any}})(x::Tuple{Float32, Float32})
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:114
[28] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[29] invokelatest
@ ./essentials.jl:726 [inlined]
[30] notify
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:143 [inlined]
[31] setindex!(observable::Observable, val::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:86
[32] #15
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:393 [inlined]
[33] (::Observables.var"#callback#13"{Observables.var"#15#16"{typeof(Makie.ylimits), Observable{Tuple{Float32, Float32}}}, Tuple{Observable{GeometryBasics.HyperRectangle{2, Float32}}}})(x::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:339
[34] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[35] invokelatest
@ ./essentials.jl:726 [inlined]
[36] notify
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:143 [inlined]
[37] setindex!(observable::Observable, val::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:86
[38] adjustlimits!(la::Axis)
@ Makie ~/.julia/packages/Makie/Ppzqh/src/makielayout/blocks/axis.jl:977
[39] #1235
@ ~/.julia/packages/Makie/Ppzqh/src/makielayout/blocks/axis.jl:498 [inlined]
[40] (::Observables.var"#callback#13"{Makie.var"#1235#1265"{Axis}, Tuple{Observable{GeometryBasics.HyperRectangle{2, Int64}}, Observable{GeometryBasics.HyperRectangle{2, Float32}}}})(x::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:339
[41] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[42] invokelatest
@ ./essentials.jl:726 [inlined]
[43] notify
@ ~/.julia/packages/Observables/ynr7h/src/Observables.jl:143 [inlined]
[44] setindex!(observable::Observable, val::Any)
@ Observables ~/.julia/packages/Observables/ynr7h/src/Observables.jl:86
[45] reset_limits!(ax::Axis; xauto::Bool, yauto::Bool, zauto::Bool)
@ Makie ~/.julia/packages/Makie/Ppzqh/src/makielayout/blocks/axis.jl:623
[46] reset_limits!
@ ~/.julia/packages/Makie/Ppzqh/src/makielayout/blocks/axis.jl:547 [inlined]
[47] update_state_before_display!(ax::Axis)
@ Makie ~/.julia/packages/Makie/Ppzqh/src/makielayout/blocks/axis.jl:1351
[48] update_state_before_display!(f::Figure)
@ Makie ~/.julia/packages/Makie/Ppzqh/src/figureplotting.jl:177
[49] update_state_before_display!
@ ~/.julia/packages/Makie/Ppzqh/src/figureplotting.jl:173 [inlined]
[50] backend_display(s::Makie.FigureAxisPlot; kw::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Makie ~/.julia/packages/Makie/Ppzqh/src/display.jl:50
[51] backend_display
@ ~/.julia/packages/Makie/Ppzqh/src/display.jl:49 [inlined]
[52] #display#932
@ ~/.julia/packages/Makie/Ppzqh/src/display.jl:72 [inlined]
[53] display(fig::Makie.FigureAxisPlot)
@ Makie ~/.julia/packages/Makie/Ppzqh/src/display.jl:66
[54] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[55] invokelatest
@ ./essentials.jl:726 [inlined]
[56] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
@ REPL ~/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/REPL/src/REPL.jl:296
[57] (::REPL.var"#45#46"{LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
@ REPL ~/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/REPL/src/REPL.jl:278
[58] with_repl_linfo(f::Any, repl::LineEditREPL)
@ REPL ~/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/REPL/src/REPL.jl:521
[59] print_response(repl::AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
@ REPL ~/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/REPL/src/REPL.jl:276
[60] (::REPL.var"#do_respond#66"{Bool, Bool, REPL.var"#77#87"{LineEditREPL, REPL.REPLHistoryProvider}, LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
@ REPL ~/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/REPL/src/REPL.jl:857
[61] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[62] invokelatest
@ ./essentials.jl:726 [inlined]
[63] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
@ REPL.LineEdit ~/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/REPL/src/LineEdit.jl:2510
[64] run_frontend(repl::LineEditREPL, backend::REPL.REPLBackendRef)
@ REPL ~/.julia/juliaup/julia-1.8.1+0.x64/share/julia/stdlib/v1.8/REPL/src/REPL.jl:1248
```