From ff751ca423803d43a6fb2ca16e59268caaf7fa7a Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 1 Oct 2017 20:29:46 +0200 Subject: [PATCH] implement showaxis and basic framestyles for pgfplots --- src/backends/pgfplots.jl | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/backends/pgfplots.jl b/src/backends/pgfplots.jl index 97d68421..153ee808 100644 --- a/src/backends/pgfplots.jl +++ b/src/backends/pgfplots.jl @@ -32,6 +32,7 @@ const _pgfplots_attr = merge_with_base_supported([ :aspect_ratio, # :match_dimensions, :tick_direction, + :framestyle, ]) const _pgfplots_seriestype = [:path, :path3d, :scatter, :steppre, :stepmid, :steppost, :histogram2d, :ysticks, :xsticks, :contour, :shape] const _pgfplots_style = [:auto, :solid, :dash, :dot, :dashdot, :dashdotdot] @@ -107,6 +108,18 @@ const _pgf_annotation_halign = KW( :right => "left" ) +const _pgf_framestyles = [:box, :axes, :grid, :none] +const _pgf_framestyle_defaults = Dict(:semi => :box, :origin => :axes, :zerolines => :axes) +function pgf_framestyle(style::Symbol) + if style in _pgf_framestyles + return style + else + default_style = get(_pgf_framestyle_defaults, style, :axes) + warn("Framestyle :$style is not (yet) supported by the PGFPlots backend. :$default_style was cosen instead.") + default_style + end +end + # -------------------------------------------------------------------------------------- # takes in color,alpha, and returns color and alpha appropriate for pgf style @@ -246,6 +259,9 @@ function pgf_axis(sp::Subplot, letter) style = [] kw = KW() + # set to supported framestyle + framestyle = pgf_framestyle(sp[:framestyle]) + # axis guide kw[Symbol(letter,:label)] = axis[:guide] @@ -263,12 +279,12 @@ function pgf_axis(sp::Subplot, letter) end # ticks on or off - if axis[:ticks] in (nothing, false) + if axis[:ticks] in (nothing, false) || framestyle == :none push!(style, "$(letter)majorticks=false") end # grid on or off - if axis[:grid] + if axis[:grid] && framestyle != :none push!(style, "$(letter)majorgrids = true") end @@ -280,13 +296,29 @@ function pgf_axis(sp::Subplot, letter) kw[Symbol(letter,:max)] = lims[2] end - if !(axis[:ticks] in (nothing, false, :none)) + if !(axis[:ticks] in (nothing, false, :none)) && framestyle != :none ticks = get_ticks(axis) push!(style, string(letter, "tick = {", join(ticks[1],","), "}")) - push!(style, string(letter, "ticklabels = {", join(ticks[2],","), "}")) + if axis[:showaxis] + push!(style, string(letter, "ticklabels = {", join(ticks[2],","), "}")) + else + push!(style, string(letter, "ticklabels = {}")) + end push!(style, string(letter, "tick align = ", (axis[:tick_direction] == :out ? "outside" : "inside"))) end + # framestyle + if sp[:framestyle] == :axes + push!(style, "axis lines = left") + end + + if !axis[:showaxis] + push!(style, "separate axis lines") + end + if !axis[:showaxis] || framestyle in (:grid, :none) + push!(style, string(letter, " axis line style = {draw opacity = 0}")) + end + # return the style list and KW args style, kw end