From 14b38354da41f241d3404d48b555db2693e4a37d Mon Sep 17 00:00:00 2001 From: t-bltg Date: Fri, 2 Jul 2021 20:26:24 +0200 Subject: [PATCH 1/2] fix #3558 --- src/backends/gr.jl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index ca31f3d3..7bd88af6 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1162,25 +1162,25 @@ function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance=nothin end function gr_get_legend_geometry(viewport_plotarea, sp) - legendn = 0 - legendw = 0 + legendn = legendw = 0; dy = 0. if sp[:legend] != :none GR.savestate() GR.selntran(0) GR.setscale(0) if sp[:legendtitle] !== nothing gr_set_font(legendtitlefont(sp), sp) + legendn += 1 tbx, tby = gr_inqtext(0, 0, string(sp[:legendtitle])) legendw = tbx[3] - tbx[1] - legendn += 1 + dy = tby[3] - tby[1] end gr_set_font(legendfont(sp), sp) for series in series_list(sp) should_add_to_legend(series) || continue legendn += 1 - lab = series[:label] - tbx, tby = gr_inqtext(0, 0, string(lab)) + tbx, tby = gr_inqtext(0, 0, string(series[:label])) legendw = max(legendw, tbx[3] - tbx[1]) # Holds text width right now + dy = max(dy, tby[3] - tby[1]) end GR.setscale(1) @@ -1197,7 +1197,6 @@ 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[:legendfontsize] * 1.75 legendh = dy * legendn return ( From 293b43013bd0fd9ac022c706025b877c86a9ca5a Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 3 Jul 2021 20:05:53 +0200 Subject: [PATCH 2/2] allow spacing via extra_kwargs --- src/backends/gr.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 7bd88af6..c97c04f4 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1162,7 +1162,7 @@ function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance=nothin end function gr_get_legend_geometry(viewport_plotarea, sp) - legendn = legendw = 0; dy = 0. + legendn = legendw = dy = 0 if sp[:legend] != :none GR.savestate() GR.selntran(0) @@ -1197,6 +1197,8 @@ 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 *= get(sp[:extra_kwargs], :legend_hfactor, 1) + legendh = dy * legendn return (