diff --git a/src/recipes.jl b/src/recipes.jl index 8c669a78..bb297029 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -124,27 +124,32 @@ end # --------------------------------------------------------------------------- # steps -function make_steps(x, y, st) +make_steps(x, st) = x +function make_steps(x::AbstractArray, st) n = length(x) - n == 0 && return zeros(0),zeros(0) - newx, newy = zeros(2n-1), zeros(2n-1) - for i=1:n - idx = 2i-1 + n == 0 && return zeros(0) + newx = zeros(2n - 1) + for i in 1:n + idx = 2i - 1 newx[idx] = x[i] - newy[idx] = y[i] if i > 1 - newx[idx-1] = x[st == :steppre ? i-1 : i] - newy[idx-1] = y[st == :steppre ? i : i-1] + newx[idx - 1] = x[st == :pre ? i : i - 1] end end - newx, newy + return newx end +make_steps(t::Tuple, st) = Tuple(make_steps(ti, st) for ti in t) + # create a path from steps @recipe function f(::Type{Val{:steppre}}, x, y, z) - plotattributes[:x], plotattributes[:y] = make_steps(x, y, :steppre) + plotattributes[:x] = make_steps(x, :post) + plotattributes[:y] = make_steps(y, :pre) seriestype := :path + # handle fillrange + plotattributes[:fillrange] = make_steps(plotattributes[:fillrange], :pre) + # create a secondary series for the markers if plotattributes[:markershape] != :none @series begin @@ -163,9 +168,13 @@ end # create a path from steps @recipe function f(::Type{Val{:steppost}}, x, y, z) - plotattributes[:x], plotattributes[:y] = make_steps(x, y, :steppost) + plotattributes[:x] = make_steps(x, :pre) + plotattributes[:y] = make_steps(y, :post) seriestype := :path + # handle fillrange + plotattributes[:fillrange] = make_steps(plotattributes[:fillrange], :post) + # create a secondary series for the markers if plotattributes[:markershape] != :none @series begin diff --git a/src/utils.jl b/src/utils.jl index 0600821e..3544ead9 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -1051,7 +1051,7 @@ guidefont(ax::Axis) = font( # --------------------------------------------------------------- # converts unicode scientific notation unsupported by pgfplots and gr -# into a format that works +# into a format that works function convert_sci_unicode(label::AbstractString) unicode_dict = Dict(