diff --git a/CHANGELOG.md b/CHANGELOG.md index 53f8b34aa..5d6764499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v0.9.2 - 2025-02-03 + +- Fixed `data(...) * mapping(col => func => label => scale)` label-extraction bug [#596](https://github.com/MakieOrg/AlgebraOfGraphics.jl/pull/596). + ## v0.9.1 - 2025-01-31 - Fixed passing `axis` keyword to `draw(::Pagination, ...)` [#595](https://github.com/MakieOrg/AlgebraOfGraphics.jl/pull/595). diff --git a/Project.toml b/Project.toml index 261ae1fff..299f7a98c 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "AlgebraOfGraphics" uuid = "cbdf2221-f076-402e-a563-3d30da359d67" authors = ["Pietro Vertechi", "Julius Krumbiegel"] -version = "0.9.1" +version = "0.9.2" [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" diff --git a/src/algebra/select.jl b/src/algebra/select.jl index 27df56a85..813227bde 100644 --- a/src/algebra/select.jl +++ b/src/algebra/select.jl @@ -100,6 +100,12 @@ function select(data, x::Pair{<:Any, <:Pair{<:Any, ScaleID}}) return vs => transf => label => x[2][2] end +function select(data, x::Pair{<:Any, <:Pair{<:Any, <:Pair{<:Any, ScaleID}}}) + (col, (f, (lbl, id))) = x + (vs, (transf, (label, _))) = select(data, col => f => lbl) + return vs => transf => label => id +end + function select(data, x::Pair{<:Any, ScaleID}) (vs, (transf, (label, _))) = select(data, x[1]) return vs => transf => label => x[2] diff --git a/test/algebra.jl b/test/algebra.jl index 64fc5b3aa..66a131eab 100644 --- a/test/algebra.jl +++ b/test/algebra.jl @@ -41,6 +41,12 @@ end @test processedlayer.primary[:color] == fill(["x", "x", "x"]) @test processedlayer.scale_mapping[:color] == :otherscale + layer = data(df) * mapping(:x => sqrt => "sqrt(X)" => scale(:X2)) + processedlayer = AlgebraOfGraphics.process_mappings(layer) + @test processedlayer.positional[1] == fill(sqrt.(df.x)) + @test processedlayer.labels[1] == fill("sqrt(X)") + @test processedlayer.scale_mapping[1] == :X2 + layer = data(df) * mapping(:x, direct(1:1000) => "y") processedlayer = AlgebraOfGraphics.process_mappings(layer) @test processedlayer.positional[2] == fill(1:1000)