From 4ed195f8d9b27faf4fa0deb7400f40253593ed51 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 19 Oct 2021 10:21:30 +0200 Subject: [PATCH] fix gr --- src/args.jl | 12 ------------ src/backends/gr.jl | 12 +++++++----- src/consts.jl | 17 +++++++++++++++-- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/args.jl b/src/args.jl index 4085a6c3..91d4c730 100644 --- a/src/args.jl +++ b/src/args.jl @@ -551,18 +551,6 @@ const _suppress_warnings = Set{Symbol}([ :relative_bbox, ]) -# add defaults for the letter versions -const _axis_defaults_byletter = KW() - -function reset_axis_defaults_byletter!() - for letter in (:x, :y, :z) - _axis_defaults_byletter[letter] = KW() - for (k, v) in _axis_defaults - _axis_defaults_byletter[letter][k] = v - end - end -end -reset_axis_defaults_byletter!() is_subplot_attr(k) = k in _all_subplot_args is_series_attr(k) = k in _all_series_args diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 4ab6bf60..c8923145 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1243,6 +1243,7 @@ function gr_get_legend_geometry(viewport_plotarea, sp) GR.setscale(0) if sp[:legend_title] !== nothing gr_set_font(legendtitlefont(sp), sp) + legendn += 1 tbx, tby = gr_inqtext(0, 0, string(sp[:legend_title])) legendw = tbx[3] - tbx[1] dy = tby[3] - tby[1] @@ -1270,7 +1271,7 @@ function gr_get_legend_geometry(viewport_plotarea, sp) x_legend_offset = (viewport_plotarea[2] - viewport_plotarea[1]) / 30 y_legend_offset = (viewport_plotarea[4] - viewport_plotarea[3]) / 30 - dy = gr_point_mult(sp) * sp[:legend_font_pointsize] * 1.75 + dy = get(sp[:extra_kwargs], :legend_hfactor, 1) legendh = dy * legendn return ( @@ -1289,7 +1290,7 @@ end ## Viewport, window and scale function gr_update_viewport_legend!(viewport_plotarea, sp, leg) - leg_str = string(sp[:legend_position]) + s = sp[:legend_position] xaxis, yaxis = sp[:xaxis], sp[:yaxis] xmirror = @@ -1299,8 +1300,8 @@ function gr_update_viewport_legend!(viewport_plotarea, sp, leg) yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) - if sp[:legend_position] isa Tuple{<:Real,Symbol} - if sp[:legend_position][2] === :outer + if s isa Tuple{<:Real,Symbol} + if s[2] === :outer (x,y) = gr_legend_pos(sp, leg, viewport_plotarea) # Dry run, to figure out if x < viewport_plotarea[1] viewport_plotarea[1] += @@ -1320,6 +1321,7 @@ function gr_update_viewport_legend!(viewport_plotarea, sp, leg) end end end + leg_str = string(s) if occursin("outer", leg_str) if occursin("right", leg_str) viewport_plotarea[2] -= leg.leftw + leg.textw + leg.rightw + leg.xoffset @@ -1337,7 +1339,7 @@ function gr_update_viewport_legend!(viewport_plotarea, sp, leg) leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) end end - if sp[:legend_position] == :inline + if s == :inline if sp[:yaxis][:mirror] viewport_plotarea[1] += leg.w else diff --git a/src/consts.jl b/src/consts.jl index 663b4acc..80af56b2 100644 --- a/src/consts.jl +++ b/src/consts.jl @@ -4,14 +4,27 @@ const _all_defaults = KW[_series_defaults, _plot_defaults, _subplot_defaults] const _initial_defaults = deepcopy(_all_defaults) const _initial_axis_defaults = deepcopy(_axis_defaults) +# add defaults for the letter versions +const _axis_defaults_byletter = KW() + +function reset_axis_defaults_byletter!() + for letter in (:x, :y, :z) + _axis_defaults_byletter[letter] = KW() + for (k, v) in _axis_defaults + _axis_defaults_byletter[letter][k] = v + end + end +end +reset_axis_defaults_byletter!() + # to be able to reset font sizes to initial values const _initial_plt_fontsizes = Dict(:plot_titlefontsize => _plot_defaults[:plot_titlefontsize]) const _initial_sp_fontsizes = Dict( :titlefontsize => _subplot_defaults[:titlefontsize], - :legendfontsize => _subplot_defaults[:legend_font_pointsize], - :legendtitlefontsize => _subplot_defaults[:legend_title_font_pointsize], + :legend_font_pointsize => _subplot_defaults[:legend_font_pointsize], + :legend_title_font_pointsize => _subplot_defaults[:legend_title_font_pointsize], :annotationfontsize => _subplot_defaults[:annotationfontsize], :colorbar_tickfontsize => _subplot_defaults[:colorbar_tickfontsize], :colorbar_titlefontsize => _subplot_defaults[:colorbar_titlefontsize],