From 566946f33c11163fa248092443937505f7790308 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 | 6 +++++- src/backends/pgfplotsx.jl | 11 +++++++++++ src/components.jl | 12 ++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/args.jl b/src/args.jl index ab8f1329..6e1b3ec8 100644 --- a/src/args.jl +++ b/src/args.jl @@ -1667,13 +1667,17 @@ function convertLegendValue(val::Symbol) :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::Tuple{S,T}) where {S<:Real,T<:Real} = v +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 convertLegendValue(v::AbstractArray) = map(convertLegendValue, v) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index d5206e1e..6bcb694f 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -145,6 +145,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)..., @@ -949,6 +951,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 6786b98e..75088ba1 100644 --- a/src/components.jl +++ b/src/components.jl @@ -772,3 +772,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