From 311bbdc99b9f121c730227447162a6dd31c121f9 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 28 Apr 2020 19:15:42 +0200 Subject: [PATCH 1/4] scale GR legend markers and lines with legend fontsize --- src/backends/gr.jl | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 2cd8a24c..271502b5 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -297,7 +297,7 @@ end # --------------------------------------------------------- # draw ONE Shape -function gr_draw_marker(series, xi, yi, clims, i, msize, shape::Shape) +function gr_draw_marker(series, xi, yi, clims, i, msize, strokewidth, shape::Shape) sx, sy = coords(shape) # convert to ndc coords (percentages of window) GR.selntran(0) @@ -315,7 +315,7 @@ function gr_draw_marker(series, xi, yi, clims, i, msize, shape::Shape) # draw the shapes msc = get_markerstrokecolor(series, i) - gr_set_line(get_markerstrokewidth(series, i), :solid, msc) + gr_set_line(strokewidth, :solid, msc) gr_set_transparency(msc, get_markerstrokealpha(series, i)) GR.polyline(xs, ys) GR.selntran(1) @@ -327,8 +327,8 @@ function nominal_size() end # draw ONE symbol marker -function gr_draw_marker(series, xi, yi, clims, i, msize::Number, shape::Symbol) - GR.setborderwidth(series[:markerstrokewidth]); +function gr_draw_marker(series, xi, yi, clims, i, msize, strokewidth, shape::Symbol) + GR.setborderwidth(strokewidth); gr_set_bordercolor(get_markerstrokecolor(series, i)); gr_set_markercolor(get_markercolor(series, clims, i)); gr_set_transparency(get_markeralpha(series, i)) @@ -339,17 +339,25 @@ end # draw the markers, one at a time -function gr_draw_markers(series::Series, x, y, clims, msize = series[:markersize]) +function gr_draw_markers( + series::Series, + x, + y, + clims, + msize = series[:markersize], + strokewidth = series[:markerstrokewidth], +) isempty(x) && return GR.setfillintstyle(GR.INTSTYLE_SOLID) shapes = series[:markershape] if shapes != :none - for i=eachindex(x) - msi = _cycle(msize, i) + for i in eachindex(x) + ms = _cycle(msize, i) + msw = _cycle(strokewidth, i) shape = _cycle(shapes, i) - gr_draw_marker(series, x[i], y[i], clims, i, msi, shape) + gr_draw_marker(series, x[i], y[i], clims, i, ms, msw, shape) end end end @@ -1837,7 +1845,7 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) should_add_to_legend(series) || continue st = series[:seriestype] lc = get_linecolor(series, clims) - gr_set_line(get_linewidth(series), get_linestyle(series), lc) #, series[:linealpha]) + gr_set_line(sp[:legendfontsize] / 10, get_linestyle(series), lc) #, series[:linealpha]) if (st == :shape || series[:fillrange] !== nothing) && series[:ribbon] === nothing fc = get_fillcolor(series, clims) @@ -1864,7 +1872,16 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) end if series[:markershape] != :none - gr_draw_markers(series, xpos - .035, ypos, clims, 6) + ms = first(series[:markersize]) + msw = first(series[:markerstrokewidth]) + s, sw = if ms > 0 + 0.8 * sp[:legendfontsize], 0.8 * sp[:legendfontsize] * msw / ms + else + 0, 0.8 * sp[:legendfontsize] * msw / 8 + end + gr_draw_markers( + series, xpos - 0.035, ypos, clims, s, sw + ) end lab = series[:label] From fe3813b5af90802b38cb1a876d810de1b3360319 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 28 Apr 2020 19:20:18 +0200 Subject: [PATCH 2/4] scale GR markers with thickness_scaling --- src/backends/gr.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 271502b5..a23362fc 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -354,8 +354,8 @@ function gr_draw_markers( shapes = series[:markershape] if shapes != :none for i in eachindex(x) - ms = _cycle(msize, i) - msw = _cycle(strokewidth, i) + ms = _gr_thickness_scaling[1] * _cycle(msize, i) + msw = _gr_thickness_scaling[1] * _cycle(strokewidth, i) shape = _cycle(shapes, i) gr_draw_marker(series, x[i], y[i], clims, i, ms, msw, shape) end From cdaa10be2762501636ccdd48f68c381e8fe6d7b1 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 28 Apr 2020 19:40:30 +0200 Subject: [PATCH 3/4] update precompile file --- src/precompile.jl | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/precompile.jl b/src/precompile.jl index 8879dc67..bfa63764 100644 --- a/src/precompile.jl +++ b/src/precompile.jl @@ -332,7 +332,6 @@ function _precompile_() precompile(Tuple{typeof(Plots.get_markercolor), Plots.Series, Float64, Float64, Int64}) precompile(Tuple{typeof(Plots.get_markerstrokealpha), Plots.Series, Int64}) precompile(Tuple{typeof(Plots.get_markerstrokecolor), Plots.Series, Int64}) - precompile(Tuple{typeof(Plots.get_markerstrokewidth), Plots.Series, Int64}) precompile(Tuple{typeof(Plots.get_minor_ticks), Plots.Subplot{Plots.GRBackend}, Plots.Axis, Tuple{Array{Float64, 1}, Array{Any, 1}}}) precompile(Tuple{typeof(Plots.get_minor_ticks), Plots.Subplot{Plots.GRBackend}, Plots.Axis, Tuple{Array{Float64, 1}, Array{String, 1}}}) precompile(Tuple{typeof(Plots.get_minor_ticks), Plots.Subplot{Plots.GRBackend}, Plots.Axis, Tuple{Array{Int64, 1}, Array{String, 1}}}) @@ -359,26 +358,24 @@ function _precompile_() precompile(Tuple{typeof(Plots.gr_display), Plots.Plot{Plots.GRBackend}, String}) precompile(Tuple{typeof(Plots.gr_display), Plots.Subplot{Plots.GRBackend}, Measures.Length{:mm, Float64}, Measures.Length{:mm, Float64}, Array{Float64, 1}}) precompile(Tuple{typeof(Plots.gr_draw_colorbar), Plots.GRColorbar, Plots.Subplot{Plots.GRBackend}, Tuple{Float64, Float64}}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Float64, Float64, Tuple{Float64, Float64}, Int64, Int64, Plots.Shape}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Float64, Float64, Tuple{Float64, Float64}, Int64, Int64, Symbol}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Float64, Tuple{Float64, Float64}, Int64, Float64, Plots.Shape}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Float64, Tuple{Float64, Float64}, Int64, Float64, Symbol}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Float64, Tuple{Float64, Float64}, Int64, Int64, Plots.Shape}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Float64, Tuple{Float64, Float64}, Int64, Int64, Symbol}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Int64, Tuple{Float64, Float64}, Int64, Int64, Plots.Shape}) - precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Int64, Tuple{Float64, Float64}, Int64, Int64, Symbol}) - precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Float64, 1}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64}) + precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Float64, Float64, Tuple{Float64, Float64}, Int64, Float64, Float64, Plots.Shape}) + precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Float64, Float64, Tuple{Float64, Float64}, Int64, Float64, Float64, Symbol}) + precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Float64, Tuple{Float64, Float64}, Int64, Float64, Float64, Plots.Shape}) + precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Float64, Tuple{Float64, Float64}, Int64, Float64, Float64, Symbol}) + precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Int64, Tuple{Float64, Float64}, Int64, Float64, Float64, Plots.Shape}) + precompile(Tuple{typeof(Plots.gr_draw_marker), Plots.Series, Int64, Int64, Tuple{Float64, Float64}, Int64, Float64, Float64, Symbol}) + precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Float64, 1}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64, Int64}) precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Float64, 1}, Array{Float64, 1}, Tuple{Float64, Float64}}) - precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Int64, 1}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64}) + precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Int64, 1}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64, Int64}) precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Int64, 1}, Array{Float64, 1}, Tuple{Float64, Float64}}) - precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Int64, 1}, Array{Int64, 1}, Tuple{Float64, Float64}, Int64}) + precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Int64, 1}, Array{Int64, 1}, Tuple{Float64, Float64}, Int64, Int64}) precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Array{Int64, 1}, Array{Int64, 1}, Tuple{Float64, Float64}}) - precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.OneTo{Int64}, Array{Float64, 1}, Tuple{Float64, Float64}, Array{Float64, 1}}) - precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.OneTo{Int64}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64}) + precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.OneTo{Int64}, Array{Float64, 1}, Tuple{Float64, Float64}, Array{Float64, 1}, Int64}) + precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.OneTo{Int64}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64, Int64}) precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.OneTo{Int64}, Array{Float64, 1}, Tuple{Float64, Float64}}) - precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64}) + precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}, Array{Float64, 1}, Tuple{Float64, Float64}, Int64, Int64}) precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Base.StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}, Array{Float64, 1}, Tuple{Float64, Float64}}) - precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Float64, Float64, Tuple{Float64, Float64}, Int64}) + precompile(Tuple{typeof(Plots.gr_draw_markers), Plots.Series, Float64, Float64, Tuple{Float64, Float64}, Float64, Float64}) precompile(Tuple{typeof(Plots.gr_fill_viewport), Array{Float64, 1}, ColorTypes.RGBA{Float64}}) precompile(Tuple{typeof(Plots.gr_get_ticks_size), Tuple{Array{Float64, 1}, Array{Any, 1}}, Int64}) precompile(Tuple{typeof(Plots.gr_get_ticks_size), Tuple{Array{Float64, 1}, Array{String, 1}}, Int64}) From e5cb36af7a7a71a8d2caf065ee2f5da9ab37744d Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 28 Apr 2020 20:46:44 +0200 Subject: [PATCH 4/4] fix legend linewidth --- src/backends/gr.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index a23362fc..2df14b29 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1845,7 +1845,7 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) should_add_to_legend(series) || continue st = series[:seriestype] lc = get_linecolor(series, clims) - gr_set_line(sp[:legendfontsize] / 10, get_linestyle(series), lc) #, series[:linealpha]) + gr_set_line(sp[:legendfontsize] / 8, get_linestyle(series), lc) #, series[:linealpha]) if (st == :shape || series[:fillrange] !== nothing) && series[:ribbon] === nothing fc = get_fillcolor(series, clims)