From 4ab9dc17f5d7c4cc0cec272cbbf24795f36d3468 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 12 Nov 2020 12:04:22 +0100 Subject: [PATCH] prototype --- src/args.jl | 4 ++++ src/backends/pgfplotsx.jl | 11 +++++++++++ src/components.jl | 12 ++++++++++++ 3 files changed, 27 insertions(+) diff --git a/src/args.jl b/src/args.jl index d00cf8b9..27aff1e4 100644 --- a/src/args.jl +++ b/src/args.jl @@ -1273,12 +1273,16 @@ function convertLegendValue(val::Symbol) :none elseif val in (:right, :left, :top, :bottom, :inside, :best, :legend, :topright, :topleft, :bottomleft, :bottomright, :outertopright, :outertopleft, :outertop, :outerright, :outerleft, :outerbottomright, :outerbottomleft, :outerbottom, :inline) val + elseif val == :horizontal + -1 else error("Invalid symbol for legend: $val") end end +convertLegendValue(val::Real) = val convertLegendValue(val::Bool) = val ? :best : :none convertLegendValue(val::Nothing) = :none +convertLegendValue(v::Union{Tuple, NamedTuple}) = convertLegendValue.(v) convertLegendValue(v::Tuple{S,T}) where {S<:Real, T<:Real} = v convertLegendValue(v::Tuple{<:Real,Symbol}) = v convertLegendValue(v::Real) = v diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index d32a8779..5993d546 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -140,6 +140,8 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) axis_opt = PGFPlotsX.Options( "point meta max" => get_clims(sp)[2], "point meta min" => get_clims(sp)[1], + "legend cell align" => "left", + "legend columns" => pgfx_legend_col(sp[:legend]), "title" => sp[:title], "title style" => PGFPlotsX.Options( pgfx_get_title_pos(title_loc)..., @@ -918,6 +920,15 @@ function pgfx_linestyle(linewidth::Real, color, α = 1, linestyle = :solid) ) end +function pgfx_legend_col(s::Symbol) + if s == :horizontal + return -1 + end + return 1 +end +pgfx_legend_col(n) = n + + function pgfx_linestyle(plotattributes, i = 1) lw = pgfx_thickness_scaling(plotattributes) * get_linewidth(plotattributes, i) lc = single_color(get_linecolor(plotattributes, i)) diff --git a/src/components.jl b/src/components.jl index 7520ae77..8f7f47ed 100644 --- a/src/components.jl +++ b/src/components.jl @@ -777,3 +777,15 @@ function extrema_plus_buffer(v, buffmult = 0.2) buffer = vdiff * buffmult vmin - buffer, vmax + buffer end + +### Legend + +@add_annotations subplot struct Legend + background_color + foreground_color + position + title + font::Font # TODO: check if macro is recursive enough + title_font + column +end