AlgebraOfGraphics.jl
AlgebraOfGraphics.jl copied to clipboard
Cannot mix mapping and visual vector keyword parameters
For example, the following shows no output in IJulia:
df = (x=1:2, y=[5,10], s=["a", "b"])
draw(data(df) *
mapping(:x, :y, color=:s) *
visual(Scatter, marker='o', markersize=[20, 30]))
and attempting to save the figure as PNG gives the error
BoundsError: attempt to access 1-element Vector{Point{2, Float32}} at index [2]
Stacktrace
Stacktrace:
[1] getindex
@ ./array.jl:861 [inlined]
[2] attr_broadcast_getindex(x::Vector{Point{2, Float32}}, i::Int64)
@ Makie ~/.julia/packages/Makie/gQOQF/src/utilities/utilities.jl:142
[3] _broadcast_getindex_evalf
@ ./broadcast.jl:670 [inlined]
[4] _broadcast_getindex
@ ./broadcast.jl:643 [inlined]
[5] (::Base.Broadcast.var"#29#30"{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, typeof(Makie.attr_broadcast_getindex), Tuple{Tuple{Vector{Point{2, Float32}}, ColorTypes.RGBA{Float32}, Vector{Int64}, ColorTypes.RGBA{Float32}, Float32, Char, Vector{Vec{2, Float32}}, Quaternionf}, Int64}}})(k::Int64)
@ Base.Broadcast ./broadcast.jl:1075
[6] macro expansion
@ ./ntuple.jl:74 [inlined]
[7] ntuple
@ ./ntuple.jl:69 [inlined]
[8] copy
@ ./broadcast.jl:1075 [inlined]
[9] materialize(bc::Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, typeof(Makie.attr_broadcast_getindex), Tuple{Tuple{Vector{Point{2, Float32}}, ColorTypes.RGBA{Float32}, Vector{Int64}, ColorTypes.RGBA{Float32}, Float32, Char, Vector{Vec{2, Float32}}, Quaternionf}, Int64}})
@ Base.Broadcast ./broadcast.jl:860
[10] broadcast_foreach(::Function, ::Vector{Point{2, Float32}}, ::Vararg{Any})
@ Makie ~/.julia/packages/Makie/gQOQF/src/utilities/utilities.jl:176
[11] draw_atomic(scene::Scene, screen::CairoMakie.CairoScreen{Cairo.CairoSurfaceBase{UInt32}}, primitive::Scatter{Tuple{Vector{Point{2, Float32}}}})
@ CairoMakie ~/.julia/packages/CairoMakie/h8f56/src/primitives.jl:187
[12] draw_plot(scene::Scene, screen::CairoMakie.CairoScreen{Cairo.CairoSurfaceBase{UInt32}}, primitive::Scatter{Tuple{Vector{Point{2, Float32}}}})
@ CairoMakie ~/.julia/packages/CairoMakie/h8f56/src/infrastructure.jl:240
[13] cairo_draw(screen::CairoMakie.CairoScreen{Cairo.CairoSurfaceBase{UInt32}}, scene::Scene)
@ CairoMakie ~/.julia/packages/CairoMakie/h8f56/src/infrastructure.jl:173
[14] backend_show(x::CairoMakie.CairoBackend, io::IOContext{IOStream}, #unused#::MIME{Symbol("image/png")}, scene::Scene)
@ CairoMakie ~/.julia/packages/CairoMakie/h8f56/src/infrastructure.jl:345
[15] show(io::IOContext{IOStream}, m::MIME{Symbol("image/png")}, scene::Scene; update::Bool)
@ Makie ~/.julia/packages/Makie/gQOQF/src/display.jl:113
[16] (::Makie.var"#917#918"{Float64, Float64, Bool, DataType, Scene})(s::IOStream)
@ Makie ~/.julia/packages/Makie/gQOQF/src/display.jl:252
[17] open(::Makie.var"#917#918"{Float64, Float64, Bool, DataType, Scene}, ::String, ::Vararg{String}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Base ./io.jl:330
[18] open
@ ./io.jl:328 [inlined]
[19] save(file::FileIO.File{FileIO.DataFormat{:PNG}, String}, fig::Figure; resolution::Tuple{Int64, Int64}, pt_per_unit::Float64, px_per_unit::Float64, update::Bool)
@ Makie ~/.julia/packages/Makie/gQOQF/src/display.jl:246
[20] save
@ ~/.julia/packages/Makie/gQOQF/src/display.jl:228 [inlined]
[21] #save#40
@ ~/.julia/packages/AlgebraOfGraphics/uTcZk/src/entries.jl:142 [inlined]
[22] save(file::FileIO.File{FileIO.DataFormat{:PNG}, String}, fg::AlgebraOfGraphics.FigureGrid)
@ AlgebraOfGraphics ~/.julia/packages/AlgebraOfGraphics/uTcZk/src/entries.jl:142
[23] save(filename::String, fg::AlgebraOfGraphics.FigureGrid; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ AlgebraOfGraphics ~/.julia/packages/AlgebraOfGraphics/uTcZk/src/entries.jl:138
[24] save(filename::String, fg::AlgebraOfGraphics.FigureGrid)
@ AlgebraOfGraphics ~/.julia/packages/AlgebraOfGraphics/uTcZk/src/entries.jl:138
[25] top-level scope
@ In[18]:7
[26] eval
@ ./boot.jl:373 [inlined]
[27] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
@ Base ./loading.jl:1196
It works fine if the color parameter of mapping is removed:
draw(data(df) *
mapping(:x, :y) *
visual(Scatter, marker='o', markersize=[20, 30]))
It also works if the markersize parameter of visual is removed, or if a scalar is given instead of a vector.