Makie.jl
Makie.jl copied to clipboard
Sometimes units are not handled
I encountered this strange inconsistency:
# works:
julia> scatter([1u"m"], [2])
# works:
julia> scatter([(1, 2)])
# doesn't work:
julia> scatter([(1u"m", 2)])
ERROR: ArgumentError: Conversion failed for Scatter (With conversion trait PointBased()) with args: Tuple{Vector{Tuple{Quantity{Int64, 𝐋, Unitful.FreeUnits{(m,), 𝐋, nothing}}, Int64}}} .
Scatter requires to convert to argument types Tuple{AbstractVector{<:Union{Point2, Point3}}}, which convert_arguments didn't succeed in.
To fix this overload convert_arguments(P, args...) for Scatter or PointBased() and return an object of type Tuple{AbstractVector{<:Union{Point2, Point3}}}.`
I guess it's an omission somewhere in the pipeline? The pipeline is quite involved, so not sure where exactly.
- [x] are you running newest version (version from docs) ?
- [x] can you reproduce the bug with a fresh environment ? (
]activate --temp; add Makie) - [x] What platform + GPU are you on?
No, this is expected and discussed in the current limitation in the docs and Blogpost. Its just much more complicated to handle those cases, and there wasn't much time to implement this feature already ;)
perhaps worth noting that the first "working" example does not work for DynamicQuantities.jl (but does for Unitful.jl):
julia> using DynamicQuantities, GLMakie
julia> scatter([1u"m"], [2])
ERROR: ArgumentError: Conversion failed for Scatter (With conversion trait PointBased()) with args: Tuple{Vector{Quantity{Float64, Dimensions{FixedRational{Int32, 25200}}}}, Vector{Int64}} .
Scatter requires to convert to argument types Tuple{AbstractVector{<:Union{Point2, Point3}}}, which convert_arguments didn't succeed in.
To fix this overload convert_arguments(P, args...) for Scatter or PointBased() and return an object of type Tuple{AbstractVector{<:Union{Point2, Point3}}}.`
Makie only claims to support Unitful, so I implicitly assumed Unitful in this issue. Probably, makes sense to handle any alternative unit packages separately?..
Yea, have some DQ support in the works here, but still early days. The scatter([1u"m"], [2]) example should work in that PR. Feedback welcome =]