From ffdd774e490ab53ca80ba172081433e783152850 Mon Sep 17 00:00:00 2001 From: Julius Krumbiegel Date: Tue, 24 Sep 2024 11:54:55 +0200 Subject: [PATCH] Fixed markercolor in `ScatterLines` legends when it did not match `color` --- CHANGELOG.md | 4 ++++ Project.toml | 2 +- src/guides/legend.jl | 6 ++++-- test/reference_tests.jl | 6 ++++++ .../reference_tests/scatterlines legend ref.png | Bin 0 -> 17287 bytes 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 test/reference_tests/scatterlines legend ref.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a22892e7..bc865753a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +## v0.8.10 -2024-09-24 + +- Fixed markercolor in `ScatterLines` legends when it did not match `color` [#567](https://github.com/MakieOrg/AlgebraOfGraphics.jl/pull/567). + ## v0.8.9 - 2024-09-24 - Added ability to include layers in the legend without using scales by adding `visual(label = "some label")` [#565](https://github.com/MakieOrg/AlgebraOfGraphics.jl/pull/565). diff --git a/Project.toml b/Project.toml index 3ef903a41..fde19f21c 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.8.9" +version = "0.8.10" [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" diff --git a/src/guides/legend.jl b/src/guides/legend.jl index a6b3f72c4..6f3e2e37c 100644 --- a/src/guides/legend.jl +++ b/src/guides/legend.jl @@ -330,15 +330,17 @@ function legend_elements(T::Type{Scatter}, attributes, scale_args::MixedArgument end function legend_elements(T::Type{ScatterLines}, attributes, scale_args::MixedArguments) + color = _get(T, scale_args, attributes, :color) + markercolor = _get(T, scale_args, attributes, :markercolor) [ LineElement( - color = _get(T, scale_args, attributes, :color), + color = color, linestyle = _get(T, scale_args, attributes, :linestyle), linewidth = _get(T, scale_args, attributes, :linewidth), linepoints = [Point2f(0, 0.5), Point2f(1, 0.5)], ), MarkerElement( - color = _get(T, scale_args, attributes, :color), + color = markercolor === Makie.automatic ? color : markercolor, markerpoints = [Point2f(0.5, 0.5)], marker = _get(T, scale_args, attributes, :marker), markerstrokewidth = _get(T, scale_args, attributes, :strokewidth), diff --git a/test/reference_tests.jl b/test/reference_tests.jl index a927c4be9..b62e61325 100644 --- a/test/reference_tests.jl +++ b/test/reference_tests.jl @@ -995,3 +995,9 @@ reftest("manual legend order") do @test_throws ErrorException legend!(f[1, 4], fg, order = [:Label]) f end + +reftest("scatterlines legend") do + spec1 = data((; x = 1:10, y = cos.(1:10))) * mapping(:x, :y) * visual(ScatterLines, color = :red, label = "markercolor auto") + spec2 = data((; x = 1:10, y = cos.(1:10) .+ 2)) * mapping(:x, :y) * visual(ScatterLines, color = :blue, markercolor = :cyan, label = "markercolor cyan") + draw(spec1 + spec2) +end diff --git a/test/reference_tests/scatterlines legend ref.png b/test/reference_tests/scatterlines legend ref.png new file mode 100644 index 0000000000000000000000000000000000000000..e9984ff59ea41b8797e59fc5314695ab4e536cdb GIT binary patch literal 17287 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 literal 0 HcmV?d00001