Skip to content

[BUG] In plotly backend hline does not work if xticks=:native  #4176

@JakubPorubcansky

Description

@JakubPorubcansky

Details

The following lines of code works

using Plots, Dates
gr()
plot([DateTime(1), DateTime(2)], [1,2], xticks=:native)
hline!([2.])

However, the same code does not work with PlotlyJS backend

using Plots, Dates
plotlyjs()
plot([DateTime(1), DateTime(2)], [1,2], xticks=:native)
hline!([2.])
Error showing value of type Plots.Plot{Plots.PlotlyJSBackend}:
ERROR: InexactError: Int64(NaN)
Stacktrace:
  [1] Int64
    @ .\float.jl:723 [inlined]
  [2] convert
    @ .\number.jl:7 [inlined]
  [3] Millisecond
    @ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Dates\src\types.jl:34 [inlined]
  [4] UTM
    @ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Dates\src\types.jl:76 [inlined]
  [5] datetimeformatter
    @ C:\Users\jakub\.julia\packages\RecipesPipeline\oVorB\src\recipes.jl:7 [inlined]
  [6] #364
    @ C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotly.jl:535 [inlined]
  [7] iterate
    @ .\generator.jl:47 [inlined]
  [8] collect_to!(dest::Vector{String}, itr::Base.Generator{Vector{Float64}, Plots.var"#364#367"{typeof(RecipesPipeline.datetimeformatter)}}, offs::Int64, st::Int64)
    @ Base .\array.jl:728
  [9] collect_to_with_first!
    @ .\array.jl:706 [inlined]
 [10] _collect(c::Vector{Float64}, itr::Base.Generator{Vector{Float64}, Plots.var"#364#367"{typeof(RecipesPipeline.datetimeformatter)}}, #unused#::Base.EltypeUnknown, isz::Base.HasShape{1})
    @ Base .\array.jl:700
 [11] collect_similar
    @ .\array.jl:606 [inlined]
 [12] map
    @ .\abstractarray.jl:2294 [inlined]
 [13] plotly_convert_to_datetime(x::Vector{Float64}, formatter::typeof(RecipesPipeline.datetimeformatter))
    @ Plots C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotly.jl:535
 [14] plotly_native_data(axis::Plots.Axis, data::Vector{Float64})
    @ Plots C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotly.jl:526
 [15] plotly_data(series::Plots.Series, letter::Symbol, data::Vector{Float64})
    @ Plots C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotly.jl:506
 [16] #370
    @ .\none:0 [inlined]
 [17] iterate
    @ .\generator.jl:47 [inlined]
 [18] indexed_iterate(I::Base.Generator{Base.Iterators.Zip{Tuple{Tuple{Symbol, Symbol, Symbol}, Tuple{Vector{Float64}, Vector{Float64}, Nothing}}}, Plots.var"#370#373"{Plots.Series}}, i::Int64)
    @ Base .\tuple.jl:89
 [19] plotly_series(plt::Plots.Plot{Plots.PlotlyJSBackend}, series::Plots.Series)
    @ Plots C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotly.jl:584
 [20] #378
    @ .\array.jl:0 [inlined]
 [21] MappingRF
    @ .\reduce.jl:93 [inlined]
 [22] _foldl_impl(op::Base.MappingRF{Plots.var"#378#379"{Plots.Plot{Plots.PlotlyJSBackend}}, Base.BottomRF{typeof(vcat)}}, init::Base._InitialValue, itr::Vector{Plots.Series})
    @ Base .\reduce.jl:62
 [23] foldl_impl
    @ .\reduce.jl:48 [inlined]
 [24] mapfoldl_impl
    @ .\reduce.jl:44 [inlined]
 [25] #mapfoldl#214
    @ .\reduce.jl:160 [inlined]
 [26] mapfoldl
    @ .\reduce.jl:160 [inlined]
 [27] #mapreduce#218
    @ .\reduce.jl:287 [inlined]
 [28] mapreduce
    @ .\reduce.jl:287 [inlined]
 [29] #reduce#220
    @ .\reduce.jl:456 [inlined]
 [30] reduce
    @ .\reduce.jl:456 [inlined]
 [31] plotly_series
    @ C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotly.jl:1037 [inlined]
 [32] plotlyjs_syncplot(plt::Plots.Plot{Plots.PlotlyJSBackend})
    @ Plots C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotlyjs.jl:9
 [33] _display(plt::Plots.Plot{Plots.PlotlyJSBackend})
    @ Plots C:\Users\jakub\.julia\packages\Plots\8K4be\src\backends\plotlyjs.jl:43
 [34] display(#unused#::Plots.PlotsDisplay, plt::Plots.Plot{Plots.PlotlyJSBackend})
    @ Plots C:\Users\jakub\.julia\packages\Plots\8K4be\src\output.jl:139
 [35] display(x::Any)
    @ Base.Multimedia .\multimedia.jl:328
 [36] #invokelatest#2
    @ .\essentials.jl:708 [inlined]
 [37] invokelatest
    @ .\essentials.jl:706 [inlined]
 [38] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
    @ REPL C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:247
 [39] (::REPL.var"#40#41"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
    @ REPL C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:231
 [40] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:462
 [41] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
    @ REPL C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:229
 [42] (::REPL.var"#do_respond#61"{Bool, Bool, REPL.var"#72#82"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
    @ REPL C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:798
 [43] #invokelatest#2
    @ .\essentials.jl:708 [inlined]
 [44] invokelatest
    @ .\essentials.jl:706 [inlined]
 [45] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
    @ REPL.LineEdit C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\LineEdit.jl:2441
 [46] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
    @ REPL C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:1126
 [47] (::REPL.var"#44#49"{REPL.LineEditREPL, REPL.REPLBackendRef})()
    @ REPL .\task.jl:411

Backends

This bug occurs on ( insert x below )

Backend yes no untested
gr (default) x
pyplot x
plotlyjs x
pgfplotsx x
unicodeplots x
inspectdr x
gaston x

Versions

Plots.jl version: v1.27.1
Backend version (]st -m <backend(s)>): v0.18.8
Output of versioninfo():
Julia Version 1.6.5
Commit 9058264a69 (2021-12-19 12:30 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-11.0.1 (ORCJIT, skylake)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions