From d8d14a77ec0ec861f66f9f1bcf95e95b6bb4f11d Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Sat, 12 Sep 2020 08:13:45 +0200 Subject: [PATCH] common add_series --- src/backends/pgfplotsx.jl | 149 ++++---------------------------------- 1 file changed, 13 insertions(+), 136 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index a8568b14..b824f847 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -288,129 +288,6 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) push!(series_opt, "area legend" => nothing) end pgfx_add_series!(Val(st), axis, series_opt, series, series_func, opt) - # if st in (:heatmap, :contour) - # push!(axis.options, "view" => "{0}{90}") - # end - # # treat segments - # segments = - # if st in (:wireframe, :heatmap, :contour, :surface, :contour3d) - # iter_segments(surface_to_vecs( - # series[:x], - # series[:y], - # series[:z], - # )...) - # else - # iter_segments(series) - # end - # for (i, rng) in enumerate(segments) - # segment_opt = PGFPlotsX.Options() - # segment_opt = merge(segment_opt, pgfx_linestyle(opt, i)) - # if opt[:markershape] != :none - # marker = opt[:markershape] - # if marker isa Shape - # x = marker.x - # y = marker.y - # scale_factor = 0.00125 - # mark_size = opt[:markersize] * scale_factor - # path = join( - # [ - # "($(x[i] * mark_size), $(y[i] * mark_size))" - # for i in eachindex(x) - # ], - # " -- ", - # ) - # c = get_markercolor(series, i) - # a = get_markeralpha(series, i) - # PGFPlotsX.push_preamble!( - # pgfx_plot.the_plot, - # """ - # \\pgfdeclareplotmark{PlotsShape$(series_index)}{ - # \\filldraw - # $path; - # } - # """, - # ) - # end - # segment_opt = merge(segment_opt, pgfx_marker(opt, i)) - # end - # if st == :shape - # segment_opt = merge(segment_opt, pgfx_fillstyle(opt, i)) - # end - # # add fillrange - # if sf !== nothing && - # !isfilledcontour(series) - # if sf isa Number || sf isa AVec - # pgfx_fillrange_series!( - # axis, - # series, - # series_func, - # i, - # _cycle(sf, rng), - # rng, - # ) - # elseif sf isa Tuple && series[:ribbon] !== nothing - # for sfi in sf - # pgfx_fillrange_series!( - # axis, - # series, - # series_func, - # i, - # _cycle(sfi, rng), - # rng, - # ) - # end - # end - # if i == 1 && - # sp[:legend] != :none && pgfx_should_add_to_legend(series) - # pgfx_filllegend!(series_opt, opt) - # end - # end - # coordinates = - # pgfx_series_coordinates!(sp, series, segment_opt, opt, rng) - # segment_plot = - # series_func(merge(series_opt, segment_opt), coordinates) - # if extra_series !== nothing - # extra_series = wraptuple(extra_series) - # push!(segment_plot, extra_series...) - # end - # push!(axis, segment_plot) - # # fill between functions - # if sf isa Tuple && series[:ribbon] === nothing - # sf1, sf2 = sf - # @assert sf1 == series_index "First index of the tuple has to match the current series index." - # push!( - # axis, - # series_func( - # merge( - # pgfx_fillstyle(opt, series_index), - # PGFPlotsX.Options("forget plot" => nothing), - # ), - # "fill between [of=$series_id and $(_pgfplotsx_series_ids[Symbol(string(sf2))])]", - # ), - # ) - # end - # # add to legend? - # if sp[:legend] != :none - # leg_entry = if opt[:label] isa AVec - # get(opt[:label], i, "") - # elseif opt[:label] isa AbstractString - # if i == 1 - # get(opt, :label, "") - # else - # "" - # end - # else - # throw(ArgumentError("Malformed label. label = $(opt[:label])")) - # end - # if leg_entry == "" || !pgfx_should_add_to_legend(series) - # push!(axis.contents[end].options, "forget plot" => nothing) - # else - # leg_opt = PGFPlotsX.Options() - # legend = PGFPlotsX.LegendEntry(leg_opt, leg_entry, false) - # push!(axis, legend) - # end - # end - # end # for segments if extra_series !== nothing extra_series = wraptuple(extra_series) push!(axis.contents[end], extra_series...) @@ -448,6 +325,13 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) return pgfx_plot end ## seriestype specifics +function pgfx_add_series!(axis, series_opt, series, series_func, opt) + args = pgfx_series_arguments(series, opt) + series_plot = series_func(series_opt, PGFPlotsX.Coordinates(args...)) + push!(axis, series_plot) + pgfx_add_legend!(axis, series, opt) +end + function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, opt) # treat segments segments = iter_segments(series) @@ -561,18 +445,14 @@ function pgfx_add_series!(::Val{:surface}, axis, series_opt, series, series_func "mesh/cols" => length(opt[:y]), "z buffer" => "sort", ) - args = pgfx_series_arguments(series, opt) - series_plot = series_func(series_opt, PGFPlotsX.Coordinates(args...)) - push!(axis, series_plot) + pgfx_add_series!(axis, series_opt, series, series_func, opt) end function pgfx_add_series!(::Val{:wireframe}, axis, series_opt, series, series_func, opt) push!(series_opt, "mesh" => nothing, "mesh/rows" => length(opt[:x]) ) - args = pgfx_series_arguments(series, opt) - series_plot = series_func(series_opt, PGFPlotsX.Coordinates(args...)) - push!(axis, series_plot) + pgfx_add_series!(axis, series_opt, series, series_func, opt) end function pgfx_add_series!(::Val{:heatmap}, axis, series_opt, series, series_func, opt) @@ -583,9 +463,7 @@ function pgfx_add_series!(::Val{:heatmap}, axis, series_opt, series, series_func "mesh/rows" => length(opt[:x]), "mesh/cols" => length(opt[:y]), ) - args = pgfx_series_arguments(series, opt) - series_plot = series_func(series_opt, PGFPlotsX.Coordinates(args...)) - push!(axis, series_plot) + pgfx_add_series!(axis, series_opt, series, series_func, opt) end function pgfx_add_series!(::Val{:contour}, axis, series_opt, series, series_func, opt) @@ -608,10 +486,7 @@ function pgfx_add_series!(::Val{:filledcontour}, axis, series_opt, series, serie elseif opt[:levels] isa AVec push!(segment_opt["contour filled"], "levels" => opt[:levels]) end - - args = pgfx_series_arguments(series, opt) - series_plot = series_func(series_opt, PGFPlotsX.Coordinates(args...)) - push!(axis, series_plot) + pgfx_add_series!(axis, series_opt, series, series_func, opt) end function pgfx_add_series!(::Val{:contour3d}, axis, series_opt, series, series_func, opt) @@ -622,6 +497,7 @@ function pgfx_add_series!(::Val{:contour3d}, axis, series_opt, series, series_fu args = pgfx_series_arguments(series, opt) series_plot = series_func(series_opt, PGFPlotsX.Table(Contour.contours(args..., opt[:levels]))) push!(axis, series_plot) + pgfx_add_legend!(axis, series, opt) end function pgfx_add_series!(::Val{:quiver}, axis, series_opt, series, series_func, opt) @@ -645,6 +521,7 @@ function pgfx_add_series!(::Val{:quiver}, axis, series_opt, series, series_func, end series_plot = series_func(series_opt, table) push!(axis, series_plot) + pgfx_add_legend!(axis, series, opt) end function pgfx_add_series!(::Val{:shape}, axis, series_opt, series, series_func, opt)