JuliaGeometry/Meshes.jl

Failing to `viz` vector of `Segment`

Closed this issue · 0 comments

julia> si = Segment((1.17891f7, 1.72956f7), (1.17891f7, 1.72954f7))
Segment{2,Float32}
├─ Point(1.17891f7, 1.72956f7)
└─ Point(1.17891f7, 1.72954f7)

julia> sj = Segment((1.17893f7, 1.72956f7), (1.17891f7, 1.72956f7))
Segment{2,Float32}
├─ Point(1.17893f7, 1.72956f7)
└─ Point(1.17891f7, 1.72956f7)

julia> viz([si, sj])
ERROR: `Makie.convert_arguments` for the plot type MakieCore.Lines and its conversion trait MakieCore.PointBased() was unsuccessful.

The signature that could not be converted was:
::Vector{Vec{2}}

Makie needs to convert all plot input arguments to types that can be consumed by the backends (typically Arrays with Float32 elements).
You can define a method for `Makie.convert_arguments` (a type recipe) for these types or their supertypes to make this set of arguments convertible (See http://docs.makie.org/stable/documentation/recipes/index.html).

Alternatively, you can define `Makie.convert_single_argument` for single arguments which have types that are unknown to Makie but which can be converted to known types and fed back to the conversion pipeline.

Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] convert_arguments(T::Type{MakieCore.Lines}, args::Vector{Vec{2}}; kw::@Kwargs{})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:17
  [3] convert_arguments(T::Type{MakieCore.Lines}, args::Vector{Vec{2}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:7
  [4] (MakieCore.Lines)(args::Tuple{Observables.Observable{Vector{Vec{2}}}}, plot_attributes::Dict{Symbol, Any})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:139
  [5] _create_plot!(F::Function, attributes::Dict{…}, scene::MakieCore.Plot{…}, args::Observables.Observable{…})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:264
  [6] lines!(::MakieCore.Plot{…}, ::Vararg{…}; kw::@Kwargs{})
    @ MakieCore ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:176
  [7] vizmesh1D!(plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{2, Float32, Vector{}, SimpleTopology{}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/simplemesh.jl:47
  [8] plot!(plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{2, Float32, Vector{Point2f}, SimpleTopology{Connectivity{}}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/simplemesh.jl:11
  [9] connect_plot!(parent::MakieCore.Plot{Meshes.viz, Tuple{…}}, plot::MakieCore.Plot{Meshes.viz, Tuple{…}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:255
 [10] plot!(scene::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{…}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:260
 [11] _create_plot!(F::Function, attributes::Dict{…}, scene::MakieCore.Plot{…}, args::Observables.Observable{…})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:265
 [12] viz!(::MakieCore.Plot{…}, ::Vararg{…}; kw::@Kwargs{})
    @ MeshesMakieExt ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:176
 [13] vizmany!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, objs::Observables.Observable{Vector{SimpleMesh{…}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/utils.jl:29
 [14] vizgset1D!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, geoms::Observables.Observable{Vector{Segment{…}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/geometryset.jl:88
 [15] plot!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/geometryset.jl:28
 [16] connect_plot!(parent::Makie.Scene, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:255
 [17] plot!
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:260 [inlined]
 [18] plot!(ax::Makie.Axis, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:291
 [19] plot!(fa::Makie.FigureAxis, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:288
 [20] _create_plot(F::Function, attributes::Dict{Symbol, Any}, args::Vector{Segment{2, Float32}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:250
 [21] viz(args::Vector{Segment{2, Float32}})
    @ MeshesMakieExt ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:175
 [22] top-level scope
    @ REPL[47]:1

caused by: MethodError: no method matching convert_arguments(::Type{MakieCore.Lines}, ::Vector{Vec{2}})

Closest candidates are:
  convert_arguments(::Union{Type{Any}, Type{<:MakieCore.AbstractPlot}}, ::AbstractVector, ::Function)
   @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:661
  convert_arguments(::Union{Type{Any}, Type{<:MakieCore.AbstractPlot}}, ::AbstractVector, ::StatsBase.ECDF)
   @ Makie ~/.julia/packages/Makie/QGPt0/src/stats/ecdf.jl:23
  convert_arguments(::Union{Type{Any}, Type{<:MakieCore.AbstractPlot}}, ::Union{IntervalSets.Interval, AbstractVector}, ::Distributions.Distribution)
   @ Makie ~/.julia/packages/Makie/QGPt0/src/stats/distributions.jl:21
  ...

Stacktrace:
  [1] convert_arguments_individually(T::Type{MakieCore.Lines}, args::Vector{Vec{2}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:47
  [2] convert_arguments(T::Type{MakieCore.Lines}, args::Vector{Vec{2}}; kw::@Kwargs{})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:14
  [3] convert_arguments(T::Type{MakieCore.Lines}, args::Vector{Vec{2}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:7
  [4] (MakieCore.Lines)(args::Tuple{Observables.Observable{Vector{Vec{2}}}}, plot_attributes::Dict{Symbol, Any})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:139
  [5] _create_plot!(F::Function, attributes::Dict{…}, scene::MakieCore.Plot{…}, args::Observables.Observable{…})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:264
  [6] lines!(::MakieCore.Plot{…}, ::Vararg{…}; kw::@Kwargs{})
    @ MakieCore ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:176
  [7] vizmesh1D!(plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{2, Float32, Vector{}, SimpleTopology{}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/simplemesh.jl:47
  [8] plot!(plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{2, Float32, Vector{Point2f}, SimpleTopology{Connectivity{}}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/simplemesh.jl:11
  [9] connect_plot!(parent::MakieCore.Plot{Meshes.viz, Tuple{…}}, plot::MakieCore.Plot{Meshes.viz, Tuple{…}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:255
 [10] plot!(scene::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{…}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:260
 [11] _create_plot!(F::Function, attributes::Dict{…}, scene::MakieCore.Plot{…}, args::Observables.Observable{…})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:265
 [12] viz!(::MakieCore.Plot{…}, ::Vararg{…}; kw::@Kwargs{})
    @ MeshesMakieExt ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:176
 [13] vizmany!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, objs::Observables.Observable{Vector{SimpleMesh{…}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/utils.jl:29
 [14] vizgset1D!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, geoms::Observables.Observable{Vector{Segment{…}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/geometryset.jl:88
 [15] plot!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/geometryset.jl:28
 [16] connect_plot!(parent::Makie.Scene, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:255
 [17] plot!
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:260 [inlined]
 [18] plot!(ax::Makie.Axis, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:291
 [19] plot!(fa::Makie.FigureAxis, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:288
 [20] _create_plot(F::Function, attributes::Dict{Symbol, Any}, args::Vector{Segment{2, Float32}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:250
 [21] viz(args::Vector{Segment{2, Float32}})
    @ MeshesMakieExt ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:175
 [22] top-level scope
    @ REPL[47]:1

caused by: MethodError: no method matching convert_arguments(::MakieCore.PointBased, ::Vector{Vec{2}})

Closest candidates are:
  convert_arguments(::MakieCore.PointBased, ::AbstractArray, ::AbstractVector, ::AbstractArray)
   @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:112
  convert_arguments(::MakieCore.PointBased, ::AbstractArray, ::AbstractMatrix, ::AbstractArray)
   @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:120
  convert_arguments(::MakieCore.PointBased, ::Makie.BezierPath)
   @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:274
  ...

Stacktrace:
  [1] convert_arguments(T::Type{MakieCore.Lines}, args::Vector{Vec{2}}; kw::@Kwargs{})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:10
  [2] convert_arguments(T::Type{MakieCore.Lines}, args::Vector{Vec{2}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/conversions.jl:7
  [3] (MakieCore.Lines)(args::Tuple{Observables.Observable{Vector{Vec{2}}}}, plot_attributes::Dict{Symbol, Any})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:139
  [4] _create_plot!(F::Function, attributes::Dict{…}, scene::MakieCore.Plot{…}, args::Observables.Observable{…})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:264
  [5] lines!(::MakieCore.Plot{…}, ::Vararg{…}; kw::@Kwargs{})
    @ MakieCore ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:176
  [6] vizmesh1D!(plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{2, Float32, Vector{}, SimpleTopology{}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/simplemesh.jl:47
  [7] plot!(plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{2, Float32, Vector{Point2f}, SimpleTopology{Connectivity{}}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/simplemesh.jl:11
  [8] connect_plot!(parent::MakieCore.Plot{Meshes.viz, Tuple{…}}, plot::MakieCore.Plot{Meshes.viz, Tuple{…}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:255
  [9] plot!(scene::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, plot::MakieCore.Plot{Meshes.viz, Tuple{SimpleMesh{…}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:260
 [10] _create_plot!(F::Function, attributes::Dict{…}, scene::MakieCore.Plot{…}, args::Observables.Observable{…})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:265
 [11] viz!(::MakieCore.Plot{…}, ::Vararg{…}; kw::@Kwargs{})
    @ MeshesMakieExt ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:176
 [12] vizmany!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, objs::Observables.Observable{Vector{SimpleMesh{…}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/utils.jl:29
 [13] vizgset1D!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{…}}}, geoms::Observables.Observable{Vector{Segment{…}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/geometryset.jl:88
 [14] plot!(plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ MeshesMakieExt ~/.julia/dev/Meshes/ext/geometryset.jl:28
 [15] connect_plot!(parent::Makie.Scene, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:255
 [16] plot!
    @ Makie ~/.julia/packages/Makie/QGPt0/src/interfaces.jl:260 [inlined]
 [17] plot!(ax::Makie.Axis, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:291
 [18] plot!(fa::Makie.FigureAxis, plot::MakieCore.Plot{Meshes.viz, Tuple{GeometrySet{2, Float32, Segment{2, Float32}}}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:288
 [19] _create_plot(F::Function, attributes::Dict{Symbol, Any}, args::Vector{Segment{2, Float32}})
    @ Makie ~/.julia/packages/Makie/QGPt0/src/figureplotting.jl:250
 [20] viz(args::Vector{Segment{2, Float32}})
    @ MeshesMakieExt ~/.julia/packages/MakieCore/UAwps/src/recipes.jl:175
 [21] top-level scope
    @ REPL[47]:1
Some type information was truncated. Use `show(err)` to see complete types.