This commit is contained in:
Simon Christ 2021-10-19 10:21:30 +02:00
parent 318ae94552
commit 4ed195f8d9
3 changed files with 22 additions and 19 deletions

View File

@ -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

View File

@ -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

View File

@ -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],