diff --git a/src/pipeline.jl b/src/pipeline.jl index 4698c8b9..f307133e 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -69,7 +69,7 @@ function _preprocess_userrecipe(kw::AKW) _add_markershape(kw) # map marker_z if it's a Function - if isa(get(kw, :marker_z, nothing), Function) + if isa(get(kw, :marker_z, default(:marker_z)), Function) # TODO: should this take y and/or z as arguments? kw[:marker_z] = isa(kw[:z], Nothing) ? map(kw[:marker_z], kw[:x], kw[:y]) : @@ -77,15 +77,24 @@ function _preprocess_userrecipe(kw::AKW) end # map line_z if it's a Function - if isa(get(kw, :line_z, nothing), Function) + if isa(get(kw, :line_z, default(:line_z)), Function) kw[:line_z] = isa(kw[:z], Nothing) ? map(kw[:line_z], kw[:x], kw[:y]) : map(kw[:line_z], kw[:x], kw[:y], kw[:z]) end + rib = get(kw, :ribbon, default(:ribbon)) + fr = get(kw, :fillrange, default(:fillrange)) + # map ribbon if it's a Function + if rib isa Function + kw[:ribbon] = map(rib, kw[:x]) + end # convert a ribbon into a fillrange - if get(kw, :ribbon, nothing) !== nothing + if rib !== nothing make_fillrange_from_ribbon(kw) + # map fillrange if it's a Function + elseif fr !== nothing && fr isa Function + kw[:fillrange] = map(fr, kw[:x]) end return end @@ -154,6 +163,7 @@ function RecipesPipeline.process_sliced_series_attributes!(plt::Plots.Plot, kw_l kw_list[ind - 1] = tmp end end + return nothing end @@ -409,3 +419,4 @@ function _add_the_series(plt, sp, plotattributes) _series_added(plt, series) _update_subplot_colorbars(sp) end + diff --git a/test/test_defaults.jl b/test/test_defaults.jl index a5576145..38cc9c29 100644 --- a/test/test_defaults.jl +++ b/test/test_defaults.jl @@ -17,6 +17,7 @@ Plots.__init__() @test Plots._series_defaults[:fillrange] == 0 pl = plot(1:5) @test pl[1][1][:fillrange] == 0 + default() end @testset "Legend defaults" begin diff --git a/test/test_pipeline.jl b/test/test_pipeline.jl index ac6876f8..1bf3ae06 100644 --- a/test/test_pipeline.jl +++ b/test/test_pipeline.jl @@ -17,3 +17,14 @@ end @test all(RecipesPipeline.get_axis_limits(p1, :x) .== x) @test all(RecipesPipeline.get_axis_limits(p2, :x) .== x) end + +@testset "Slicing" begin + + @test plot(1:5, fillrange = 0)[1][1][:fillrange] == 0 + data4 = rand(4,4) + for i in axes(data4, 1) + @test plot(data4, fillrange = 0)[1][i][:fillrange] == 0 + @test plot(data4, fillrange = [1, 2])[1][i][:fillrange] == [1.0, 2.0] + @test plot(data4, fillrange = [1 2])[1][i][:fillrange] == (iseven(i) ? 2 : 1) + end +end