From 5660ea95014a2b36299a91cf08b2ca56cdec23ee Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 27 Oct 2020 11:19:50 +0100 Subject: [PATCH 001/518] remove dependency on discontinued GeometryTypes --- Project.toml | 3 --- src/Plots.jl | 2 +- src/components.jl | 6 +++--- src/recipes.jl | 4 ++-- src/utils.jl | 16 +++++++++------- test/runtests.jl | 3 +-- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/Project.toml b/Project.toml index 4c5b9871..27f4f5ac 100644 --- a/Project.toml +++ b/Project.toml @@ -11,7 +11,6 @@ FFMPEG = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" FixedPointNumbers = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" GR = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -GeometryTypes = "4d00f742-c7ba-57c2-abde-4428a4b178cb" JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" Latexify = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" @@ -39,12 +38,10 @@ FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52" GeometryBasics = "0.2, 0.3.1" -GeometryTypes = "0.7, 0.8" JSON = "0.21, 1" Latexify = "0.14" Measures = "0.3" NaNMath = "0.3" -PGFPlotsX = "1.2.0" PlotThemes = "2" PlotUtils = "1" RecipesBase = "1" diff --git a/src/Plots.jl b/src/Plots.jl index 8be711c6..1ce8bf65 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -8,7 +8,7 @@ const _current_plots_version = VersionNumber(split(first(filter(line -> occursin using Reexport -import GeometryTypes, GeometryBasics +import GeometryBasics using Dates, Printf, Statistics, Base64, LinearAlgebra, Random using SparseArrays diff --git a/src/components.jl b/src/components.jl index 6281f7bf..00ca51e6 100644 --- a/src/components.jl +++ b/src/components.jl @@ -1,5 +1,5 @@ -const P2 = GeometryTypes.Point2{Float64} -const P3 = GeometryTypes.Point3{Float64} +const P2 = GeometryBasics.Point2{Float64} +const P3 = GeometryBasics.Point3{Float64} nanpush!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN,NaN)); push!(a, b)) nanappend!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN,NaN)); append!(a, b)) @@ -729,7 +729,7 @@ end # ----------------------------------------------------------------------- "create a BezierCurve for plotting" -mutable struct BezierCurve{T <: GeometryTypes.Point} +mutable struct BezierCurve{T <: GeometryBasics.Point} control_points::Vector{T} end diff --git a/src/recipes.jl b/src/recipes.jl index e805fa49..09bb3a61 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -1369,8 +1369,8 @@ end # -------------------------------------------------------------------- # Lists of tuples and GeometryBasics.Points # -------------------------------------------------------------------- -@recipe f(v::AVec{<:_Point}) = RecipesPipeline.unzip(v) -@recipe f(p::_Point) = [p] +@recipe f(v::AVec{<:GeometryBasics.Point}) = RecipesPipeline.unzip(v) +@recipe f(p::GeometryBasics.Point) = [p] # Special case for 4-tuples in :ohlc series @recipe f(xyuv::AVec{<:Tuple{R1, R2, R3, R4}}) where {R1, R2, R3, R4} = diff --git a/src/utils.jl b/src/utils.jl index 81779dd3..7cfc7b3a 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -149,18 +149,20 @@ makevec(v::T) where {T} = T[v] maketuple(x::Real) = (x,x) maketuple(x::Tuple{T,S}) where {T,S} = x -const _Point{N,T} = Union{GeometryTypes.Point{N,T}, GeometryBasics.Point{N,T}} for i in 2:4 @eval begin - RecipesPipeline.unzip(v::Union{AVec{<:Tuple{Vararg{T,$i} where T}}, - AVec{<:_Point{$i}}}) = $(Expr(:tuple, (:([t[$j] for t in v]) for j=1:i)...)) + RecipesPipeline.unzip( + v::Union{AVec{<:Tuple{Vararg{T,$i} where T}}, AVec{<:GeometryBasics.Point{$i}}}, + ) = $(Expr(:tuple, (:([t[$j] for t in v]) for j=1:i)...)) end end -RecipesPipeline.unzip(v::Union{AVec{<:_Point{N}}, - AVec{<:Tuple{Vararg{T,N} where T}}}) where N = error("$N-dimensional unzip not implemented.") -RecipesPipeline.unzip(v::Union{AVec{<:_Point}, - AVec{<:Tuple}}) = error("Can't unzip points of different dimensions.") +RecipesPipeline.unzip( + ::Union{AVec{<:GeometryBasics.Point{N}}, AVec{<:Tuple{Vararg{T,N} where T}}} +) where N = error("$N-dimensional unzip not implemented.") +RecipesPipeline.unzip(::Union{AVec{<:GeometryBasics.Point}, AVec{<:Tuple}}) = error( + "Can't unzip points of different dimensions." +) # given 2-element lims and a vector of data x, widen lims to account for the extrema of x function _expand_limits(lims, x) diff --git a/test/runtests.jl b/test/runtests.jl index be680676..5cd843ec 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -7,7 +7,7 @@ using Test using FileIO using Gtk using LibGit2 -import GeometryTypes, GeometryBasics +import GeometryBasics using Dates using RecipesBase @@ -199,7 +199,6 @@ end [(missing,missing)], [(missing,missing,missing),("a","b","c")]) for z in zipped @test isequal(collect(zip(Plots.unzip(z)...)), z) - @test isequal(collect(zip(Plots.unzip(GeometryTypes.Point.(z))...)), z) @test isequal(collect(zip(Plots.unzip(GeometryBasics.Point.(z))...)), z) end op1 = Plots.process_clims((1.0, 2.0)) From 16b9fc08ac154450e25f11877e5b517b81819002 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 27 Oct 2020 20:16:45 +0100 Subject: [PATCH 002/518] more regular automatic categorical ticks --- src/axes.jl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 944d724a..0ef3a3a7 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -227,8 +227,9 @@ function get_ticks(sp::Subplot, axis::Axis; update = true) if !isempty(dvals) # discrete ticks... n = length(dvals) - rng = if ticks == :auto - Int[round(Int,i) for i in range(1, stop=n, length=min(n,15))] + rng = if ticks == :auto && n > 15 + Δ = ceil(Int, n / 10) + Δ:Δ:n else # if ticks == :all 1:n end From 6cbdd696cd6ebfc6600d917b39d1dc362721beed Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 28 Oct 2020 21:59:05 +0100 Subject: [PATCH 003/518] add unit tests --- test/test_axes.jl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/test_axes.jl b/test/test_axes.jl index 07db6102..db2cb8cd 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -12,3 +12,12 @@ end @test plot(1, axis=nothing)[1][:xaxis][:ticks] == [] @test plot(1, axis=nothing)[1][:yaxis][:ticks] == [] end # testset + +@testset "Categorical ticks" begin + p1 = plot('A':'M', 1:13) + p2 = plot('A':'Z', 1:26) + p3 = plot('A':'Z', 1:26, ticks = :all) + @test Plots.get_ticks(p1[1], p1[1][:xaxis])[2] == string.('A':'M') + @test Plots.get_ticks(p2[1], p2[1][:xaxis])[2] == string.('C':3:'Z') + @test Plots.get_ticks(p3[1], p3[1][:xaxis])[2] == string.('A':'Z') +end From ec97ec3994e31018ce459b5fa299d29937ffa1ce Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 28 Oct 2020 22:09:05 +0100 Subject: [PATCH 004/518] only run compilebot on linux with julia 1.5 --- .github/workflows/SnoopCompile.yml | 2 - .../precompile/apple/1.3/precompile_Plots.jl | 344 ---------- .../precompile/apple/1.4/precompile_Plots.jl | 622 ------------------ .../precompile/apple/1.5/precompile_Plots.jl | 590 ----------------- .../precompile/linux/1.3/precompile_Plots.jl | 340 ---------- .../precompile/linux/1.4/precompile_Plots.jl | 580 ---------------- .../precompile/linux/1.5/precompile_Plots.jl | 581 ---------------- .../windows/1.3/precompile_Plots.jl | 345 ---------- .../windows/1.4/precompile_Plots.jl | 621 ----------------- .../windows/1.5/precompile_Plots.jl | 579 ---------------- deps/SnoopCompile/snoop_bench.jl | 4 +- deps/SnoopCompile/snoop_bot.jl | 4 +- src/Plots.jl | 2 - src/precompile_includer.jl | 52 -- 14 files changed, 4 insertions(+), 4662 deletions(-) delete mode 100644 deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl delete mode 100644 src/precompile_includer.jl diff --git a/.github/workflows/SnoopCompile.yml b/.github/workflows/SnoopCompile.yml index a58aaa74..e456eb65 100644 --- a/.github/workflows/SnoopCompile.yml +++ b/.github/workflows/SnoopCompile.yml @@ -24,8 +24,6 @@ jobs: - '1.5' os: # NOTE: should match the os setting of your botconfig - ubuntu-latest - - windows-latest - - macos-latest arch: - x64 steps: diff --git a/deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl b/deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl deleted file mode 100644 index 3bf3eff9..00000000 --- a/deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl +++ /dev/null @@ -1,344 +0,0 @@ -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base._compute_eltype),Type{Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}}) - Base.precompile(Tuple{typeof(Base._compute_eltype),Type{Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_text),Float64,Float64,String}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:hline}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Float64},Float64,Float64,Float64,Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Plots.GridLayout,Symbol}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - isdefined(Plots, Symbol("##GridLayout#149")) && Base.precompile(Tuple{getfield(Plots, Symbol("##GridLayout#149")),Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - isdefined(Plots, Symbol("##gr_polyline#343")) && Base.precompile(Tuple{getfield(Plots, Symbol("##gr_polyline#343")),Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1}}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N}) -end diff --git a/deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl b/deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl deleted file mode 100644 index bf977ad5..00000000 --- a/deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl +++ /dev/null @@ -1,622 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Symbol,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{0},Nothing,typeof(Plots.label_to_string),Tuple{Base.RefValue{Symbol},Int64}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convertLegendValue),Symbol}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_contour),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Int64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_update_viewport_legend!),Array{Float64,1},Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_update_viewport_legend!),Array{Float64,1},Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.postprocess_axis_args!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bar),Array{Float64,1}}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Float64},Float64,Int64,Int64,Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.GridLayout, (Int64,Vararg{Int64,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:ylims, :leg),Tuple{Tuple{Int64,Int64},Bool}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl deleted file mode 100644 index d0231615..00000000 --- a/deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl +++ /dev/null @@ -1,590 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:projection,),Tuple{Symbol}},typeof(heatmap),Array{Int64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_contour),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}},Function}) - Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:yerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:zerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:spy}},Base.OneTo{Int64},Base.OneTo{Int64},Surface{SparseArrays.SparseMatrixCSC{Float64,Int64}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Base.OneTo{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Base.OneTo{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Any},Plots.Plot{Plots.GRBackend},Int64}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(similar),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Type{Nothing}}) - Base.precompile(Tuple{typeof(spy),SparseArrays.SparseMatrixCSC{Float64,Int64}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl deleted file mode 100644 index 672ae6b7..00000000 --- a/deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl +++ /dev/null @@ -1,340 +0,0 @@ -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),ColorPalette,Int64}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_text),Float64,Float64,String}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - isdefined(Plots, Symbol("##GridLayout#149")) && Base.precompile(Tuple{getfield(Plots, Symbol("##GridLayout#149")),Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - isdefined(Plots, Symbol("##gr_polyline#343")) && Base.precompile(Tuple{getfield(Plots, Symbol("##gr_polyline#343")),Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1}}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N}) -end diff --git a/deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl deleted file mode 100644 index 64f60c8c..00000000 --- a/deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl +++ /dev/null @@ -1,580 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_text),Float64,Float64,String}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Int64}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.GridLayout, (Int64,Vararg{Int64,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl deleted file mode 100644 index 32e6a2d3..00000000 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ /dev/null @@ -1,581 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convertLegendValue),Symbol}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_text),Float64,Float64,String}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.intersection_point),Float64,Float64,Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(Plots.is_marker_supported),Shape}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:scatter}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:yerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:zerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.postprocess_axis_args!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.postprocess_axis_args!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - isdefined(Plots, Symbol("#150#151")) && Base.precompile(Tuple{getfield(Plots, Symbol("#150#151")),Tuple{Int64,Expr}}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl b/deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl deleted file mode 100644 index 5dea3fdb..00000000 --- a/deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl +++ /dev/null @@ -1,345 +0,0 @@ -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Type{Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Axes,F,Args} where Args<:Tuple where F where Axes},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convertLegendValue),Symbol}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_text),Float64,Float64,String}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Plots.Subplot},Plots.Subplot{Plots.GRBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - isdefined(Plots, Symbol("##GridLayout#149")) && Base.precompile(Tuple{getfield(Plots, Symbol("##GridLayout#149")),Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - isdefined(Plots, Symbol("##gr_polyline#343")) && Base.precompile(Tuple{getfield(Plots, Symbol("##gr_polyline#343")),Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1}}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N}) -end diff --git a/deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl b/deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl deleted file mode 100644 index 5095dcef..00000000 --- a/deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl +++ /dev/null @@ -1,621 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Axes,F,Args} where Args<:Tuple where F where Axes},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Nothing,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linecolor),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Int64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convertLegendValue),Symbol}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_contour),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Int64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_update_viewport_legend!),Array{Float64,1},Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_update_viewport_legend!),Array{Float64,1},Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:mesh3d}},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:yerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(Plots.axis_limits),Tuple{Base.RefValue{Plots.Subplot{Plots.GRBackend}},Tuple{Symbol,Symbol}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Plots.Subplot},Plots.Subplot{Plots.GRBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.GridLayout, (Int64,Vararg{Int64,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl deleted file mode 100644 index 0c54f23c..00000000 --- a/deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl +++ /dev/null @@ -1,579 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Int64,Float64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_text),Float64,Float64,String}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Plots.Subplot},Plots.Subplot{Plots.GRBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend},Symbol}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/snoop_bench.jl b/deps/SnoopCompile/snoop_bench.jl index 12ac657e..ed1d7c50 100644 --- a/deps/SnoopCompile/snoop_bench.jl +++ b/deps/SnoopCompile/snoop_bench.jl @@ -4,8 +4,8 @@ snoop_bench( BotConfig( "Plots", yml_path= "SnoopCompile.yml", - else_os = "linux", - else_version = "1.4", + os = "linux", + version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) diff --git a/deps/SnoopCompile/snoop_bot.jl b/deps/SnoopCompile/snoop_bot.jl index ab83df9c..cd801527 100644 --- a/deps/SnoopCompile/snoop_bot.jl +++ b/deps/SnoopCompile/snoop_bot.jl @@ -4,8 +4,8 @@ snoop_bot( BotConfig( "Plots", yml_path= "SnoopCompile.yml", - else_os = "linux", - else_version = "1.4", + os = "linux", + version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) diff --git a/src/Plots.jl b/src/Plots.jl index 1ce8bf65..35cc3767 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -245,6 +245,4 @@ end const CURRENT_BACKEND = CurrentBackend(:none) -include("precompile_includer.jl") - end # module diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl deleted file mode 100644 index 963c42c2..00000000 --- a/src/precompile_includer.jl +++ /dev/null @@ -1,52 +0,0 @@ -should_precompile = true - - -# Don't edit the following! Instead change the script for `snoop_bot`. -ismultios = true -ismultiversion = true -# precompile_enclosure -@static if !should_precompile - # nothing -elseif !ismultios && !ismultiversion - include("../deps/SnoopCompile/precompile/precompile_Plots.jl") - _precompile_() -else - @static if Sys.islinux() - @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl") - _precompile_() - end - - elseif Sys.iswindows() - @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl") - _precompile_() - end - - elseif Sys.isapple() - @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl") - _precompile_() - end - - else - @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl") - _precompile_() - end - - end - -end # precompile_enclosure From 978ffb799bf5ed1badfee293d119ae4a7ed5ad2d Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 28 Oct 2020 22:14:17 +0100 Subject: [PATCH 005/518] use only yml_path in BotConfig --- deps/SnoopCompile/snoop_bench.jl | 2 -- deps/SnoopCompile/snoop_bot.jl | 2 -- 2 files changed, 4 deletions(-) diff --git a/deps/SnoopCompile/snoop_bench.jl b/deps/SnoopCompile/snoop_bench.jl index ed1d7c50..ce8952c0 100644 --- a/deps/SnoopCompile/snoop_bench.jl +++ b/deps/SnoopCompile/snoop_bench.jl @@ -4,8 +4,6 @@ snoop_bench( BotConfig( "Plots", yml_path= "SnoopCompile.yml", - os = "linux", - version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) diff --git a/deps/SnoopCompile/snoop_bot.jl b/deps/SnoopCompile/snoop_bot.jl index cd801527..157feb3f 100644 --- a/deps/SnoopCompile/snoop_bot.jl +++ b/deps/SnoopCompile/snoop_bot.jl @@ -4,8 +4,6 @@ snoop_bot( BotConfig( "Plots", yml_path= "SnoopCompile.yml", - os = "linux", - version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) From 059fbdfb6da7fd9d1274faa5a17576bc0c919f3b Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 28 Oct 2020 22:31:22 +0100 Subject: [PATCH 006/518] else_os and else_version --- deps/SnoopCompile/snoop_bench.jl | 2 ++ deps/SnoopCompile/snoop_bot.jl | 2 ++ 2 files changed, 4 insertions(+) diff --git a/deps/SnoopCompile/snoop_bench.jl b/deps/SnoopCompile/snoop_bench.jl index ce8952c0..ade47d43 100644 --- a/deps/SnoopCompile/snoop_bench.jl +++ b/deps/SnoopCompile/snoop_bench.jl @@ -4,6 +4,8 @@ snoop_bench( BotConfig( "Plots", yml_path= "SnoopCompile.yml", + else_os = "linux", + else_version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) diff --git a/deps/SnoopCompile/snoop_bot.jl b/deps/SnoopCompile/snoop_bot.jl index 157feb3f..6a81b7aa 100644 --- a/deps/SnoopCompile/snoop_bot.jl +++ b/deps/SnoopCompile/snoop_bot.jl @@ -4,6 +4,8 @@ snoop_bot( BotConfig( "Plots", yml_path= "SnoopCompile.yml", + else_os = "linux", + else_version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) From dcae18cde2eb8c0f9046a96a7c8ec4aa8ecd1db7 Mon Sep 17 00:00:00 2001 From: daschw Date: Wed, 28 Oct 2020 21:47:21 +0000 Subject: [PATCH 007/518] Update precompile_*.jl file --- .gitattributes | 6 + .../precompile/linux/1.5/precompile_Plots.jl | 599 ++++++++++++++++++ src/precompile_includer.jl | 34 + 3 files changed, 639 insertions(+) create mode 100644 .gitattributes create mode 100644 deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl create mode 100644 src/precompile_includer.jl diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..cf87526d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +# Set default behaviour to automatically normalize line endings. +* text=auto + +# Force bash scripts to always use lf line endings so that if a repo is accessed +# in Unix via a file share from Windows, the scripts will work. +*.sh text eol=lf diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl new file mode 100644 index 00000000..2ad05a2c --- /dev/null +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -0,0 +1,599 @@ +const __bodyfunction__ = Dict{Method,Any}() + +# Find keyword "body functions" (the function that contains the body +# as written by the developer, called after all missing keyword-arguments +# have been assigned values), in a manner that doesn't depend on +# gensymmed names. +# `mnokw` is the method that gets called when you invoke it without +# supplying any keywords. +function __lookup_kwbody__(mnokw::Method) + function getsym(arg) + isa(arg, Symbol) && return arg + @assert isa(arg, GlobalRef) + return arg.name + end + + f = get(__bodyfunction__, mnokw, nothing) + if f === nothing + fmod = mnokw.module + # The lowered code for `mnokw` should look like + # %1 = mkw(kwvalues..., #self#, args...) + # return %1 + # where `mkw` is the name of the "active" keyword body-function. + ast = Base.uncompressed_ast(mnokw) + if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 + callexpr = ast.code[end-1] + if isa(callexpr, Expr) && callexpr.head == :call + fsym = callexpr.args[1] + if isa(fsym, Symbol) + f = getfield(fmod, fsym) + elseif isa(fsym, GlobalRef) + if fsym.mod === Core && fsym.name === :_apply + f = getfield(mnokw.module, getsym(callexpr.args[2])) + elseif fsym.mod === Core && fsym.name === :_apply_iterate + f = getfield(mnokw.module, getsym(callexpr.args[3])) + else + f = getfield(fsym.mod, fsym.name) + end + else + f = missing + end + else + f = missing + end + else + f = missing + end + __bodyfunction__[mnokw] = f + end + return f +end + +function _precompile_() + ccall(:jl_generating_output, Cint, ()) == 1 || return nothing + Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:projection,),Tuple{Symbol}},typeof(heatmap),Array{Int64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) + Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base._compute_eltype),Type{Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}}}) + Base.precompile(Tuple{typeof(Base._compute_eltype),Type{Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) + Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) + Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) + Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) + Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) + Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) + Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) + Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) + Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) + Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) + Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) + Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) + Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) + Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) + Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) + Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) + Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_contour),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments_3d),Plots.Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) + Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) + Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) + Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) + Base.precompile(Tuple{typeof(Plots.gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) + Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) + Base.precompile(Tuple{typeof(Plots.link_axes!),Plots.Axis}) + Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) + Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) + Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) + Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) + Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) + Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) + Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) + Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) + Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) + Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) + Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:spy}},Base.OneTo{Int64},Base.OneTo{Int64},Surface{SparseArrays.SparseMatrixCSC{Float64,Int64}}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,2}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,2}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Base.OneTo{Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Base.OneTo{Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) + Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) + Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) + Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) + Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) + Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) + Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) + Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) + Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64}},Tuple{Int64,Int64},Tuple{Int64,Float64}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(similar),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Type{Symbol}}) + Base.precompile(Tuple{typeof(spy),SparseArrays.SparseMatrixCSC{Float64,Int64}}) + Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) + Base.precompile(Tuple{typeof(title!),String}) + Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) + Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) + Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) + Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) + let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end + let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) + end + end +end diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl new file mode 100644 index 00000000..49476e31 --- /dev/null +++ b/src/precompile_includer.jl @@ -0,0 +1,34 @@ +should_precompile = true + + +# Don't edit the following! Instead change the script for `snoop_bot`. +ismultios = true +ismultiversion = true +# precompile_enclosure +@static if !should_precompile + # nothing +elseif !ismultios && !ismultiversion + include("../deps/SnoopCompile/precompile/precompile_Plots.jl") + _precompile_() +else + @static if Sys.islinux() + @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + else + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + end + + else + @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + else + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + end + + end + +end # precompile_enclosure From 7a809697c4332db75b9e70b8b6fb0a6d1c1b2424 Mon Sep 17 00:00:00 2001 From: daschw Date: Wed, 28 Oct 2020 22:02:41 +0000 Subject: [PATCH 008/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 47 +++++-------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index 2ad05a2c..d0ce5c0c 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -61,7 +61,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) @@ -72,7 +71,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) @@ -104,13 +102,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) @@ -144,8 +140,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -170,18 +164,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Int64,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base._compute_eltype),Type{Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}}}) - Base.precompile(Tuple{typeof(Base._compute_eltype),Type{Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) @@ -194,14 +181,15 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) @@ -234,13 +222,13 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) @@ -253,19 +241,16 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments_3d),Plots.Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) @@ -273,14 +258,13 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.link_axes!),Plots.Axis}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Int64}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) @@ -304,6 +288,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:bar}},Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) @@ -312,7 +297,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:spy}},Base.OneTo{Int64},Base.OneTo{Int64},Surface{SparseArrays.SparseMatrixCSC{Float64,Int64}}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) @@ -325,6 +309,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.splittable_attribute),Plots.Plot{Plots.PlotlyBackend},Symbol,Array{Int64,1},Int64}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) @@ -391,6 +376,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) @@ -457,13 +443,9 @@ function _precompile_() Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) @@ -475,15 +457,13 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64}},Tuple{Int64,Int64},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(similar),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Type{Symbol}}) + Base.precompile(Tuple{typeof(similar),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Type{Nothing}}) Base.precompile(Tuple{typeof(spy),SparseArrays.SparseMatrixCSC{Float64,Int64}}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),String}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) @@ -491,11 +471,6 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) From 6286c67c014d614666a3a301bf296aa1c7817862 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 7 Oct 2020 01:12:50 +0200 Subject: [PATCH 009/518] add legendtitle to plotly --- src/backends/plotly.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index d6a712c8..42f19374 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -339,7 +339,11 @@ function plotly_add_legend!(plotattributes_out::KW, sp::Subplot) :font => plotly_font(legendfont(sp)), :tracegroupgap => 0, :x => legend_position.coords[1], - :y => legend_position.coords[2] + :y => legend_position.coords[2], + :title => KW( + :text => sp[:legendtitle] === nothing ? "" : string(sp[:legendtitle]), + :font => plotly_font(legendtitlefont(sp)), + ), ) end end From 6df6b40d3d3a8d1cc4bba4d81f22ef798a6054f8 Mon Sep 17 00:00:00 2001 From: daschw Date: Sat, 31 Oct 2020 12:36:21 +0000 Subject: [PATCH 010/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 43 ++++--------------- 1 file changed, 8 insertions(+), 35 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index d0ce5c0c..e1a97470 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -60,20 +60,16 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -164,21 +160,16 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Int64,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) @@ -186,10 +177,9 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) @@ -214,21 +204,18 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.expand_extrema!),Plots.Axis,Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) @@ -241,10 +228,8 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) @@ -255,13 +240,12 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Int64}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) @@ -275,8 +259,8 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Float64,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) @@ -288,7 +272,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:bar}},Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) @@ -299,9 +282,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:spy}},Base.OneTo{Int64},Base.OneTo{Int64},Surface{SparseArrays.SparseMatrixCSC{Float64,Int64}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) @@ -309,7 +290,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.splittable_attribute),Plots.Plot{Plots.PlotlyBackend},Symbol,Array{Int64,1},Int64}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) @@ -376,7 +356,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) @@ -437,15 +416,12 @@ function _precompile_() Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) @@ -457,9 +433,7 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(similar),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Type{Nothing}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Any,Any},Plots.Plot{Plots.PlotlyBackend},Int64}) Base.precompile(Tuple{typeof(spy),SparseArrays.SparseMatrixCSC{Float64,Int64}}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) @@ -469,7 +443,6 @@ function _precompile_() Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) From e7c7daff0cae25c2d7e881d737b8abbdc42ccee4 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 31 Oct 2020 13:37:11 +0100 Subject: [PATCH 011/518] use plotly-latest --- src/backends/plotly.jl | 2 +- src/init.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 42f19374..df172e84 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -887,7 +887,7 @@ const ijulia_initialized = Ref(false) function plotly_html_head(plt::Plot) plotly = - use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/plotly-1.54.2.min.js" + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/plotly-latest.min.js" include_mathjax = get(plt[:extra_plot_kwargs], :include_mathjax, "") mathjax_file = include_mathjax != "cdn" ? ("file://" * include_mathjax) : "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" diff --git a/src/init.jl b/src/init.jl index 3cb22c79..c15f099d 100644 --- a/src/init.jl +++ b/src/init.jl @@ -81,7 +81,7 @@ function __init__() if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true" global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), "plotly-1.54.2.min.js") if !isfile(plotly_local_file_path[]) - download("https://cdn.plot.ly/plotly-1.54.2.min.js", plotly_local_file_path[]) + download("https://cdn.plot.ly/plotly-latest.min.js", plotly_local_file_path[]) end use_local_plotlyjs[] = true From e21f40bd9a7980ba35cf39a69b2d7e6d7a967387 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 31 Oct 2020 18:51:33 +0100 Subject: [PATCH 012/518] move warn_on_recipe_aliases to RecipesPipeline --- src/pipeline.jl | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index e02b3478..7197d2df 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -4,43 +4,20 @@ function RecipesPipeline.warn_on_recipe_aliases!( plt::Plot, - plotattributes, + plotattributes::AKW, recipe_type, - args..., + signature_string ) for k in keys(plotattributes) if !is_default_attribute(k) dk = get(_keyAliases, k, k) if k !== dk - @warn "Attribute alias `$k` detected in the $recipe_type recipe defined for the signature $(_signature_string(Val{recipe_type}, args...)). To ensure expected behavior it is recommended to use the default attribute `$dk`." + @warn "Attribute alias `$k` detected in the $recipe_type recipe defined for the signature $signature_string. To ensure expected behavior it is recommended to use the default attribute `$dk`." end plotattributes[dk] = RecipesPipeline.pop_kw!(plotattributes, k) end end end -function RecipesPipeline.warn_on_recipe_aliases!( - plt::Plot, - v::AbstractVector, - recipe_type, - args..., -) - foreach(x -> RecipesPipeline.warn_on_recipe_aliases!(plt, x, recipe_type, args...), v) -end -function RecipesPipeline.warn_on_recipe_aliases!( - plt::Plot, - rd::RecipeData, - recipe_type, - args..., -) - RecipesPipeline.warn_on_recipe_aliases!(plt, rd.plotattributes, recipe_type, args...) -end - -function _signature_string(::Type{Val{:user}}, args...) - return string("(::", join(string.(typeof.(args)), ", ::"), ")") -end -_signature_string(::Type{Val{:type}}, T) = "(::Type{$T}, ::$T)" -_signature_string(::Type{Val{:plot}}, st) = "(::Type{Val{:$st}}, ::AbstractPlot)" -_signature_string(::Type{Val{:series}}, st) = "(::Type{Val{:$st}}, x, y, z)" ## Grouping From dc7bdc6f695e1d516833b3eb4a97fcb5a25bc029 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 31 Oct 2020 21:07:31 +0100 Subject: [PATCH 013/518] add some `@nospecialize` --- .../precompile/linux/1.5/precompile_Plots.jl | 400 +++++------------- src/Plots.jl | 2 + src/plot.jl | 11 +- src/recipes.jl | 38 +- src/shorthands.jl | 4 + 5 files changed, 162 insertions(+), 293 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index e1a97470..e1d42329 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -67,43 +67,37 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:projection,),Tuple{Symbol}},typeof(heatmap),Array{Int64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),Any,typeof(histogram2d),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),Any,typeof(hline!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),Any,typeof(lens!),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -133,13 +127,17 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{OHLC,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) @@ -149,87 +147,69 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Nothing,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Nothing,typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) + Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) + Base.precompile(Tuple{typeof(Plots.__init__)}) + Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) + Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) + Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot,Any,Any}) + Base.precompile(Tuple{typeof(Plots._preprocess_barlike),RecipesPipeline.DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots._preprocess_binlike),RecipesPipeline.DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) + Base.precompile(Tuple{typeof(Plots._update_plot_args),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.expand_extrema!),Plots.Axis,Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(Plots.get_xy),Array{OHLC,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_draw_contour),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) @@ -240,10 +220,11 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) + Base.precompile(Tuple{typeof(Plots.make_steps),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) @@ -260,7 +241,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Float64,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) @@ -268,182 +248,57 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:spy}},Base.OneTo{Int64},Base.OneTo{Int64},Surface{SparseArrays.SparseMatrixCSC{Float64,Int64}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Plots.PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline._finish_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},RecipeData}) + Base.precompile(Tuple{typeof(RecipesPipeline._finish_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},RecipeData}) + Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Base.OneTo{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Base.OneTo{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,String}) Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) + Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) + Base.precompile(Tuple{typeof(iterate),Base.Iterators.Enumerate{Tuple{Plots.Plot{Plots.PlotlyBackend}}},Tuple{Int64,Int64}}) + Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) + Base.precompile(Tuple{typeof(plot!),Any}) + Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Any},Plots.Plot{Plots.PlotlyBackend},Int64}) - Base.precompile(Tuple{typeof(spy),SparseArrays.SparseMatrixCSC{Float64,Int64}}) + Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(title!),String}) + Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) + Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) + Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(yaxis!),Any,Any}) let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) @@ -454,94 +309,59 @@ function _precompile_() precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end + let fbody = try __lookup_kwbody__(which(Plots.title!, (AbstractString,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) + precompile(fbody, (Any,typeof(title!),AbstractString,)) + end + end + let fbody = try __lookup_kwbody__(which(Plots.vline!, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(vline!),Any,)) + end + end + let fbody = try __lookup_kwbody__(which(Plots.yaxis!, (Any,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any,N} where N,)) end end let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) + precompile(fbody, (Any,typeof(plot!),)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Any,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) + precompile(fbody, (Any,typeof(plot!),Any,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Any,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) + precompile(fbody, (Any,typeof(plot!),Any,Vararg{Any,N} where N,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Any,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) + precompile(fbody, (Any,typeof(plot),Any,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Any,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) + precompile(fbody, (Any,typeof(plot),Any,Vararg{Any,N} where N,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Plots.Plot,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) + precompile(fbody, (Any,typeof(plot),Plots.Plot,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Plots.Plot,Plots.Plot,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) + precompile(fbody, (Any,typeof(plot),Plots.Plot,Plots.Plot,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end + let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Plots.Plot,Plots.Plot,Vararg{Plots.Plot,N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) + precompile(fbody, (Any,typeof(plot),Plots.Plot,Plots.Plot,Vararg{Plots.Plot,N} where N,)) end end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:leg, :xlims, :ylims),Tuple{Bool,Tuple{Int64,Float64},Tuple{Int64,Int64}}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end +end \ No newline at end of file diff --git a/src/Plots.jl b/src/Plots.jl index 35cc3767..1ce8bf65 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -245,4 +245,6 @@ end const CURRENT_BACKEND = CurrentBackend(:none) +include("precompile_includer.jl") + end # module diff --git a/src/plot.jl b/src/plot.jl index e52ac499..73555d3b 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -47,6 +47,7 @@ function, where `attr` is the symbol `:Series:`, `:Subplot:`, `:Plot` or `:Axis` as a String to look up its docstring; e.g. `plotattr("seriestype")`. """ function plot(args...; kw...) + @nospecialize # this creates a new plot with args/kw and sets it to be the current plot plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) @@ -60,6 +61,7 @@ end # build a new plot from existing plots # note: we split into plt1 and plts_tail so we can dispatch correctly function plot(plt1::Plot, plts_tail::Plot...; kw...) + @nospecialize plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) @@ -140,7 +142,8 @@ end # this adds to the current plot, or creates a new plot if none are current -function plot!(args...; kw...) +function plot!(args...; kw...) + @nospecialize local plt try plt = current() @@ -152,6 +155,7 @@ end # this adds to a specific plot... most plot commands will flow through here function plot!(plt::Plot, args...; kw...) + @nospecialize plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) # merge!(plt.user_attr, plotattributes) @@ -164,6 +168,7 @@ end # a list of series KW dicts. # note: at entry, we only have those preprocessed args which were passed in... no default values yet function _plot!(plt::Plot, plotattributes, args) + @nospecialize RecipesPipeline.recipe_pipeline!(plt, plotattributes, args) current(plt) _do_plot_show(plt, plt[:show]) @@ -205,10 +210,12 @@ end # plot to a Subplot function plot(sp::Subplot, args...; kw...) + @nospecialize plt = sp.plt plot(plt, args...; kw..., subplot = findfirst(isequal(sp), plt.subplots)) end function plot!(sp::Subplot, args...; kw...) + @nospecialize plt = sp.plt plot!(plt, args...; kw..., subplot = findfirst(isequal(sp), plt.subplots)) -end +end \ No newline at end of file diff --git a/src/recipes.jl b/src/recipes.jl index 09bb3a61..80ccc86f 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -78,6 +78,8 @@ const POTENTIAL_VECTOR_ARGUMENTS = [ :fillrange, ] +@nospecialize + @recipe function f(::Type{Val{:line}}, x, y, z) indices = sortperm(x) x := x[indices] @@ -173,6 +175,8 @@ end end @deps scatterpath path scatter +@specialize + # --------------------------------------------------------------------------- # steps @@ -194,6 +198,8 @@ end make_steps(t::Tuple, st) = Tuple(make_steps(ti, st) for ti in t) +@nospecialize + # create a path from steps @recipe function f(::Type{Val{:steppre}}, x, y, z) plotattributes[:x] = make_steps(x, :post) @@ -303,6 +309,8 @@ end end @deps sticks path scatter +@specialize + # --------------------------------------------------------------------------- # bezier curves @@ -317,6 +325,8 @@ function bezier_value(pts::AVec, t::Real) val end +@nospecialize + # create segmented bezier curves in place of line segments @recipe function f(::Type{Val{:curves}}, x, y, z; npoints = 30) args = z !== nothing ? (x, y, z) : (x, y) @@ -472,6 +482,9 @@ end () end @deps plots_heatmap shape + +@specialize + is_3d(::Type{Val{:plots_heatmap}}) = true RecipesPipeline.is_surface(::Type{Val{:plots_heatmap}}) = true RecipesPipeline.is_surface(::Type{Val{:hexbin}}) = true @@ -535,6 +548,8 @@ function _preprocess_binlike(plotattributes, x, y) end +@nospecialize + @recipe function f(::Type{Val{:barbins}}, x, y, z) edge, weights, xscale, yscale, baseline = _preprocess_binlike(plotattributes, x, y) @@ -566,6 +581,8 @@ end end @deps scatterbins xerror scatter +@specialize + function _stepbins_path( edge, weights, @@ -632,8 +649,8 @@ function _stepbins_path( (x, y) end - @recipe function f(::Type{Val{:stepbins}}, x, y, z) + @nospecialize axis = plotattributes[:subplot][Plots.isvertical(plotattributes) ? :xaxis : :yaxis] @@ -770,6 +787,7 @@ function _make_hist( normalize!(h, mode = _hist_norm_mode(normed)) end +@nospecialize @recipe function f(::Type{Val{:histogram}}, x, y, z) seriestype := length(y) > 1e6 ? :stephist : :barhist @@ -1018,6 +1036,8 @@ export lens! nothing end +@specialize + function intersection_point(xA, yA, xB, yB, h, w) s = (yA - yB) / (xA - xB) hh = h / 2 @@ -1045,6 +1065,7 @@ end # contourf - filled contours @recipe function f(::Type{Val{:contourf}}, x, y, z) + @nospecialize fillrange := true seriestype := :contour () @@ -1111,6 +1132,8 @@ end # we will create a series of path segments, where each point represents one # side of an errorbar +@nospecialize + @recipe function f(::Type{Val{:xerror}}, x, y, z) error_style!(plotattributes) markershape := :vline @@ -1160,6 +1183,7 @@ end end @deps zerror path +@specialize # TODO: move quiver to PlotRecipes @@ -1256,6 +1280,7 @@ end # function apply_series_recipe(plotattributes::AKW, ::Type{Val{:quiver}}) @recipe function f(::Type{Val{:quiver}}, x, y, z) + @nospecialize if :arrow in supported_attrs() quiver_using_arrows(plotattributes) else @@ -1294,6 +1319,8 @@ end end end +@nospecialize + # images - colors @recipe function f(mat::AMat{T}) where {T <: Colorant} n, m = axes(mat) @@ -1377,6 +1404,7 @@ end get(plotattributes, :seriestype, :path) == :ohlc ? OHLC[OHLC(t...) for t in xyuv] : RecipesPipeline.unzip(xyuv) +@specialize # ------------------------------------------------- @@ -1416,6 +1444,8 @@ end # TODO: when I allow `@recipe f(::Type{T}, v::T) = ...` definitions to replace convertToAnyVector, # then I should replace these with one definition to convert to a vector of 4-tuples +@nospecialize + # to squash ambiguity warnings... @recipe f(x::AVec{Function}, v::AVec{OHLC}) = error() @recipe f( @@ -1497,6 +1527,8 @@ end () end +@specialize + Plots.findnz(A::AbstractSparseMatrix) = SparseArrays.findnz(A) @@ -1511,6 +1543,8 @@ end # ------------------------------------------------- +@nospecialize + "Adds ax+b... straight line over the current plot, without changing the axis limits" abline!(plt::Plot, a, b; kw...) = plot!(plt, [0, 1], [b, b + a]; seriestype = :straightline, kw...) @@ -1580,3 +1614,5 @@ julia> areaplot(1:3, [1 2 3; 7 8 9; 4 5 6], seriescolor = [:red :green :blue], f end end end + +@specialize \ No newline at end of file diff --git a/src/shorthands.jl b/src/shorthands.jl index 2931162c..16008dde 100644 --- a/src/shorthands.jl +++ b/src/shorthands.jl @@ -1,3 +1,5 @@ +@nospecialize + """ scatter(x,y) scatter!(x,y) @@ -475,3 +477,5 @@ xaxis!(args...; kw...) = plot!(; xaxis = args yaxis!(args...; kw...) = plot!(; yaxis = args, kw...) xgrid!(args...; kw...) = plot!(; xgrid = args, kw...) ygrid!(args...; kw...) = plot!(; ygrid = args, kw...) + +@specialize \ No newline at end of file From dee3ed263cadb779ae4da40307087668e9bbc2c6 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 31 Oct 2020 21:26:00 +0100 Subject: [PATCH 014/518] bump RecipesPipeline compat --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 27f4f5ac..e3d458e7 100644 --- a/Project.toml +++ b/Project.toml @@ -45,7 +45,7 @@ NaNMath = "0.3" PlotThemes = "2" PlotUtils = "1" RecipesBase = "1" -RecipesPipeline = "0.1.13" +RecipesPipeline = "0.2" Reexport = "0.2" Requires = "1" Scratch = "1" From d9c2b7bf370fdf3dda5fe196822d6cd924c9a3a2 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 31 Oct 2020 22:49:37 +0100 Subject: [PATCH 015/518] change to plotly v1.57.1 --- src/backends/plotly.jl | 2 +- src/init.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index df172e84..89c97e54 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -887,7 +887,7 @@ const ijulia_initialized = Ref(false) function plotly_html_head(plt::Plot) plotly = - use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/plotly-latest.min.js" + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/plotly-1.57.1.min.js" include_mathjax = get(plt[:extra_plot_kwargs], :include_mathjax, "") mathjax_file = include_mathjax != "cdn" ? ("file://" * include_mathjax) : "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" diff --git a/src/init.jl b/src/init.jl index c15f099d..2a64844d 100644 --- a/src/init.jl +++ b/src/init.jl @@ -81,7 +81,7 @@ function __init__() if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true" global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), "plotly-1.54.2.min.js") if !isfile(plotly_local_file_path[]) - download("https://cdn.plot.ly/plotly-latest.min.js", plotly_local_file_path[]) + download("https://cdn.plot.ly/plotly-1.57.1.min.js", plotly_local_file_path[]) end use_local_plotlyjs[] = true From 9ee2e65225119c5ec76496ea719e719fcdc55290 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Fri, 6 Nov 2020 16:39:40 +0100 Subject: [PATCH 016/518] Update Project.toml add GR 0.53.0 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 27f4f5ac..b698d3a1 100644 --- a/Project.toml +++ b/Project.toml @@ -36,7 +36,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" -GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52" +GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53" GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" Latexify = "0.14" From 93998fee0001b7e5e559f863caadb8731ab29d30 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 9 Nov 2020 18:21:00 +0100 Subject: [PATCH 017/518] fix 'no method matching any(::Function, ::Nothing)' error in pgfplotsx --- src/backends/pgfplotsx.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index d5caf807..bd2bbf3c 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -465,7 +465,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o pgfx_add_legend!(axis, series, opt, i) end # for segments # get that last marker - if !any(isnan, opt[:y]) && opt[:markershape] isa AVec + if !isnothing(opt[:y]) && !any(isnan, opt[:y]) && opt[:markershape] isa AVec additional_plot = PGFPlotsX.PlotInc(pgfx_marker(opt, length(segments) + 1), PGFPlotsX.Coordinates(tuple((last(opt[:x]), last(opt[:y]))))) push!(axis, additional_plot) end From d77899c5a122bc82a7ff0dfcb9071747186dc841 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 9 Nov 2020 23:11:35 +0100 Subject: [PATCH 018/518] update tagbot action --- .github/workflows/TagBot.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml index d77d3a0c..778c06fe 100644 --- a/.github/workflows/TagBot.yml +++ b/.github/workflows/TagBot.yml @@ -1,9 +1,12 @@ name: TagBot on: - schedule: - - cron: 0 * * * * + issue_comment: + types: + - created + workflow_dispatch: jobs: TagBot: + if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' runs-on: ubuntu-latest steps: - uses: JuliaRegistries/TagBot@v1 From 405daa3cfdac114a14fb8311b26eb3b3eac82c29 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 9 Nov 2020 23:13:22 +0100 Subject: [PATCH 019/518] minor version bump --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 7631782f..c28563c6 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.7.3" +version = "1.8.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From e9970637e0600891535319278d2c5baef57f120e Mon Sep 17 00:00:00 2001 From: daschw Date: Mon, 9 Nov 2020 22:19:00 +0000 Subject: [PATCH 020/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 63 ++++++++++++------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index e1d42329..ffd35ca0 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -60,27 +60,31 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),Any,typeof(histogram2d),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),Any,typeof(heatmap),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),Any,typeof(lens!),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) @@ -90,12 +94,15 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -153,21 +160,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Nothing,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Nothing,typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots.__init__)}) Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) @@ -185,13 +182,14 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot,Any,Any}) Base.precompile(Tuple{typeof(Plots._preprocess_barlike),RecipesPipeline.DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots._preprocess_binlike),RecipesPipeline.DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_plot_args),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) + Base.precompile(Tuple{typeof(Plots.discrete_value!),Plots.Axis,Array{String,1}}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) @@ -202,14 +200,19 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.get_xy),Array{OHLC,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_draw_contour),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) @@ -224,7 +227,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.make_steps),Array{Float64,1},Symbol}) + Base.precompile(Tuple{typeof(Plots.make_steps),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) @@ -240,6 +243,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) @@ -254,6 +258,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) @@ -264,10 +269,11 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.postprocess_axis_args!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,String}) @@ -278,16 +284,25 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(frame),Animation,Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iterate),Base.Iterators.Enumerate{Tuple{Plots.Plot{Plots.PlotlyBackend}}},Tuple{Int64,Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) + Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Any,Any},Plots.Plot{Plots.PlotlyBackend},Int64}) + Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) @@ -297,8 +312,12 @@ function _precompile_() Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) @@ -364,4 +383,4 @@ function _precompile_() precompile(fbody, (Any,typeof(plot),Plots.Plot,Plots.Plot,Vararg{Plots.Plot,N} where N,)) end end -end \ No newline at end of file +end From d3f2a55b595a8005b49c138ebc73ed397ee63178 Mon Sep 17 00:00:00 2001 From: Ronny Bergmann Date: Tue, 10 Nov 2020 11:24:24 +0100 Subject: [PATCH 021/518] adds 3d quiver if z component is present. --- src/recipes.jl | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index 80ccc86f..15d41336 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -1197,35 +1197,51 @@ function quiver_using_arrows(plotattributes::AKW) if !isa(plotattributes[:arrow], Arrow) plotattributes[:arrow] = arrow() end - + is_3d = haskey(plotattributes,:z) velocity = error_zipit(plotattributes[:quiver]) xorig, yorig = plotattributes[:x], plotattributes[:y] + zorig = is_3d ? plotattributes[:z] : [] # for each point, we create an arrow of velocity vi, translated to the x/y coordinates x, y = zeros(0), zeros(0) - for i = 1:max(length(xorig), length(yorig)) + is_3d && ( z = zeros(0)) + for i = 1:max(length(xorig), length(yorig), length(zorig)) # get the starting position xi = _cycle(xorig, i) yi = _cycle(yorig, i) - + zi = is_3d ? _cycle(zorig, i) : 0 # get the velocity vi = _cycle(velocity, i) - vx, vy = if istuple(vi) - first(vi), last(vi) - elseif isscalar(vi) - vi, vi - elseif isa(vi, Function) - vi(xi, yi) - else - error("unexpected vi type $(typeof(vi)) for quiver: $vi") + if is_3d + vx, vy, vz = if istuple(vi) + vi[1], vi[2], vi[3] + elseif isscalar(vi) + vi, vi, vi + elseif isa(vi, Function) + vi(xi, yi, zi) + else + error("unexpected vi type $(typeof(vi)) for quiver: $vi") + end + else # 2D quiver + vx, vy = if istuple(vi) + first(vi), last(vi) + elseif isscalar(vi) + vi, vi + elseif isa(vi, Function) + vi(xi, yi) + else + error("unexpected vi type $(typeof(vi)) for quiver: $vi") + end end - # add the points nanappend!(x, [xi, xi + vx, NaN]) nanappend!(y, [yi, yi + vy, NaN]) + is_3d && nanappend!(z, [zi, zi + vz, NaN]) end - plotattributes[:x], plotattributes[:y] = x, y + if is_3d + plotattributes[:z] = z + end # KW[plotattributes] end From 591d485e09bc321204c4d7eb8803b9d0fea8ee17 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Tue, 10 Nov 2020 18:34:14 +0100 Subject: [PATCH 022/518] Fix SVG scaling problem --- src/backends/gr.jl | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 372c2baa..2e95d4c4 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -593,9 +593,6 @@ function gr_display(plt::Plot, fmt="") GR.clearws() dpi_factor = plt[:dpi] / Plots.DPI - if fmt == "svg" - dpi_factor *= 4 - end # collect some monitor/display sizes in meters and pixels display_width_meters, display_height_meters, display_width_px, display_height_px = GR.inqdspsize() From d3315a5dae397a0b9211b991d0ab59af6306b8b2 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Tue, 10 Nov 2020 18:37:41 +0100 Subject: [PATCH 023/518] Update Project.toml Bump version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index c28563c6..e4fa8433 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.8.0" +version = "1.8.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 32e681d158ee34d513548564a978f355f9daaf9b Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 12 Nov 2020 12:48:49 +0100 Subject: [PATCH 024/518] fix limits in GR image --- src/backends/gr.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 2e95d4c4..eff65950 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1578,16 +1578,14 @@ function gr_add_series(sp, series) sp[:legend] = :none GR.gr3.clear() dmin, dmax = GR.gr3.volume(y.v, 0) - elseif st in (:heatmap, :image) + elseif st === :heatmap if !ispolar(series) # `z` is already transposed, so we need to reverse before passing its size. x, y = heatmap_edges(x, xscale, y, yscale, reverse(size(z))) end - if st === :heatmap - gr_draw_heatmap(series, x, y, z, clims) - else - gr_draw_image(series, x, y, z, clims) - end + gr_draw_heatmap(series, x, y, z, clims) + elseif st === :image + gr_draw_image(series, x, y, z, clims) end # this is all we need to add the series_annotations text From 693c014064c70c66930e79ccf0795f582a172977 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 12 Nov 2020 13:53:42 +0100 Subject: [PATCH 025/518] add linestyle to contour plots (#3139) * add linestyle to contour plots * Update precompile_*.jl file (#3140) Co-authored-by: BeastyBlacksmith Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: BeastyBlacksmith --- .../precompile/linux/1.5/precompile_Plots.jl | 39 ++++++++++++++++--- src/backends/pgfplotsx.jl | 1 + 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index ffd35ca0..4a9134de 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -61,9 +61,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) @@ -72,6 +74,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -140,6 +143,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -160,10 +165,16 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) + Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) @@ -174,6 +185,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{RGBA{Float64},1},Int64}) Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) @@ -186,11 +198,12 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.discrete_value!),Plots.Axis,Array{String,1}}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.error_style!),RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) @@ -198,6 +211,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) @@ -207,18 +221,21 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments_3d),Plots.Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) @@ -227,14 +244,16 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.make_steps),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) @@ -242,6 +261,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},String,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) @@ -269,7 +289,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.postprocess_axis_args!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) @@ -286,32 +305,40 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(default),Symbol,Int64}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) + Base.precompile(Tuple{typeof(pairs),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Any},Plots.Plot{Plots.PlotlyBackend},Int64}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end if !ismissing(fbody) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index bd2bbf3c..6ea2de72 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -568,6 +568,7 @@ function pgfx_add_series!(::Val{:contour3d}, axis, series_opt, series, series_fu series_opt, "contour prepared" => PGFPlotsX.Options("labels" => opt[:contour_labels]), ) + series_opt = merge( series_opt, pgfx_linestyle(opt) ) args = pgfx_series_arguments(series, opt) series_plot = series_func(series_opt, PGFPlotsX.Table(Contour.contours(args..., opt[:levels]))) push!(axis, series_plot) From 1402ff5ea02bd7deb6b59cbaa7e6f196a1114a49 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 12 Nov 2020 14:34:18 +0100 Subject: [PATCH 026/518] add new test example --- Project.toml | 3 ++- src/examples.jl | 19 +++++++++++++++++-- test/runtests.jl | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Project.toml b/Project.toml index e4fa8433..623d7c43 100644 --- a/Project.toml +++ b/Project.toml @@ -68,8 +68,9 @@ StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +TestImages = "5e47fb64-e119-507b-a336-dd2b206d9990" UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" [targets] -test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "UnicodePlots", "VisualRegressionTests"] +test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] diff --git a/src/examples.jl b/src/examples.jl index c5efc2fc..d5bf01f3 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1067,6 +1067,20 @@ const _examples = PlotExample[ ) end] ), + PlotExample( # 51 + "Images with custom axes", + "", + [quote + using Plots + using TestImages + img = testimage("lighthouse") + + # plot the image reversing the first dimension and setting yflip = false + plot([-π, π], [-1, 1], reverse(img, dims=1), yflip=false, aspect_ratio=:none) + # plot other data + plot!(sin, -π, π, lw=3, color=:red) + end] + ), ] # Some constants for PlotDocs and PlotReferenceImages @@ -1074,8 +1088,8 @@ _animation_examples = [2, 31] _backend_skips = Dict( :gr => [25, 30, 47], :pyplot => [2, 25, 30, 31, 47, 49], - :plotlyjs => [2, 21, 24, 25, 30, 31, 49], - :plotly => [2, 21, 24, 25, 30, 31, 49], + :plotlyjs => [2, 21, 24, 25, 30, 31, 49, 51], + :plotly => [2, 21, 24, 25, 30, 31, 49, 51], :pgfplotsx => [ 2, # animation 6, # images @@ -1084,6 +1098,7 @@ _backend_skips = Dict( 31, # animation 32, # spy 49, # polar heatmap + 51, # image with custom axes ], ) diff --git a/test/runtests.jl b/test/runtests.jl index 5cd843ec..18ac4366 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,6 +4,7 @@ using Plots using Random using StableRNGs using Test +using TestImages using FileIO using Gtk using LibGit2 From 445f27a525db6619f0d856a294b660457b0865a6 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 12 Nov 2020 14:24:11 +0000 Subject: [PATCH 027/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index 4a9134de..15db53b6 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -88,6 +88,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) @@ -97,7 +99,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -158,6 +159,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:yflip, :aspect_ratio),Tuple{Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) @@ -169,9 +171,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) @@ -185,8 +184,8 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{RGBA{Float64},1},Int64}) Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.PlotlyBackend},Bool}) @@ -198,12 +197,10 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.error_style!),RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) @@ -221,14 +218,14 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments_3d),Plots.Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) @@ -237,23 +234,23 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots.is_2tuple),Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) @@ -261,7 +258,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},String,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) @@ -292,6 +288,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.slice_series_attributes!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,String}) @@ -313,21 +310,19 @@ function _precompile_() Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(default),Symbol,Int64}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) - Base.precompile(Tuple{typeof(pairs),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke},Symbol}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) From 3b367f8759729416530853407a7aefb9af852d92 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 12 Nov 2020 14:40:16 +0000 Subject: [PATCH 028/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 59 ++----------------- 1 file changed, 5 insertions(+), 54 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index 15db53b6..12e0edc0 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -60,21 +60,14 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -100,13 +93,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -144,8 +135,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -167,25 +156,15 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.PlotlyBackend},Bool}) @@ -193,13 +172,13 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot,Any,Any}) Base.precompile(Tuple{typeof(Plots._preprocess_barlike),RecipesPipeline.DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots._preprocess_binlike),RecipesPipeline.DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) + Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) @@ -218,37 +197,30 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) + Base.precompile(Tuple{typeof(Plots.gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_2tuple),Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) @@ -256,7 +228,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) @@ -265,7 +236,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) @@ -274,7 +244,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) @@ -288,7 +257,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.slice_series_attributes!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,String}) @@ -300,46 +268,29 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) + Base.precompile(Tuple{typeof(iterate),Base.Iterators.Enumerate{Plots.SegmentsIterator},Tuple{Int64}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke},Symbol}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) From 501f33f5c1e92b306a5935367412f767c3db6240 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Tue, 10 Nov 2020 18:34:14 +0100 Subject: [PATCH 029/518] Fix SVG scaling problem --- src/backends/gr.jl | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 372c2baa..2e95d4c4 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -593,9 +593,6 @@ function gr_display(plt::Plot, fmt="") GR.clearws() dpi_factor = plt[:dpi] / Plots.DPI - if fmt == "svg" - dpi_factor *= 4 - end # collect some monitor/display sizes in meters and pixels display_width_meters, display_height_meters, display_width_px, display_height_px = GR.inqdspsize() From f3b6221daa3c05383b19742fa652a8375a44e020 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Tue, 10 Nov 2020 18:37:41 +0100 Subject: [PATCH 030/518] Update Project.toml Bump version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index c28563c6..e4fa8433 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.8.0" +version = "1.8.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From ac8e1d7f213d6359b0458f7ad9344cec00202a68 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 12 Nov 2020 13:53:42 +0100 Subject: [PATCH 031/518] add linestyle to contour plots (#3139) * add linestyle to contour plots * Update precompile_*.jl file (#3140) Co-authored-by: BeastyBlacksmith Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: BeastyBlacksmith --- .../precompile/linux/1.5/precompile_Plots.jl | 39 ++++++++++++++++--- src/backends/pgfplotsx.jl | 1 + 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index ffd35ca0..4a9134de 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -61,9 +61,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) @@ -72,6 +74,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -140,6 +143,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -160,10 +165,16 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) + Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) @@ -174,6 +185,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{RGBA{Float64},1},Int64}) Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) @@ -186,11 +198,12 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.discrete_value!),Plots.Axis,Array{String,1}}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.error_style!),RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) @@ -198,6 +211,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) @@ -207,18 +221,21 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments_3d),Plots.Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) @@ -227,14 +244,16 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.make_steps),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) @@ -242,6 +261,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},String,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) @@ -269,7 +289,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.postprocess_axis_args!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) @@ -286,32 +305,40 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(default),Symbol,Int64}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) + Base.precompile(Tuple{typeof(pairs),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Any},Plots.Plot{Plots.PlotlyBackend},Int64}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end if !ismissing(fbody) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index bd2bbf3c..6ea2de72 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -568,6 +568,7 @@ function pgfx_add_series!(::Val{:contour3d}, axis, series_opt, series, series_fu series_opt, "contour prepared" => PGFPlotsX.Options("labels" => opt[:contour_labels]), ) + series_opt = merge( series_opt, pgfx_linestyle(opt) ) args = pgfx_series_arguments(series, opt) series_plot = series_func(series_opt, PGFPlotsX.Table(Contour.contours(args..., opt[:levels]))) push!(axis, series_plot) From 5d26068eaec64b71795122775a75dfb226649039 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 12 Nov 2020 12:48:49 +0100 Subject: [PATCH 032/518] fix limits in GR image --- src/backends/gr.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 2e95d4c4..eff65950 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1578,16 +1578,14 @@ function gr_add_series(sp, series) sp[:legend] = :none GR.gr3.clear() dmin, dmax = GR.gr3.volume(y.v, 0) - elseif st in (:heatmap, :image) + elseif st === :heatmap if !ispolar(series) # `z` is already transposed, so we need to reverse before passing its size. x, y = heatmap_edges(x, xscale, y, yscale, reverse(size(z))) end - if st === :heatmap - gr_draw_heatmap(series, x, y, z, clims) - else - gr_draw_image(series, x, y, z, clims) - end + gr_draw_heatmap(series, x, y, z, clims) + elseif st === :image + gr_draw_image(series, x, y, z, clims) end # this is all we need to add the series_annotations text From 40e13793e812a9037b0cc5e7b3a66291b1326dce Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 12 Nov 2020 14:34:18 +0100 Subject: [PATCH 033/518] add new test example --- Project.toml | 3 ++- src/examples.jl | 19 +++++++++++++++++-- test/runtests.jl | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Project.toml b/Project.toml index e4fa8433..623d7c43 100644 --- a/Project.toml +++ b/Project.toml @@ -68,8 +68,9 @@ StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +TestImages = "5e47fb64-e119-507b-a336-dd2b206d9990" UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" [targets] -test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "UnicodePlots", "VisualRegressionTests"] +test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] diff --git a/src/examples.jl b/src/examples.jl index c5efc2fc..d5bf01f3 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1067,6 +1067,20 @@ const _examples = PlotExample[ ) end] ), + PlotExample( # 51 + "Images with custom axes", + "", + [quote + using Plots + using TestImages + img = testimage("lighthouse") + + # plot the image reversing the first dimension and setting yflip = false + plot([-π, π], [-1, 1], reverse(img, dims=1), yflip=false, aspect_ratio=:none) + # plot other data + plot!(sin, -π, π, lw=3, color=:red) + end] + ), ] # Some constants for PlotDocs and PlotReferenceImages @@ -1074,8 +1088,8 @@ _animation_examples = [2, 31] _backend_skips = Dict( :gr => [25, 30, 47], :pyplot => [2, 25, 30, 31, 47, 49], - :plotlyjs => [2, 21, 24, 25, 30, 31, 49], - :plotly => [2, 21, 24, 25, 30, 31, 49], + :plotlyjs => [2, 21, 24, 25, 30, 31, 49, 51], + :plotly => [2, 21, 24, 25, 30, 31, 49, 51], :pgfplotsx => [ 2, # animation 6, # images @@ -1084,6 +1098,7 @@ _backend_skips = Dict( 31, # animation 32, # spy 49, # polar heatmap + 51, # image with custom axes ], ) diff --git a/test/runtests.jl b/test/runtests.jl index 5cd843ec..18ac4366 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,6 +4,7 @@ using Plots using Random using StableRNGs using Test +using TestImages using FileIO using Gtk using LibGit2 From a38e4734accab4ec1ef0fe5a7861ac624a0e5762 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 12 Nov 2020 14:24:11 +0000 Subject: [PATCH 034/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index 4a9134de..15db53b6 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -88,6 +88,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) @@ -97,7 +99,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -158,6 +159,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:yflip, :aspect_ratio),Tuple{Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) @@ -169,9 +171,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) @@ -185,8 +184,8 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{RGBA{Float64},1},Int64}) Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.PlotlyBackend},Bool}) @@ -198,12 +197,10 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.error_style!),RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) @@ -221,14 +218,14 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments_3d),Plots.Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) @@ -237,23 +234,23 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots.is_2tuple),Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) @@ -261,7 +258,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},String,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) @@ -292,6 +288,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.slice_series_attributes!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,String}) @@ -313,21 +310,19 @@ function _precompile_() Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(default),Symbol,Int64}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) - Base.precompile(Tuple{typeof(pairs),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke},Symbol}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) From 60a7e414424351f0e5d6fbd0d30b8cf039ff9a86 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 12 Nov 2020 14:40:16 +0000 Subject: [PATCH 035/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 59 ++----------------- 1 file changed, 5 insertions(+), 54 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index 15db53b6..12e0edc0 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -60,21 +60,14 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -100,13 +93,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -144,8 +135,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -167,25 +156,15 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.PlotlyBackend},Bool}) @@ -193,13 +172,13 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot,Any,Any}) Base.precompile(Tuple{typeof(Plots._preprocess_barlike),RecipesPipeline.DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots._preprocess_binlike),RecipesPipeline.DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) + Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) @@ -218,37 +197,30 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) + Base.precompile(Tuple{typeof(Plots.gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_2tuple),Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) @@ -256,7 +228,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) @@ -265,7 +236,6 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) @@ -274,7 +244,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) @@ -288,7 +257,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.slice_series_attributes!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,String}) @@ -300,46 +268,29 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) + Base.precompile(Tuple{typeof(iterate),Base.Iterators.Enumerate{Plots.SegmentsIterator},Tuple{Int64}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke},Symbol}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) From 9c0b2ea090acc54f006a0c35b2424d83e3d690b2 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 13 Nov 2020 07:57:10 +0100 Subject: [PATCH 036/518] add 3d quiver test example --- src/examples.jl | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/examples.jl b/src/examples.jl index d5bf01f3..911457f1 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1081,6 +1081,27 @@ const _examples = PlotExample[ plot!(sin, -π, π, lw=3, color=:red) end] ), + PlotExample( + "3d quiver", + "", + [quote + using Plots + + ϕs = range(-π, π, length=50) + θs = range(0, π, length=25) + θqs = range(1, π-1, length=25) + + x = vec([sin(θ) * cos(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) + y = vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) + z = vec([cos(θ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) + + u = 0.1 * vec([sin(θ) * cos(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) + v = 0.1 * vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) + w = 0.1 * vec([cos(θ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) + + quiver(x,y,z, quiver=(u,v,w)) + end] + ) ] # Some constants for PlotDocs and PlotReferenceImages @@ -1099,6 +1120,7 @@ _backend_skips = Dict( 32, # spy 49, # polar heatmap 51, # image with custom axes + 52, # 3d quiver ], ) From abebbdd54aab9ec673a7557e7379010ad2307804 Mon Sep 17 00:00:00 2001 From: Ronny Bergmann Date: Fri, 13 Nov 2020 09:29:43 +0100 Subject: [PATCH 037/518] fixes two checks for 3D to work properly. --- src/recipes.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index 15d41336..41d36714 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -1197,7 +1197,7 @@ function quiver_using_arrows(plotattributes::AKW) if !isa(plotattributes[:arrow], Arrow) plotattributes[:arrow] = arrow() end - is_3d = haskey(plotattributes,:z) + is_3d = haskey(plotattributes,:z) && !isnothing(plotattributes[:z]) velocity = error_zipit(plotattributes[:quiver]) xorig, yorig = plotattributes[:x], plotattributes[:y] zorig = is_3d ? plotattributes[:z] : [] @@ -1205,7 +1205,7 @@ function quiver_using_arrows(plotattributes::AKW) # for each point, we create an arrow of velocity vi, translated to the x/y coordinates x, y = zeros(0), zeros(0) is_3d && ( z = zeros(0)) - for i = 1:max(length(xorig), length(yorig), length(zorig)) + for i = 1:max(length(xorig), length(yorig), is_3d ? 0 : length(zorig)) # get the starting position xi = _cycle(xorig, i) yi = _cycle(yorig, i) From a955ded5c87fff9265c416da8c3b614f0c624878 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 13 Nov 2020 11:54:46 +0100 Subject: [PATCH 038/518] add 3dquiver to pgfplotsx (#3146) * add 3dquiver to pgfplotsx * fix 3d quiver * remove skip from examples --- src/backends/pgfplotsx.jl | 27 ++++++++++++++++++++------- src/examples.jl | 13 ++++++------- src/pipeline.jl | 2 +- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 6ea2de72..3a6f8c0e 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -282,7 +282,7 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) ) extra_series, extra_series_opt = pgfx_split_extra_opts(series[:extra_kwargs]) series_opt = merge(series_opt, PGFPlotsX.Options(extra_series_opt...)) - if RecipesPipeline.is3d(series) || st in (:heatmap, :contour) + if RecipesPipeline.is3d(series) || st in (:heatmap, :contour) || (st == :quiver && opt[:z] !== nothing) series_func = PGFPlotsX.Plot3 else series_func = PGFPlotsX.Plot @@ -587,12 +587,25 @@ function pgfx_add_series!(::Val{:quiver}, axis, series_opt, series, series_func, ) x = opt[:x] y = opt[:y] - table = PGFPlotsX.Table([ - :x => x, - :y => y, - :u => opt[:quiver][1], - :v => opt[:quiver][2], - ]) + z = opt[:z] + if z !== nothing + push!(series_opt["quiver"], "w" => "\\thisrow{w}") + table = PGFPlotsX.Table([ + :x => x, + :y => y, + :z => z, + :u => opt[:quiver][1], + :v => opt[:quiver][2], + :w => opt[:quiver][3], + ]) + else + table = PGFPlotsX.Table([ + :x => x, + :y => y, + :u => opt[:quiver][1], + :v => opt[:quiver][2], + ]) + end end series_plot = series_func(series_opt, table) push!(axis, series_plot) diff --git a/src/examples.jl b/src/examples.jl index 418f48f8..498f367f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1055,10 +1055,10 @@ const _examples = PlotExample[ f(x,a) = 1/x + a*x^2 xs = collect(0.1:0.05:2.0); as = collect(0.2:0.1:2.0); - + x_grid = [x for x in xs for y in as]; a_grid = [y for x in xs for y in as]; - + plot(x_grid, a_grid, f.(x_grid,a_grid), st = :surface, xlabel = "longer xlabel", @@ -1074,7 +1074,7 @@ const _examples = PlotExample[ using Plots using TestImages img = testimage("lighthouse") - + # plot the image reversing the first dimension and setting yflip = false plot([-π, π], [-1, 1], reverse(img, dims=1), yflip=false, aspect_ratio=:none) # plot other data @@ -1090,15 +1090,15 @@ const _examples = PlotExample[ ϕs = range(-π, π, length=50) θs = range(0, π, length=25) θqs = range(1, π-1, length=25) - + x = vec([sin(θ) * cos(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) y = vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) z = vec([cos(θ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) - + u = 0.1 * vec([sin(θ) * cos(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) v = 0.1 * vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) w = 0.1 * vec([cos(θ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) - + quiver(x,y,z, quiver=(u,v,w)) end] ), @@ -1120,7 +1120,6 @@ _backend_skips = Dict( 32, # spy 49, # polar heatmap 51, # image with custom axes - 52, # 3d quiver ], ) diff --git a/src/pipeline.jl b/src/pipeline.jl index 7197d2df..8f493cb2 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -316,7 +316,7 @@ end function _override_seriestype_check(plotattributes::AKW, st::Symbol) # do we want to override the series type? - if !RecipesPipeline.is3d(st) && !(st in (:contour, :contour3d)) + if !RecipesPipeline.is3d(st) && !(st in (:contour, :contour3d, :quiver)) z = plotattributes[:z] if !isa(z, Nothing) && (size(plotattributes[:x]) == size(plotattributes[:y]) == size(z)) From 2ef9bb1c0b9f6b7fb926938cba1597ad3b8be6c8 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 13 Nov 2020 13:05:27 +0100 Subject: [PATCH 039/518] 1.9.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 623d7c43..b31e7283 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.8.1" +version = "1.9.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 10e83b63b685badff7cb1a0f02705f371b1c44be Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 13 Nov 2020 22:00:32 +0100 Subject: [PATCH 040/518] fix grid for 3d quivers (#3150) --- src/backends/pgfplotsx.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 3a6f8c0e..d25083ae 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -590,6 +590,7 @@ function pgfx_add_series!(::Val{:quiver}, axis, series_opt, series, series_func, z = opt[:z] if z !== nothing push!(series_opt["quiver"], "w" => "\\thisrow{w}") + pgfx_axis!(axis.options, series[:subplot], :z) table = PGFPlotsX.Table([ :x => x, :y => y, From 99dff995049f99df9c8d7cdc925e9a89f115aaf2 Mon Sep 17 00:00:00 2001 From: willtebbutt Date: Mon, 16 Nov 2020 09:03:28 +0000 Subject: [PATCH 041/518] pgfplotsx, no font size (#3154) Co-authored-by: Will Tebbutt --- src/backends/pgfplotsx.jl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index d25083ae..c5981c8c 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -887,6 +887,13 @@ function pgfx_font(fontsize, thickness_scaling = 1, font = "\\selectfont") return string("{\\fontsize{", fs, " pt}{", 1.3fs, " pt}", font, "}") end +# If a particular fontsize parameter is `nothing`, produce a figure that doesn't specify the +# font size, and therefore uses whatever fontsize is utilised by the doc in which the +# figure is located. +function pgfx_font(fontsize::Nothing, thickness_scaling = 1, font = "\\selectfont") + return string("{", font, "}") +end + function pgfx_should_add_to_legend(series::Series) series.plotattributes[:primary] && !( From 2774b155b4c2b70db3fefd80bd623c34afed992f Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 16 Nov 2020 10:04:47 +0100 Subject: [PATCH 042/518] 1.9.1 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index b31e7283..8b16da35 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.9.0" +version = "1.9.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 94ca183a5bca02589ae10e7430f0923c104c330d Mon Sep 17 00:00:00 2001 From: Justin Willmert Date: Thu, 26 Nov 2020 12:22:42 -0600 Subject: [PATCH 043/518] Support plotting `OffsetArray`s for `:sticks` series type --- src/recipes.jl | 12 ++++++------ test/test_recipes.jl | 8 ++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index 41d36714..49028953 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -268,15 +268,15 @@ end end end newx, newy = zeros(3n), zeros(3n) - newz = z!== nothing ? zeros(3n) : nothing - for i = 1:n + newz = z !== nothing ? zeros(3n) : nothing + for (i, (xi, yi, zi)) = enumerate(zip(x, y, z !== nothing ? z : 1:n)) rng = (3i - 2):(3i) - newx[rng] = [x[i], x[i], NaN] + newx[rng] = [xi, xi, NaN] if z !== nothing - newy[rng] = [y[i], y[i], NaN] - newz[rng] = [_cycle(fr, i), z[i], NaN] + newy[rng] = [yi, yi, NaN] + newz[rng] = [_cycle(fr, i), zi, NaN] else - newy[rng] = [_cycle(fr, i), y[i], NaN] + newy[rng] = [_cycle(fr, i), yi, NaN] end end x := newx diff --git a/test/test_recipes.jl b/test/test_recipes.jl index 3c5718a4..d2dcfdf4 100644 --- a/test/test_recipes.jl +++ b/test/test_recipes.jl @@ -1,4 +1,6 @@ using Plots, Test +using OffsetArrays + @testset "lens!" begin pl = plot(1:5) lens!(pl, [1,2], [1,2], inset = (1, bbox(0.0,0.0,0.2,0.2)), colorbar = false) @@ -23,3 +25,9 @@ end # testset vsp = vspan([1,3], ylims=(-2,5), widen = false) @test Plots.ylims(vsp) == (-2,5) end # testset + +@testset "offset axes" begin + tri = OffsetVector(vcat(1:5, 4:-1:1), 11:19) + sticks = plot(tri, seriestype = :sticks) + @test length(sticks) == 1 +end From 8451b8da0fffd9487cad9c565233d601a1a4fbf4 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Fri, 27 Nov 2020 06:12:30 -0600 Subject: [PATCH 044/518] Fix CI + Use the triggering branch name in the SnoopCompile branch (#3082) * Use the triggering branch name in the SnoopCompile branch * fix set-env deprecation --- .github/workflows/SnoopCompile.yml | 6 +++--- .github/workflows/ci.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/SnoopCompile.yml b/.github/workflows/SnoopCompile.yml index e456eb65..e4d7560a 100644 --- a/.github/workflows/SnoopCompile.yml +++ b/.github/workflows/SnoopCompile.yml @@ -41,10 +41,10 @@ jobs: # TESTCMD - name: Default TESTCMD - run: echo ::set-env name=TESTCMD::"julia" + run: echo "TESTCMD=julia" >> $GITHUB_ENV - name: Ubuntu TESTCMD if: startsWith(matrix.os,'ubuntu') - run: echo ::set-env name=TESTCMD::"xvfb-run --auto-servernum julia" + run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV # Generate precompile files - name: Generating precompile files @@ -78,7 +78,7 @@ jobs: commit-message: Update precompile_*.jl file title: "[AUTO] Update precompiles" labels: SnoopCompile - branch: "SnoopCompile_AutoPR" + branch: "Test_SnoopCompile_AutoPR_${{ github.ref }}" Skip: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8d483a8d..ea965cb7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,10 +59,10 @@ jobs: # TESTCMD - name: Default TESTCMD - run: echo ::set-env name=TESTCMD::"julia" + run: echo "TESTCMD=julia" >> $GITHUB_ENV - name: Ubuntu TESTCMD if: startsWith(matrix.os,'ubuntu') - run: echo ::set-env name=TESTCMD::"xvfb-run --auto-servernum julia" + run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV # Julia Dependencies - name: Install Julia dependencies From aafb34f5f5d8a81b3847102234d7ec2b287c6e48 Mon Sep 17 00:00:00 2001 From: BeastyBlacksmith Date: Fri, 27 Nov 2020 12:26:52 +0000 Subject: [PATCH 045/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 53 +++++++++++++++---- src/precompile_includer.jl | 30 +++++++---- 2 files changed, 62 insertions(+), 21 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index 12e0edc0..f0c4304b 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -59,14 +59,18 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) @@ -81,6 +85,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -93,6 +98,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) @@ -134,6 +140,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -157,14 +164,23 @@ function _precompile_() Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) + Base.precompile(Tuple{typeof(Base.Broadcast.instantiate),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Nothing,typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) + Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) + Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.PlotlyBackend},Bool}) @@ -172,22 +188,22 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot,Any,Any}) Base.precompile(Tuple{typeof(Plots._preprocess_barlike),RecipesPipeline.DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots._preprocess_binlike),RecipesPipeline.DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(Plots.get_series_color),Int64,Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.get_xy),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) @@ -196,28 +212,30 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_spine),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}},Function}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) @@ -228,14 +246,17 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) + Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(Plots.quiver_using_arrows),RecipesPipeline.DefaultsDict}) + Base.precompile(Tuple{typeof(Plots.quiver_using_hack),RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) + Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) @@ -244,7 +265,9 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:quiver}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) @@ -265,22 +288,25 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,String}) Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) + Base.precompile(Tuple{typeof(bar),Any}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iterate),Base.Iterators.Enumerate{Plots.SegmentsIterator},Tuple{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) @@ -291,6 +317,11 @@ function _precompile_() Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index 49476e31..c7c98a4d 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -8,25 +8,35 @@ ismultiversion = true @static if !should_precompile # nothing elseif !ismultios && !ismultiversion - include("../deps/SnoopCompile/precompile/precompile_Plots.jl") - _precompile_() + @static if (isfile("../deps/SnoopCompile/precompile/precompile_Plots.jl")) + include("../deps/SnoopCompile/precompile/precompile_Plots.jl") + _precompile_() + end else @static if Sys.islinux() @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() + @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + end else - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() + @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + end end else @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() + @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + end else - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() + @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) + include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") + _precompile_() + end end end From 02008284aa3b8b712715db7e6582add5c8152c92 Mon Sep 17 00:00:00 2001 From: wg030 <32999782+wg030@users.noreply.github.com> Date: Tue, 1 Dec 2020 23:50:59 +0100 Subject: [PATCH 046/518] Update hdf5.jl (#3175) --- src/backends/hdf5.jl | 156 +++++++++++++++++++++---------------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/src/backends/hdf5.jl b/src/backends/hdf5.jl index 8c1d24f2..699b1529 100644 --- a/src/backends/hdf5.jl +++ b/src/backends/hdf5.jl @@ -46,7 +46,7 @@ import Dates #Plots.jl imports HDF5 to main: import ..HDF5 -import ..HDF5: HDF5Group, HDF5Dataset +import ..HDF5: Group, Dataset import ..Colors, ..Colorant import ..PlotUtils.ColorSchemes.ColorScheme @@ -159,40 +159,40 @@ _type_for_map(::Type{T}) where T<:Surface = Surface #==Read/write things like type name in attributes ===============================================================================# -function _write_datatype_attr(ds::Union{HDF5Group, HDF5Dataset}, ::Type{T}) where T +function _write_datatype_attr(ds::Union{Group, Dataset}, ::Type{T}) where T typestr = HDF5PLOT_MAP_TELEM2STR[T] - HDF5.attrs(ds)["TYPE"] = typestr + HDF5.attributes(ds)["TYPE"] = typestr end -function _read_datatype_attr(ds::Union{HDF5Group, HDF5Dataset}) - if !HDF5.exists(HDF5.attrs(ds), "TYPE") +function _read_datatype_attr(ds::Union{Group, Dataset}) + if !Base.haskey(HDF5.attributes(ds), "TYPE") return HDF5_AutoDetect end - typestr = HDF5.read(HDF5.attrs(ds)["TYPE"]) + typestr = HDF5.read(HDF5.attributes(ds)["TYPE"]) return HDF5PLOT_MAP_STR2TELEM[typestr] end #Type parameter attributes: -function _write_typeparam_attr(ds::HDF5Dataset, v::Length{T}) where T - HDF5.attrs(ds)["TYPEPARAM"] = string(T) #Need to add units for Length +function _write_typeparam_attr(ds::Dataset, v::Length{T}) where T + HDF5.attributes(ds)["TYPEPARAM"] = string(T) #Need to add units for Length end -_read_typeparam_attr(ds::HDF5Dataset) = HDF5.read(HDF5.attrs(ds)["TYPEPARAM"]) +_read_typeparam_attr(ds::Dataset) = HDF5.read(HDF5.attributes(ds)["TYPEPARAM"]) -function _write_length_attr(grp::HDF5Group, v::Vector) #of a vector - HDF5.attrs(grp)["LENGTH"] = length(v) +function _write_length_attr(grp::Group, v::Vector) #of a vector + HDF5.attributes(grp)["LENGTH"] = length(v) end -_read_length_attr(::Type{Vector}, grp::HDF5Group) = HDF5.read(HDF5.attrs(grp)["LENGTH"]) +_read_length_attr(::Type{Vector}, grp::Group) = HDF5.read(HDF5.attributes(grp)["LENGTH"]) -function _write_size_attr(grp::HDF5Group, v::Array) #of an array - HDF5.attrs(grp)["SIZE"] = [size(v)...] +function _write_size_attr(grp::Group, v::Array) #of an array + HDF5.attributes(grp)["SIZE"] = [size(v)...] end -_read_size_attr(::Type{Array}, grp::HDF5Group) = tuple(HDF5.read(HDF5.attrs(grp)["SIZE"])...) +_read_size_attr(::Type{Array}, grp::Group) = tuple(HDF5.read(HDF5.attributes(grp)["SIZE"])...) #==_write_typed(): Simple (leaf) datatypes. (Labels with type name.) ===============================================================================# #= No: write out struct instead! -function _write_typed(grp::HDF5Group, name::String, v::T) where T +function _write_typed(grp::Group, name::String, v::T) where T tstr = string(T) path = HDF5.name(grp) * "/" * name @info("Type not supported: $tstr\npath: $path") @@ -200,41 +200,41 @@ function _write_typed(grp::HDF5Group, name::String, v::T) where T end =# #Default behaviour: Assumes value is supported by HDF5 format -function _write_typed(grp::HDF5Group, name::String, v::HDF5_SupportedTypes) +function _write_typed(grp::Group, name::String, v::HDF5_SupportedTypes) grp[name] = v return #No need to _write_datatype_attr end -function _write_typed(grp::HDF5Group, name::String, v::Nothing) +function _write_typed(grp::Group, name::String, v::Nothing) grp[name] = "nothing" #Redundancy check/easier to read HDF5 file _write_datatype_attr(grp[name], Nothing) end -function _write_typed(grp::HDF5Group, name::String, v::Symbol) +function _write_typed(grp::Group, name::String, v::Symbol) grp[name] = String(v) _write_datatype_attr(grp[name], Symbol) end -function _write_typed(grp::HDF5Group, name::String, v::Colorant) +function _write_typed(grp::Group, name::String, v::Colorant) vstr = "#" * Colors.hex(v, :RRGGBBAA) grp[name] = vstr _write_datatype_attr(grp[name], Colorant) end -function _write_typed(grp::HDF5Group, name::String, v::Extrema) +function _write_typed(grp::Group, name::String, v::Extrema) grp[name] = [v.emin, v.emax] #More compact than writing struct _write_datatype_attr(grp[name], Extrema) end -function _write_typed(grp::HDF5Group, name::String, v::Length) +function _write_typed(grp::Group, name::String, v::Length) grp[name] = v.value _write_datatype_attr(grp[name], Length) _write_typeparam_attr(grp[name], v) end -function _write_typed(grp::HDF5Group, name::String, v::typeof(datetimeformatter)) +function _write_typed(grp::Group, name::String, v::typeof(datetimeformatter)) grp[name] = string(v) #Just write something that helps reader _write_datatype_attr(grp[name], typeof(datetimeformatter)) end -function _write_typed(grp::HDF5Group, name::String, v::Array{T}) where T<:Number #Default for arrays +function _write_typed(grp::Group, name::String, v::Array{T}) where T<:Number #Default for arrays grp[name] = v return #No need to _write_datatype_attr end -function _write_typed(grp::HDF5Group, name::String, v::AbstractRange) +function _write_typed(grp::Group, name::String, v::AbstractRange) _write_typed(grp, name, collect(v)) #For now end @@ -244,8 +244,8 @@ end ===============================================================================# #Write an array using HDF5 hierarchy (when not using simple numeric eltype): -function _write_harray(grp::HDF5Group, name::String, v::Array) - sgrp = HDF5.g_create(grp, name) +function _write_harray(grp::Group, name::String, v::Array) + sgrp = HDF5.create_group(grp, name) sz = size(v) lidx = LinearIndices(sz) @@ -260,8 +260,8 @@ function _write_harray(grp::HDF5Group, name::String, v::Array) end #Write Dict without tagging with type: -function _write(grp::HDF5Group, name::String, d::AbstractDict) - sgrp = HDF5.g_create(grp, name) +function _write(grp::Group, name::String, d::AbstractDict) + sgrp = HDF5.create_group(grp, name) for (k, v) in d kstr = string(k) _write_typed(sgrp, kstr, v) @@ -270,7 +270,7 @@ function _write(grp::HDF5Group, name::String, d::AbstractDict) end #Write out arbitrary `struct`s: -function _writestructgeneric(grp::HDF5Group, obj::T) where T +function _writestructgeneric(grp::Group, obj::T) where T for fname in fieldnames(T) v = getfield(obj, fname) _write_typed(grp, String(fname), v) @@ -283,7 +283,7 @@ end ===============================================================================# #Catch-all (default behaviour for `struct`s): -function _write_typed(grp::HDF5Group, name::String, v::T) where T +function _write_typed(grp::Group, name::String, v::T) where T #NOTE: need "name" parameter so that call signature is same with built-ins MT = _type_for_map(T) try #Check to see if type is supported @@ -294,27 +294,27 @@ function _write_typed(grp::HDF5Group, name::String, v::T) where T end #If attribute is supported and no writer is defined, then this should work: - objgrp = HDF5.g_create(grp, name) + objgrp = HDF5.create_group(grp, name) _write_datatype_attr(objgrp, MT) _writestructgeneric(objgrp, v) end -function _write_typed(grp::HDF5Group, name::String, v::Array{T}) where T +function _write_typed(grp::Group, name::String, v::Array{T}) where T _write_harray(grp, name, v) _write_datatype_attr(grp[name], Array) #{Any} end -function _write_typed(grp::HDF5Group, name::String, v::Tuple, ::Type{ELT}) where ELT<: Number #Basic Tuple +function _write_typed(grp::Group, name::String, v::Tuple, ::Type{ELT}) where ELT<: Number #Basic Tuple _write_typed(grp, name, [v...]) _write_datatype_attr(grp[name], Tuple) end -function _write_typed(grp::HDF5Group, name::String, v::Tuple, ::Type) #CplxTuple +function _write_typed(grp::Group, name::String, v::Tuple, ::Type) #CplxTuple _write_harray(grp, name, [v...]) _write_datatype_attr(grp[name], CplxTuple) end -_write_typed(grp::HDF5Group, name::String, v::Tuple) = _write_typed(grp, name, v, eltype(v)) +_write_typed(grp::Group, name::String, v::Tuple) = _write_typed(grp, name, v, eltype(v)) -function _write_typed(grp::HDF5Group, name::String, v::Dict) +function _write_typed(grp::Group, name::String, v::Dict) #= tstr = string(Dict) path = HDF5.name(grp) * "/" * name @@ -323,27 +323,27 @@ function _write_typed(grp::HDF5Group, name::String, v::Dict) =# #No support for structures with Dicts yet end -function _write_typed(grp::HDF5Group, name::String, d::DefaultsDict) #Typically for plot attributes +function _write_typed(grp::Group, name::String, d::DefaultsDict) #Typically for plot attributes _write(grp, name, d) _write_datatype_attr(grp[name], DefaultsDict) end -function _write_typed(grp::HDF5Group, name::String, v::Axis) - sgrp = HDF5.g_create(grp, name) +function _write_typed(grp::Group, name::String, v::Axis) + sgrp = HDF5.create_group(grp, name) #Ignore: sps::Vector{Subplot} _write_typed(sgrp, "plotattributes", v.plotattributes) _write_datatype_attr(sgrp, Axis) end -function _write_typed(grp::HDF5Group, name::String, v::Subplot) +function _write_typed(grp::Group, name::String, v::Subplot) #Not for use in main "Plot.subplots[]" hierarchy. Just establishes reference with subplot_index. - sgrp = HDF5.g_create(grp, name) + sgrp = HDF5.create_group(grp, name) _write_typed(sgrp, "index", v[:subplot_index]) _write_datatype_attr(sgrp, Subplot) return end -function _write_typed(grp::HDF5Group, name::String, v::Plot) +function _write_typed(grp::Group, name::String, v::Plot) #Don't write plot references end @@ -352,10 +352,10 @@ end NOTE: No need to write out type information (inferred from hierarchy) ===============================================================================# -function _write(grp::HDF5Group, sp::Subplot{HDF5Backend}) +function _write(grp::Group, sp::Subplot{HDF5Backend}) _write_typed(grp, "attr", sp.attr) - listgrp = HDF5.g_create(grp, "series_list") + listgrp = HDF5.create_group(grp, "series_list") _write_length_attr(listgrp, sp.series_list) for (i, series) in enumerate(sp.series_list) #Just write .plotattributes part: @@ -365,13 +365,13 @@ function _write(grp::HDF5Group, sp::Subplot{HDF5Backend}) return end -function _write(grp::HDF5Group, plt::Plot{HDF5Backend}) +function _write(grp::Group, plt::Plot{HDF5Backend}) _write_typed(grp, "attr", plt.attr) - listgrp = HDF5.g_create(grp, "subplots") + listgrp = HDF5.create_group(grp, "subplots") _write_length_attr(listgrp, plt.subplots) for (i, sp) in enumerate(plt.subplots) - sgrp = HDF5.g_create(listgrp, "$i") + sgrp = HDF5.create_group(listgrp, "$i") _write(sgrp, sp) end @@ -380,8 +380,8 @@ end function hdf5plot_write(plt::Plot{HDF5Backend}, path::AbstractString; name::String="_unnamed") HDF5.h5open(path, "w") do file - HDF5.d_write(file, "VERSION_INFO", _get_Plots_versionstr()) - grp = HDF5.g_create(file, h5plotpath(name)) + HDF5.write_dataset(file, "VERSION_INFO", _get_Plots_versionstr()) + grp = HDF5.create_group(file, h5plotpath(name)) _write(grp, plt) end end @@ -391,45 +391,45 @@ end ===============================================================================# #Types with built-in HDF5 support: -_read(::Type{HDF5_AutoDetect}, ds::HDF5Dataset) = HDF5.read(ds) +_read(::Type{HDF5_AutoDetect}, ds::Dataset) = HDF5.read(ds) -function _read(::Type{Nothing}, ds::HDF5Dataset) +function _read(::Type{Nothing}, ds::Dataset) nstr = "nothing" v = HDF5.read(ds) if nstr != v path = HDF5.name(ds) - throw(Meta.ParseError("_read(::Nothing, ::HDF5Group): Read $v != $nstr:\n$path")) + throw(Meta.ParseError("_read(::Nothing, ::Group): Read $v != $nstr:\n$path")) end return nothing end -_read(::Type{Symbol}, ds::HDF5Dataset) = Symbol(HDF5.read(ds)) -_read(::Type{Colorant}, ds::HDF5Dataset) = parse(Colorant, HDF5.read(ds)) -_read(::Type{Tuple}, ds::HDF5Dataset) = tuple(HDF5.read(ds)...) -function _read(::Type{Extrema}, ds::HDF5Dataset) +_read(::Type{Symbol}, ds::Dataset) = Symbol(HDF5.read(ds)) +_read(::Type{Colorant}, ds::Dataset) = parse(Colorant, HDF5.read(ds)) +_read(::Type{Tuple}, ds::Dataset) = tuple(HDF5.read(ds)...) +function _read(::Type{Extrema}, ds::Dataset) v = HDF5.read(ds) return Extrema(v[1], v[2]) end -function _read(::Type{Length}, ds::HDF5Dataset) +function _read(::Type{Length}, ds::Dataset) TUNIT = Symbol(_read_typeparam_attr(ds)) v = HDF5.read(ds) T = typeof(v) return Length{TUNIT,T}(v) end -_read(::Type{typeof(datetimeformatter)}, ds::HDF5Dataset) = datetimeformatter +_read(::Type{typeof(datetimeformatter)}, ds::Dataset) = datetimeformatter #== Helper functions for reading in complex data structures ===============================================================================# #When type is unknown, _read_typed() figures it out: -function _read_typed(grp::HDF5Group, name::String) +function _read_typed(grp::Group, name::String) ds = grp[name] t = _read_datatype_attr(ds) return _read(t, ds) end #_readstructgeneric: Needs object values to be written out with _write_typed(): -function _readstructgeneric(::Type{T}, grp::HDF5Group) where T +function _readstructgeneric(::Type{T}, grp::Group) where T vlist = Array{Any}(nothing, fieldcount(T)) for (i, fname) in enumerate(fieldnames(T)) vlist[i] = _read_typed(grp, String(fname)) @@ -438,7 +438,7 @@ function _readstructgeneric(::Type{T}, grp::HDF5Group) where T end #Read KW from group: -function _read(::Type{KW}, grp::HDF5Group) +function _read(::Type{KW}, grp::Group) d = KW() gnames = names(grp) for k in gnames @@ -459,9 +459,9 @@ end ===============================================================================# #Catch-all (default behaviour for `struct`s): -_read(T::Type, grp::HDF5Group) = _readstructgeneric(T, grp) +_read(T::Type, grp::Group) = _readstructgeneric(T, grp) -function _read(::Type{Array}, grp::HDF5Group) #Array{Any} +function _read(::Type{Array}, grp::Group) #Array{Any} sz = _read_size_attr(Array, grp) if tuple(0) == sz; return []; end result = Array{Any}(undef, sz) @@ -479,9 +479,9 @@ function _read(::Type{Array}, grp::HDF5Group) #Array{Any} return reshape(result, sz) end -_read(::Type{CplxTuple}, grp::HDF5Group) = tuple(_read(Array, grp)...) +_read(::Type{CplxTuple}, grp::Group) = tuple(_read(Array, grp)...) -function _read(::Type{GridLayout}, grp::HDF5Group) +function _read(::Type{GridLayout}, grp::Group) #parent = _read_typed(grp, "parent") #Can't use generic reader parent = RootLayout() #TODO: support parent??? minpad = _read_typed(grp, "minpad") @@ -494,17 +494,17 @@ function _read(::Type{GridLayout}, grp::HDF5Group) return GridLayout(parent, minpad, bbox, grid, widths, heights, attr) end #Defaults depends on context. So: user must constructs with defaults, then read. -function _read(::Type{DefaultsDict}, grp::HDF5Group) +function _read(::Type{DefaultsDict}, grp::Group) #User should set DefaultsDict.defaults to one of: # _plot_defaults, _subplot_defaults, _axis_defaults, _series_defaults path = HDF5.name(ds) @warn("Cannot yet read DefaultsDict using _read_typed():\n $path\nCannot fully reconstruct plot.") end -function _read(::Type{Axis}, grp::HDF5Group) +function _read(::Type{Axis}, grp::Group) #1st arg appears to be ref to subplots. Seems to work without it. return Axis([], DefaultsDict(_read(KW, grp["plotattributes"]), _axis_defaults)) end -function _read(::Type{Subplot}, grp::HDF5Group) +function _read(::Type{Subplot}, grp::Group) #Not for use in main "Plot.subplots[]" hierarchy. Just establishes reference with subplot_index. idx = _read_typed(grp, "index") return HDF5PLOT_PLOTREF.ref.subplots[idx] @@ -514,12 +514,12 @@ end #== _read(): Main plot structures ===============================================================================# -function _read(grp::HDF5Group, sp::Subplot) - listgrp = HDF5.g_open(grp, "series_list") +function _read(grp::Group, sp::Subplot) + listgrp = HDF5.open_group(grp, "series_list") nseries = _read_length_attr(Vector, listgrp) for i in 1:nseries - sgrp = HDF5.g_open(listgrp, "$i") + sgrp = HDF5.open_group(listgrp, "$i") seriesinfo = _read(KW, sgrp) plot!(sp, seriesinfo[:x], seriesinfo[:y]) #Add data & create data structures @@ -527,25 +527,25 @@ function _read(grp::HDF5Group, sp::Subplot) end #Perform after adding series... otherwise values get overwritten: - agrp = HDF5.g_open(grp, "attr") + agrp = HDF5.open_group(grp, "attr") _hdf5_merge!(sp.attr, _read(KW, agrp)) return sp end -function _read_plot(grp::HDF5Group) - listgrp = HDF5.g_open(grp, "subplots") +function _read_plot(grp::Group) + listgrp = HDF5.open_group(grp, "subplots") n = _read_length_attr(Vector, listgrp) #Construct new plot, +allocate subplots: plt = plot(layout=n) HDF5PLOT_PLOTREF.ref = plt #Used when reading "layout" - agrp = HDF5.g_open(grp, "attr") + agrp = HDF5.open_group(grp, "attr") _hdf5_merge!(plt.attr, _read(KW, agrp)) for (i, sp) in enumerate(plt.subplots) - sgrp = HDF5.g_open(listgrp, "$i") + sgrp = HDF5.open_group(listgrp, "$i") _read(sgrp, sp) end @@ -554,7 +554,7 @@ end function hdf5plot_read(path::AbstractString; name::String="_unnamed") HDF5.h5open(path, "r") do file - grp = HDF5.g_open(file, h5plotpath("_unnamed")) + grp = HDF5.open_group(file, h5plotpath("_unnamed")) return _read_plot(grp) end end From 4b0d69b6a4e25becb8facebc02fb1a992f984c09 Mon Sep 17 00:00:00 2001 From: Jks Liu Date: Fri, 4 Dec 2020 23:41:36 +0800 Subject: [PATCH 047/518] Set extra mine only when HTML format Extra mine is not used by other format --- src/ijulia.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ijulia.jl b/src/ijulia.jl index 13fc3b2e..7d2786ee 100644 --- a/src/ijulia.jl +++ b/src/ijulia.jl @@ -54,9 +54,9 @@ function _ijulia_display_dict(plt::Plot) elseif output_type == :html mime = "text/html" out[mime] = sprint(show, MIME(mime), plt) + _ijulia__extra_mime_info!(plt, out) else error("Unsupported output type $output_type") end - _ijulia__extra_mime_info!(plt, out) out end From cd450f49d45ccb005dc77ad161bd9e5ae2b527e3 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:26:26 -0500 Subject: [PATCH 048/518] Added tests for plots where xlims are Dates and DateTimes --- test/integration_dates.jl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 6a5756c7..85ed3da6 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -14,3 +14,19 @@ using Plots, Test, Dates @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims end # testset + +@testset "Date xlims" begin + y=[1.0*i*i for i in 1:10] + x=[Date(2019,11,i) for i in 1:10] + span = (Date(2019,10,31), Date(2019,11,11)) + + p = plot(x,y, xlims=span, widen = false) +end # testset + +@testset "DateTime xlims" begin + y=[1.0*i*i for i in 1:10] + x=[DateTime(2019,11,i,11) for i in 1:10] + span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) + + p = plot(x,y, xlims=span, widen = false) +end # testset From eea73202e22a9ededb9e2e3489890e1225b435d2 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:27:30 -0500 Subject: [PATCH 049/518] Added display checks to Date/DateTime tests to ensure they are able to be displayed --- test/integration_dates.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 85ed3da6..b4598d4c 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,6 +13,7 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims + @test isa(display(p), Nothing) == true end # testset @testset "Date xlims" begin @@ -21,6 +22,7 @@ end # testset span = (Date(2019,10,31), Date(2019,11,11)) p = plot(x,y, xlims=span, widen = false) + @test isa(display(p), Nothing) == true end # testset @testset "DateTime xlims" begin @@ -29,4 +31,5 @@ end # testset span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) p = plot(x,y, xlims=span, widen = false) + @test isa(display(p), Nothing) == true end # testset From 8a3ee7bb752f9b773034a7b270fa06e40cd06fe4 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:30:14 -0500 Subject: [PATCH 050/518] Added fix for case where lims are Date/DateTime s --- src/axes.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/axes.jl b/src/axes.jl index 0ef3a3a7..4523a973 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -94,6 +94,11 @@ function attr!(axis::Axis, args...; kw...) for vi in v discrete_value!(axis, vi) end + elseif k == :lims && isa(v, Tuple{Date,Date}) + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) + elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) + println("Converting datetime") + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) else plotattributes[k] = v end From 2013215ef28efbbf9ce568174dffb9800361c307 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:35:00 -0500 Subject: [PATCH 051/518] Removed a println --- src/axes.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index 4523a973..5f6b469d 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -97,7 +97,6 @@ function attr!(axis::Axis, args...; kw...) elseif k == :lims && isa(v, Tuple{Date,Date}) plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) - println("Converting datetime") plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) else plotattributes[k] = v From c9b1de33f641bf3e6a25ff53f81788f70a02aaf7 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:35:25 -0500 Subject: [PATCH 052/518] Added comments about possible alternate solutions --- src/axes.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/axes.jl b/src/axes.jl index 5f6b469d..37ea8eaa 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -94,6 +94,8 @@ function attr!(axis::Axis, args...; kw...) for vi in v discrete_value!(axis, vi) end + #could perhaps use TimeType here, as Date and DateTime are both subtypes of TimeType + # or could perhaps check if dateformatter or datetimeformatter is in use elseif k == :lims && isa(v, Tuple{Date,Date}) plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) From e9a4231a5f35d6806dd2e0dff6327503eb1d1369 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 14:30:11 -0500 Subject: [PATCH 053/518] Added checks around display checks to see if we're in CI --- test/integration_dates.jl | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index b4598d4c..4d43ccaf 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,7 +13,11 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims - @test isa(display(p), Nothing) == true + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + end end # testset @testset "Date xlims" begin @@ -21,8 +25,16 @@ end # testset x=[Date(2019,11,i) for i in 1:10] span = (Date(2019,10,31), Date(2019,11,11)) + ref_xlims = map(date->date.instant.periods.value, span) + p = plot(x,y, xlims=span, widen = false) - @test isa(display(p), Nothing) == true + + @test Plots.xlims(p) == ref_xlims + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + end end # testset @testset "DateTime xlims" begin @@ -30,6 +42,13 @@ end # testset x=[DateTime(2019,11,i,11) for i in 1:10] span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) + ref_xlims = map(date->date.instant.periods.value, span) + p = plot(x,y, xlims=span, widen = false) - @test isa(display(p), Nothing) == true + @test Plots.xlims(p) == ref_xlims + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + end end # testset From 0849471bf66b9e43a5de0c2de953c96e3de5143f Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 14:50:16 -0500 Subject: [PATCH 054/518] Added second condition to skip display checks --- test/integration_dates.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 4d43ccaf..924d9446 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,7 +13,7 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims - @static if haskey(ENV, "APPVEYOR") + @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -28,9 +28,9 @@ end # testset ref_xlims = map(date->date.instant.periods.value, span) p = plot(x,y, xlims=span, widen = false) - + @test Plots.xlims(p) == ref_xlims - @static if haskey(ENV, "APPVEYOR") + @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -46,7 +46,7 @@ end # testset p = plot(x,y, xlims=span, widen = false) @test Plots.xlims(p) == ref_xlims - @static if haskey(ENV, "APPVEYOR") + @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true From 8c49652add61a794804a58e3539d91ae4e2a4d37 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 15:20:11 -0500 Subject: [PATCH 055/518] Moved Dates tests to be before backend tests --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 18ac4366..4c26e3bf 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -31,10 +31,10 @@ end # testset include("test_defaults.jl") include("test_axes.jl") include("test_axis_letter.jl") +include("integration_dates.jl") include("test_recipes.jl") include("test_hdf5plots.jl") include("test_pgfplotsx.jl") -include("integration_dates.jl") reference_dir(args...) = joinpath(homedir(), ".julia", "dev", "PlotReferenceImages", args...) From 06a823a3be3893f5abaed4ee3a57d1feb4947648 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 15:21:15 -0500 Subject: [PATCH 056/518] Removed CI env check in Dates tests --- test/integration_dates.jl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 924d9446..13faf26b 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,7 +13,8 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims - @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -30,7 +31,8 @@ end # testset p = plot(x,y, xlims=span, widen = false) @test Plots.xlims(p) == ref_xlims - @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -46,7 +48,8 @@ end # testset p = plot(x,y, xlims=span, widen = false) @test Plots.xlims(p) == ref_xlims - @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true From f6627f3c5cdc3262fd2bf3ea76272fd1ed6ed28e Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 18:54:53 -0500 Subject: [PATCH 057/518] Now closing plots after display calls --- test/integration_dates.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 13faf26b..081d69fb 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -18,6 +18,7 @@ using Plots, Test, Dates @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true + closeall() end end # testset @@ -36,6 +37,7 @@ end # testset @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true + closeall() end end # testset @@ -53,5 +55,6 @@ end # testset @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true + closeall() end end # testset From 0b932ecb17db98ae98f74df087fc1d10ade8ad44 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 22:39:56 -0500 Subject: [PATCH 058/518] Added unit tests for src/components.jl --- test/runtests.jl | 1 + test/test_components.jl | 46 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 test/test_components.jl diff --git a/test/runtests.jl b/test/runtests.jl index 18ac4366..120cd33d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -31,6 +31,7 @@ end # testset include("test_defaults.jl") include("test_axes.jl") include("test_axis_letter.jl") +include("test_components.jl") include("test_recipes.jl") include("test_hdf5plots.jl") include("test_pgfplotsx.jl") diff --git a/test/test_components.jl b/test/test_components.jl new file mode 100644 index 00000000..855d5c82 --- /dev/null +++ b/test/test_components.jl @@ -0,0 +1,46 @@ +using Plots, Test + +@testset "Shape Copy" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + square2 = Shape(square) + @test square2.x == square.x + @test square2.y == square.y +end + +@testset "Shape Center" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + @test Plots.center(square) == (0.5,0.5) +end + +@testset "Shape Translate" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + squareUp = Shape([(0,1),(1,1),(1,2),(0,2)]) + squareUpRight = Shape([(1,1),(2,1),(2,2),(1,2)]) + + @test Plots.translate(square,0,1).x == squareUp.x + @test Plots.translate(square,0,1).y == squareUp.y + + @test Plots.center(translate!(square,1)) == (1.5,1.5) +end + +@testset "Brush" begin + @testset "Colors" begin + baseline = brush(1, RGB(0,0,0)) + @test brush(:black) == baseline + @test brush("black") == baseline + end + @testset "Weight" begin + @test brush(10).size == 10 + @test brush(0.1).size == 1 + end + @testset "Alpha" begin + @test brush(0.4).alpha == 0.4 + @test brush(20).alpha == nothing + end + @testset "Bad Argument" begin + # using test_logs because test_warn seems to not work anymore + @test_logs (:warn,"Unused brush arg: nothing (Nothing)") begin + brush(nothing) + end + end +end From 9ba633bb5983d4de921cb5cc7f6ec1fc362052f0 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 08:26:48 -0500 Subject: [PATCH 059/518] retrigger checks From f2b8e8512ed3fdb9e7cfe0545a5d3270736130a4 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 10:10:43 -0500 Subject: [PATCH 060/518] Added font scaling tests --- test/test_components.jl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/test_components.jl b/test/test_components.jl index 855d5c82..f1ba2afd 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -44,3 +44,28 @@ end end end end + +@testset "Fonts" begin + @testset "Scaling" begin + sizesToCheck = [:titlefontsize, :legendfontsize, :legendtitlefontsize, + :xtickfontsize, :ytickfontsize, :ztickfontsize, + :xguidefontsize, :yguidefontsize, :zguidefontsize,] + # get inital font sizes + initialSizes = [Plots.default(s) for s in sizesToCheck ] + + #scale up font sizes + scalefontsizes(2) + + # get inital font sizes + doubledSizes = [Plots.default(s) for s in sizesToCheck ] + + @test doubledSizes == initialSizes*2 + + # reset font sizes + resetfontsizes() + + finalSizes = [Plots.default(s) for s in sizesToCheck ] + + @test finalSizes == initialSizes + end +end From de03c3bca83eaf8fae83caba639ad29d48db70f7 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:26:26 -0500 Subject: [PATCH 061/518] Added tests for plots where xlims are Dates and DateTimes --- test/integration_dates.jl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 6a5756c7..85ed3da6 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -14,3 +14,19 @@ using Plots, Test, Dates @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims end # testset + +@testset "Date xlims" begin + y=[1.0*i*i for i in 1:10] + x=[Date(2019,11,i) for i in 1:10] + span = (Date(2019,10,31), Date(2019,11,11)) + + p = plot(x,y, xlims=span, widen = false) +end # testset + +@testset "DateTime xlims" begin + y=[1.0*i*i for i in 1:10] + x=[DateTime(2019,11,i,11) for i in 1:10] + span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) + + p = plot(x,y, xlims=span, widen = false) +end # testset From 0bc41f22bb817e3df0ed1d390e7f28ad4a100332 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:27:30 -0500 Subject: [PATCH 062/518] Added display checks to Date/DateTime tests to ensure they are able to be displayed --- test/integration_dates.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 85ed3da6..b4598d4c 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,6 +13,7 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims + @test isa(display(p), Nothing) == true end # testset @testset "Date xlims" begin @@ -21,6 +22,7 @@ end # testset span = (Date(2019,10,31), Date(2019,11,11)) p = plot(x,y, xlims=span, widen = false) + @test isa(display(p), Nothing) == true end # testset @testset "DateTime xlims" begin @@ -29,4 +31,5 @@ end # testset span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) p = plot(x,y, xlims=span, widen = false) + @test isa(display(p), Nothing) == true end # testset From bb3e053eb36c65147928ff347c4332450b035b92 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:30:14 -0500 Subject: [PATCH 063/518] Added fix for case where lims are Date/DateTime s --- src/axes.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/axes.jl b/src/axes.jl index 0ef3a3a7..4523a973 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -94,6 +94,11 @@ function attr!(axis::Axis, args...; kw...) for vi in v discrete_value!(axis, vi) end + elseif k == :lims && isa(v, Tuple{Date,Date}) + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) + elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) + println("Converting datetime") + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) else plotattributes[k] = v end From e9e6750481693a1175bdb7c4472ac2c65bf735b5 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:35:00 -0500 Subject: [PATCH 064/518] Removed a println --- src/axes.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index 4523a973..5f6b469d 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -97,7 +97,6 @@ function attr!(axis::Axis, args...; kw...) elseif k == :lims && isa(v, Tuple{Date,Date}) plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) - println("Converting datetime") plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) else plotattributes[k] = v From 9ab4c31d5cfc59d24bb936b143d256943188c57f Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 13:35:25 -0500 Subject: [PATCH 065/518] Added comments about possible alternate solutions --- src/axes.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/axes.jl b/src/axes.jl index 5f6b469d..37ea8eaa 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -94,6 +94,8 @@ function attr!(axis::Axis, args...; kw...) for vi in v discrete_value!(axis, vi) end + #could perhaps use TimeType here, as Date and DateTime are both subtypes of TimeType + # or could perhaps check if dateformatter or datetimeformatter is in use elseif k == :lims && isa(v, Tuple{Date,Date}) plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) From 352df39026a271f42284066268b2b341b8b6b67a Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 14:30:11 -0500 Subject: [PATCH 066/518] Added checks around display checks to see if we're in CI --- test/integration_dates.jl | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index b4598d4c..4d43ccaf 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,7 +13,11 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims - @test isa(display(p), Nothing) == true + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + end end # testset @testset "Date xlims" begin @@ -21,8 +25,16 @@ end # testset x=[Date(2019,11,i) for i in 1:10] span = (Date(2019,10,31), Date(2019,11,11)) + ref_xlims = map(date->date.instant.periods.value, span) + p = plot(x,y, xlims=span, widen = false) - @test isa(display(p), Nothing) == true + + @test Plots.xlims(p) == ref_xlims + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + end end # testset @testset "DateTime xlims" begin @@ -30,6 +42,13 @@ end # testset x=[DateTime(2019,11,i,11) for i in 1:10] span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) + ref_xlims = map(date->date.instant.periods.value, span) + p = plot(x,y, xlims=span, widen = false) - @test isa(display(p), Nothing) == true + @test Plots.xlims(p) == ref_xlims + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + end end # testset From 1fcdac4c9e71daa6dccace23c871b9fe214b2dbf Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 14:50:16 -0500 Subject: [PATCH 067/518] Added second condition to skip display checks --- test/integration_dates.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 4d43ccaf..924d9446 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,7 +13,7 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims - @static if haskey(ENV, "APPVEYOR") + @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -28,9 +28,9 @@ end # testset ref_xlims = map(date->date.instant.periods.value, span) p = plot(x,y, xlims=span, widen = false) - + @test Plots.xlims(p) == ref_xlims - @static if haskey(ENV, "APPVEYOR") + @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -46,7 +46,7 @@ end # testset p = plot(x,y, xlims=span, widen = false) @test Plots.xlims(p) == ref_xlims - @static if haskey(ENV, "APPVEYOR") + @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true From fa48e5c4901d0abdc80c3c0f581791311f2f8502 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 15:20:11 -0500 Subject: [PATCH 068/518] Moved Dates tests to be before backend tests --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 120cd33d..9a3c1a02 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -32,10 +32,10 @@ include("test_defaults.jl") include("test_axes.jl") include("test_axis_letter.jl") include("test_components.jl") +include("integration_dates.jl") include("test_recipes.jl") include("test_hdf5plots.jl") include("test_pgfplotsx.jl") -include("integration_dates.jl") reference_dir(args...) = joinpath(homedir(), ".julia", "dev", "PlotReferenceImages", args...) From 80285061c9f9cf537409dc47e586e4db9bdd3d24 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 15:21:15 -0500 Subject: [PATCH 069/518] Removed CI env check in Dates tests --- test/integration_dates.jl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 924d9446..13faf26b 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,7 +13,8 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims - @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -30,7 +31,8 @@ end # testset p = plot(x,y, xlims=span, widen = false) @test Plots.xlims(p) == ref_xlims - @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true @@ -46,7 +48,8 @@ end # testset p = plot(x,y, xlims=span, widen = false) @test Plots.xlims(p) == ref_xlims - @static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true From b8856871878d1bd7a521a096a95aa836332179f3 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Sun, 6 Dec 2020 18:54:53 -0500 Subject: [PATCH 070/518] Now closing plots after display calls --- test/integration_dates.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 13faf26b..081d69fb 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -18,6 +18,7 @@ using Plots, Test, Dates @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true + closeall() end end # testset @@ -36,6 +37,7 @@ end # testset @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true + closeall() end end # testset @@ -53,5 +55,6 @@ end # testset @info "Skipping display tests on AppVeyor" else @test isa(display(p), Nothing) == true + closeall() end end # testset From e57a9349f63808bd714887c40a623f6eb177bf95 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 10:10:43 -0500 Subject: [PATCH 071/518] Added font scaling tests --- test/test_components.jl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/test_components.jl b/test/test_components.jl index 855d5c82..f1ba2afd 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -44,3 +44,28 @@ end end end end + +@testset "Fonts" begin + @testset "Scaling" begin + sizesToCheck = [:titlefontsize, :legendfontsize, :legendtitlefontsize, + :xtickfontsize, :ytickfontsize, :ztickfontsize, + :xguidefontsize, :yguidefontsize, :zguidefontsize,] + # get inital font sizes + initialSizes = [Plots.default(s) for s in sizesToCheck ] + + #scale up font sizes + scalefontsizes(2) + + # get inital font sizes + doubledSizes = [Plots.default(s) for s in sizesToCheck ] + + @test doubledSizes == initialSizes*2 + + # reset font sizes + resetfontsizes() + + finalSizes = [Plots.default(s) for s in sizesToCheck ] + + @test finalSizes == initialSizes + end +end From 0e73bcdc4ea4cf89b2a33eb9921c1f88a2047a69 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 20:00:55 -0500 Subject: [PATCH 072/518] Added some tests for shorthands.jl --- test/runtests.jl | 1 + test/test_shorthands.jl | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 test/test_shorthands.jl diff --git a/test/runtests.jl b/test/runtests.jl index 120cd33d..6c3528cd 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -32,6 +32,7 @@ include("test_defaults.jl") include("test_axes.jl") include("test_axis_letter.jl") include("test_components.jl") +include("test_shorthands.jl") include("test_recipes.jl") include("test_hdf5plots.jl") include("test_pgfplotsx.jl") diff --git a/test/test_shorthands.jl b/test/test_shorthands.jl new file mode 100644 index 00000000..891c0c14 --- /dev/null +++ b/test/test_shorthands.jl @@ -0,0 +1,48 @@ +using Plots, Test + +@testset "Shorthands" begin + @testset "Set Lims" begin + p = plot(rand(10)) + + xlims!((1,20)) + @test xlims(p) == (1,20) + + ylims!((-1,1)) + @test ylims(p) == (-1,1) + + zlims!((-1,1)) + @test zlims(p) == (-1,1) + + xlims!(-1,11) + @test xlims(p) == (-1,11) + + ylims!((-10,10)) + @test ylims(p) == (-10,10) + + zlims!((-10,10)) + @test zlims(p) == (-10,10) + end + + @testset "Set Ticks" begin + p = plot([0,2,3,4,5,6,7,8,9,10]) + + xticks = 2:6 + xticks!(xticks) + @test Plots.get_subplot(current(),1).attr[:xaxis][:ticks] == xticks + + yticks = 0.2:0.1:0.7 + yticks!(yticks) + @test Plots.get_subplot(current(),1).attr[:yaxis][:ticks] == yticks + + xticks = [5,6,7.5] + xlabels = ["a","b","c"] + + xticks!(xticks, xlabels) + @test Plots.get_subplot(current(),1).attr[:xaxis][:ticks] == (xticks, xlabels) + + yticks = [.5,.6,.75] + ylabels = ["z","y","x"] + yticks!(yticks, ylabels) + @test Plots.get_subplot(current(),1).attr[:yaxis][:ticks] == (yticks, ylabels) + end +end From 38ada46a437e685a859ff5447cc30464c05c4033 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 20:01:09 -0500 Subject: [PATCH 073/518] Added an auto-label test --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 6c3528cd..b37e91eb 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -133,7 +133,7 @@ const IMG_TOL = VERSION < v"1.4" && Sys.iswindows() ? 1e-1 : is_ci() ? 1e-2 : 1e @test isa(p, Plots.Plot) == true @test isa(display(p), Nothing) == true p = plot([Dates.Date(2019, 1, 1), Dates.Date(2019, 2, 1)], [3, 4]) - annotate!(p, [(Dates.Date(2019, 1, 15), 3.2, Plots.text("Test", :red, :center))]) + annotate!(p, [(Dates.Date(2019, 1, 15), 3.2, :auto)]) hline!(p, [3.1]) @test isa(p, Plots.Plot) == true @test isa(display(p), Nothing) == true From bc144b64c8b488f00ce9c39d412ab251e6ff93df Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 20:52:46 -0500 Subject: [PATCH 074/518] Added Shape rotation tests --- test/test_components.jl | 55 ++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/test/test_components.jl b/test/test_components.jl index f1ba2afd..b6f14f7b 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -1,26 +1,47 @@ using Plots, Test -@testset "Shape Copy" begin - square = Shape([(0,0),(1,0),(1,1),(0,1)]) - square2 = Shape(square) - @test square2.x == square.x - @test square2.y == square.y -end +@testset "Shapes" begin + @testset "Copy" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + square2 = Shape(square) + @test square2.x == square.x + @test square2.y == square.y + end -@testset "Shape Center" begin - square = Shape([(0,0),(1,0),(1,1),(0,1)]) - @test Plots.center(square) == (0.5,0.5) -end + @testset "Center" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + @test Plots.center(square) == (0.5,0.5) + end -@testset "Shape Translate" begin - square = Shape([(0,0),(1,0),(1,1),(0,1)]) - squareUp = Shape([(0,1),(1,1),(1,2),(0,2)]) - squareUpRight = Shape([(1,1),(2,1),(2,2),(1,2)]) + @testset "Translate" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + squareUp = Shape([(0,1),(1,1),(1,2),(0,2)]) + squareUpRight = Shape([(1,1),(2,1),(2,2),(1,2)]) - @test Plots.translate(square,0,1).x == squareUp.x - @test Plots.translate(square,0,1).y == squareUp.y + @test Plots.translate(square,0,1).x == squareUp.x + @test Plots.translate(square,0,1).y == squareUp.y - @test Plots.center(translate!(square,1)) == (1.5,1.5) + @test Plots.center(translate!(square,1)) == (1.5,1.5) + end + + @testset "Rotate" begin + # 2 radians rotation matrix + R2 = [cos(2) sin(2); -sin(2) cos(2)] + coords = [0 0; 1 0; 1 1; 0 1]' + coordsRotated2 = R2*(coords.-0.5).+0.5 + + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + + # make a new, rotated square + square2 = rotate(square, -2) + @test square2.x ≈ coordsRotated2[1,:] + @test square2.y ≈ coordsRotated2[2,:] + + # unrotate the new square in place + rotate!(square2, 2) + @test square2.x ≈ coords[1,:] + @test square2.y ≈ coords[2,:] + end end @testset "Brush" begin From f905d6b6978ed0ccd5081bdc706655dd259285be Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 21:23:26 -0500 Subject: [PATCH 075/518] Fixed rotate test and added series_annotation tests --- test/test_components.jl | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/test/test_components.jl b/test/test_components.jl index b6f14f7b..1ade43d5 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -33,7 +33,7 @@ using Plots, Test square = Shape([(0,0),(1,0),(1,1),(0,1)]) # make a new, rotated square - square2 = rotate(square, -2) + square2 = Plots.rotate(square, -2) @test square2.x ≈ coordsRotated2[1,:] @test square2.y ≈ coordsRotated2[2,:] @@ -90,3 +90,22 @@ end @test finalSizes == initialSizes end end + +@testset "Series Annotations" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + @test_logs (:warn,"Unused SeriesAnnotations arg: triangle (Symbol)") begin + p = plot([1,2,3], + series_annotations=(["a"], + 2, # pass a scale factor + (1,4), # pass two scale factors (overwrites first one) + square, # pass a shape + font(:courier), # pass an annotation font + :triangle # pass an incorrect argument + )) + sa = p.series_list[1].plotattributes[:series_annotations] + @test sa.strs == ["a"] + @test sa.font.family == "courier" + @test sa.baseshape == square + @test sa.scalefactor == (1,4) + end +end From d1671ea6f0b1df5f488c873aad9b14958edfffc6 Mon Sep 17 00:00:00 2001 From: Thatcher Chamberlin Date: Mon, 7 Dec 2020 22:01:29 -0500 Subject: [PATCH 076/518] recheck coverage From 0c4623873c7b02fc9ab00c447245ed24e7d02b4d Mon Sep 17 00:00:00 2001 From: jaakkor2 Date: Tue, 8 Dec 2020 09:50:30 +0100 Subject: [PATCH 077/518] Handle basex, basey, linthreshx, linthreshy deprecated in matplotlib 3.3 (#3183) See https://matplotlib.org/3.3.0/api/api_changes.html --- src/backends/pyplot.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 8a62292f..7df748f1 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -799,6 +799,9 @@ function py_set_scale(ax, sp::Subplot, axis::Axis) letter = axis[:letter] scale in supported_scales() || return @warn("Unhandled scale value in pyplot: $scale") func = getproperty(ax, Symbol("set_", letter, "scale")) + if PyPlot.version ≥ v"3.3" # https://matplotlib.org/3.3.0/api/api_changes.html + letter = Symbol("") + end kw = KW() arg = if scale == :identity "linear" From 62af64f08abd89ef90fdb5921839245617419a41 Mon Sep 17 00:00:00 2001 From: zhanibek Date: Thu, 10 Dec 2020 18:48:17 +0900 Subject: [PATCH 078/518] various pyplot fixes --- src/backends/pyplot.jl | 74 +++++++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 19 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 7df748f1..775faebd 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -920,8 +920,6 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) end kw[:spacing] = "proportional" - fig = plt.o - if RecipesPipeline.is3d(sp) || ispolar(sp) cbax = fig."add_axes"([0.9, 0.1, 0.03, 0.8]) cb = fig."colorbar"(handle; cax=cbax, kw...) @@ -967,25 +965,53 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) cb."formatter".set_powerlimits((-Inf, Inf)) cb."update_ticks"() - for lab in cb."ax"."yaxis"."get_ticklabels"() - lab."set_fontsize"(py_thickness_scale(plt, sp[:yaxis][:tickfontsize])) - lab."set_family"(sp[:yaxis][:tickfontfamily]) - lab."set_color"(py_color(sp[:yaxis][:tickfontcolor])) + if sp[:colorbar] in (:top, :bottom) + axis = sp[:xaxis] # colorbar inherits from x axis + cbar_axis = cb."ax"."xaxis" + else + axis = sp[:yaxis] # colorbar inherits from y axis + cbar_axis = cb."ax"."yaxis" end + + for lab in cbar_axis."get_ticklabels"() + lab."set_fontsize"(py_thickness_scale(plt, axis[:tickfontsize])) + lab."set_family"(axis[:tickfontfamily]) + lab."set_color"(py_color(axis[:tickfontcolor])) + end + + # Adjust thickness of the cbar ticks + intensity = 0.5 + cbar_axis."set_tick_params"( + direction = axis[:tick_direction] == :out ? "out" : "in", + width=py_thickness_scale(plt, intensity), + length= 5 * py_thickness_scale(plt, intensity) + ) + + + + cb.outline."set_linewidth"(py_thickness_scale(plt, 1)) + sp.attr[:cbar_handle] = cb sp.attr[:cbar_ax] = cbax end # framestyle if !ispolar(sp) && !RecipesPipeline.is3d(sp) - ax.spines["left"]."set_linewidth"(py_thickness_scale(plt, 1)) - ax.spines["bottom"]."set_linewidth"(py_thickness_scale(plt, 1)) + for pos in ("left", "right", "top", "bottom") + # Scale all axes by default first + ax.spines[pos]."set_linewidth"(py_thickness_scale(plt, 1)) + end + + # Then set visible some of them if sp[:framestyle] == :semi intensity = 0.5 ax.spines["right"]."set_alpha"(intensity) ax.spines["top"]."set_alpha"(intensity) ax.spines["right"]."set_linewidth"(py_thickness_scale(plt, intensity)) ax.spines["top"]."set_linewidth"(py_thickness_scale(plt, intensity)) + elseif sp[:framestyle] == :box + ax.tick_params(top=true) # Add ticks too + ax.tick_params(right=true) # Add ticks too elseif sp[:framestyle] in (:axes, :origin) ax.spines["right"]."set_visible"(false) ax.spines["top"]."set_visible"(false) @@ -1010,15 +1036,11 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) PyPlot.PyCall.hasproperty(ax, axissym) || continue axis = sp[axissym] pyaxis = getproperty(ax, axissym) - if axis[:mirror] && letter != :z - pos = letter == :x ? "top" : "right" - pyaxis."set_label_position"(pos) # the guides - pyaxis."set_ticks_position"("both") # the hash marks - getproperty(pyaxis, Symbol(:tick_, pos))() # the tick labels - end + if axis[:guide_position] != :auto && letter != :z pyaxis."set_label_position"(axis[:guide_position]) end + py_set_scale(ax, sp, axis) axis[:ticks] == :native ? nothing : py_set_lims(ax, sp, axis) if ispolar(sp) && letter == :y @@ -1193,6 +1215,7 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) toppad = 0mm rightpad = 0mm bottompad = 0mm + for bb in (py_bbox_axis(ax, "x"), py_bbox_axis(ax, "y"), py_bbox_title(ax), py_bbox_legend(ax)) if ispositive(width(bb)) && ispositive(height(bb)) leftpad = max(leftpad, left(plotbb) - left(bb)) @@ -1202,13 +1225,26 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) end end - # optionally add the width of colorbar labels and colorbar to rightpad - if haskey(sp.attr, :cbar_ax) - bb = py_bbox(sp.attr[:cbar_handle]."ax"."get_yticklabels"()) - sp.attr[:cbar_width] = width(bb) + (sp[:colorbar_title] == "" ? 0px : 30px) - rightpad = rightpad + sp.attr[:cbar_width] + if haskey(sp.attr, :cbar_ax) # Treat colorbar the same way + ax = sp.attr[:cbar_handle]."ax" + for bb in (py_bbox_axis(ax, "x"), py_bbox_axis(ax, "y"), py_bbox_title(ax), ) + if ispositive(width(bb)) && ispositive(height(bb)) + leftpad = max(leftpad, left(plotbb) - left(bb)) + toppad = max(toppad, top(plotbb) - top(bb)) + rightpad = max(rightpad, right(bb) - right(plotbb)) + bottompad = max(bottompad, bottom(bb) - bottom(plotbb)) + end + end end + + # optionally add the width of colorbar labels and colorbar to rightpad + # if haskey(sp.attr, :cbar_ax) + # bb = py_bbox(sp.attr[:cbar_handle]."ax"."get_yticklabels"()) + # sp.attr[:cbar_width] = width(bb) + (sp[:colorbar_title] == "" ? 0px : 30px) + # rightpad = rightpad + sp.attr[:cbar_width] + # end + # add in the user-specified margin leftpad += sp[:left_margin] toppad += sp[:top_margin] From d61bbcce56ebee882ce6c42332bf24eb83f5beec Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 17 Dec 2020 18:20:56 +0100 Subject: [PATCH 079/518] allow more types in `lims!` functions --- src/shorthands.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shorthands.jl b/src/shorthands.jl index 16008dde..3e182bb6 100644 --- a/src/shorthands.jl +++ b/src/shorthands.jl @@ -420,13 +420,13 @@ xlabel!(s::AbstractString; kw...) = plot!(; xlabel = s, kw...) ylabel!(s::AbstractString; kw...) = plot!(; ylabel = s, kw...) "Set xlims for an existing plot" -xlims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; xlims = lims, kw...) +xlims!(lims::Tuple{T,S}; kw...) where {T,S} = plot!(; xlims = lims, kw...) "Set ylims for an existing plot" -ylims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; ylims = lims, kw...) +ylims!(lims::Tuple{T,S}; kw...) where {T,S} = plot!(; ylims = lims, kw...) "Set zlims for an existing plot" -zlims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; zlims = lims, kw...) +zlims!(lims::Tuple{T,S}; kw...) where {T,S} = plot!(; zlims = lims, kw...) xlims!(xmin::Real, xmax::Real; kw...) = plot!(; xlims = (xmin,xmax), kw...) ylims!(ymin::Real, ymax::Real; kw...) = plot!(; ylims = (ymin,ymax), kw...) @@ -478,4 +478,4 @@ yaxis!(args...; kw...) = plot!(; yaxis = args xgrid!(args...; kw...) = plot!(; xgrid = args, kw...) ygrid!(args...; kw...) = plot!(; ygrid = args, kw...) -@specialize \ No newline at end of file +@specialize From 0f349be9529acbebd97fa842d966a3c6e64faa72 Mon Sep 17 00:00:00 2001 From: Rik Huijzer Date: Wed, 23 Dec 2020 23:35:11 +0100 Subject: [PATCH 080/518] Avoid comparing findfirst to nothing (#3200) --- 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 eff65950..fbef8c64 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -219,7 +219,7 @@ gr_inqtext(x, y, s) = gr_inqtext(x, y, string(s)) function gr_inqtext(x, y, s::AbstractString) if length(s) >= 2 && s[1] == '$' && s[end] == '$' GR.inqmathtex(x, y, s[2:end-1]) - elseif findfirst(isequal('\\'), s) !== nothing || occursin("10^{", s) + elseif occursin('\\', s) || occursin("10^{", s) GR.inqtextext(x, y, s) else GR.inqtext(x, y, s) @@ -231,7 +231,7 @@ gr_text(x, y, s) = gr_text(x, y, string(s)) function gr_text(x, y, s::AbstractString) if length(s) >= 2 && s[1] == '$' && s[end] == '$' GR.mathtex(x, y, s[2:end-1]) - elseif findfirst(isequal('\\'), s) !== nothing || occursin("10^{", s) + elseif occursin('\\', s) || occursin("10^{", s) GR.textext(x, y, s) else GR.text(x, y, s) From 2e25d86daad67d355f08269fface3a942950b062 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 26 Dec 2020 00:35:07 +0000 Subject: [PATCH 081/518] CompatHelper: bump compat for "Reexport" to "1.0" --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 8b16da35..2e90f10b 100644 --- a/Project.toml +++ b/Project.toml @@ -46,7 +46,7 @@ PlotThemes = "2" PlotUtils = "1" RecipesBase = "1" RecipesPipeline = "0.2" -Reexport = "0.2" +Reexport = "0.2, 1.0" Requires = "1" Scratch = "1" Showoff = "0.3.1" From 17f3faf67249bc28773ba90e0ac9d95b0a11339e Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 29 Dec 2020 11:36:59 +0100 Subject: [PATCH 082/518] simplify signature --- src/shorthands.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/shorthands.jl b/src/shorthands.jl index 3e182bb6..e1afb1a4 100644 --- a/src/shorthands.jl +++ b/src/shorthands.jl @@ -420,13 +420,13 @@ xlabel!(s::AbstractString; kw...) = plot!(; xlabel = s, kw...) ylabel!(s::AbstractString; kw...) = plot!(; ylabel = s, kw...) "Set xlims for an existing plot" -xlims!(lims::Tuple{T,S}; kw...) where {T,S} = plot!(; xlims = lims, kw...) +xlims!(lims::Tuple; kw...) = plot!(; xlims = lims, kw...) "Set ylims for an existing plot" -ylims!(lims::Tuple{T,S}; kw...) where {T,S} = plot!(; ylims = lims, kw...) +ylims!(lims::Tuple; kw...) = plot!(; ylims = lims, kw...) "Set zlims for an existing plot" -zlims!(lims::Tuple{T,S}; kw...) where {T,S} = plot!(; zlims = lims, kw...) +zlims!(lims::Tuple; kw...) = plot!(; zlims = lims, kw...) xlims!(xmin::Real, xmax::Real; kw...) = plot!(; xlims = (xmin,xmax), kw...) ylims!(ymin::Real, ymax::Real; kw...) = plot!(; ylims = (ymin,ymax), kw...) From 8cc6d9d48755ba452a2835f9b89d3880e9945377 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 29 Dec 2020 22:03:03 +0100 Subject: [PATCH 083/518] 1.10.0 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 8b16da35..092b39bd 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.9.1" +version = "1.10.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 91608a6eabf1f6c8106a1834837302f4d266f8f0 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 31 Dec 2020 09:17:39 +0100 Subject: [PATCH 084/518] respect legendfontcolor in pgfplotsx --- src/backends/pgfplotsx.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index c5981c8c..9bf2a6c9 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -163,11 +163,12 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) ) => nothing, "fill" => cstr, "fill opacity" => a, - "text opacity" => alpha(plot_color(sp[:legendfontcolor])), + "text opacity" => alpha(plot_color(sp[:legendfontcolor])), "font" => pgfx_font( sp[:legendfontsize], pgfx_thickness_scaling(sp), ), + "text" => plot_color(sp[:legendfontcolor]), ), "axis background/.style" => PGFPlotsX.Options( "fill" => bgc_inside, From c08555a6386dcc5aada74136f3cd8394ed4f7882 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 31 Dec 2020 08:35:42 +0000 Subject: [PATCH 085/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index f0c4304b..d858e609 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -59,19 +59,22 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -83,9 +86,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),Any,typeof(lens!),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -160,15 +163,13 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip, :disp),Tuple{Array{Int64,1},Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.instantiate),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Nothing,typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) @@ -202,7 +203,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Int64,Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.get_xy),Array{OHLC,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) @@ -212,14 +213,13 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_spine),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}},Function}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) @@ -228,6 +228,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) @@ -249,6 +250,7 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(Plots.quiver_using_arrows),RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots.quiver_using_hack),RecipesPipeline.DefaultsDict}) Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) @@ -288,25 +290,29 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,String}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,String}) Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bar),Any}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) + Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) + Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) @@ -316,6 +322,7 @@ function _precompile_() Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end if !ismissing(fbody) From ca7f69eaa3893da9e604272ac13813dc97da75cb Mon Sep 17 00:00:00 2001 From: daschw Date: Fri, 1 Jan 2021 22:08:33 +0000 Subject: [PATCH 086/518] Update precompile_*.jl file --- .../precompile/linux/1.5/precompile_Plots.jl | 32 +++++++------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl index d858e609..786ae335 100644 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl @@ -60,21 +60,17 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -89,6 +85,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -99,9 +96,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) @@ -145,6 +143,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -167,6 +166,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) + Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) @@ -213,20 +213,20 @@ function _precompile_() Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Int64,Float64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) @@ -293,26 +293,22 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Int64,Int64},Tuple{Float64,Float64,Int64}}) Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) + Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Int64,Float64,Symbol,Plots.Stroke},Symbol}) + Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Symbol,Float64,Plots.Stroke},Symbol}) + Base.precompile(Tuple{typeof(setindex!),Plots.Plot{Plots.GRBackend},RGBA{Float64},Symbol}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) @@ -322,13 +318,7 @@ function _precompile_() Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) From 2ebc97d92a24a1407c81afae0641c899c11a24eb Mon Sep 17 00:00:00 2001 From: Lia Siegelman <37456301+liasiegelman@users.noreply.github.com> Date: Tue, 5 Jan 2021 12:40:21 -0800 Subject: [PATCH 087/518] fix for [BUG] #3135 mp4/mov animations can't be opened with QuickTime or Safari (#3209) * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function * try a fix for codec animate function Co-authored-by: Lia Siegelman --- src/animation.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/animation.jl b/src/animation.jl index b83c78cc..3c55967c 100644 --- a/src/animation.jl +++ b/src/animation.jl @@ -98,7 +98,7 @@ function buildanimation(anim::Animation, fn::AbstractString, ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -i "$(animdir)/palette.bmp" -lavfi "paletteuse=dither=sierra2_4a" -loop $loop -y $fn`) end else - ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -loop $loop -y $fn`) + ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -vf format=yuv420p -loop $loop -y $fn`) end show_msg && @info("Saved animation to ", fn) From 85ca4027909cb376e8833b6fd3e4244fea22ad27 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 6 Jan 2021 23:02:48 +0100 Subject: [PATCH 088/518] release 1.10.1 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index a35f1592..d3a5542a 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.0" +version = "1.10.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 6c8fb876354ce2977acaddf343f595f1249fc009 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 9 Jan 2021 21:50:54 +0100 Subject: [PATCH 089/518] increase gr guide margins on 3d plots --- src/backends/gr.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index fbef8c64..2de678d8 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1437,7 +1437,7 @@ function gr_label_axis(sp, letter, viewport_plotarea) gr_set_font(guidefont(axis), sp) guide_position = axis[:guide_position] if isy - w = 0.02 + gr_axis_width(sp, axis) + w = 0.03 + gr_axis_width(sp, axis) GR.setcharup(-1, 0) if guide_position == :right || (guide_position == :auto && axis[:mirror]) GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_BOTTOM) @@ -1447,7 +1447,7 @@ function gr_label_axis(sp, letter, viewport_plotarea) gr_text(viewport_plotarea[1] - w, gr_view_ycenter(viewport_plotarea), axis[:guide]) end else - h = 0.01 + gr_axis_height(sp, axis) + h = 0.015 + gr_axis_height(sp, axis) if guide_position == :top || (guide_position == :auto && axis[:mirror]) GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_TOP) gr_text(gr_view_xcenter(viewport_plotarea), viewport_plotarea[4] + h, axis[:guide]) @@ -1492,7 +1492,7 @@ function gr_label_axis_3d(sp, letter) x_offset = letter === :x ? -h : h y_offset = -h else - x_offset = -gr_axis_width(sp, ax) + x_offset = -0.03 - gr_axis_width(sp, ax) y_offset = 0 end letter === :z && GR.setcharup(-1, 0) From eb1c126dbca91de602862633c2363c3911fb2c3c Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 9 Jan 2021 21:51:30 +0100 Subject: [PATCH 090/518] remove unnecessary line --- src/backends/gr.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 2de678d8..bf6b439e 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1432,11 +1432,10 @@ function gr_label_axis(sp, letter, viewport_plotarea) axis = sp[Symbol(letter, :axis)] # guide if axis[:guide] != "" - isy = letter === :y GR.savestate() gr_set_font(guidefont(axis), sp) guide_position = axis[:guide_position] - if isy + if letter === :y w = 0.03 + gr_axis_width(sp, axis) GR.setcharup(-1, 0) if guide_position == :right || (guide_position == :auto && axis[:mirror]) From d0e01a8d882370d3244baf1d62ddbc66d038c1ea Mon Sep 17 00:00:00 2001 From: Jks Liu Date: Mon, 11 Jan 2021 22:48:04 +0800 Subject: [PATCH 091/518] Correct version string of plotly cache file name --- src/init.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/init.jl b/src/init.jl index 2a64844d..6673c220 100644 --- a/src/init.jl +++ b/src/init.jl @@ -79,7 +79,7 @@ function __init__() end if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true" - global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), "plotly-1.54.2.min.js") + global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), "plotly-1.57.1.min.js") if !isfile(plotly_local_file_path[]) download("https://cdn.plot.ly/plotly-1.57.1.min.js", plotly_local_file_path[]) end From 4bcafe3f5198542ddcc46e6e10299a5fb249561f Mon Sep 17 00:00:00 2001 From: Jks Liu Date: Tue, 12 Jan 2021 22:09:48 +0800 Subject: [PATCH 092/518] const variable for plotly JavaScript file name --- src/Plots.jl | 4 ++++ src/backends/plotly.jl | 2 +- src/init.jl | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Plots.jl b/src/Plots.jl index 1ce8bf65..50b4205c 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -187,6 +187,10 @@ import RecipesPipeline: SliceIt, datetimeformatter, timeformatter +# Use fixed version of Plotly instead of the latest one for stable dependency +# Ref: https://github.com/JuliaPlots/Plots.jl/pull/2779 +const _plotly_min_js_filename = "plotly-1.57.1.min.js" + include("types.jl") include("utils.jl") include("axes.jl") diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 89c97e54..005ecead 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -887,7 +887,7 @@ const ijulia_initialized = Ref(false) function plotly_html_head(plt::Plot) plotly = - use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/plotly-1.57.1.min.js" + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" include_mathjax = get(plt[:extra_plot_kwargs], :include_mathjax, "") mathjax_file = include_mathjax != "cdn" ? ("file://" * include_mathjax) : "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" diff --git a/src/init.jl b/src/init.jl index 6673c220..22bb4b51 100644 --- a/src/init.jl +++ b/src/init.jl @@ -79,9 +79,9 @@ function __init__() end if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true" - global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), "plotly-1.57.1.min.js") + global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), _plotly_min_js_filename) if !isfile(plotly_local_file_path[]) - download("https://cdn.plot.ly/plotly-1.57.1.min.js", plotly_local_file_path[]) + download("https://cdn.plot.ly/$(_plotly_min_js_filename)", plotly_local_file_path[]) end use_local_plotlyjs[] = true From 509a8cdc7e476a0514c60f2e685311ace9a88fb1 Mon Sep 17 00:00:00 2001 From: Jks Liu Date: Mon, 18 Jan 2021 22:59:16 +0800 Subject: [PATCH 093/518] Config plotly.js during init plotly.js will be loaded only once, only when first time used plots show correctly when page re-load or re-open --- src/backends/plotly.jl | 29 ++++++++++++++--------------- src/init.jl | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 005ecead..ed7a48d1 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -883,8 +883,6 @@ plotly_series_json(plt::Plot) = JSON.json(plotly_series(plt), 4) html_head(plt::Plot{PlotlyBackend}) = plotly_html_head(plt) html_body(plt::Plot{PlotlyBackend}) = plotly_html_body(plt) -const ijulia_initialized = Ref(false) - function plotly_html_head(plt::Plot) plotly = use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" @@ -893,20 +891,11 @@ function plotly_html_head(plt::Plot) mathjax_file = include_mathjax != "cdn" ? ("file://" * include_mathjax) : "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" mathjax_head = include_mathjax == "" ? "" : "\n\t\t" - if isijulia() && !ijulia_initialized[] - # using requirejs seems to be key to load a js depency in IJulia! - # https://requirejs.org/docs/start.html - # https://github.com/JuliaLang/IJulia.jl/issues/345 - display("text/html", """ - - """) - ijulia_initialized[] = true + if isijulia() + mathjax_head + else + "$mathjax_head" end - return "$mathjax_head" end function plotly_html_body(plt, style = nothing) @@ -914,12 +903,22 @@ function plotly_html_body(plt, style = nothing) w, h = plt[:size] style = "width:$(w)px;height:$(h)px;" end + + requirejs_prefix = "" + requirejs_suffix = "" + if isijulia() + requirejs_prefix = "require(['Plotly'], function (Plotly) {" + requirejs_suffix = "});" + end + uuid = UUIDs.uuid4() html = """
""" html diff --git a/src/init.jl b/src/init.jl index 22bb4b51..d340fda7 100644 --- a/src/init.jl +++ b/src/init.jl @@ -89,6 +89,23 @@ function __init__() use_local_dependencies[] = use_local_plotlyjs[] + if isijulia() + # require.js adds .js automatically + plotly_no_ext = + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" + plotly_no_ext = plotly_no_ext[1:end-3] + + display("text/html", """ + + """) + end + @require FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" begin _show(io::IO, mime::MIME"image/png", plt::Plot{<:PDFBackends}) = _show_pdfbackends(io, mime, plt) From 50a6dd9fb36a49d27441fa3ecbd10eead30edfc7 Mon Sep 17 00:00:00 2001 From: Jks Liu Date: Wed, 20 Jan 2021 22:51:17 +0800 Subject: [PATCH 094/518] let plotly config and use in same cell in case of config cell re-run or is deleted --- src/backends/plotly.jl | 14 +++++++++++++- src/init.jl | 17 ----------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index ed7a48d1..ce2b704c 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -907,7 +907,19 @@ function plotly_html_body(plt, style = nothing) requirejs_prefix = "" requirejs_suffix = "" if isijulia() - requirejs_prefix = "require(['Plotly'], function (Plotly) {" + # require.js adds .js automatically + plotly_no_ext = + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" + plotly_no_ext = plotly_no_ext[1:end-3] + + requirejs_prefix = """ + requirejs.config({ + paths: { + Plotly: '$(plotly_no_ext)' + } + }); + require(['Plotly'], function (Plotly) { + """ requirejs_suffix = "});" end diff --git a/src/init.jl b/src/init.jl index d340fda7..22bb4b51 100644 --- a/src/init.jl +++ b/src/init.jl @@ -89,23 +89,6 @@ function __init__() use_local_dependencies[] = use_local_plotlyjs[] - if isijulia() - # require.js adds .js automatically - plotly_no_ext = - use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" - plotly_no_ext = plotly_no_ext[1:end-3] - - display("text/html", """ - - """) - end - @require FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" begin _show(io::IO, mime::MIME"image/png", plt::Plot{<:PDFBackends}) = _show_pdfbackends(io, mime, plt) From e95ddc3ef8a4d96a65b1105136b587c013864047 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 22 Jan 2021 18:05:40 +0100 Subject: [PATCH 095/518] fix defaults in spy recipe --- src/recipes.jl | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index 49028953..246f7bb7 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -1522,12 +1522,8 @@ end rs, cs, zs = Plots.findnz(z.surf) xlims := ignorenan_extrema(cs) ylims := ignorenan_extrema(rs) - if plotattributes[:markershape] == :none - markershape := :circle - end - if plotattributes[:markersize] == default(:markersize) - markersize := 1 - end + markershape --> :circle + markersize --> 1 markerstrokewidth := 0 if length(unique(zs)) == 1 seriescolor --> :black @@ -1631,4 +1627,4 @@ julia> areaplot(1:3, [1 2 3; 7 8 9; 4 5 6], seriescolor = [:red :green :blue], f end end -@specialize \ No newline at end of file +@specialize From fa8d437836f4652af9d64ff5313501416fd15964 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 22 Jan 2021 18:16:13 +0100 Subject: [PATCH 096/518] widen axis limits --- src/axes.jl | 2 +- src/recipes.jl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 37ea8eaa..cfd63b5d 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -853,4 +853,4 @@ end reverse_if(x, cond) = cond ? reverse(x) : x axis_tuple(x, y, letter) = reverse_if((x, y), letter === :y) -axes_shift(t, i) = i % 3 == 0 ? t : i % 3 == 1 ? (t[3], t[1], t[2]) : (t[2], t[3], t[1]) \ No newline at end of file +axes_shift(t, i) = i % 3 == 0 ? t : i % 3 == 1 ? (t[3], t[1], t[2]) : (t[2], t[3], t[1]) diff --git a/src/recipes.jl b/src/recipes.jl index 246f7bb7..46ef79a1 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -1520,8 +1520,8 @@ end yflip := true aspect_ratio := 1 rs, cs, zs = Plots.findnz(z.surf) - xlims := ignorenan_extrema(cs) - ylims := ignorenan_extrema(rs) + xlims := widen(ignorenan_extrema(cs)..., get(plotattributes, :xscale, :identity)) + ylims := widen(ignorenan_extrema(rs)..., get(plotattributes, :yscale, :identity)) markershape --> :circle markersize --> 1 markerstrokewidth := 0 From 493ab0c6b4478956bf8f559a59530ea6b8c33b54 Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 14:01:04 -0500 Subject: [PATCH 097/518] add basic CI Benchmarking --- .github/workflows/benchmark.yml | 32 ++++++++++++++++++++++++++++++++ benchmark/benchmarks.jl | 8 ++++++++ 2 files changed, 40 insertions(+) create mode 100644 .github/workflows/benchmark.yml create mode 100644 benchmark/benchmarks.jl diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 00000000..06bde175 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,32 @@ +name: Run benchmarks + +on: + pull_request: + +jobs: + Benchmark: + if: "!contains(github.event.head_commit.message, '[skip ci]')" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: julia-actions/setup-julia@latest + with: + version: 1 + + ## Setup + - name: Default TESTCMD + run: echo "TESTCMD=julia" >> $GITHUB_ENV + - name: Ubuntu TESTCMD + if: startsWith(matrix.os,'ubuntu') + run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV + - name: Install Plots dependencies + uses: julia-actions/julia-buildpkg@latest + - name: Install Benchmarking dependencies + run: julia -e 'using Pkg; pkg"add PkgBenchmark BenchmarkCI@0.1"' + + - name: Run benchmarks + run: $TESTCMD -e 'using BenchmarkCI; BenchmarkCI.judge()' + - name: Post results + run: julia -e 'using BenchmarkCI; BenchmarkCI.postjudge()' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl new file mode 100644 index 00000000..b4994a6c --- /dev/null +++ b/benchmark/benchmarks.jl @@ -0,0 +1,8 @@ +using BenchmarkTools + +const SUITE = BenchmarkGroup() + +# numbered to enforce sequence +SUITE["1_load"] = @benchmarkable @eval(using Plots) +SUITE["2_plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) +SUITE["3_display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) From 8efe35f5f858ae4d11b071d6b4972ce55529c386 Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 14:14:04 -0500 Subject: [PATCH 098/518] add benchmark/Project.toml --- benchmark/Project.toml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 benchmark/Project.toml diff --git a/benchmark/Project.toml b/benchmark/Project.toml new file mode 100644 index 00000000..d002907c --- /dev/null +++ b/benchmark/Project.toml @@ -0,0 +1,4 @@ +[deps] +BenchmarkCI = "20533458-34a3-403d-a444-e18f38190b5b" +PkgBenchmark = "32113eaa-f34f-5b0d-bd6c-c81e245fc73d" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" From 6332aecc60714a6c1c9eff843e44010e6f9ec95e Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 14:18:18 -0500 Subject: [PATCH 099/518] Update Project.toml --- benchmark/Project.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmark/Project.toml b/benchmark/Project.toml index d002907c..d0c35ad5 100644 --- a/benchmark/Project.toml +++ b/benchmark/Project.toml @@ -1,4 +1,5 @@ [deps] BenchmarkCI = "20533458-34a3-403d-a444-e18f38190b5b" +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" PkgBenchmark = "32113eaa-f34f-5b0d-bd6c-c81e245fc73d" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" From 535d95334c6a3d58bbe4d234eaccf1fec4d8ac39 Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 14:24:11 -0500 Subject: [PATCH 100/518] fix to use Ubuntu TESTCMD --- .github/workflows/benchmark.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 06bde175..e9afc61c 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -14,10 +14,7 @@ jobs: version: 1 ## Setup - - name: Default TESTCMD - run: echo "TESTCMD=julia" >> $GITHUB_ENV - name: Ubuntu TESTCMD - if: startsWith(matrix.os,'ubuntu') run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV - name: Install Plots dependencies uses: julia-actions/julia-buildpkg@latest From ac2fbadc07e0b9ee2a7609376c648a38ab0fded7 Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 14:31:27 -0500 Subject: [PATCH 101/518] add missing GKS_ENCODING env var --- .github/workflows/benchmark.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index e9afc61c..7047da27 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -6,6 +6,8 @@ on: jobs: Benchmark: if: "!contains(github.event.head_commit.message, '[skip ci]')" + env: + GKS_ENCODING: "utf8" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 From 0b8755db4b779f2f1c5a3890d3e36cfc89c7b069 Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 14:48:37 -0500 Subject: [PATCH 102/518] add benchmark gitignores --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index c653453c..544fc7cb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ deps/deps.jl Manifest.toml dev/ test/tmpplotsave.hdf5 +/.benchmarkci +/benchmark/*.json From 309f2db3b14802fc3beffe239528cee247dd3a63 Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 15:21:23 -0500 Subject: [PATCH 103/518] run entire load_plot_display in separate julia instance --- benchmark/benchmarks.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl index b4994a6c..1f8f9b61 100644 --- a/benchmark/benchmarks.jl +++ b/benchmark/benchmarks.jl @@ -1,8 +1,11 @@ using BenchmarkTools const SUITE = BenchmarkGroup() +julia_cmd = get(ENV, "TESTCMD", Base.JLOptions().julia_bin) # numbered to enforce sequence +SUITE["0_load_plot_display"] = @benchmarkable run(`$(julia_cmd) -e "using Plots; display(plot(1:0.1:10, sin.(1:0.1:10))))"`) + SUITE["1_load"] = @benchmarkable @eval(using Plots) SUITE["2_plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) SUITE["3_display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) From 3c9580fb2faacfd6eeea714555518bb353a925a2 Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 15:45:49 -0500 Subject: [PATCH 104/518] fixes --- benchmark/benchmarks.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl index 1f8f9b61..4a478286 100644 --- a/benchmark/benchmarks.jl +++ b/benchmark/benchmarks.jl @@ -4,8 +4,8 @@ const SUITE = BenchmarkGroup() julia_cmd = get(ENV, "TESTCMD", Base.JLOptions().julia_bin) # numbered to enforce sequence -SUITE["0_load_plot_display"] = @benchmarkable run(`$(julia_cmd) -e "using Plots; display(plot(1:0.1:10, sin.(1:0.1:10))))"`) +SUITE["1_load_plot_display"] = @benchmarkable run(`sh -c $("$julia_cmd --startup-file=no -e 'using Plots; display(plot(1:0.1:10, sin.(1:0.1:10))))'")`) -SUITE["1_load"] = @benchmarkable @eval(using Plots) -SUITE["2_plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) -SUITE["3_display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) +SUITE["2_load"] = @benchmarkable @eval(using Plots) +SUITE["3_plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) +SUITE["4_display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) From 8a908c0de82e6865c608ed46afbc678e6153980d Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 15:54:18 -0500 Subject: [PATCH 105/518] do load test in separate session --- benchmark/benchmarks.jl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl index 4a478286..398bf50e 100644 --- a/benchmark/benchmarks.jl +++ b/benchmark/benchmarks.jl @@ -5,7 +5,6 @@ julia_cmd = get(ENV, "TESTCMD", Base.JLOptions().julia_bin) # numbered to enforce sequence SUITE["1_load_plot_display"] = @benchmarkable run(`sh -c $("$julia_cmd --startup-file=no -e 'using Plots; display(plot(1:0.1:10, sin.(1:0.1:10))))'")`) - -SUITE["2_load"] = @benchmarkable @eval(using Plots) -SUITE["3_plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) -SUITE["4_display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) +SUITE["2_load"] = @benchmarkable run(`sh -c $("$julia_cmd --startup-file=no -e 'using Plots'")`) +SUITE["3_plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) setup(@eval(using Plots)) +SUITE["4_display"] = @benchmarkable display(p) setup=(@eval(using Plots); p = plot(1:0.1:10, sin.(1:0.1:10))) From d92990a5f0515857d8f8e4944a113e41144dc89b Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 24 Jan 2021 16:04:27 -0500 Subject: [PATCH 106/518] tweaks to benchmarks order-insensitive --- benchmark/benchmarks.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl index 398bf50e..0689b22a 100644 --- a/benchmark/benchmarks.jl +++ b/benchmark/benchmarks.jl @@ -1,10 +1,10 @@ using BenchmarkTools +using Plots const SUITE = BenchmarkGroup() -julia_cmd = get(ENV, "TESTCMD", Base.JLOptions().julia_bin) +julia_cmd = split(get(ENV, "TESTCMD", Base.JLOptions().julia_bin)) -# numbered to enforce sequence -SUITE["1_load_plot_display"] = @benchmarkable run(`sh -c $("$julia_cmd --startup-file=no -e 'using Plots; display(plot(1:0.1:10, sin.(1:0.1:10))))'")`) -SUITE["2_load"] = @benchmarkable run(`sh -c $("$julia_cmd --startup-file=no -e 'using Plots'")`) -SUITE["3_plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) setup(@eval(using Plots)) -SUITE["4_display"] = @benchmarkable display(p) setup=(@eval(using Plots); p = plot(1:0.1:10, sin.(1:0.1:10))) +SUITE["load_plot_display"] = @benchmarkable run(`$julia_cmd --startup-file=no --project -e 'using Plots; display(plot(1:0.1:10, sin.(1:0.1:10)))'`) +SUITE["load"] = @benchmarkable run(`$julia_cmd --startup-file=no --project -e 'using Plots'`) +SUITE["plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) +SUITE["display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) From 96ed4b2616859603e3fb0b82509cb053b0de8553 Mon Sep 17 00:00:00 2001 From: KristofferC Date: Mon, 25 Jan 2021 14:48:53 +0100 Subject: [PATCH 107/518] reenable precompiles --- src/precompile_includer.jl | 45 ++------------------------------------ 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index c7c98a4d..4cd3f646 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -1,44 +1,3 @@ -should_precompile = true +include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - -# Don't edit the following! Instead change the script for `snoop_bot`. -ismultios = true -ismultiversion = true -# precompile_enclosure -@static if !should_precompile - # nothing -elseif !ismultios && !ismultiversion - @static if (isfile("../deps/SnoopCompile/precompile/precompile_Plots.jl")) - include("../deps/SnoopCompile/precompile/precompile_Plots.jl") - _precompile_() - end -else - @static if Sys.islinux() - @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - end - else - @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - end - end - - else - @static if v"1.5.0-DEV" <= VERSION <= v"1.5.9" - @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - end - else - @static if (isfile("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl")) - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - end - end - - end - -end # precompile_enclosure +_precompile_() From fb27704d2bd5739416f33e83f8f4d0189ee02fb7 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 25 Jan 2021 16:10:09 +0100 Subject: [PATCH 108/518] fix tests --- src/backends/hdf5.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/hdf5.jl b/src/backends/hdf5.jl index 699b1529..050992aa 100644 --- a/src/backends/hdf5.jl +++ b/src/backends/hdf5.jl @@ -440,8 +440,8 @@ end #Read KW from group: function _read(::Type{KW}, grp::Group) d = KW() - gnames = names(grp) - for k in gnames + gkeys = keys(grp) + for k in gkeys try v = _read_typed(grp, k) d[Symbol(k)] = v From 142bb8cc567534396dee3257af534d2d6e4df4c3 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Mon, 25 Jan 2021 16:11:28 +0100 Subject: [PATCH 109/518] Update benchmark.yml --- .github/workflows/benchmark.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 7047da27..0b20d756 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -25,7 +25,9 @@ jobs: - name: Run benchmarks run: $TESTCMD -e 'using BenchmarkCI; BenchmarkCI.judge()' + - name: Print judgement + run: julia -e 'using BenchmarkCI; BenchmarkCI.displayjudgement()' - name: Post results run: julia -e 'using BenchmarkCI; BenchmarkCI.postjudge()' env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 9d3514224e0d6cd4f74aabe2dad6763bca1c7e42 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 25 Jan 2021 16:16:28 +0100 Subject: [PATCH 110/518] use GKSwstype environment variable to avoid GKS warnings in tests --- .github/workflows/benchmark.yml | 3 ++- .github/workflows/ci.yml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 7047da27..57b36ed9 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -8,6 +8,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[skip ci]')" env: GKS_ENCODING: "utf8" + GKSwstype: 100 runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -28,4 +29,4 @@ jobs: - name: Post results run: julia -e 'using BenchmarkCI; BenchmarkCI.postjudge()' env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea965cb7..ad8a5b7d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[skip ci]')" env: GKS_ENCODING: "utf8" + GKSwstype: 100 name: Julia ${{ matrix.version }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} From da1b9adc17d875580e8fd9ea3587c31ae7d09a93 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 25 Jan 2021 16:28:17 +0100 Subject: [PATCH 111/518] env as string --- .github/workflows/benchmark.yml | 2 +- .github/workflows/ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 57b36ed9..944788d5 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -8,7 +8,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[skip ci]')" env: GKS_ENCODING: "utf8" - GKSwstype: 100 + GKSwstype: "100" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ad8a5b7d..797cc072 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[skip ci]')" env: GKS_ENCODING: "utf8" - GKSwstype: 100 + GKSwstype: "100" name: Julia ${{ matrix.version }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} From 60bc127925746974d4c96584720bb57d00a14222 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 25 Jan 2021 18:09:27 +0100 Subject: [PATCH 112/518] bugfix release --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index d3a5542a..da1c2fd0 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.1" +version = "1.10.2" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From d538c4387f1164d89a76e738e8e6d098e660dd37 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 26 Jan 2021 02:47:58 -0600 Subject: [PATCH 113/518] CompileBot use default precompile path --- deps/SnoopCompile/snoop_bench.jl | 3 --- deps/SnoopCompile/snoop_bot.jl | 3 --- 2 files changed, 6 deletions(-) diff --git a/deps/SnoopCompile/snoop_bench.jl b/deps/SnoopCompile/snoop_bench.jl index ade47d43..4bb5838e 100644 --- a/deps/SnoopCompile/snoop_bench.jl +++ b/deps/SnoopCompile/snoop_bench.jl @@ -3,9 +3,6 @@ using CompileBot snoop_bench( BotConfig( "Plots", - yml_path= "SnoopCompile.yml", - else_os = "linux", - else_version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) diff --git a/deps/SnoopCompile/snoop_bot.jl b/deps/SnoopCompile/snoop_bot.jl index 6a81b7aa..6a77f2be 100644 --- a/deps/SnoopCompile/snoop_bot.jl +++ b/deps/SnoopCompile/snoop_bot.jl @@ -3,9 +3,6 @@ using CompileBot snoop_bot( BotConfig( "Plots", - yml_path= "SnoopCompile.yml", - else_os = "linux", - else_version = "1.5", ), joinpath(@__DIR__, "precompile_script.jl"), ) From 2b44cb5a3595b37f9db9b22dbe1659d030261d0a Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 26 Jan 2021 02:53:30 -0600 Subject: [PATCH 114/518] Delete old precompiles --- .../precompile/linux/1.5/precompile_Plots.jl | 387 ------------------ 1 file changed, 387 deletions(-) delete mode 100644 deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl deleted file mode 100644 index 786ae335..00000000 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ /dev/null @@ -1,387 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),Any,typeof(heatmap),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),Any,typeof(hline!),Any}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),Any,typeof(lens!),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :xlims),Tuple{Plots.GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{OHLC,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:yflip, :aspect_ratio),Tuple{Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),Any,typeof(scatter!),Any}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip, :disp),Tuple{Array{Int64,1},Bool}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,2},Base.Generator{Array{AbstractLayout,2},typeof(Plots._update_min_padding!)}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.GRBackend},Bool}) - Base.precompile(Tuple{typeof(Plots._do_plot_show),Plots.Plot{Plots.PlotlyBackend},Bool}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot,Any,Any}) - Base.precompile(Tuple{typeof(Plots._preprocess_barlike),RecipesPipeline.DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots._preprocess_binlike),RecipesPipeline.DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_add_legend),Plots.Subplot{Plots.GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_contour),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_grid),Plots.Subplot{Plots.GRBackend},Plots.Axis,Segments{Tuple{Float64,Float64}}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_heatmap),Plots.Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Int64,Float64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_segments),Plots.Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_label_ticks_3d),Plots.Subplot{Plots.GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.quiver_using_arrows),RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(Plots.quiver_using_hack),RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesPipeline._finish_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},RecipeData}) - Base.precompile(Tuple{typeof(RecipesPipeline._finish_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},RecipeData}) - Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.unzip),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,String}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2},Tuple{Base.OneTo{Int64},Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},2}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.PortfolioComposition}}}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(string),Tuple{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple},Nothing,typeof(typeof),Tuple{Tuple{Plots.Spy}}}}}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(merge),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}) - Base.precompile(Tuple{typeof(merge),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},NamedTuple{(:seriestype,),Tuple{Symbol}}}) - Base.precompile(Tuple{typeof(plot!),Any}) - Base.precompile(Tuple{typeof(plot),Any,Any}) - Base.precompile(Tuple{typeof(plot),Any}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Int64,Int64},Tuple{Float64,Float64,Int64}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Int64,Float64,Symbol,Plots.Stroke},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Symbol,Float64,Plots.Stroke},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Plots.Plot{Plots.GRBackend},RGBA{Float64},Symbol}) - Base.precompile(Tuple{typeof(spy),Any}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(title!),AbstractString}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Any}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.title!, (AbstractString,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(title!),AbstractString,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.vline!, (Any,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(vline!),Any,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.yaxis!, (Any,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Any,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot!),Any,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Any,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot!),Any,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Any,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Any,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Any,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Any,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Plots.Plot,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Plots.Plot,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Plots.Plot,Plots.Plot,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Plots.Plot,Plots.Plot,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Plots.Plot,Plots.Plot,Vararg{Plots.Plot,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Plots.Plot,Plots.Plot,Vararg{Plots.Plot,N} where N,)) - end - end -end From e591332b718c71eb6986c0b4fc24819c122b274a Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Tue, 26 Jan 2021 03:08:16 -0600 Subject: [PATCH 115/518] Let the bot generate the includer file --- src/precompile_includer.jl | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index 4cd3f646..e69de29b 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -1,3 +0,0 @@ -include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - -_precompile_() From 60dbf77a9644324c3b3f6e452d647c4fe6c0a352 Mon Sep 17 00:00:00 2001 From: daschw Date: Tue, 26 Jan 2021 19:57:14 +0000 Subject: [PATCH 116/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 377 ++++++++++++++++++ src/precompile_includer.jl | 20 + 2 files changed, 397 insertions(+) create mode 100644 deps/SnoopCompile/precompile/precompile_Plots.jl diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl new file mode 100644 index 00000000..9de51aa7 --- /dev/null +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -0,0 +1,377 @@ +const __bodyfunction__ = Dict{Method,Any}() + +# Find keyword "body functions" (the function that contains the body +# as written by the developer, called after all missing keyword-arguments +# have been assigned values), in a manner that doesn't depend on +# gensymmed names. +# `mnokw` is the method that gets called when you invoke it without +# supplying any keywords. +function __lookup_kwbody__(mnokw::Method) + function getsym(arg) + isa(arg, Symbol) && return arg + @assert isa(arg, GlobalRef) + return arg.name + end + + f = get(__bodyfunction__, mnokw, nothing) + if f === nothing + fmod = mnokw.module + # The lowered code for `mnokw` should look like + # %1 = mkw(kwvalues..., #self#, args...) + # return %1 + # where `mkw` is the name of the "active" keyword body-function. + ast = Base.uncompressed_ast(mnokw) + if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 + callexpr = ast.code[end-1] + if isa(callexpr, Expr) && callexpr.head == :call + fsym = callexpr.args[1] + if isa(fsym, Symbol) + f = getfield(fmod, fsym) + elseif isa(fsym, GlobalRef) + if fsym.mod === Core && fsym.name === :_apply + f = getfield(mnokw.module, getsym(callexpr.args[2])) + elseif fsym.mod === Core && fsym.name === :_apply_iterate + f = getfield(mnokw.module, getsym(callexpr.args[3])) + else + f = getfield(fsym.mod, fsym.name) + end + else + f = missing + end + else + f = missing + end + else + f = missing + end + __bodyfunction__[mnokw] = f + end + return f +end + +function _precompile_() + ccall(:jl_generating_output, Cint, ()) == 1 || return nothing + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Length{:pct,Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),UnitRange{Int64},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(heatmap)),Any,typeof(heatmap),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(lens!)),Any,typeof(lens!),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{GridLayout,Array{String,2},Symbol,Array{Length{:mm,Float64},2},Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xlims),Tuple{GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{OHLC,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:yflip, :aspect_ratio),Tuple{Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp),Tuple{Array{Int64,1},Bool}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64,N} where N}) + Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barbins}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol,Any},Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol,Any},Symbol,String}) + Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{Int64,1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{Nothing,1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{Symbol,1},String}) + Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64,Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) + Base.precompile(Tuple{typeof(_heatmap_edges),Array{Float64,1},Bool}) + Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) + Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) + Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) + Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(backend),PlotlyBackend}) + Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) + Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) + Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) + Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) + Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Array{String,1}}) + Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) + Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) + Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) + Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) + Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) + Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) + Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(layout_args),Int64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(plot!),Any}) + Base.precompile(Tuple{typeof(plot),Any,Any}) + Base.precompile(Tuple{typeof(plot),Any}) + Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) + Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Shape}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Stroke}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Symbol}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64}},Tuple{Float64,Int64},Tuple{Float64,Int64}}) + Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) + Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) + Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(slice_arg),Array{Length{:mm,Float64},2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{RGBA{Float64},2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{String,2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{Symbol,2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) + Base.precompile(Tuple{typeof(spy),Any}) + Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) + Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(title!),AbstractString}) + Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(vline!),Any}) + Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end + let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot!),)) + end + end + let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot!),Any,)) + end + end + let fbody = try __lookup_kwbody__(which(plot!, (Any,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot!),Any,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Any,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Any,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Any,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Plot,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Plot,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Plot,Plot,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,Vararg{Plot,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Plot,Plot,Vararg{Plot,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(text, (String,Int64,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(title!, (AbstractString,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(title!),AbstractString,)) + end + end + let fbody = try __lookup_kwbody__(which(vline!, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(vline!),Any,)) + end + end + let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any,N} where N,)) + end + end +end diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index e69de29b..ed5fe1c5 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -0,0 +1,20 @@ +should_precompile = true + + +# Don't edit the following! Instead change the script for `snoop_bot`. +ismultios = false +ismultiversion = false +# precompile_enclosure +@static if !should_precompile + # nothing +elseif !ismultios && !ismultiversion + @static if isfile(joinpath( + @__DIR__, + "../deps/SnoopCompile/precompile/precompile_Plots.jl", + )) + include("../deps/SnoopCompile/precompile/precompile_Plots.jl") + _precompile_() + end +else + +end # precompile_enclosure From 5dde27eb08e78c99f4a7882e68f084544f2aebe2 Mon Sep 17 00:00:00 2001 From: daschw Date: Tue, 26 Jan 2021 20:35:13 +0000 Subject: [PATCH 117/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 9de51aa7..41f1a3c5 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -59,6 +59,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) @@ -89,6 +90,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -99,7 +101,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -107,6 +113,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -145,6 +152,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -201,7 +210,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) @@ -214,18 +222,20 @@ function _precompile_() Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) + Base.precompile(Tuple{typeof(bbox!),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}}}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Array{String,1}}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(error_style!),DefaultsDict}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) + Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{Any,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) @@ -237,14 +247,19 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64,Float64}},Function}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) @@ -253,17 +268,19 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) + Base.precompile(Tuple{typeof(gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) Base.precompile(Tuple{typeof(plot!),Any}) @@ -272,8 +289,10 @@ function _precompile_() Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Shape}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Stroke}) @@ -284,7 +303,6 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64}},Tuple{Float64,Int64},Tuple{Float64,Int64}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) @@ -299,10 +317,12 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end if !ismissing(fbody) From 1a4bceace7a3f2ec3fd799f6ad449704c3139a69 Mon Sep 17 00:00:00 2001 From: daschw Date: Tue, 26 Jan 2021 21:32:50 +0000 Subject: [PATCH 118/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 33 +++---------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 41f1a3c5..b8a258a4 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -59,14 +59,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Axis}) @@ -75,7 +71,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -90,7 +85,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -101,11 +95,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -113,7 +104,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -152,8 +142,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -179,7 +167,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) @@ -221,8 +208,8 @@ function _precompile_() Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{PlotlyBackend},Array{Any,1}}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox!),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}}}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) @@ -230,36 +217,30 @@ function _precompile_() Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(error_style!),DefaultsDict}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(frame),Animation,Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) - Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{Any,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_axis_width),Subplot{GRBackend},Axis}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64,Float64}},Function}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) @@ -268,7 +249,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) @@ -277,7 +257,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) @@ -289,10 +268,8 @@ function _precompile_() Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Shape}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Stroke}) @@ -317,12 +294,10 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end if !ismissing(fbody) From c402161845221f476e3aab7964ebe8a71323a1ff Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Wed, 27 Jan 2021 16:20:25 +0100 Subject: [PATCH 119/518] Update Project.toml --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index da1c2fd0..e11e6488 100644 --- a/Project.toml +++ b/Project.toml @@ -36,7 +36,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" -GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53" +GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54" GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" Latexify = "0.14" From 3907ae7f21b71574f6704ffa4ae304d81a78b2cb Mon Sep 17 00:00:00 2001 From: MA Laforge Date: Sat, 30 Jan 2021 13:36:16 -0500 Subject: [PATCH 120/518] Add support for custom tick labels Also: - Correctly register changes to "plot.layout" - Fix deprecated use of series[:marker[stroke][color/alpha]]. --- src/backends/inspectdr.jl | 78 +++++++++++++++++++++++++++++++++++---- 1 file changed, 71 insertions(+), 7 deletions(-) diff --git a/src/backends/inspectdr.jl b/src/backends/inspectdr.jl index e86fb995..005d3da2 100644 --- a/src/backends/inspectdr.jl +++ b/src/backends/inspectdr.jl @@ -79,6 +79,58 @@ end # --------------------------------------------------------------------------- +function _inspectdr_getaxisticks(ticks, gridlines, xfrm) + TickCustom = InspectDR.TickCustom + _xfrm(coord) = InspectDR.axis2aloc(Float64(coord), xfrm.spec) #Ensure Float64 - in case + + ttype = ticksType(ticks) + if ticks == :native + #keep current + elseif ttype == :ticks_and_labels + pos = ticks[1]; labels = ticks[2]; nticks = length(ticks[1]) + newticks = TickCustom[TickCustom(_xfrm(pos[i]), labels[i]) for i in 1:nticks] + gridlines = InspectDR.GridLinesCustom(gridlines) + gridlines.major = newticks + gridlines.minor = [] + gridlines.displayminor = false + elseif ttype == :ticks + nticks = length(ticks) + gridlines.major = Float64[_xfrm(t) for t in ticks] + gridlines.minor = [] + gridlines.displayminor = false + elseif isnothing(ticks) + gridlines.major = [] + gridlines.minor = [] + else #Assume ticks == :native + #keep current + end + + return gridlines #keep current +end + +function _inspectdr_setticks(sp::Subplot, plot, strip, xaxis, yaxis) + InputXfrm1D = InspectDR.InputXfrm1D + _get_ticks(axis) = :native == axis[:ticks] ? (:native) : get_ticks(sp, axis) + wantnative(ticks) = (:native == ticks) + + xticks = _get_ticks(xaxis) + yticks = _get_ticks(yaxis) + + if wantnative(xticks) && wantnative(yticks) + #Don't "eval" tick values + return + end + + #TODO: Allow InspectDR to independently "eval" x or y ticks + ext = InspectDR.getextents_aloc(plot, 1) + grid = InspectDR._eval(strip.grid, plot.xscale, strip.yscale, ext) + grid.xlines = _inspectdr_getaxisticks(xticks, grid.xlines, InputXfrm1D(plot.xscale)) + grid.ylines = _inspectdr_getaxisticks(yticks, grid.ylines, InputXfrm1D(strip.yscale)) + strip.grid = grid +end + +# --------------------------------------------------------------------------- + function _inspectdr_getscale(s::Symbol, yaxis::Bool) #TODO: Support :asinh, :sqrt kwargs = yaxis ? (:tgtmajor=>8, :tgtminor=>2) : () #More grid lines on y-axis @@ -167,6 +219,7 @@ function _series_added(plt::Plot{InspectDRBackend}, series::Series) st = series[:seriestype] sp = series[:subplot] plot = sp.o + clims = get_clims(sp, series) #Don't do anything without a "subplot" object: Will process later. if nothing == plot; return; end @@ -256,8 +309,8 @@ For st in :shape: wfrm.glyph = InspectDR.glyph( shape = _inspectdr_mapglyph(series[:markershape]), size = _inspectdr_mapglyphsize(series[:markersize]), - color = _inspectdr_mapcolor(plot_color(series[:markerstrokecolor], series[:markerstrokealpha])), - fillcolor = _inspectdr_mapcolor(plot_color(series[:markercolor], series[:markeralpha])), + color = _inspectdr_mapcolor(plot_color(get_markerstrokecolor(series), get_markerstrokealpha(series))), + fillcolor = _inspectdr_mapcolor(plot_color(get_markercolor(series, clims), get_markeralpha(series))), ) end @@ -288,8 +341,8 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) ygrid_show = yaxis[:grid] strip.grid = InspectDR.GridRect( - vmajor=xgrid_show, # vminor=xgrid_show, - hmajor=ygrid_show, # hminor=ygrid_show, + vmajor=xgrid_show, # vminor=xgrid_show, + hmajor=ygrid_show, # hminor=ygrid_show, ) plot.xscale = _inspectdr_getscale(xaxis[:scale], false) @@ -302,18 +355,27 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) xmin, xmax = -rmax, rmax ymin, ymax = -rmax, rmax end - plot.xext = InspectDR.PExtents1D() #reset - strip.yext = InspectDR.PExtents1D() #reset plot.xext_full = InspectDR.PExtents1D(xmin, xmax) strip.yext_full = InspectDR.PExtents1D(ymin, ymax) + #Set current extents = full extents (needed for _eval(strip.grid,...)) + plot.xext = plot.xext_full + strip.yext = strip.yext_full + _inspectdr_setticks(sp, plot, strip, xaxis, yaxis) + a = plot.annotation a.title = sp[:title] a.xlabel = xaxis[:guide]; a.ylabels = [yaxis[:guide]] l = plot.layout + #IMPORTANT: Don't forget to actually register changes + #(TODO: need to find a better way to set layout properties) l[:frame_canvas].fillcolor = _inspectdr_mapcolor(sp[:background_color_subplot]) + l[:frame_canvas] = l[:frame_canvas] #register changes l[:frame_data].fillcolor = _inspectdr_mapcolor(sp[:background_color_inside]) + l[:frame_data] = l[:frame_data] #register changes + l[:frame_data].line.color = _inspectdr_mapcolor(xaxis[:foreground_color_axis]) + l[:frame_data] = l[:frame_data] #register changes l[:font_title] = InspectDR.Font(sp[:titlefontfamily], _inspectdr_mapptsize(sp[:titlefontsize]), color = _inspectdr_mapcolor(sp[:titlefontcolor]) @@ -334,6 +396,7 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) color = _inspectdr_mapcolor(sp[:legendfontcolor]) ) l[:frame_legend].fillcolor = _inspectdr_mapcolor(sp[:background_color_legend]) + l[:frame_legend] = l[:frame_legend] #register changes end # called just before updating layout bounding boxes... in case you need to prep @@ -347,8 +410,9 @@ function _before_layout_calcs(plt::Plot{InspectDRBackend}) #Don't use window_title... probably not what you want. #mplot.title = plt[:window_title] end - mplot.layout[:frame].fillcolor = _inspectdr_mapcolor(plt[:background_color_outside]) + mplot.layout[:frame].fillcolor = _inspectdr_mapcolor(plt[:background_color_outside]) + mplot.layout[:frame] = mplot.layout[:frame] #register changes resize!(mplot.subplots, length(plt.subplots)) nsubplots = length(plt.subplots) for (i, sp) in enumerate(plt.subplots) From 97c43eb03181e91a1fc1fe14aaa1fa7e397a7a90 Mon Sep 17 00:00:00 2001 From: William Thompson Date: Sun, 31 Jan 2021 11:47:15 -0800 Subject: [PATCH 121/518] Fix typo to allow minor ticks in 3D plots --- src/axes.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index cfd63b5d..64bee8c6 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -815,7 +815,7 @@ function axis_drawing_info_3d(sp, letter) t = invf(f(na0) + 0.006 * (f(na1) - f(na0)) * ticks_in) (na0, t) end - for tick in minorticks + for tick in minor_ticks if ax[:showaxis] push!( tick_segments, From cc005c62462ab37f937968b533704026ed92ed4b Mon Sep 17 00:00:00 2001 From: Ian Date: Sun, 31 Jan 2021 23:09:23 -0500 Subject: [PATCH 122/518] limit plot and display tests to one run --- benchmark/benchmarks.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl index 0689b22a..ae1d09de 100644 --- a/benchmark/benchmarks.jl +++ b/benchmark/benchmarks.jl @@ -6,5 +6,5 @@ julia_cmd = split(get(ENV, "TESTCMD", Base.JLOptions().julia_bin)) SUITE["load_plot_display"] = @benchmarkable run(`$julia_cmd --startup-file=no --project -e 'using Plots; display(plot(1:0.1:10, sin.(1:0.1:10)))'`) SUITE["load"] = @benchmarkable run(`$julia_cmd --startup-file=no --project -e 'using Plots'`) -SUITE["plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) -SUITE["display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) +SUITE["plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) samples=1 evals=1 +SUITE["display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) samples=1 evals=1 From c478c3c9f09aeeb826d7d79e2f62ea3bec5cc1c1 Mon Sep 17 00:00:00 2001 From: daschw Date: Mon, 1 Feb 2021 19:39:11 +0000 Subject: [PATCH 123/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index b8a258a4..6d68d089 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -59,6 +59,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) @@ -69,8 +70,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -85,6 +86,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -95,10 +97,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) @@ -134,6 +135,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Complex{Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) @@ -176,6 +178,8 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:contour}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:shape}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -194,9 +198,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) Base.precompile(Tuple{typeof(_cbar_unique),Array{Symbol,1},String}) Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) @@ -204,11 +208,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{PlotlyBackend},Array{Any,1}}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) @@ -217,10 +219,8 @@ function _precompile_() Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) @@ -229,35 +229,33 @@ function _precompile_() Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(gr_axis_width),Subplot{GRBackend},Axis}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) @@ -280,6 +278,7 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64}},Tuple{Float64,Int64},Tuple{Float64,Int64}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) @@ -299,11 +298,6 @@ function _precompile_() Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),)) From 6dbf004d5f66f73999574c229395c72ad4bf3ff5 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 5 Feb 2021 17:22:37 +0100 Subject: [PATCH 124/518] bugfix release --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index e11e6488..77c852f4 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.2" +version = "1.10.3" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 8ae0d8c808101c73f66d2a7c88b3873dbac5a64f Mon Sep 17 00:00:00 2001 From: daschw Date: Fri, 5 Feb 2021 16:39:50 +0000 Subject: [PATCH 125/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 6d68d089..69fbaeed 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -59,17 +59,20 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) @@ -86,7 +89,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -97,14 +99,15 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -135,7 +138,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Complex{Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) @@ -144,6 +146,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -178,8 +181,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:contour}},Plot{GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:shape}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:xerror}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -198,9 +200,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) Base.precompile(Tuple{typeof(_cbar_unique),Array{Symbol,1},String}) Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) @@ -208,7 +210,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) + Base.precompile(Tuple{typeof(_update_plot_args),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) @@ -219,6 +223,7 @@ function _precompile_() Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) @@ -227,6 +232,7 @@ function _precompile_() Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) @@ -235,11 +241,12 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) @@ -249,14 +256,19 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(is_marker_supported),GRBackend,Array{Symbol,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) @@ -266,6 +278,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) @@ -278,7 +291,6 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64}},Tuple{Float64,Int64},Tuple{Float64,Int64}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) @@ -293,11 +305,18 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),)) From 8bd76ee4bd6613b70a28eec09dcb360877372fb7 Mon Sep 17 00:00:00 2001 From: Benoit Pasquier <4486578+briochemc@users.noreply.github.com> Date: Sat, 6 Feb 2021 10:39:15 +1100 Subject: [PATCH 126/518] Fix typos in plot docstring --- src/plot.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plot.jl b/src/plot.jl index 73555d3b..ae48d907 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -43,8 +43,8 @@ The main plot command. Use `plot` to create a new plot object, and `plot!` to ad There are lots of ways to pass in data, and lots of keyword arguments... just try it and it will likely work as expected. When you pass in matrices, it splits by columns. To see the list of available attributes, use the `plotattr([attr])` -function, where `attr` is the symbol `:Series:`, `:Subplot:`, `:Plot` or `:Axis`. Pass any attribute to `plotattr` -as a String to look up its docstring; e.g. `plotattr("seriestype")`. +function, where `attr` is the symbol `:Series`, `:Subplot`, `:Plot`, or `:Axis`. Pass any attribute to `plotattr` +as a String to look up its docstring, e.g., `plotattr("seriestype")`. """ function plot(args...; kw...) @nospecialize @@ -218,4 +218,4 @@ function plot!(sp::Subplot, args...; kw...) @nospecialize plt = sp.plt plot!(plt, args...; kw..., subplot = findfirst(isequal(sp), plt.subplots)) -end \ No newline at end of file +end From 4ac81d12df1d5e6572c3e24a07ac587ff3842ed3 Mon Sep 17 00:00:00 2001 From: Jeremy Bejanin Date: Sun, 7 Feb 2021 12:00:00 -0500 Subject: [PATCH 127/518] don't stringify argument to `warn_on_recipe_aliases!` early needs matching RecipesPipeline changes --- src/pipeline.jl | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index 8f493cb2..c9ed7e25 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -5,13 +5,24 @@ function RecipesPipeline.warn_on_recipe_aliases!( plt::Plot, plotattributes::AKW, - recipe_type, - signature_string + recipe_type::Symbol, + args ) for k in keys(plotattributes) if !is_default_attribute(k) dk = get(_keyAliases, k, k) if k !== dk + if recipe_type == :user + signature_string = RecipesPipeline.userrecipe_signature_string(args) + elseif recipe_type == :type + signature_string = RecipesPipeline.typerecipe_signature_string(args) + elseif recipe_type == :plot + signature_string = RecipesPipeline.plotrecipe_signature_string(args) + elseif recipe_type == :series + signature_string = RecipesPipeline.seriesrecipe_signature_string(args) + else + throw(ArgumentError("Invalid recipe type `$recipe_type`")) + end @warn "Attribute alias `$k` detected in the $recipe_type recipe defined for the signature $signature_string. To ensure expected behavior it is recommended to use the default attribute `$dk`." end plotattributes[dk] = RecipesPipeline.pop_kw!(plotattributes, k) From 33c734a60b21a51524ecada555461023a9e58c09 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 7 Feb 2021 19:58:40 +0100 Subject: [PATCH 128/518] RecipesPipeline compact --- Project.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 77c852f4..780cc6ef 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.3" +version = "1.10.4" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" @@ -45,7 +45,7 @@ NaNMath = "0.3" PlotThemes = "2" PlotUtils = "1" RecipesBase = "1" -RecipesPipeline = "0.2" +RecipesPipeline = "0.3" Reexport = "0.2, 1.0" Requires = "1" Scratch = "1" From 0e03d7ff956a47a5bee6fe72a2d6836a71a69af6 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 8 Feb 2021 22:52:40 +0100 Subject: [PATCH 129/518] use existing limits for functions --- src/pipeline.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index c9ed7e25..6b4cec32 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -141,7 +141,7 @@ function _add_smooth_kw(kw_list::Vector{KW}, kw::AKW) end -RecipesPipeline.get_axis_limits(plt::Plot, f, letter) = axis_limits(plt[1], letter) +RecipesPipeline.get_axis_limits(plt::Plot, letter) = axis_limits(plt[1], letter) ## Plot recipes From a6d42d3e0fe8c8012bdf3484b812129586304c9b Mon Sep 17 00:00:00 2001 From: Jeremy Bejanin Date: Tue, 9 Feb 2021 10:27:17 -0500 Subject: [PATCH 130/518] add `@nospecialize` annotations --- src/pipeline.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index 6b4cec32..c360649b 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -6,7 +6,7 @@ function RecipesPipeline.warn_on_recipe_aliases!( plt::Plot, plotattributes::AKW, recipe_type::Symbol, - args + @nospecialize(args) ) for k in keys(plotattributes) if !is_default_attribute(k) From 9531fdd1221dd7ed85009866bf11191c5a08a29b Mon Sep 17 00:00:00 2001 From: daschw Date: Tue, 9 Feb 2021 18:30:24 +0000 Subject: [PATCH 131/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 37 +++++-------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 69fbaeed..fe9c16f6 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -61,7 +61,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) @@ -69,12 +68,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -107,7 +102,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -146,7 +140,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -181,7 +174,9 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:xerror}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:bar}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:pie}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:surface}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -189,10 +184,10 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,String}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol,Any},Symbol,String}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol,Any},Symbol,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol,Any},Symbol,Any}) Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(_cbar_unique),Array{Int64,1},String}) Base.precompile(Tuple{typeof(_cbar_unique),Array{Nothing,1},String}) @@ -212,7 +207,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) - Base.precompile(Tuple{typeof(_update_plot_args),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) @@ -232,7 +226,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) @@ -246,7 +239,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) @@ -256,19 +248,15 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol,Tuple{Int64,Int64}}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(is_marker_supported),GRBackend,Array{Symbol,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) @@ -278,7 +266,6 @@ function _precompile_() Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) @@ -291,6 +278,7 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Float64,Int64},Tuple{Float64,Float64,Int64}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) @@ -305,18 +293,11 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),)) From 748a913ce2d49a3d507e0178004647fbcadcacca Mon Sep 17 00:00:00 2001 From: daschw Date: Tue, 9 Feb 2021 18:49:13 +0000 Subject: [PATCH 132/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index fe9c16f6..62dd3ee1 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -61,6 +61,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) @@ -68,8 +69,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -140,6 +145,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -165,6 +172,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) @@ -174,9 +182,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:bar}},Plot{GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:pie}},Plot{GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:surface}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -225,7 +230,9 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),PlotUtils.ContinuousColorGradient,Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) @@ -238,7 +245,10 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) @@ -248,14 +258,17 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) - Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol,Tuple{Int64,Int64}}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) + Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) @@ -263,9 +276,12 @@ function _precompile_() Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) + Base.precompile(Tuple{typeof(processFontArg!),Dict{Symbol,Any},Symbol,String}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) + Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Int64,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) @@ -275,13 +291,14 @@ function _precompile_() Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},String,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Float64,Int64},Tuple{Float64,Float64,Int64}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(setindex!),Plot{GRBackend},RGBA{Float64},Symbol}) Base.precompile(Tuple{typeof(slice_arg),Array{Length{:mm,Float64},2},Int64}) Base.precompile(Tuple{typeof(slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(slice_arg),Array{RGBA{Float64},2},Int64}) @@ -293,11 +310,18 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),)) From df8fe4d28bcf630bce36ac00dbbe848a8d30229c Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 10 Feb 2021 18:42:04 +0100 Subject: [PATCH 133/518] remove black lines from GR surface with equal-length x, y, and z input --- src/backends/gr.jl | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index bf6b439e..83a5bcc3 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1736,13 +1736,12 @@ end function gr_draw_surface(series, x, y, z, clims) if series[:seriestype] === :surface if length(x) == length(y) == length(z) - GR.trisurface(x, y, z) - else - try - GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) - catch - GR.surface(x, y, z, GR.OPTION_COLORED_MESH) - end + x, y, z = GR.gridit(x, y, z, 200, 200) + end + try + GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) + catch + GR.surface(x, y, z, GR.OPTION_COLORED_MESH) end else # wireframe GR.setfillcolorind(0) From 9b174084f704b093040a410b8537eb9e1bd91967 Mon Sep 17 00:00:00 2001 From: Felix Hagemann <30291312+fhagemann@users.noreply.github.com> Date: Sat, 13 Feb 2021 17:56:03 +0100 Subject: [PATCH 134/518] Implement non-uniform polar heatmaps with the GR backend --- src/backends/gr.jl | 61 +++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 83a5bcc3..deb237ed 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1578,10 +1578,8 @@ function gr_add_series(sp, series) GR.gr3.clear() dmin, dmax = GR.gr3.volume(y.v, 0) elseif st === :heatmap - if !ispolar(series) - # `z` is already transposed, so we need to reverse before passing its size. - x, y = heatmap_edges(x, xscale, y, yscale, reverse(size(z))) - end + # `z` is already transposed, so we need to reverse before passing its size. + x, y = heatmap_edges(x, xscale, y, yscale, reverse(size(z))) gr_draw_heatmap(series, x, y, z, clims) elseif st === :image gr_draw_image(series, x, y, z, clims) @@ -1751,42 +1749,33 @@ end function gr_draw_heatmap(series, x, y, z, clims) fillgrad = _as_gradient(series[:fillcolor]) - if !ispolar(series) - GR.setspace(clims..., 0, 90) - w, h = length(x) - 1, length(y) - 1 - if is_uniformly_spaced(x) && is_uniformly_spaced(y) - # For uniformly spaced data use GR.drawimage, which can be - # much faster than GR.nonuniformcellarray, especially for - # pdf output, and also supports alpha values. - # Note that drawimage draws uniformly spaced data correctly - # even on log scales, where it is visually non-uniform. - colors = plot_color.(get(fillgrad, z, clims), series[:fillalpha]) - rgba = gr_color.(colors) - GR.drawimage(first(x), last(x), last(y), first(y), w, h, rgba) - else - if something(series[:fillalpha], 1) < 1 - @warn "GR: transparency not supported in non-uniform heatmaps. Alpha values ignored." - end - z_normalized = get_z_normalized.(z, clims...) - rgba = Int32[round(Int32, 1000 + _i * 255) for _i in z_normalized] - GR.nonuniformcellarray(x, y, w, h, rgba) - end + GR.setspace(clims..., 0, 90) + w, h = length(x) - 1, length(y) - 1 + if !ispolar(series) && is_uniformly_spaced(x) && is_uniformly_spaced(y) + # For uniformly spaced data use GR.drawimage, which can be + # much faster than GR.nonuniformcellarray, especially for + # pdf output, and also supports alpha values. + # Note that drawimage draws uniformly spaced data correctly + # even on log scales, where it is visually non-uniform. + colors = plot_color.(get(fillgrad, z, clims), series[:fillalpha]) + rgba = gr_color.(colors) + GR.drawimage(first(x), last(x), last(y), first(y), w, h, rgba) else - phimin, phimax = 0.0, 360.0 # nonuniform polar array is not yet supported in GR.jl - nx, ny = length(series[:x]), length(series[:y]) - xmin, xmax, ymin, ymax = gr_xy_axislims(series[:subplot]) - GR.setwindow(-ymax, ymax, -ymax, ymax) - if ymin > 0 - @warn "'ymin[1] > 0' (rmin) is not yet supported." - end - if series[:y][end] != ny - @warn "Right now only the maximum value of y (r) is taken into account." + if something(series[:fillalpha], 1) < 1 + @warn "GR: transparency not supported in non-uniform heatmaps. Alpha values ignored." end z_normalized = get_z_normalized.(z, clims...) rgba = Int32[round(Int32, 1000 + _i * 255) for _i in z_normalized] - GR.polarcellarray(0, 0, phimin, phimax, 0, ymax, nx, ny, rgba) - # Right now only the maximum value of y (r) is taken into account. - # This is certainly not perfect but nonuniform polar array is not yet supported in GR.jl + if !ispolar(series) + GR.nonuniformcellarray(x, y, w, h, rgba) + else + if y[1] < 0 + @warn "'y[1] < 0' (rmin) is not yet supported." + end + xmin, xmax, ymin, ymax = gr_xy_axislims(series[:subplot]) + GR.setwindow(-ymax, ymax, -ymax, ymax) + GR.nonuniformpolarcellarray(rad2deg.(x), y, w, h, rgba) + end end end From 2594b577d729e96ea311c0bd0f33e70a724854fa Mon Sep 17 00:00:00 2001 From: Felix Hagemann <30291312+fhagemann@users.noreply.github.com> Date: Sun, 14 Feb 2021 00:02:49 +0100 Subject: [PATCH 135/518] Adjust heatmap_edges for polar heatmaps --- src/backends/gr.jl | 2 +- src/utils.jl | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index deb237ed..227a122f 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1579,7 +1579,7 @@ function gr_add_series(sp, series) dmin, dmax = GR.gr3.volume(y.v, 0) elseif st === :heatmap # `z` is already transposed, so we need to reverse before passing its size. - x, y = heatmap_edges(x, xscale, y, yscale, reverse(size(z))) + x, y = heatmap_edges(x, xscale, y, yscale, reverse(size(z)), ispolar(series)) gr_draw_heatmap(series, x, y, z, clims) elseif st === :image gr_draw_image(series, x, y, z, clims) diff --git a/src/utils.jl b/src/utils.jl index 7cfc7b3a..fc85923a 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -212,24 +212,24 @@ createSegments(z) = collect(repeat(reshape(z,1,:),2,1))[2:end] sortedkeys(plotattributes::Dict) = sort(collect(keys(plotattributes))) -function _heatmap_edges(v::AVec, isedges::Bool = false) - length(v) == 1 && return v[1] .+ [-0.5, 0.5] +function _heatmap_edges(v::AVec, isedges::Bool = false, ispolar::Bool = false) + length(v) == 1 && return v[1] .+ [ispolar ? max(-v[1], -0.5) : -0.5, 0.5] if isedges return v end # `isedges = true` means that v is a vector which already describes edges # and does not need to be extended. vmin, vmax = ignorenan_extrema(v) - extra_min = (v[2] - v[1]) / 2 + extra_min = ispolar ? min(v[1], (v[2] - v[1]) / 2) : (v[2] - v[1]) / 2 extra_max = (v[end] - v[end - 1]) / 2 vcat(vmin-extra_min, 0.5 * (v[1:end-1] + v[2:end]), vmax+extra_max) end "create an (n+1) list of the outsides of heatmap rectangles" -function heatmap_edges(v::AVec, scale::Symbol = :identity, isedges::Bool = false) +function heatmap_edges(v::AVec, scale::Symbol = :identity, isedges::Bool = false, ispolar::Bool = false) f, invf = RecipesPipeline.scale_func(scale), RecipesPipeline.inverse_scale_func(scale) - map(invf, _heatmap_edges(map(f,v), isedges)) + map(invf, _heatmap_edges(map(f,v), isedges, ispolar)) end -function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size::Tuple{Int, Int}) +function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size::Tuple{Int, Int}, ispolar::Bool = false) nx, ny = length(x), length(y) # ismidpoints = z_size == (ny, nx) # This fails some tests, but would actually be # the correct check, since (4, 3) != (3, 4) and a missleading plot is produced. @@ -241,7 +241,7 @@ function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size: or `size(z) == (length(y)+1, length(x)+1))` (x & y define edges).""") end x, y = heatmap_edges(x, xscale, isedges), - heatmap_edges(y, yscale, isedges) + heatmap_edges(y, yscale, isedges, ispolar) # special handle for `r` in polar plots return x, y end From 8d7375dc4ffe0286975633db24d03bdec3ab8158 Mon Sep 17 00:00:00 2001 From: zhanibek Date: Mon, 15 Feb 2021 15:21:26 +0900 Subject: [PATCH 136/518] twin, mirror fixes --- src/backends/pyplot.jl | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 775faebd..1c90ef53 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -995,6 +995,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) sp.attr[:cbar_ax] = cbax end + # framestyle if !ispolar(sp) && !RecipesPipeline.is3d(sp) for pos in ("left", "right", "top", "bottom") @@ -1005,16 +1006,20 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) # Then set visible some of them if sp[:framestyle] == :semi intensity = 0.5 - ax.spines["right"]."set_alpha"(intensity) - ax.spines["top"]."set_alpha"(intensity) - ax.spines["right"]."set_linewidth"(py_thickness_scale(plt, intensity)) - ax.spines["top"]."set_linewidth"(py_thickness_scale(plt, intensity)) + + spine = sp[:yaxis][:mirror] ? "left" : "right" + ax.spines[spine]."set_alpha"(intensity) + ax.spines[spine]."set_linewidth"(py_thickness_scale(plt, intensity)) + + spine = sp[:xaxis][:mirror] ? "bottom" : "top" + ax.spines[spine]."set_linewidth"(py_thickness_scale(plt, intensity)) + ax.spines[spine]."set_alpha"(intensity) elseif sp[:framestyle] == :box ax.tick_params(top=true) # Add ticks too ax.tick_params(right=true) # Add ticks too elseif sp[:framestyle] in (:axes, :origin) - ax.spines["right"]."set_visible"(false) - ax.spines["top"]."set_visible"(false) + sp[:xaxis][:mirror] ? ax.spines["bottom"]."set_visible"(false) : ax.spines["top"]."set_visible"(false) + sp[:yaxis][:mirror] ? ax.spines["left"]."set_visible"(false) : ax.spines["right"]."set_visible"(false) if sp[:framestyle] == :origin ax.spines["bottom"]."set_position"("zero") ax.spines["left"]."set_position"("zero") @@ -1028,6 +1033,16 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) ax."axvline"(x = 0, color = py_color(sp[:yaxis][:foreground_color_axis]), lw = py_thickness_scale(plt, 0.75)) end end + + if sp[:xaxis][:mirror] + ax.xaxis."set_label_position"("top") # the guides + sp[:framestyle] == :box ? nothing : ax.xaxis."tick_top"() + end + + if sp[:yaxis][:mirror] + ax.yaxis."set_label_position"("right") # the guides + sp[:framestyle] == :box ? nothing : ax.yaxis."tick_right"() + end end # axis attributes From 1fc0892551ad6571c127f3319b5628290614684c Mon Sep 17 00:00:00 2001 From: Seth Axen Date: Mon, 15 Feb 2021 14:53:10 -0800 Subject: [PATCH 137/518] Allow extrakws for hexbin --- src/backends/pyplot.jl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 775faebd..eadaba88 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -372,8 +372,10 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) vmin, vmax = clims = get_clims(sp, series) # Dict to store extra kwargs - if st == :wireframe - extrakw = KW() # vmin, vmax cause an error for wireframe plot + if st == :wireframe || st == :hexbin + # vmin, vmax cause an error for wireframe plot + # We are not supporting clims for hexbin as calculation of bins is not trivial + extrakw = KW() else extrakw = KW(:vmin => vmin, :vmax => vmax) end @@ -517,7 +519,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) alpha = series[:fillalpha], cmap = py_fillcolormap(series), # applies to the pcolorfast object zorder = series[:series_plotindex], - # extrakw... # We are not supporting clims for hexbin as calculation of bins is not trivial + extrakw... ) push!(handles, handle) end From 0665ff907c214b40b9191ecfc5b3faeaee27dd6e Mon Sep 17 00:00:00 2001 From: Seth Axen Date: Mon, 15 Feb 2021 14:53:22 -0800 Subject: [PATCH 138/518] Use semicolon --- src/backends/pyplot.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index eadaba88..cb4261ea 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -510,7 +510,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end if st == :hexbin - handle = ax."hexbin"(x, y, + handle = ax."hexbin"(x, y; label = series[:label], C = series[:weights], gridsize = series[:bins]==:auto ? 100 : series[:bins], # 100 is the default value From 897a5eee87dd3c4ed01d61d7c2585ff037df22f2 Mon Sep 17 00:00:00 2001 From: Seth Axen Date: Mon, 15 Feb 2021 14:53:40 -0800 Subject: [PATCH 139/518] Allow edgecolors to override linewidth --- src/backends/pyplot.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index cb4261ea..9236b42a 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -510,12 +510,12 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end if st == :hexbin + extrakw[:edgecolors] = get(series[:extra_kwargs], :edgecolors, py_color(get_linecolor(series))) handle = ax."hexbin"(x, y; label = series[:label], C = series[:weights], gridsize = series[:bins]==:auto ? 100 : series[:bins], # 100 is the default value linewidths = py_thickness_scale(plt, series[:linewidth]), - edgecolors = py_color(get_linecolor(series)), alpha = series[:fillalpha], cmap = py_fillcolormap(series), # applies to the pcolorfast object zorder = series[:series_plotindex], From 7989673eb4b6450bcc3ae50159e367aeef8830fe Mon Sep 17 00:00:00 2001 From: Seth Axen Date: Mon, 15 Feb 2021 14:53:50 -0800 Subject: [PATCH 140/518] Allow mincnt --- src/backends/pyplot.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 9236b42a..dbf94987 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -510,6 +510,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end if st == :hexbin + extrakw[:mincnt] = get(series[:extra_kwargs], :mincnt, nothing) extrakw[:edgecolors] = get(series[:extra_kwargs], :edgecolors, py_color(get_linecolor(series))) handle = ax."hexbin"(x, y; label = series[:label], From ec532b2cbb05dc4440fb3380a7d6caecfbee165e Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 16 Feb 2021 20:09:13 +0100 Subject: [PATCH 141/518] update test example for polar heatmaps --- src/examples.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index 498f367f..3391c21f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1044,8 +1044,10 @@ const _examples = PlotExample[ "Polar heatmaps", "", [quote - z = (1:4) .+ (1:8)' - heatmap(z, projection = :polar) + x = range(0, 2π, length=0) + y = 0:4 + z = (1:4) .+ (1:8)' + heatmap(x, y, z, projection = :polar) end] ), PlotExample( # 50 From cf96ddcd30ac7175be589174273de72eca0ea2d3 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 16 Feb 2021 20:41:32 +0100 Subject: [PATCH 142/518] fix typo in polar heatmap test example --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index 3391c21f..b81f5789 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1044,7 +1044,7 @@ const _examples = PlotExample[ "Polar heatmaps", "", [quote - x = range(0, 2π, length=0) + x = range(0, 2π, length=9) y = 0:4 z = (1:4) .+ (1:8)' heatmap(x, y, z, projection = :polar) From da3e0294cd03ca099b5f93058591e17740dd3b57 Mon Sep 17 00:00:00 2001 From: daschw Date: Tue, 16 Feb 2021 20:03:15 +0000 Subject: [PATCH 143/518] Update precompile_*.jl file --- deps/SnoopCompile/precompile/precompile_Plots.jl | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 62dd3ee1..25c7ce01 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -145,7 +145,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -182,6 +181,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:quiver}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -230,7 +230,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),PlotUtils.ContinuousColorGradient,Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) @@ -241,11 +240,11 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) @@ -264,21 +263,20 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_extrema),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) - Base.precompile(Tuple{typeof(processFontArg!),Dict{Symbol,Any},Symbol,String}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Int64,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) @@ -291,14 +289,12 @@ function _precompile_() Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},String,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(setindex!),Plot{GRBackend},RGBA{Float64},Symbol}) Base.precompile(Tuple{typeof(slice_arg),Array{Length{:mm,Float64},2},Int64}) Base.precompile(Tuple{typeof(slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(slice_arg),Array{RGBA{Float64},2},Int64}) From dd785c3bd3a9cff7189698a70be2791134e3245b Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 16 Feb 2021 21:57:58 +0100 Subject: [PATCH 144/518] up version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 780cc6ef..0f372a9c 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.4" +version = "1.10.5" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 9569f34ae0b19601b4bcccc88104332ff016714a Mon Sep 17 00:00:00 2001 From: daschw Date: Tue, 16 Feb 2021 21:16:45 +0000 Subject: [PATCH 145/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 25c7ce01..93063fda 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -99,7 +99,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -107,6 +109,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -142,9 +145,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),Array{Int64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -174,6 +178,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bins2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) @@ -181,7 +186,8 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:quiver}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:histogram2d}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:path}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -206,11 +212,12 @@ function _precompile_() Base.precompile(Tuple{typeof(_cycle),StepRange{Int64,Int64},Array{Int64,1}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) - Base.precompile(Tuple{typeof(_heatmap_edges),Array{Float64,1},Bool}) + Base.precompile(Tuple{typeof(_heatmap_edges),Array{Float64,1},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) + Base.precompile(Tuple{typeof(_slice_series_args!),Dict{Symbol,Any},Plot{PlotlyBackend},Subplot{PlotlyBackend},Int64}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) @@ -222,6 +229,7 @@ function _precompile_() Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(error_style!),DefaultsDict}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) @@ -239,8 +247,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Base.OneTo{Int64},Base.OneTo{Int64},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) @@ -258,18 +264,19 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) + Base.precompile(Tuple{typeof(gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_extrema),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(is_marker_supported),Shape}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) @@ -282,6 +289,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Shape}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Stroke}) From 0628fb9dc353959adc2fbfb54c639f303372c688 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 19 Feb 2021 18:59:47 +0100 Subject: [PATCH 146/518] enable transparency for surface with GR --- src/backends/gr.jl | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 227a122f..b6fc8135 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1732,15 +1732,12 @@ function gr_draw_contour(series, x, y, z, clims) end function gr_draw_surface(series, x, y, z, clims) + gr_set_transparency(get_fillcolor(series), get_fillalpha(series)) if series[:seriestype] === :surface if length(x) == length(y) == length(z) x, y, z = GR.gridit(x, y, z, 200, 200) end - try - GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) - catch - GR.surface(x, y, z, GR.OPTION_COLORED_MESH) - end + GR.surface(x, y, z, GR.OPTION_COLORED_MESH) else # wireframe GR.setfillcolorind(0) GR.surface(x, y, z, GR.OPTION_FILLED_MESH) From d59f6c96d535e809ce83a99738545a898a68c250 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 19 Feb 2021 20:26:18 +0100 Subject: [PATCH 147/518] fix surface for pyplot --- src/backends/pyplot.jl | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 8dc2a4ae..f65460e5 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -924,7 +924,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) kw[:spacing] = "proportional" if RecipesPipeline.is3d(sp) || ispolar(sp) - cbax = fig."add_axes"([0.9, 0.1, 0.03, 0.8]) + cbax = fig."add_axes"([0.9, 0.1, 0.03, 0.8], label=string("cbar", sp[:subplot_index])) cb = fig."colorbar"(handle; cax=cbax, kw...) else # divider approach works only with 2d plots @@ -949,7 +949,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) colorbar_orientation="horizontal" end - cbax = divider.append_axes(colorbar_position, size="5%", pad=colorbar_pad) # Reasonable value works most of the usecases + cbax = divider.append_axes(colorbar_position, size="5%", pad=colorbar_pad, label=string("cbar", sp[:subplot_index])) # Reasonable value works most of the usecases cb = fig."colorbar"(handle; cax=cbax, orientation = colorbar_orientation, kw...) if sp[:colorbar] == :left @@ -1257,11 +1257,10 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) # optionally add the width of colorbar labels and colorbar to rightpad - # if haskey(sp.attr, :cbar_ax) - # bb = py_bbox(sp.attr[:cbar_handle]."ax"."get_yticklabels"()) - # sp.attr[:cbar_width] = width(bb) + (sp[:colorbar_title] == "" ? 0px : 30px) - # rightpad = rightpad + sp.attr[:cbar_width] - # end + if RecipesPipeline.is3d(sp) || haskey(sp.attr, :cbar_ax) + bb = py_bbox(sp.attr[:cbar_handle]."ax"."get_yticklabels"()) + sp.attr[:cbar_width] = width(bb) + (sp[:colorbar_title] == "" ? 0px : 30px) + end # add in the user-specified margin leftpad += sp[:left_margin] From 100da5ccae266c258174cd24a254650b49d969fd Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 19 Feb 2021 20:59:48 +0100 Subject: [PATCH 148/518] fix fillalpha for surface on pyplot --- src/backends/pyplot.jl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index f65460e5..83899620 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -205,9 +205,15 @@ function fix_xy_lengths!(plt::Plot{PyPlotBackend}, series::Series) end end -py_linecolormap(series::Series) = py_colormap(series[:linecolor]) -py_markercolormap(series::Series) = py_colormap(series[:markercolor]) -py_fillcolormap(series::Series) = py_colormap(series[:fillcolor]) +function py_linecolormap(series::Series) + py_colormap(cgrad(get_linecolor(series), alpha=get_linealpha(series))) +end +function py_markercolormap(series::Series) + py_colormap(cgrad(get_markercolor(series), alpha=get_markeralpha(series))) +end +function py_fillcolormap(series::Series) + py_colormap(cgrad(get_fillcolor(series), alpha=get_fillalpha(series))) +end # --------------------------------------------------------------------------- From 2e2f7044e2f873bb1a39bb31214bab7cbb26c202 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 19 Feb 2021 21:20:51 +0100 Subject: [PATCH 149/518] fix surface on pgfplotsx --- src/backends/pgfplotsx.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 9bf2a6c9..063c838d 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -836,7 +836,7 @@ function pgfx_colormap(v::Vector{<:Colorant}) end function pgfx_colormap(cg::ColorGradient) join(map(1:length(cg)) do i - @sprintf("rgb(%.8fcm)=(%.8f,%.8f,%.8f)", cg.values[i], red(cg.colors[i]), green(cg.colors[i]), blue(cg.colors[i])) + @sprintf("rgb(%.8f)=(%.8f,%.8f,%.8f)", cg.values[i], red(cg.colors[i]), green(cg.colors[i]), blue(cg.colors[i])) end, "\n") end From e8437d76fd8c6b1316874c6a6b5404e5f9318eaa Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 19 Feb 2021 21:22:57 +0100 Subject: [PATCH 150/518] fix fillalpha for surface on pgfplotsx --- src/backends/pgfplotsx.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 063c838d..f2e09073 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -497,6 +497,7 @@ function pgfx_add_series!(::Val{:surface}, axis, series_opt, series, series_func "mesh/rows" => length(opt[:x]), "mesh/cols" => length(opt[:y]), "z buffer" => "sort", + "opacity" => get_fillalpha(series), ) pgfx_add_series!(axis, series_opt, series, series_func, opt) end From 0a6edd5d60c79026ee91104a0aa1a8a302a415e6 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 19 Feb 2021 22:08:02 +0100 Subject: [PATCH 151/518] fix gr test example --- src/backends/gr.jl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index b6fc8135..56693c00 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1732,12 +1732,19 @@ function gr_draw_contour(series, x, y, z, clims) end function gr_draw_surface(series, x, y, z, clims) - gr_set_transparency(get_fillcolor(series), get_fillalpha(series)) + if series[:seriestype] === :surface + fillalpha = get_fillalpha(series) + fillcolor = get_fillcolor(series) if length(x) == length(y) == length(z) x, y, z = GR.gridit(x, y, z, 200, 200) end - GR.surface(x, y, z, GR.OPTION_COLORED_MESH) + if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 + gr_set_transparency(fillcolor, fillalpha) + GR.surface(x, y, z, GR.OPTION_COLORED_MESH) + else + GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) + end else # wireframe GR.setfillcolorind(0) GR.surface(x, y, z, GR.OPTION_FILLED_MESH) From 57b0a81c1cf5150b6cd2933cdafddb67f99d0e91 Mon Sep 17 00:00:00 2001 From: daschw Date: Fri, 19 Feb 2021 21:51:22 +0000 Subject: [PATCH 152/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 34 ++++--------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 93063fda..dc95b6b4 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -95,13 +95,13 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -109,7 +109,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -148,8 +147,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -175,7 +172,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -186,8 +182,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:histogram2d}},Plot{GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:path}},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:hline}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -217,10 +212,11 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(_slice_series_args!),Dict{Symbol,Any},Plot{PlotlyBackend},Subplot{PlotlyBackend},Int64}) + Base.precompile(Tuple{typeof(_slice_series_args!),DefaultsDict,Plot{GRBackend},Subplot{GRBackend},Int64}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(allStyles),Symbol}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) @@ -229,17 +225,15 @@ function _precompile_() Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(error_style!),DefaultsDict}) - Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(frame),Animation,Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) @@ -251,10 +245,9 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) @@ -263,8 +256,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(gr_polyline3d),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) @@ -272,9 +263,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(is_marker_supported),Shape}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) @@ -286,10 +275,8 @@ function _precompile_() Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Float64}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Shape}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Stroke}) @@ -314,18 +301,11 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),)) From 42b3c5625f0de2c1012d0478ca007e83a51284a9 Mon Sep 17 00:00:00 2001 From: yha Date: Thu, 25 Feb 2021 02:33:11 +0200 Subject: [PATCH 153/518] Fix for "segmented" attributes with NaNs --- src/backends.jl | 1 + src/backends/gr.jl | 25 ++++++++++-------- src/backends/pgfplotsx.jl | 5 ++-- src/backends/plotly.jl | 17 +++++++----- src/backends/pyplot.jl | 14 ++++++---- src/examples.jl | 17 ++++++++++-- src/utils.jl | 54 +++++++++++++++++++-------------------- test/runtests.jl | 10 ++------ 8 files changed, 82 insertions(+), 61 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index bd280f0f..6164441d 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -842,6 +842,7 @@ const _pgfplotsx_marker = [ :rtriangle, :cross, :xcross, + :x, :star5, :pentagon, :hline, diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 56693c00..1cc51624 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1561,7 +1561,7 @@ function gr_add_series(sp, series) gr_draw_markers(series, x, y, clims) end elseif st === :shape - gr_draw_shapes(series, x, y, clims) + gr_draw_shapes(series, clims) elseif st in (:path3d, :scatter3d) gr_draw_segments_3d(series, x, y, z, clims) if st === :scatter3d || series[:markershape] !== :none @@ -1613,12 +1613,13 @@ end function gr_draw_segments(series, x, y, fillrange, clims) st = series[:seriestype] if x !== nothing && length(x) > 1 - segments = iter_segments(series, st) + segments = series_segments(series, st) # do area fill if fillrange !== nothing GR.setfillintstyle(GR.INTSTYLE_SOLID) fr_from, fr_to = (is_2tuple(fillrange) ? fillrange : (y, fillrange)) - for (i, rng) in enumerate(segments) + for segment in segments + i, rng = segment.attr_index, segment.range fc = get_fillcolor(series, clims, i) gr_set_fillcolor(fc) fx = _cycle(x, vcat(rng, reverse(rng))) @@ -1630,7 +1631,8 @@ function gr_draw_segments(series, x, y, fillrange, clims) # draw the line(s) if st in (:path, :straightline) - for (i, rng) in enumerate(segments) + for segment in segments + i, rng = segment.attr_index, segment.range lc = get_linecolor(series, clims, i) gr_set_line( get_linewidth(series, i), get_linestyle(series, i), lc, series @@ -1648,8 +1650,9 @@ end function gr_draw_segments_3d(series, x, y, z, clims) if series[:seriestype] === :path3d && length(x) > 1 lz = series[:line_z] - segments = iter_segments(series, :path3d) - for (i, rng) in enumerate(segments) + segments = series_segments(series, :path3d) + for segment in segments + i, rng = segment.attr_index, segment.range lc = get_linecolor(series, clims, i) gr_set_line( get_linewidth(series, i), get_linestyle(series, i), lc, series @@ -1674,8 +1677,9 @@ function gr_draw_markers( shapes = series[:markershape] if shapes != :none - for (i, rng) in enumerate(iter_segments(series, :scatter)) - rng = intersect(eachindex(x), rng) + for segment in series_segments(series, :scatter) + i = segment.attr_index + rng = intersect(eachindex(x), segment.range) if !isempty(rng) ms = get_thickness_scaling(series) * _cycle(msize, i) msw = get_thickness_scaling(series) * _cycle(strokewidth, i) @@ -1688,9 +1692,10 @@ function gr_draw_markers( end end -function gr_draw_shapes(series, x, y, clims) +function gr_draw_shapes(series, clims) x, y = shape_data(series) - for (i,rng) in enumerate(iter_segments(x, y)) + for segment in series_segments(series, :shape) + i, rng = segment.attr_index, segment.range if length(rng) > 1 # connect to the beginning rng = vcat(rng, rng[1]) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index f2e09073..a34c0065 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -339,9 +339,10 @@ end function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, opt) # treat segments - segments = iter_segments(series, series[:seriestype]) + segments = collect(series_segments(series, series[:seriestype])) sf = opt[:fillrange] - for (i, rng) in enumerate(segments) + for segment in segments + i, rng = segment.attr_index, segment.range segment_opt = PGFPlotsX.Options() segment_opt = merge(segment_opt, pgfx_linestyle(opt, i)) if opt[:markershape] != :none diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index ce2b704c..597413f2 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -643,7 +643,7 @@ function plotly_series(plt::Plot, series::Series) end function plotly_series_shapes(plt::Plot, series::Series, clims) - segments = iter_segments(series) + segments = collect(series_segments(series)) plotattributes_outs = Vector{KW}(undef, length(segments)) # TODO: create a plotattributes_out for each polygon @@ -662,7 +662,8 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) for (letter, data) in zip((:x, :y), shape_data(series, 100)) ) - for (i,rng) in enumerate(segments) + for segment in segments + i, rng = segment.attr_index, segment.range length(rng) < 2 && continue # to draw polygons, we actually draw lines with fill @@ -705,14 +706,16 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z hasfillrange = st in (:path, :scatter, :scattergl, :straightline) && (isa(series[:fillrange], AbstractVector) || isa(series[:fillrange], Tuple)) - segments = iter_segments(series, st) + segments = collect(series_segments(series, st)) plotattributes_outs = fill(KW(), (hasfillrange ? 2 : 1 ) * length(segments)) needs_scatter_fix = !isscatter && hasmarker && !any(isnan,y) && length(segments) > 1 - for (i,rng) in enumerate(segments) + for (k, segment) in enumerate(segments) + i, rng = segment.attr_index, segment.range + plotattributes_out = deepcopy(plotattributes_base) - plotattributes_out[:showlegend] = i==1 ? should_add_to_legend(series) : false + plotattributes_out[:showlegend] = k==1 ? should_add_to_legend(series) : false plotattributes_out[:legendgroup] = series[:label] # set the type @@ -805,9 +808,9 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z delete!(plotattributes_out, :fillcolor) end - plotattributes_outs[(2 * i - 1):(2 * i)] = [plotattributes_out_fillrange, plotattributes_out] + plotattributes_outs[(2k-1):(2k)] = [plotattributes_out_fillrange, plotattributes_out] else - plotattributes_outs[i] = plotattributes_out + plotattributes_outs[k] = plotattributes_out end end diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 83899620..4c8ed18a 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -440,9 +440,10 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # end # push!(handles, handle) # else - for (i, rng) in enumerate(iter_segments(series, st)) + for (k, segment) in enumerate(series_segments(series, st)) + i, rng = segment.attr_index, segment.range handle = ax."plot"((arg[rng] for arg in xyargs)...; - label = i == 1 ? series[:label] : "", + label = k == 1 ? series[:label] : "", zorder = series[:series_plotindex], color = py_color(single_color(get_linecolor(series, clims, i)), get_linealpha(series, i)), linewidth = py_thickness_scale(plt, get_linewidth(series, i)), @@ -486,7 +487,8 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) if series[:markershape] != :none && st in ( :path, :scatter, :path3d, :scatter3d, :steppre, :steppost, :bar ) - for (i, rng) in enumerate(iter_segments(series, :scatter)) + for segment in series_segments(series, :scatter) + i, rng = segment.attr_index, segment.range xyargs = if st == :bar && !isvertical(series) if RecipesPipeline.is3d(sp) y[rng], x[rng], z[rng] @@ -679,7 +681,8 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) if st == :shape handle = [] - for (i, rng) in enumerate(iter_segments(series)) + for segment in series_segments(series) + i, rng = segment.attr_index, segment.range if length(rng) > 1 path = pypath."Path"(hcat(x[rng], y[rng])) patches = pypatches."PathPatch"( @@ -706,7 +709,8 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # handle area filling fillrange = series[:fillrange] if fillrange !== nothing && st != :contour - for (i, rng) in enumerate(iter_segments(series)) + for segment in series_segments(series) + i, rng = segment.attr_index, segment.range f, dim1, dim2 = if isvertical(series) :fill_between, x[rng], y[rng] else diff --git a/src/examples.jl b/src/examples.jl index b81f5789..1d5daecc 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1031,13 +1031,26 @@ const _examples = PlotExample[ [quote yv = ones(9) ys = [1; 1; NaN; ones(6)] - plot( - 5 .- [yv 2ys 3yv 4ys], + y = 5 .- [yv 2ys 3yv 4ys] + + plt_color_rows = plot( + y, seriestype = [:path :path :scatter :scatter], markershape = [:utriangle, :rect], markersize = 8, color = [:red, :black], ) + + plt_z_cols = plot( + y, + markershape = [:utriangle :x :circle :square], + markersize = [5 10 10 5], + marker_z = [5 4 3 2], + line_z = [1 3 3 1], + linewidth = [1 10 5 1] + ) + + plot(plt_color_rows, plt_z_cols) end] ), PlotExample( # 49 diff --git a/src/utils.jl b/src/utils.jl index fc85923a..67fe5d61 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -53,10 +53,16 @@ function Base.push!(segments::Segments{T}, vs::AVec) where T end +struct SeriesSegment + # indexes of this segement in series data vectors + range::UnitRange + # index into vector-valued attributes corresponding to this segment + attr_index::Int +end + # ----------------------------------------------------- # helper to manage NaN-separated segments - -mutable struct SegmentsIterator +struct NaNSegmentsIterator args::Tuple n1::Int n2::Int @@ -66,28 +72,26 @@ function iter_segments(args...) tup = Plots.wraptuple(args) n1 = minimum(map(firstindex, tup)) n2 = maximum(map(lastindex, tup)) - SegmentsIterator(tup, n1, n2) + NaNSegmentsIterator(tup, n1, n2) end -function iter_segments(series::Series, seriestype::Symbol = :path) +function series_segments(series::Series, seriestype::Symbol = :path) x, y, z = series[:x], series[:y], series[:z] - if x === nothing - return UnitRange{Int}[] - elseif has_attribute_segments(series) - if any(isnan,y) - return [iter_segments(y)...] - elseif seriestype in (:scatter, :scatter3d) - return [[i] for i in eachindex(y)] - else - return [i:(i + 1) for i in firstindex(y):lastindex(y)-1] - end + x === nothing && return UnitRange{Int}[] + + args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) + nan_segments = collect(iter_segments(args...)) + + if has_attribute_segments(series) + return Iterators.flatten(map(nan_segments) do r + if seriestype in (:scatter, :scatter3d) + (SeriesSegment(i:i, i) for i in r) + else + (SeriesSegment(i:i+1, i) for i in first(r):last(r)-1) + end + end) else - segs = UnitRange{Int}[] - args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) - for seg in iter_segments(args...) - push!(segs, seg) - end - return segs + return (SeriesSegment(r, 1) for r in nan_segments) end end @@ -97,7 +101,7 @@ anynan(args::Tuple) = i -> anynan(i,args) anynan(istart::Int, iend::Int, args::Tuple) = any(anynan(args), istart:iend) allnan(istart::Int, iend::Int, args::Tuple) = all(anynan(args), istart:iend) -function Base.iterate(itr::SegmentsIterator, nextidx::Int = itr.n1) +function Base.iterate(itr::NaNSegmentsIterator, nextidx::Int = itr.n1) i = findfirst(!anynan(itr.args), nextidx:itr.n2) i === nothing && return nothing nextval = nextidx + i - 1 @@ -107,6 +111,7 @@ function Base.iterate(itr::SegmentsIterator, nextidx::Int = itr.n1) nextval:nextnan-1, nextnan end +Base.IteratorSize(::NaNSegmentsIterator) = Base.SizeUnknown() # Find minimal type that can contain NaN and x # To allow use of NaN separated segments with categorical x axis @@ -575,13 +580,8 @@ end function has_attribute_segments(series::Series) # we want to check if a series needs to be split into segments just because # of its attributes - for letter in (:x, :y, :z) - # If we have NaNs in the data they define the segments and - # SegmentsIterator is used - series[letter] !== nothing && NaN in collect(series[letter]) && return false - end series[:seriestype] == :shape && return false - # ... else we check relevant attributes if they have multiple inputs + # check relevant attributes if they have multiple inputs return any( (typeof(series[attr]) <: AbstractVector && length(series[attr]) > 1) for diff --git a/test/runtests.jl b/test/runtests.jl index 09ec3a31..26797405 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -175,14 +175,8 @@ end @test_throws ArgumentError gif(anim) end -@testset "Segments" begin - function segments(args...) - segs = UnitRange{Int}[] - for seg in iter_segments(args...) - push!(segs,seg) - end - segs - end +@testset "NaN-separated Segments" begin + segments(args...) = collect(iter_segments(args...)) nan10 = fill(NaN,10) @test segments(11:20) == [1:10] From 164725079dcd6de4dff086d9c5edaa78ff031c59 Mon Sep 17 00:00:00 2001 From: yha Date: Thu, 25 Feb 2021 00:53:00 +0000 Subject: [PATCH 154/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index dc95b6b4..8e5878b4 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -95,13 +95,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -109,6 +108,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -141,17 +141,21 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:markershape, :markersize, :marker_z, :line_z, :linewidth),Tuple{Array{Symbol,2},Array{Int64,2},Array{Int64,2},Array{Int64,2},Array{Int64,2}}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{OHLC,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) @@ -174,7 +178,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bins2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) @@ -182,12 +185,12 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:hline}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{GRBackend},Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -212,11 +215,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(_slice_series_args!),DefaultsDict,Plot{GRBackend},Subplot{GRBackend},Int64}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(allStyles),Symbol}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) @@ -225,15 +226,16 @@ function _precompile_() Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) @@ -241,21 +243,31 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) + Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{Any,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) @@ -263,18 +275,19 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_steps),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) + Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Int64,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) @@ -290,6 +303,7 @@ function _precompile_() Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(slice_arg),Array{Int64,2},Int64}) Base.precompile(Tuple{typeof(slice_arg),Array{Length{:mm,Float64},2},Int64}) Base.precompile(Tuple{typeof(slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) Base.precompile(Tuple{typeof(slice_arg),Array{RGBA{Float64},2},Int64}) @@ -301,11 +315,18 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),)) From 6193519b1f0ef4db2f0f4122429d59e3f1d9bd81 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Thu, 25 Feb 2021 12:20:59 +0100 Subject: [PATCH 155/518] Correct erroneous offset for legend=:outerbottom --- 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 56693c00..6a0ab1ee 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1081,7 +1081,7 @@ function gr_legend_pos(sp::Subplot, leg, viewport_plotarea) end elseif occursin("bottom", str) if s == :outerbottom - ypos = viewport_plotarea[3] - leg.yoffset - leg.h - !xmirror * gr_axis_height(sp, sp[:xaxis]) + ypos = viewport_plotarea[3] - leg.yoffset - leg.dy - !xmirror * gr_axis_height(sp, sp[:xaxis]) else ypos = viewport_plotarea[3] + leg.yoffset + leg.h end From 2cee039dbc5ba543f3ebdc735d52186f859f26ed Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Thu, 25 Feb 2021 15:08:33 +0100 Subject: [PATCH 156/518] Add polar legend position --- src/args.jl | 2 + src/backends/gr.jl | 96 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 91 insertions(+), 7 deletions(-) diff --git a/src/args.jl b/src/args.jl index 519fea3c..3a3c963c 100644 --- a/src/args.jl +++ b/src/args.jl @@ -1262,6 +1262,8 @@ end convertLegendValue(val::Bool) = val ? :best : :none convertLegendValue(val::Nothing) = :none 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/gr.jl b/src/backends/gr.jl index 6a0ab1ee..29ac071c 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -911,7 +911,7 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) gr_update_viewport_ratio!(viewport_plotarea, sp) leg = gr_get_legend_geometry(viewport_plotarea, sp) gr_update_viewport_legend!(viewport_plotarea, sp, leg) - + # fill in the plot area background gr_fill_plotarea(sp, viewport_plotarea) @@ -1047,7 +1047,24 @@ end function gr_legend_pos(sp::Subplot, leg, viewport_plotarea) s = sp[:legend] - typeof(s) <: Symbol || return gr_legend_pos(s, viewport_plotarea) + s isa Real && return gr_legend_pos(s, leg, viewport_plotarea) + if s isa Tuple{<:Real,Symbol} + if s[2] !== :outer + return gr_legend_pos(s[1], leg, viewport_plotarea) + end + + xaxis, yaxis = sp[:xaxis], sp[:yaxis] + xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) + axisclearance = [ + !ymirror*gr_axis_width(sp, sp[:yaxis]), + ymirror*gr_axis_width(sp,sp[:yaxis]), + !xmirror*gr_axis_height(sp,sp[:xaxis]), + xmirror*gr_axis_height(sp,sp[:xaxis]), + ] + return gr_legend_pos(s[1], leg, viewport_plotarea; axisclearance) + end + s isa Symbol || return gr_legend_pos(s, viewport_plotarea) str = string(s) if str == "best" str = "topright" @@ -1098,6 +1115,55 @@ function gr_legend_pos(v::Tuple{S,T}, viewport_plotarea) where {S<:Real, T<:Real (xpos,ypos) end +function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance=nothing) + xmean = +(viewport_plotarea[1:2]...)/2 + ymean = +(viewport_plotarea[3:4]...)/2 + (s,c) = sincosd(theta) + + if isnothing(axisclearance) + # Inner + # rectangle relative to midpoint where the anchor can legally be + rect = viewport_plotarea .+ [ + - xmean + leg.xoffset + leg.leftw, + - xmean - leg.xoffset - leg.rightw - leg.textw, + - ymean + leg.yoffset + leg.h, + - ymean - leg.yoffset - leg.dy, + ] + x = c < 0 ? rect[1]/c : rect[2]/c + y = s < 0 ? rect[3]/s : rect[4]/s + A = min(x,y) # Biggest A that places (Acos(theta),Asin(theta)) inside rectangle + else + # Outer + # rectangle relative to midpoint where the anchor is forbidden + rect = viewport_plotarea .+ [ + - xmean - leg.xoffset - leg.rightw - leg.textw - axisclearance[1], + - xmean + leg.xoffset + leg.leftw + axisclearance[2], + - ymean - leg.yoffset - leg.dy - axisclearance[3], + - ymean + leg.yoffset + leg.h + axisclearance[4], + ] + t = tand(theta) + if c < 0 + if t < rect[4]/rect[1] + A = rect[4]/s + elseif t < rect[3]/rect[1] + A = rect[1]/c + else + A = rect[3]/s + end + else + if t < rect[3]/rect[2] + A = rect[3]/s + elseif t viewport_plotarea[2] + viewport_plotarea[2] -= leg.leftw + leg.textw + leg.rightw + leg.xoffset + end + if y < viewport_plotarea[3] + viewport_plotarea[3] += leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) + elseif y > viewport_plotarea[4] + viewport_plotarea[4] -= leg.h + leg.dy + leg.yoffset + end + end + end + leg_str = string(s) if occursin("outer", leg_str) if occursin("right", leg_str) viewport_plotarea[2] -= leg.leftw + leg.textw + leg.rightw + leg.xoffset @@ -1171,7 +1253,7 @@ function gr_update_viewport_legend!(viewport_plotarea, sp, leg) viewport_plotarea[3] += leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) end end - if sp[:legend] == :inline + if s === :inline if sp[:yaxis][:mirror] viewport_plotarea[1] += leg.w else @@ -1464,10 +1546,10 @@ function gr_label_axis_3d(sp, letter) if ax[:guide] != "" near_letter = letter in (:x, :z) ? :y : :x far_letter = letter in (:x, :y) ? :z : :x - + nax = sp[Symbol(near_letter, :axis)] fax = sp[Symbol(far_letter, :axis)] - + amin, amax = axis_limits(sp, letter) namin, namax = axis_limits(sp, near_letter) famin, famax = axis_limits(sp, far_letter) @@ -1732,7 +1814,7 @@ function gr_draw_contour(series, x, y, z, clims) end function gr_draw_surface(series, x, y, z, clims) - + if series[:seriestype] === :surface fillalpha = get_fillalpha(series) fillcolor = get_fillcolor(series) From 2d8b2332fbe53cd2971a6ac85de9facb8fbb0adc Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Thu, 25 Feb 2021 18:56:00 +0100 Subject: [PATCH 157/518] Update Project.toml Add GR v0.55.0 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 0f372a9c..6b7ea128 100644 --- a/Project.toml +++ b/Project.toml @@ -36,7 +36,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" -GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54" +GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55" GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" Latexify = "0.14" From 3f13a186e778bd08d7ad2fc22d7635005916610d Mon Sep 17 00:00:00 2001 From: jheinen Date: Thu, 25 Feb 2021 18:13:34 +0000 Subject: [PATCH 158/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index dc95b6b4..c765b159 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -95,13 +95,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -109,6 +108,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -147,6 +147,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -172,9 +174,9 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bins2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) @@ -182,7 +184,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:hline}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) @@ -212,11 +213,10 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(_slice_series_args!),DefaultsDict,Plot{GRBackend},Subplot{GRBackend},Int64}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) + Base.precompile(Tuple{typeof(_update_plot_args),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(allStyles),Symbol}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) @@ -225,15 +225,16 @@ function _precompile_() Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) @@ -241,13 +242,16 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) @@ -256,6 +260,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) @@ -264,6 +269,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) @@ -275,6 +281,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) @@ -287,6 +294,7 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Int64,Int64},Tuple{Float64,Int64,Int64}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) @@ -301,11 +309,18 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),)) From 66250acfaafbdb323f2121181b54c868174a514d Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 25 Feb 2021 19:38:08 +0100 Subject: [PATCH 159/518] release --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 6b7ea128..f879a9aa 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.5" +version = "1.10.6" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 5cc08a17b697d9641df3a7f4ea284907971af692 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Sun, 28 Feb 2021 08:57:54 +0100 Subject: [PATCH 160/518] Series annotations for bar plots --- src/recipes.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/recipes.jl b/src/recipes.jl index 46ef79a1..acb43161 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -415,6 +415,11 @@ end fillto = map(x -> _is_positive(x) ? typeof(baseline)(x) : baseline, fillto) end + if !isnothing(plotattributes[:series_annotations]) + annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) + series_annotations := nothing + end + # create the bar shapes by adding x/y segments xseg, yseg = Segments(), Segments() for i = 1:ny From a75d309d207891b077525c43f587e5987b43f2c1 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Sun, 28 Feb 2021 09:20:20 +0100 Subject: [PATCH 161/518] Labels for horizontal bars --- src/recipes.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/recipes.jl b/src/recipes.jl index acb43161..68422966 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -416,7 +416,11 @@ end end if !isnothing(plotattributes[:series_annotations]) - annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) + if isvertical(plotattributes) + annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) + else + annotations := (y,x,plotattributes[:series_annotations].strs,:left) + end series_annotations := nothing end From 6724a3a2fe6fe411787baa94baf9c52a4d3e1bdd Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Sun, 28 Feb 2021 23:40:06 +0100 Subject: [PATCH 162/518] Centralize utility functions, add legend-angle to plotly, pgfplotsx --- src/Plots.jl | 1 + src/backends/gr.jl | 52 +++++++++------------------------------ src/backends/pgfplotsx.jl | 20 ++++++++++++++- src/backends/plotly.jl | 23 +++++++++++++++-- src/legend.jl | 24 ++++++++++++++++++ 5 files changed, 77 insertions(+), 43 deletions(-) create mode 100644 src/legend.jl diff --git a/src/Plots.jl b/src/Plots.jl index 50b4205c..5378fb73 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -211,6 +211,7 @@ include("output.jl") include("ijulia.jl") include("fileio.jl") include("init.jl") +include("legend.jl") include("backends/plotly.jl") include("backends/gr.jl") diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 29ac071c..3e89ac90 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1116,52 +1116,24 @@ function gr_legend_pos(v::Tuple{S,T}, viewport_plotarea) where {S<:Real, T<:Real end function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance=nothing) - xmean = +(viewport_plotarea[1:2]...)/2 - ymean = +(viewport_plotarea[3:4]...)/2 - (s,c) = sincosd(theta) + xcenter = +(viewport_plotarea[1:2]...)/2 + ycenter = +(viewport_plotarea[3:4]...)/2 if isnothing(axisclearance) # Inner - # rectangle relative to midpoint where the anchor can legally be - rect = viewport_plotarea .+ [ - - xmean + leg.xoffset + leg.leftw, - - xmean - leg.xoffset - leg.rightw - leg.textw, - - ymean + leg.yoffset + leg.h, - - ymean - leg.yoffset - leg.dy, - ] - x = c < 0 ? rect[1]/c : rect[2]/c - y = s < 0 ? rect[3]/s : rect[4]/s - A = min(x,y) # Biggest A that places (Acos(theta),Asin(theta)) inside rectangle + # rectangle where the anchor can legally be + xmin = viewport_plotarea[1] + leg.xoffset + leg.leftw + xmax = viewport_plotarea[2] - leg.xoffset - leg.rightw - leg.textw + ymin = viewport_plotarea[3] + leg.yoffset + leg.h + ymax = viewport_plotarea[4] - leg.yoffset - leg.dy else # Outer - # rectangle relative to midpoint where the anchor is forbidden - rect = viewport_plotarea .+ [ - - xmean - leg.xoffset - leg.rightw - leg.textw - axisclearance[1], - - xmean + leg.xoffset + leg.leftw + axisclearance[2], - - ymean - leg.yoffset - leg.dy - axisclearance[3], - - ymean + leg.yoffset + leg.h + axisclearance[4], - ] - t = tand(theta) - if c < 0 - if t < rect[4]/rect[1] - A = rect[4]/s - elseif t < rect[3]/rect[1] - A = rect[1]/c - else - A = rect[3]/s - end - else - if t < rect[3]/rect[2] - A = rect[3]/s - elseif t string((1.02, 1)), "anchor" => "north west"), ) -pgfx_get_legend_pos(t::Tuple) = ("at" => "{$(string(t))}", "anchor" => "north west") +pgfx_get_legend_pos(t::Tuple{S,T}) where {S<:Real,T<:Real} = ("at" => "{$(string(t))}", "anchor" => "north west") pgfx_get_legend_pos(nt::NamedTuple) = ("at" => "{$(string(nt.at))}", "anchor" => string(nt.anchor)) +pgfx_get_legend_pos(theta::Real) = pgfx_get_legend_pos((theta,:inner)) +function pgfx_get_legend_pos(v::Tuple{S,Symbol}) where S <: Real + (s,c) = sincosd(v[1]) + anchors = [ + "north west" "north" "north east"; + "west" "center" "east"; + "south west" "south" "south east"; + ] + + if v[2] === :inner + rect = (0.07,0.5,1.0,0.07,0.52,1.0) + anchor = anchors[legend_anchor_index(s),legend_anchor_index(c)] + else + rect = (-0.15,0.5,1.05,-0.15,0.52,1.1) + anchor = anchors[4-legend_anchor_index(s),4-legend_anchor_index(c)] + end + return ("at"=>"$(string(legend_pos_from_angle(v[1],rect...)))", "anchor"=>anchor) +end pgfx_get_colorbar_pos(s) = get((left = " left", bottom = " horizontal", top = " horizontal"), s, "") diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index ce2b704c..3b6d2794 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -384,6 +384,25 @@ end plotly_legend_pos(v::Tuple{S,T}) where {S<:Real, T<:Real} = (coords=v, xanchor="left", yanchor="top") + plotly_legend_pos(theta::Real) = plotly_legend_pos((theta, :inner)) + +function plotly_legend_pos(v::Tuple{S,Symbol}) where S<:Real + (s,c) = sincosd(v[1]) + xanchors = ["left", "center", "right"] + yanchors = ["bottom", "middle", "top"] + + if v[2] === :inner + rect = (0.07,0.5,1.0,0.07,0.52,1.0) + xanchor = xanchors[legend_anchor_index(c)] + yanchor = yanchors[legend_anchor_index(s)] + else + rect = (-0.15,0.5,1.05,-0.15,0.52,1.1) + xanchor = xanchors[4-legend_anchor_index(c)] + yanchor = yanchors[4-legend_anchor_index(s)] + end + return (coords=legend_pos_from_angle(v[1],rect...), xanchor=xanchor, yanchor=yanchor) +end + function plotly_layout_json(plt::Plot) JSON.json(plotly_layout(plt), 4) @@ -595,9 +614,9 @@ function plotly_series(plt::Plot, series::Series) elseif st == :mesh3d plotattributes_out[:type] = "mesh3d" plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = x, y, z - + if series[:connections] !== nothing - if typeof(series[:connections]) <: Tuple{Array,Array,Array} + if typeof(series[:connections]) <: Tuple{Array,Array,Array} i,j,k = series[:connections] if !(length(i) == length(j) == length(k)) throw(ArgumentError("Argument connections must consist of equally sized arrays.")) diff --git a/src/legend.jl b/src/legend.jl new file mode 100644 index 00000000..7037bc14 --- /dev/null +++ b/src/legend.jl @@ -0,0 +1,24 @@ +""" +```julia +legend_pos_from_angle(theta, xmin, xcenter, xmax, ymin, ycenter, ymax, inout) +``` + +Return `(x,y)` at an angle `theta` degrees from +`(xcenter,ycenter)` on a rectangle defined by (`xmin`, +`xmax`, `ymin`, `ymax`). +""" +function legend_pos_from_angle(theta, xmin, xcenter, xmax, ymin, ycenter, ymax) + (s,c) = sincosd(theta) + x = c < 0 ? (xmin-xcenter)/c : (xmax-xcenter)/c + y = s < 0 ? (ymin-ycenter)/s : (ymax-ycenter)/s + A = min(x,y) + return (xcenter + A*c, ycenter + A*s) +end + + +""" +Split continuous range `[-1,1]` into an integer `[1,2,3]` +""" +function legend_anchor_index(x) + return ceil(Integer,2//3*(x+1)) +end From e9cd69ea2ff3e663ab1101b3eec863a6fe1d110f Mon Sep 17 00:00:00 2001 From: yha Date: Mon, 1 Mar 2021 02:17:42 +0200 Subject: [PATCH 163/518] Fix Shape vector recipe --- src/components.jl | 12 ++++-------- src/recipes.jl | 10 ++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/components.jl b/src/components.jl index 00ca51e6..b0a76167 100644 --- a/src/components.jl +++ b/src/components.jl @@ -42,15 +42,11 @@ function coords(shape::Shape) shape.x, shape.y end +#coords(shapes::AVec{Shape}) = unzip(map(coords, shapes)) function coords(shapes::AVec{Shape}) - length(shapes) == 0 && return zeros(0), zeros(0) - xs = map(get_xs, shapes) - ys = map(get_ys, shapes) - x, y = map(copy, coords(shapes[1])) - for shape in shapes[2:end] - nanappend!(x, shape.x) - nanappend!(y, shape.y) - end + c = map(coords, shapes) + x = [q[1] for q in c] + y = [q[2] for q in c] x, y end diff --git a/src/recipes.jl b/src/recipes.jl index 46ef79a1..dcf5fc8d 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -1364,6 +1364,16 @@ end @recipe function f(shapes::AVec{Shape}) seriestype --> :shape + # For backwards compatibility, column vectors of segmenting attributes are + # interpreted as having one element per shape + for attr in union(_segmenting_array_attributes, _segmenting_vector_attributes) + v = get(plotattributes, attr, nothing) + if v isa AVec || v isa AMat && size(v,2) == 1 + @warn "Column vector attribute `$attr` reinterpreted as row vector (one value per shape).\n" * + "Pass a row vector instead (e.g. using `permutedims`) to suppress this warning." + plotattributes[attr] = permutedims(v) + end + end coords(shapes) end From 6af91c7f71cbe9bb0f310be2845873cb16ace845 Mon Sep 17 00:00:00 2001 From: yha Date: Mon, 1 Mar 2021 03:23:19 +0200 Subject: [PATCH 164/518] warning and hint on mismatched attr lengths --- src/utils.jl | 72 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/src/utils.jl b/src/utils.jl index 67fe5d61..8c4f8481 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -82,8 +82,8 @@ function series_segments(series::Series, seriestype::Symbol = :path) args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) nan_segments = collect(iter_segments(args...)) - if has_attribute_segments(series) - return Iterators.flatten(map(nan_segments) do r + result = if has_attribute_segments(series) + Iterators.flatten(map(nan_segments) do r if seriestype in (:scatter, :scatter3d) (SeriesSegment(i:i, i) for i in r) else @@ -91,8 +91,28 @@ function series_segments(series::Series, seriestype::Symbol = :path) end end) else - return (SeriesSegment(r, 1) for r in nan_segments) + (SeriesSegment(r, 1) for r in nan_segments) + end + + seg_attr_range = UnitRange(minimum(first(seg.range) for seg in result), + maximum(last(seg.range) for seg in result)) + for attr in _segmenting_vector_attributes + v = get(series, attr, nothing) + if v isa AVec && eachindex(v) != seg_attr_range + @warn "Indices $(eachindex(v)) of attribute `$attr` does not match data indices $seg_attr_range." + if any(v -> !isnothing(v) && any(isnan, v), (x,y,z)) + @info """Data contains NaNs or missing values, and indices of `$attr` vector do not match data indices. + If you intend elements of `$attr` to apply to individual NaN-separated segements in the data, + pass each segment in a separate vector instead, and use a row vector for `$attr`. Legend entries + may be suppressed by passing an empty label. + For example, + plot([1:2,1:3], [[4,5],[3,4,5]], label=["y" ""], $attr=[1 2]) + """ + end + end end + + return result end # helpers to figure out if there are NaN values in a list of array types @@ -577,34 +597,34 @@ function get_markerstrokewidth(series, i::Int = 1) _cycle(series[:markerstrokewidth], i) end +const _segmenting_vector_attributes = ( + :seriescolor, + :seriesalpha, + :linecolor, + :linealpha, + :linewidth, + :linestyle, + :fillcolor, + :fillalpha, + :markercolor, + :markeralpha, + :markersize, + :markerstrokecolor, + :markerstrokealpha, + :markerstrokewidth, + :markershape, +) + +const _segmenting_array_attributes = (:line_z, :fill_z, :marker_z) + function has_attribute_segments(series::Series) # we want to check if a series needs to be split into segments just because # of its attributes series[:seriestype] == :shape && return false # check relevant attributes if they have multiple inputs - return any( - (typeof(series[attr]) <: AbstractVector && length(series[attr]) > 1) - for - attr in [ - :seriescolor, - :seriesalpha, - :linecolor, - :linealpha, - :linewidth, - :linestyle, - :fillcolor, - :fillalpha, - :markercolor, - :markeralpha, - :markersize, - :markerstrokecolor, - :markerstrokealpha, - :markerstrokewidth, - :markershape, - ] - ) || any( - typeof(series[attr]) <: AbstractArray for attr in (:line_z, :fill_z, :marker_z) - ) + return any(series[attr] isa AbstractVector && length(series[attr]) > 1 + for attr in _segmenting_vector_attributes + ) || any(series[attr] isa AbstractArray for attr in _segmenting_array_attributes) end function get_aspect_ratio(sp) From 97caa18fb44c70cfaa1dbdea4591b9699697a6a7 Mon Sep 17 00:00:00 2001 From: yha Date: Mon, 1 Mar 2021 01:33:16 +0000 Subject: [PATCH 165/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 8e5878b4..9e207e82 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -59,9 +59,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) @@ -74,7 +74,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -100,7 +99,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -108,7 +106,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) @@ -149,13 +146,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{OHLC,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) @@ -190,7 +185,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{GRBackend},Dict{Symbol,Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -235,7 +229,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) @@ -243,33 +236,25 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Array{Float64,1},Array{Float64,1},UnitRange{Int64},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{Any,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{Length{:mm,Float64},Length{:mm,Float64}},Tuple{Length{:mm,Float64},Length{:mm,Float64}}},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) @@ -277,14 +262,12 @@ function _precompile_() Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(make_steps),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) Base.precompile(Tuple{typeof(plot!),Any}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Int64,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) @@ -315,12 +298,10 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end if !ismissing(fbody) From 1d3e0a5d5db0edc846408b4d12be0ec04d3a1eb3 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Tue, 2 Mar 2021 08:01:59 +0100 Subject: [PATCH 166/518] Better legend anchor algorithm --- src/backends/plotly.jl | 2 +- src/legend.jl | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 3b6d2794..b7b21590 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -384,7 +384,7 @@ end plotly_legend_pos(v::Tuple{S,T}) where {S<:Real, T<:Real} = (coords=v, xanchor="left", yanchor="top") - plotly_legend_pos(theta::Real) = plotly_legend_pos((theta, :inner)) +plotly_legend_pos(theta::Real) = plotly_legend_pos((theta, :inner)) function plotly_legend_pos(v::Tuple{S,Symbol}) where S<:Real (s,c) = sincosd(v[1]) diff --git a/src/legend.jl b/src/legend.jl index 7037bc14..bb1e0a46 100644 --- a/src/legend.jl +++ b/src/legend.jl @@ -20,5 +20,7 @@ end Split continuous range `[-1,1]` into an integer `[1,2,3]` """ function legend_anchor_index(x) - return ceil(Integer,2//3*(x+1)) + x<-1//3 && return 1 + x<1//3 && return 2 + return 3 end From 37252ec5622f4e5c6468b631fd81e041cb4adbec Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Tue, 2 Mar 2021 10:07:49 +0100 Subject: [PATCH 167/518] Correct anchor order --- src/backends/pgfplotsx.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index c44afdbd..73e5d48f 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -775,9 +775,9 @@ pgfx_get_legend_pos(theta::Real) = pgfx_get_legend_pos((theta,:inner)) function pgfx_get_legend_pos(v::Tuple{S,Symbol}) where S <: Real (s,c) = sincosd(v[1]) anchors = [ - "north west" "north" "north east"; - "west" "center" "east"; "south west" "south" "south east"; + "west" "center" "east"; + "north west" "north" "north east"; ] if v[2] === :inner From d6a72a5df5d01b024237ef1fbc4bebfd513541bc Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Tue, 2 Mar 2021 10:19:26 +0100 Subject: [PATCH 168/518] Add legend angle to pyplot --- src/backends/pyplot.jl | 63 +++++++++++++++--------------------------- src/legend.jl | 35 ++++++++++++++++++++++- 2 files changed, 57 insertions(+), 41 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 83899620..d89ac3aa 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -492,11 +492,11 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) y[rng], x[rng], z[rng] else y[rng], x[rng] - end + end else if RecipesPipeline.is3d(sp) x[rng], y[rng], z[rng] - else + else x[rng], y[rng] end end @@ -1305,44 +1305,26 @@ end # ----------------------------------------------------------------- -py_legend_pos(pos::Symbol) = get( - ( - right = "right", - left = "center left", - top = "upper center", - bottom = "lower center", - bottomleft = "lower left", - bottomright = "lower right", - topright = "upper right", - topleft = "upper left", - outerright = "center left", - outerleft = "right", - outertop = "lower center", - outerbottom = "upper center", - outerbottomleft = "lower right", - outerbottomright = "lower left", - outertopright = "upper left", - outertopleft = "upper right", - ), - pos, - "best", -) -py_legend_pos(pos) = "lower left" +py_legend_pos(pos::Tuple{S,T}) where {S<:Real,T<:Real} = "lower left" + +function py_legend_pos(pos::Tuple{<:Real,Symbol}) + (s,c) = sincosd(pos[1]) + if pos[2] === :outer + s = -s + c = -c + end + yanchors = ["lower","center","upper"] + xanchors = ["left","center","right"] + return join([yanchors[legend_anchor_index(s)], xanchors[legend_anchor_index(c)]], ' ') +end + +function py_legend_bbox(pos::Tuple{T,Symbol}) where T<:Real + if pos[2] === :outer + return legend_pos_from_angle(pos[1],-0.15,0.5,1.0,-0.15,0.5,1.0) + end + legend_pos_from_angle(pos[1],0.0,0.5,1.0,0.0,0.5,1.0) +end -py_legend_bbox(pos::Symbol) = get( - ( - outerright = (1.0, 0.5, 0.0, 0.0), - outerleft = (-0.15, 0.5, 0.0, 0.0), - outertop = (0.5, 1.0, 0.0, 0.0), - outerbottom = (0.5, -0.15, 0.0, 0.0), - outerbottomleft = (-0.15, 0.0, 0.0, 0.0), - outerbottomright = (1.0, 0.0, 0.0, 0.0), - outertopright = (1.0, 1.0, 0.0, 0.0), - outertopleft = (-0.15, 1.0, 0.0, 0.0), - ), - pos, - (0.0, 0.0, 1.0, 1.0), -) py_legend_bbox(pos) = pos function py_add_legend(plt::Plot, sp::Subplot, ax) @@ -1388,6 +1370,7 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) # if anything was added, call ax.legend and set the colors if !isempty(handles) + leg = legend_angle(leg) leg = ax."legend"(handles, labels, loc = py_legend_pos(leg), @@ -1398,7 +1381,7 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) edgecolor = py_color(sp[:foreground_color_legend]), framealpha = alpha(plot_color(sp[:background_color_legend])), fancybox = false, # makes the legend box square - borderpad=0.8 # to match GR legendbox + borderpad = 0.8 # to match GR legendbox ) frame = leg."get_frame"() frame."set_linewidth"(py_thickness_scale(plt, 1)) diff --git a/src/legend.jl b/src/legend.jl index bb1e0a46..0b996619 100644 --- a/src/legend.jl +++ b/src/legend.jl @@ -17,10 +17,43 @@ end """ -Split continuous range `[-1,1]` into an integer `[1,2,3]` +Split continuous range `[-1,1]` evenly into an integer `[1,2,3]` """ function legend_anchor_index(x) x<-1//3 && return 1 x<1//3 && return 2 return 3 end + +""" +Turn legend argument into a (theta, :inner) or (theta, :outer) tuple. +For backends where legend position is given in normal coordinates (0,0) -- (1,1), +so :topleft exactly corresponds to (45, :inner) etc. + +If `leg` is a (::Real,::Real) tuple, keep it as is. +""" +legend_angle(leg::Real) = (leg,:inner) +legend_angle(leg::Tuple{S,T}) where {S<:Real,T<:Real} = leg +legend_angle(leg::Tuple{S,Symbol}) where S<:Real = leg +legend_angle(leg::Symbol) = get( + ( + topleft = (135,:inner), + top = (90, :inner), + topright = (45, :inner), + left = (180,:inner), + right = (0, :inner), + bottomleft = (225,:inner), + bottom = (270,:inner), + bottomright = (315,:inner), + outertopleft = (135,:outer), + outertop = (90, :outer), + outertopright = (45, :outer), + outerleft = (180,:outer), + outerright = (0, :outer), + outerbottomleft = (225,:outer), + outerbottom = (270,:outer), + outerbottomright = (315,:outer), + ), + leg, + (45, :inner) + ) From 9cee7a2c47280d72766116f9adf52c0f33b50227 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Tue, 2 Mar 2021 11:53:47 +0100 Subject: [PATCH 169/518] Documentation for legend angle --- src/arg_desc.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index 9adad50b..a5139c1b 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -90,7 +90,7 @@ const _arg_desc = KW( :foreground_color_legend => "Color Type or `:match` (matches `:foreground_color_subplot`). Foreground color of the legend.", :foreground_color_title => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of subplot title.", :color_palette => "Vector of colors (cycle through) or color gradient (generate list from gradient) or `:auto` (generate a color list using `Colors.distiguishable_colors` and custom seed colors chosen to contrast with the background). The color palette is a color list from which series colors are automatically chosen.", -:legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position). Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend)", +:legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position) or angle or (angle,inout) tuple. Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend). Legend is positioned at (angle degrees) (so (90,:outer) is roughly equivalent to :outertop), close to the inside of the axes or the outside if inout=:outer.", :legendfontfamily => "String or Symbol. Font family of legend entries.", :legendfontsize => "Integer. Font pointsize of legend entries.", :legendfonthalign => "Symbol. Font horizontal alignment of legend entries: :hcenter, :left, :right or :center", From c8b882d17ad941df27dd94829f4bee129dad292a Mon Sep 17 00:00:00 2001 From: yha Date: Tue, 2 Mar 2021 22:56:56 +0200 Subject: [PATCH 170/518] rename local var --- src/utils.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils.jl b/src/utils.jl index 8c4f8481..a23a47b3 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -94,12 +94,12 @@ function series_segments(series::Series, seriestype::Symbol = :path) (SeriesSegment(r, 1) for r in nan_segments) end - seg_attr_range = UnitRange(minimum(first(seg.range) for seg in result), + seg_range = UnitRange(minimum(first(seg.range) for seg in result), maximum(last(seg.range) for seg in result)) for attr in _segmenting_vector_attributes v = get(series, attr, nothing) - if v isa AVec && eachindex(v) != seg_attr_range - @warn "Indices $(eachindex(v)) of attribute `$attr` does not match data indices $seg_attr_range." + if v isa AVec && eachindex(v) != seg_range + @warn "Indices $(eachindex(v)) of attribute `$attr` does not match data indices $seg_range." if any(v -> !isnothing(v) && any(isnan, v), (x,y,z)) @info """Data contains NaNs or missing values, and indices of `$attr` vector do not match data indices. If you intend elements of `$attr` to apply to individual NaN-separated segements in the data, From f418acf3873f4f0655e9fda021b8f35443081227 Mon Sep 17 00:00:00 2001 From: yha Date: Wed, 3 Mar 2021 00:00:25 +0200 Subject: [PATCH 171/518] No implicit cycling in example --- src/examples.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index 1d5daecc..cfc8e96f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1029,6 +1029,8 @@ const _examples = PlotExample[ "Vectors of markershapes and segments", "", [quote + using Base.Iterators: cycle, take + yv = ones(9) ys = [1; 1; NaN; ones(6)] y = 5 .- [yv 2ys 3yv 4ys] @@ -1036,9 +1038,9 @@ const _examples = PlotExample[ plt_color_rows = plot( y, seriestype = [:path :path :scatter :scatter], - markershape = [:utriangle, :rect], + markershape = collect(take(cycle((:utriangle, :rect)), 9)), markersize = 8, - color = [:red, :black], + color = collect(take(cycle((:red, :black)), 9)) ) plt_z_cols = plot( From e9b78e7191ba32ff41de472aec92d6778f67931b Mon Sep 17 00:00:00 2001 From: Niklas Korsbo Date: Wed, 3 Mar 2021 10:46:01 +0100 Subject: [PATCH 172/518] Enable `dpi` option for `pgfplotsx()` PNGs. --- src/backends/pgfplotsx.jl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index a34c0065..13608941 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -1363,7 +1363,7 @@ function _update_plot_object(plt::Plot{PGFPlotsXBackend}) plt.o(plt) end -for mime in ("application/pdf", "image/png", "image/svg+xml") +for mime in ("application/pdf", "image/svg+xml") @eval function _show( io::IO, mime::MIME{Symbol($mime)}, @@ -1374,6 +1374,18 @@ for mime in ("application/pdf", "image/png", "image/svg+xml") end end + function _show( + io::IO, + mime::MIME{Symbol("image/png")}, + plt::Plot{PGFPlotsXBackend}, + ) + plt.o.was_shown = true + plt_file = tempname() * ".png" + PGFPlotsX.pgfsave(plt_file, plt.o.the_plot; dpi=plt[:dpi]) + write(io, read(plt_file)) + rm(plt_file; force = true) + end + function _show( io::IO, mime::MIME{Symbol("application/x-tex")}, From 08e3224f8f8ee073533d031465b8e5de7b7da8cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Mar 2021 00:27:46 +0000 Subject: [PATCH 173/518] CompatHelper: bump compat for "Showoff" to "1.0" --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index f879a9aa..a4e313d5 100644 --- a/Project.toml +++ b/Project.toml @@ -49,7 +49,7 @@ RecipesPipeline = "0.3" Reexport = "0.2, 1.0" Requires = "1" Scratch = "1" -Showoff = "0.3.1" +Showoff = "0.3.1, 1.0" StatsBase = "0.32, 0.33" julia = "1.5" From d44b7e89e73f6988324a10cf767ea896ccc1a916 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 6 Mar 2021 12:03:50 +0100 Subject: [PATCH 174/518] fix series-segments for empty series --- src/utils.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.jl b/src/utils.jl index a23a47b3..a85f9d90 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -77,7 +77,7 @@ end function series_segments(series::Series, seriestype::Symbol = :path) x, y, z = series[:x], series[:y], series[:z] - x === nothing && return UnitRange{Int}[] + (x === nothing || isempty(x)) && return UnitRange{Int}[] args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) nan_segments = collect(iter_segments(args...)) From 664af999cd65e05d36d60ee4e2c7e7400664564f Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 10 Mar 2021 22:15:06 +0100 Subject: [PATCH 175/518] fix wireframe on pyplot --- src/backends/pyplot.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 21243ca2..dbcd1813 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -1267,7 +1267,7 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) # optionally add the width of colorbar labels and colorbar to rightpad - if RecipesPipeline.is3d(sp) || haskey(sp.attr, :cbar_ax) + if RecipesPipeline.is3d(sp) && haskey(sp.attr, :cbar_ax) bb = py_bbox(sp.attr[:cbar_handle]."ax"."get_yticklabels"()) sp.attr[:cbar_width] = width(bb) + (sp[:colorbar_title] == "" ? 0px : 30px) end From 66db3ceae0ab96b23205ec87743f9ecf91b22eef Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 14 Mar 2021 17:41:54 +0100 Subject: [PATCH 176/518] fix aspect_ratio in GR with legend=:outertopright --- 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 b6bb9aa9..79e2e60c 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -908,9 +908,9 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) viewport_plotarea = gr_viewport_from_bbox(sp, plotarea(sp), w, h, viewport_canvas) # update viewport_plotarea - gr_update_viewport_ratio!(viewport_plotarea, sp) leg = gr_get_legend_geometry(viewport_plotarea, sp) gr_update_viewport_legend!(viewport_plotarea, sp, leg) + gr_update_viewport_ratio!(viewport_plotarea, sp) # fill in the plot area background gr_fill_plotarea(sp, viewport_plotarea) From 8e13bb4ccc3e3121111d6e449f9b8f2b72e3c845 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 14 Mar 2021 19:20:45 +0100 Subject: [PATCH 177/518] new release [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index f879a9aa..9ca4f2fb 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.6" +version = "1.10.7" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From ae99ed25886908dd6d06ce363fad1201d354862e Mon Sep 17 00:00:00 2001 From: jo-fleck Date: Mon, 15 Mar 2021 14:09:24 +0100 Subject: [PATCH 178/518] Added weights example to ? histogram Helps to clarify the use of weights (which differs from StatsBase functions) --- src/shorthands.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/shorthands.jl b/src/shorthands.jl index e1afb1a4..dfcc2302 100644 --- a/src/shorthands.jl +++ b/src/shorthands.jl @@ -57,6 +57,7 @@ Plot a histogram. # Example ```julia-repl julia> histogram([1,2,1,1,4,3,8],bins=0:8) +julia> histogram([1,2,1,1,4,3,8],bins=0:8,weights=weights([4,7,3,9,12,2,6])) ``` """ @shorthands histogram From ef82e53eef2ec1794ffd14aaad50e13ea79b268c Mon Sep 17 00:00:00 2001 From: mkborregaard Date: Mon, 15 Mar 2021 14:56:12 +0000 Subject: [PATCH 179/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index aaac2503..c4c4f19b 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -1,3 +1,18 @@ +# Use +# @warnpcfail precompile(args...) +# if you want to be warned when a precompile directive fails +macro warnpcfail(ex::Expr) + modl = __module__ + file = __source__.file === nothing ? "?" : String(__source__.file) + line = __source__.line + quote + $(esc(ex)) || @warn """precompile directive + $($(Expr(:quote, ex))) + failed. Please report an issue in $($modl) (after checking for duplicates) or remove this directive.""" _file=$file _line=$line + end +end + + const __bodyfunction__ = Dict{Method,Any}() # Find keyword "body functions" (the function that contains the body @@ -59,9 +74,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) @@ -74,6 +89,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) @@ -88,6 +104,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,2}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) @@ -99,7 +116,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) @@ -148,6 +164,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) @@ -173,7 +190,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) @@ -213,7 +229,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) - Base.precompile(Tuple{typeof(_update_plot_args),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) @@ -225,6 +240,7 @@ function _precompile_() Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,StepRange{Int64,Int64}}) Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) @@ -241,17 +257,18 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) @@ -262,6 +279,8 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Array{Float64,1},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}}}) + Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Array{Float64,1},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}}}) Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) @@ -290,7 +309,6 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Int64,Int64},Tuple{Float64,Int64,Int64}}) Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) @@ -306,10 +324,10 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) Base.precompile(Tuple{typeof(vline!),Any}) + Base.precompile(Tuple{typeof(wireframe),Any,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) From da2dc2cb1b72b61a7ea4ad43eb5634a227f85609 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 18 Mar 2021 22:01:46 +0100 Subject: [PATCH 180/518] minor version bump [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 9ca4f2fb..a1c01ad5 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.10.7" +version = "1.11.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 34f4d318ea2941cba96ffc22b1944058613f1148 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 20 Mar 2021 11:13:39 +0100 Subject: [PATCH 181/518] fix line_z on pyplot --- src/backends/pyplot.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index dbcd1813..c744c6b2 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -206,13 +206,13 @@ function fix_xy_lengths!(plt::Plot{PyPlotBackend}, series::Series) end function py_linecolormap(series::Series) - py_colormap(cgrad(get_linecolor(series), alpha=get_linealpha(series))) + py_colormap(cgrad(series[:linecolor], alpha=get_linealpha(series))) end function py_markercolormap(series::Series) - py_colormap(cgrad(get_markercolor(series), alpha=get_markeralpha(series))) + py_colormap(cgrad(series[:markercolor], alpha=get_markeralpha(series))) end function py_fillcolormap(series::Series) - py_colormap(cgrad(get_fillcolor(series), alpha=get_fillalpha(series))) + py_colormap(cgrad(series[:fillcolor], alpha=get_fillalpha(series))) end # --------------------------------------------------------------------------- From a50661dd449dc566864f44361b7284f43361db9f Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Tue, 23 Mar 2021 22:11:16 +0100 Subject: [PATCH 182/518] fix bar for unsorted x input --- src/recipes.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/recipes.jl b/src/recipes.jl index b69ed3f3..ed6f2331 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -398,7 +398,7 @@ end bw = plotattributes[:bar_width] hw = if bw === nothing if nx > 1 - 0.5 * _bar_width * ignorenan_minimum(filter(x -> x > 0, diff(procx))) + 0.5 * _bar_width * ignorenan_minimum(filter(x -> x > 0, diff(sort(procx)))) else 0.5 * _bar_width end From 606b86c96235cdfaf4e1b3e0e6a32218d2b29db9 Mon Sep 17 00:00:00 2001 From: MA Laforge Date: Wed, 24 Mar 2021 19:28:52 -0400 Subject: [PATCH 183/518] Conform to InspectDR's new layout API in v0.4.0. --- src/backends/inspectdr.jl | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/backends/inspectdr.jl b/src/backends/inspectdr.jl index 005d3da2..42f20f95 100644 --- a/src/backends/inspectdr.jl +++ b/src/backends/inspectdr.jl @@ -17,9 +17,6 @@ Add in functionality to Plots.jl: is_marker_supported(::InspectDRBackend, shape::Shape) = true -_inspectdr_to_pixels(bb::BoundingBox) = - InspectDR.BoundingBox(to_pixels(left(bb)), to_pixels(right(bb)), to_pixels(top(bb)), to_pixels(bottom(bb))) - #Do we avoid Map to avoid possible pre-comile issues? function _inspectdr_mapglyph(s::Symbol) s == :rect && return :square @@ -476,11 +473,16 @@ end function _update_plot_object(plt::Plot{InspectDRBackend}) mplot = _inspectdr_getmplot(plt.o) if nothing == mplot; return; end + mplot.bblist = InspectDR.BoundingBox[] for (i, sp) in enumerate(plt.subplots) - graphbb = _inspectdr_to_pixels(plotarea(sp)) - plot = mplot.subplots[i] - plot.plotbb = InspectDR.plotbounds(plot.layout.values, graphbb) + figw, figh = sp.plt[:size] + pcts = bbox_to_pcts(sp.bbox, figw*px, figh*px) + _left, _bottom, _width, _height = pcts + ymax = 1.0-_bottom + ymin = ymax - _height + bb = InspectDR.BoundingBox(_left, _left+_width, ymin, ymax) + push!(mplot.bblist, bb) end gplot = _inspectdr_getgui(plt.o) From c0824bdc628345b4859ebcafc437cbfd63e63ccb Mon Sep 17 00:00:00 2001 From: Zhanibek Date: Thu, 25 Mar 2021 11:22:07 +0900 Subject: [PATCH 184/518] Colorbar enhancements (#3346) * CompatHelper: bump compat for "Showoff" to "1.0" * fix series-segments for empty series * fix wireframe on pyplot * colorbar redesign * minimal working version * reduce code duplication for colorbar ticks * fix aspect_ratio in GR with legend=:outertopright * fix GR test failure * new release [skip ci] * colorbar scale supported * Added weights example to ? histogram Helps to clarify the use of weights (which differs from StatsBase functions) * Update precompile_*.jl file * minor version bump [skip ci] * working prototype * fixed formatting, added colorbar docs * colorbar redesign * minimal working version * reduce code duplication for colorbar ticks * fix GR test failure * colorbar scale supported * working prototype * fixed formatting, added colorbar docs Co-authored-by: Daniel Schwabeneder --- src/Plots.jl | 1 + src/arg_desc.jl | 313 ++++++++++++++++---------------- src/args.jl | 392 +++++++++++++++++++++-------------------- src/axes.jl | 93 +++++----- src/backends.jl | 4 + src/backends/gr.jl | 10 +- src/backends/pyplot.jl | 33 ++-- src/colorbars.jl | 90 ++++++++++ src/utils.jl | 73 -------- 9 files changed, 532 insertions(+), 477 deletions(-) create mode 100644 src/colorbars.jl diff --git a/src/Plots.jl b/src/Plots.jl index 5378fb73..e7a71878 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -193,6 +193,7 @@ const _plotly_min_js_filename = "plotly-1.57.1.min.js" include("types.jl") include("utils.jl") +include("colorbars.jl") include("axes.jl") include("args.jl") include("components.jl") diff --git a/src/arg_desc.jl b/src/arg_desc.jl index a5139c1b..2a5b9d0c 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -2,164 +2,171 @@ const _arg_desc = KW( # series args -:label => "String type. The label for a series, which appears in a legend. If empty, no legend entry is added.", -:seriescolor => "Color Type. The base color for this series. `:auto` (the default) will select a color from the subplot's `color_palette`, based on the order it was added to the subplot", -:seriesalpha => "Number in [0,1]. The alpha/opacity override for the series. `nothing` (the default) means it will take the alpha value of the color.", -:seriestype => "Symbol. This is the identifier of the type of visualization for this series. Choose from $(_allTypes) or any series recipes which are defined.", -:linestyle => "Symbol. Style of the line (for path and bar stroke). Choose from $(_allStyles)", -:linewidth => "Number. Width of the line (in pixels)", -:linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).", -:linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.", -:fillrange => "Number or AbstractVector. Fills area between fillrange and y for line-types, sets the base for bar/stick types, and similar for other types.", -:fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.", -:fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.", -:markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).", -:markercolor => "Color Type. Color of the interior of the marker or shape. `:match` will take the value from `:seriescolor`.", -:markeralpha => "Number in [0,1]. The alpha/opacity override for the marker interior. `nothing` (the default) means it will take the alpha value of markercolor.", -:markersize => "Number or AbstractVector. Size (radius pixels) of the markers.", -:markerstrokestyle => "Symbol. Style of the marker stroke (border). Choose from $(_allStyles)", -:markerstrokewidth => "Number. Width of the marker stroke (border. in pixels)", -:markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.", -:markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.", -:bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`", -:smooth => "Bool. Add a regression line?", -:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`.", -:x => "Various. Input data. First Dimension", -:y => "Various. Input data. Second Dimension", -:z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.", -:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.", -:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).", -:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.", -:levels => "Integer, NTuple{2,Integer}, or AbstractVector. Levels or number of levels (or x-levels/y-levels) for a contour type.", -:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).", -:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)", -:bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).", -:bar_edges => "Bool. Align bars to edges (true), or centers (the default)?", -:xerror => "AbstractVector or 2-Tuple of Vectors. x (horizontal) error relative to x-value. If 2-tuple of vectors, the first vector corresponds to the left error (and the second to the right)", -:yerror => "AbstractVector or 2-Tuple of Vectors. y (vertical) error relative to y-value. If 2-tuple of vectors, the first vector corresponds to the bottom error (and the second to the top)", -:ribbon => "Number or AbstractVector. Creates a fillrange around the data points.", -:quiver => "AbstractVector or 2-Tuple of vectors. The directional vectors U,V which specify velocity/gradient vectors for a quiver plot.", -:arrow => "nothing (no arrows), Bool (if true, default arrows), Arrow object, or arg(s) that could be style or head length/widths. Defines arrowheads that should be displayed at the end of path line segments (just before a NaN and the last non-NaN point). Used in quiverplot, streamplot, or similar.", -:normalize => "Bool or Symbol. Histogram normalization mode. Possible values are: false/:none (no normalization, default), true/:pdf (normalize to a discrete Probability Density Function, where the total area of the bins is 1), :probability (bin heights sum to 1) and :density (the area of each bin, rather than the height, is equal to the counts - useful for uneven bin sizes).", -:weights => "AbstractVector. Used in histogram types for weighted counts.", -:show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default).", -:contours => "Bool. Add contours to the side-grids of 3D plots? Used in surface/wireframe.", -:contour_labels => "Bool. Show labels at the contour lines?", -:match_dimensions => "Bool. For heatmap types... should the first dimension of a matrix (rows) correspond to the first dimension of the plot (x-axis)? The default is false, which matches the behavior of Matplotlib, Plotly, and others. Note: when passing a function for z, the function should still map `(x,y) -> z`.", -:subplot => "Integer (subplot index) or Subplot object. The subplot that this series belongs to.", -:series_annotations => "AbstractVector of String or PlotText. These are annotations which are mapped to data points/positions.", -:primary => "Bool. Does this count as a 'real series'? For example, you could have a path (primary), and a scatter (secondary) as 2 separate series, maybe with different data (see sticks recipe for an example). The secondary series will get the same color, etc as the primary.", -:hover => "nothing or vector of strings. Text to display when hovering over each data point.", -:colorbar_entry => "Bool. Include this series in the color bar? Set to `false` to exclude.", +:label => "String type. The label for a series, which appears in a legend. If empty, no legend entry is added.", +:seriescolor => "Color Type. The base color for this series. `:auto` (the default) will select a color from the subplot's `color_palette`, based on the order it was added to the subplot", +:seriesalpha => "Number in [0,1]. The alpha/opacity override for the series. `nothing` (the default) means it will take the alpha value of the color.", +:seriestype => "Symbol. This is the identifier of the type of visualization for this series. Choose from $(_allTypes) or any series recipes which are defined.", +:linestyle => "Symbol. Style of the line (for path and bar stroke). Choose from $(_allStyles)", +:linewidth => "Number. Width of the line (in pixels)", +:linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).", +:linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.", +:fillrange => "Number or AbstractVector. Fills area between fillrange and y for line-types, sets the base for bar/stick types, and similar for other types.", +:fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.", +:fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.", +:markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).", +:markercolor => "Color Type. Color of the interior of the marker or shape. `:match` will take the value from `:seriescolor`.", +:markeralpha => "Number in [0,1]. The alpha/opacity override for the marker interior. `nothing` (the default) means it will take the alpha value of markercolor.", +:markersize => "Number or AbstractVector. Size (radius pixels) of the markers.", +:markerstrokestyle => "Symbol. Style of the marker stroke (border). Choose from $(_allStyles)", +:markerstrokewidth => "Number. Width of the marker stroke (border. in pixels)", +:markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.", +:markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.", +:bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`", +:smooth => "Bool. Add a regression line?", +:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`.", +:x => "Various. Input data. First Dimension", +:y => "Various. Input data. Second Dimension", +:z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.", +:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.", +:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).", +:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.", +:levels => "Integer, NTuple{2,Integer}, or AbstractVector. Levels or number of levels (or x-levels/y-levels) for a contour type.", +:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).", +:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)", +:bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).", +:bar_edges => "Bool. Align bars to edges (true), or centers (the default)?", +:xerror => "AbstractVector or 2-Tuple of Vectors. x (horizontal) error relative to x-value. If 2-tuple of vectors, the first vector corresponds to the left error (and the second to the right)", +:yerror => "AbstractVector or 2-Tuple of Vectors. y (vertical) error relative to y-value. If 2-tuple of vectors, the first vector corresponds to the bottom error (and the second to the top)", +:ribbon => "Number or AbstractVector. Creates a fillrange around the data points.", +:quiver => "AbstractVector or 2-Tuple of vectors. The directional vectors U,V which specify velocity/gradient vectors for a quiver plot.", +:arrow => "nothing (no arrows), Bool (if true, default arrows), Arrow object, or arg(s) that could be style or head length/widths. Defines arrowheads that should be displayed at the end of path line segments (just before a NaN and the last non-NaN point). Used in quiverplot, streamplot, or similar.", +:normalize => "Bool or Symbol. Histogram normalization mode. Possible values are: false/:none (no normalization, default), true/:pdf (normalize to a discrete Probability Density Function, where the total area of the bins is 1), :probability (bin heights sum to 1) and :density (the area of each bin, rather than the height, is equal to the counts - useful for uneven bin sizes).", +:weights => "AbstractVector. Used in histogram types for weighted counts.", +:show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default).", +:contours => "Bool. Add contours to the side-grids of 3D plots? Used in surface/wireframe.", +:contour_labels => "Bool. Show labels at the contour lines?", +:match_dimensions => "Bool. For heatmap types... should the first dimension of a matrix (rows) correspond to the first dimension of the plot (x-axis)? The default is false, which matches the behavior of Matplotlib, Plotly, and others. Note: when passing a function for z, the function should still map `(x,y) -> z`.", +:subplot => "Integer (subplot index) or Subplot object. The subplot that this series belongs to.", +:series_annotations => "AbstractVector of String or PlotText. These are annotations which are mapped to data points/positions.", +:primary => "Bool. Does this count as a 'real series'? For example, you could have a path (primary), and a scatter (secondary) as 2 separate series, maybe with different data (see sticks recipe for an example). The secondary series will get the same color, etc as the primary.", +:hover => "nothing or vector of strings. Text to display when hovering over each data point.", +:colorbar_entry => "Bool. Include this series in the color bar? Set to `false` to exclude.", # plot args -:plot_title => "String. Title for the whole plot (not the subplots) (Note: Not currently implemented)", -:background_color => "Color Type. Base color for all backgrounds.", -:background_color_outside => "Color Type or `:match` (matches `:background_color`). Color outside the plot area(s)", -:foreground_color => "Color Type. Base color for all foregrounds.", -:size => "NTuple{2,Int}. (width_px, height_px) of the whole Plot", -:pos => "NTuple{2,Int}. (left_px, top_px) position of the GUI window (note: currently unimplemented)", -:window_title => "String. Title of the standalone gui-window.", -:show => "Bool. Should this command open/refresh a GUI/display? This allows displaying in scripts or functions without explicitly calling `display`", -:layout => "Integer (number of subplots), NTuple{2,Integer} (grid dimensions), AbstractLayout (for example `grid(2,2)`), or the return from the `@layout` macro. This builds the layout of subplots.", -:link => "Symbol. How/whether to link axis limits between subplots. Values: `:none`, `:x` (x axes are linked by columns), `:y` (y axes are linked by rows), `:both` (x and y are linked), `:all` (every subplot is linked together regardless of layout position).", -:overwrite_figure => "Bool. Should we reuse the same GUI window/figure when plotting (true) or open a new one (false).", -:html_output_format => "Symbol. When writing html output, what is the format? `:png` and `:svg` are currently supported.", -:tex_output_standalone => "Bool. When writing tex output, should the source include a preamble for a standalone document class.", -:inset_subplots => "nothing or vector of 2-tuple (parent,bbox). optionally pass a vector of (parent,bbox) tuples which are the parent layout and the relative bounding box of inset subplots", -:dpi => "Number. Dots Per Inch of output figures", -:thickness_scaling => "Number. Scale for the thickness of all line elements like lines, borders, axes, grid lines, ... defaults to 1.", -:display_type => "Symbol (`:auto`, `:gui`, or `:inline`). When supported, `display` will either open a GUI window or plot inline.", -:extra_kwargs => "Either one of (`:plot`, `:subplot`, `:series`) to specify for which element extra keyword args are collected or a KW (Dict{Symbol,Any}) to pass a map of extra keyword args which may be specific to a backend. Default: `:series`.\n Example: `pgfplotsx(); scatter(1:5, extra_kwargs=Dict(:subplot=>Dict(\"axis line shift\" => \"10pt\"))`", -:fontfamily => "String or Symbol. Default font family for title, legend entries, tick labels and guides", -:warn_on_unsupported => "Bool. Warn on unsupported attributes, series types and marker shapes", +:plot_title => "String. Title for the whole plot (not the subplots) (Note: Not currently implemented)", +:background_color => "Color Type. Base color for all backgrounds.", +:background_color_outside => "Color Type or `:match` (matches `:background_color`). Color outside the plot area(s)", +:foreground_color => "Color Type. Base color for all foregrounds.", +:size => "NTuple{2,Int}. (width_px, height_px) of the whole Plot", +:pos => "NTuple{2,Int}. (left_px, top_px) position of the GUI window (note: currently unimplemented)", +:window_title => "String. Title of the standalone gui-window.", +:show => "Bool. Should this command open/refresh a GUI/display? This allows displaying in scripts or functions without explicitly calling `display`", +:layout => "Integer (number of subplots), NTuple{2,Integer} (grid dimensions), AbstractLayout (for example `grid(2,2)`), or the return from the `@layout` macro. This builds the layout of subplots.", +:link => "Symbol. How/whether to link axis limits between subplots. Values: `:none`, `:x` (x axes are linked by columns), `:y` (y axes are linked by rows), `:both` (x and y are linked), `:all` (every subplot is linked together regardless of layout position).", +:overwrite_figure => "Bool. Should we reuse the same GUI window/figure when plotting (true) or open a new one (false).", +:html_output_format => "Symbol. When writing html output, what is the format? `:png` and `:svg` are currently supported.", +:tex_output_standalone => "Bool. When writing tex output, should the source include a preamble for a standalone document class.", +:inset_subplots => "nothing or vector of 2-tuple (parent,bbox). optionally pass a vector of (parent,bbox) tuples which are the parent layout and the relative bounding box of inset subplots", +:dpi => "Number. Dots Per Inch of output figures", +:thickness_scaling => "Number. Scale for the thickness of all line elements like lines, borders, axes, grid lines, ... defaults to 1.", +:display_type => "Symbol (`:auto`, `:gui`, or `:inline`). When supported, `display` will either open a GUI window or plot inline.", +:extra_kwargs => "Either one of (`:plot`, `:subplot`, `:series`) to specify for which element extra keyword args are collected or a KW (Dict{Symbol,Any}) to pass a map of extra keyword args which may be specific to a backend. Default: `:series`.\n Example: `pgfplotsx(); scatter(1:5, extra_kwargs=Dict(:subplot=>Dict(\"axis line shift\" => \"10pt\"))`", +:fontfamily => "String or Symbol. Default font family for title, legend entries, tick labels and guides", +:warn_on_unsupported => "Bool. Warn on unsupported attributes, series types and marker shapes", # subplot args -:title => "String. Subplot title.", -:titlelocation => "Symbol. Position of subplot title. Values: `:left`, `:center`, `:right`", -:titlefontfamily => "String or Symbol. Font family of subplot title.", -:titlefontsize => "Integer. Font pointsize of subplot title.", -:titlefonthalign => "Symbol. Font horizontal alignment of subplot title: :hcenter, :left, :right or :center", -:titlefontvalign => "Symbol. Font vertical alignment of subplot title: :vcenter, :top, :bottom or :center", -:titlefontrotation => "Real. Font rotation of subplot title", -:titlefontcolor => "Color Type. Font color of subplot title", -:background_color_subplot => "Color Type or `:match` (matches `:background_color`). Base background color of the subplot.", -:background_color_legend => "Color Type or `:match` (matches `:background_color_subplot`). Background color of the legend.", -:background_color_inside => "Color Type or `:match` (matches `:background_color_subplot`). Background color inside the plot area (under the grid).", -:foreground_color_subplot => "Color Type or `:match` (matches `:foreground_color`). Base foreground color of the subplot.", -:foreground_color_legend => "Color Type or `:match` (matches `:foreground_color_subplot`). Foreground color of the legend.", -:foreground_color_title => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of subplot title.", -:color_palette => "Vector of colors (cycle through) or color gradient (generate list from gradient) or `:auto` (generate a color list using `Colors.distiguishable_colors` and custom seed colors chosen to contrast with the background). The color palette is a color list from which series colors are automatically chosen.", -:legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position) or angle or (angle,inout) tuple. Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend). Legend is positioned at (angle degrees) (so (90,:outer) is roughly equivalent to :outertop), close to the inside of the axes or the outside if inout=:outer.", -:legendfontfamily => "String or Symbol. Font family of legend entries.", -:legendfontsize => "Integer. Font pointsize of legend entries.", -:legendfonthalign => "Symbol. Font horizontal alignment of legend entries: :hcenter, :left, :right or :center", -:legendfontvalign => "Symbol. Font vertical alignment of legend entries: :vcenter, :top, :bottom or :center", -:legendfontrotation => "Real. Font rotation of legend entries", -:legendfontcolor => "Color Type. Font color of legend entries", -:legendtitle => "String. Legend title.", -:legendtitlefontfamily => "String or Symbol. Font family of the legend title.", -:legendtitlefontsize => "Integer. Font pointsize the legend title.", -:legendtitlefonthalign => "Symbol. Font horizontal alignment of the legend title: :hcenter, :left, :right or :center", -:legendtitlefontvalign => "Symbol. Font vertical alignment of the legend title: :vcenter, :top, :bottom or :center", -:legendtitlefontrotation => "Real. Font rotation of the legend title", -:legendtitlefontcolor => "Color Type. Font color of the legend title", -:colorbar => "Bool (show the colorbar?) or Symbol (colorbar position). Symbol values: `:none`, `:best`, `:right`, `:left`, `:top`, `:bottom`, `:legend` (matches legend value) (note: only some may be supported in each backend)", -:clims => "`:auto`, NTuple{2,Number}, or a function that takes series data in and returns NTuple{2,Number}. Fixes the limits of the colorbar.", -:legendfont => "Font. Font of legend items.", -:legendtitlefont => "Font. Font of the legend title.", -:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.", -:projection => "Symbol or String. '3d' or 'polar'", -:aspect_ratio => "Symbol (:equal or :none) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units. With `:none`, images inherit aspect ratio of the plot area.", -:margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.", -:left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.", -:top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.", -:right_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the right of the subplot.", -:bottom_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the bottom of the subplot.", -:subplot_index => "Integer. Internal (not set by user). Specifies the index of this subplot in the Plot's `plt.subplot` list.", -:colorbar_title => "String. Title of colorbar.", -:framestyle => "Symbol. Style of the axes frame. Choose from $(_allFramestyles)", -:camera => "NTuple{2, Real}. Sets the view angle (azimuthal, elevation) for 3D plots", +:title => "String. Subplot title.", +:titlelocation => "Symbol. Position of subplot title. Values: `:left`, `:center`, `:right`", +:titlefontfamily => "String or Symbol. Font family of subplot title.", +:titlefontsize => "Integer. Font pointsize of subplot title.", +:titlefonthalign => "Symbol. Font horizontal alignment of subplot title: :hcenter, :left, :right or :center", +:titlefontvalign => "Symbol. Font vertical alignment of subplot title: :vcenter, :top, :bottom or :center", +:titlefontrotation => "Real. Font rotation of subplot title", +:titlefontcolor => "Color Type. Font color of subplot title", +:background_color_subplot => "Color Type or `:match` (matches `:background_color`). Base background color of the subplot.", +:background_color_legend => "Color Type or `:match` (matches `:background_color_subplot`). Background color of the legend.", +:background_color_inside => "Color Type or `:match` (matches `:background_color_subplot`). Background color inside the plot area (under the grid).", +:foreground_color_subplot => "Color Type or `:match` (matches `:foreground_color`). Base foreground color of the subplot.", +:foreground_color_legend => "Color Type or `:match` (matches `:foreground_color_subplot`). Foreground color of the legend.", +:foreground_color_title => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of subplot title.", +:color_palette => "Vector of colors (cycle through) or color gradient (generate list from gradient) or `:auto` (generate a color list using `Colors.distiguishable_colors` and custom seed colors chosen to contrast with the background). The color palette is a color list from which series colors are automatically chosen.", +:legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position) or angle or (angle,inout) tuple. Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend). Legend is positioned at (angle degrees) (so (90,:outer) is roughly equivalent to :outertop), close to the inside of the axes or the outside if inout=:outer.", +:legendfontfamily => "String or Symbol. Font family of legend entries.", +:legendfontsize => "Integer. Font pointsize of legend entries.", +:legendfonthalign => "Symbol. Font horizontal alignment of legend entries: :hcenter, :left, :right or :center", +:legendfontvalign => "Symbol. Font vertical alignment of legend entries: :vcenter, :top, :bottom or :center", +:legendfontrotation => "Real. Font rotation of legend entries", +:legendfontcolor => "Color Type. Font color of legend entries", +:legendtitle => "String. Legend title.", +:legendtitlefontfamily => "String or Symbol. Font family of the legend title.", +:legendtitlefontsize => "Integer. Font pointsize the legend title.", +:legendtitlefonthalign => "Symbol. Font horizontal alignment of the legend title: :hcenter, :left, :right or :center", +:legendtitlefontvalign => "Symbol. Font vertical alignment of the legend title: :vcenter, :top, :bottom or :center", +:legendtitlefontrotation => "Real. Font rotation of the legend title", +:legendtitlefontcolor => "Color Type. Font color of the legend title", +:colorbar => "Bool (show the colorbar?) or Symbol (colorbar position). Symbol values: `:none`, `:best`, `:right`, `:left`, `:top`, `:bottom`, `:legend` (matches legend value) (note: only some may be supported in each backend)", +:clims => "`:auto`, NTuple{2,Number}, or a function that takes series data in and returns NTuple{2,Number}. Fixes the limits of the colorbar.", +:colorbar_fontfamily => "String or Symbol. Font family of colobar entries.", +:colorbar_ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", +:colorbar_tickfontfamily => "String or Symbol. Font family of colorbar tick labels.", +:colorbar_tickfontsize => "Integer. Font pointsize of colorbar tick entries.", +:colorbar_tickfontcolor => "Color Type. Font color of colorbar tick entries", +:colorbar_scale => "Symbol. Scale of the colorbar axis: `:none`, `:ln`, `:log2`, `:log10`", +:colorbar_formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", +:legendfont => "Font. Font of legend items.", +:legendtitlefont => "Font. Font of the legend title.", +:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.", +:projection => "Symbol or String. '3d' or 'polar'", +:aspect_ratio => "Symbol (:equal or :none) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units. With `:none`, images inherit aspect ratio of the plot area.", +:margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.", +:left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.", +:top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.", +:right_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the right of the subplot.", +:bottom_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the bottom of the subplot.", +:subplot_index => "Integer. Internal (not set by user). Specifies the index of this subplot in the Plot's `plt.subplot` list.", +:colorbar_title => "String. Title of colorbar.", +:framestyle => "Symbol. Style of the axes frame. Choose from $(_allFramestyles)", +:camera => "NTuple{2, Real}. Sets the view angle (azimuthal, elevation) for 3D plots", # axis args -:guide => "String. Axis guide (label).", -:guide_position => "Symbol. Position of axis guides: :top, :bottom, :left or :right", -:lims => "NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0]", -:ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", -:scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", -:rotation => "Number. Degrees rotation of tick labels.", -:flip => "Bool. Should we flip (reverse) the axis?", -:formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", -:tickfontfamily => "String or Symbol. Font family of tick labels.", -:tickfontsize => "Integer. Font pointsize of tick labels.", -:tickfonthalign => "Symbol. Font horizontal alignment of tick labels: :hcenter, :left, :right or :center", -:tickfontvalign => "Symbol. Font vertical alignment of tick labels: :vcenter, :top, :bottom or :center", -:tickfontrotation => "Real. Font rotation of tick labels", -:tickfontcolor => "Color Type. Font color of tick labels", -:guidefontfamily => "String or Symbol. Font family of axes guides.", -:guidefontsize => "Integer. Font pointsize of axes guides.", -:guidefonthalign => "Symbol. Font horizontal alignment of axes guides: :hcenter, :left, :right or :center", -:guidefontvalign => "Symbol. Font vertical alignment of axes guides: :vcenter, :top, :bottom or :center", -:guidefontrotation => "Real. Font rotation of axes guides", -:guidefontcolor => "Color Type. Font color of axes guides", -:foreground_color_axis => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis ticks.", -:foreground_color_border => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of plot area border (spines).", -:foreground_color_text => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of tick labels.", -:foreground_color_guide => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis guides (axis labels).", -:mirror => "Bool. Switch the side of the tick labels (right or top).", -:grid => "Bool, Symbol, String or `nothing`. Show the grid lines? `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:none`, `:off`", -:foreground_color_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of grid lines.", -:gridalpha => "Number in [0,1]. The alpha/opacity override for the grid lines.", -:gridstyle => "Symbol. Style of the grid lines. Choose from $(_allStyles)", -:gridlinewidth => "Number. Width of the grid lines (in pixels)", +:guide => "String. Axis guide (label).", +:guide_position => "Symbol. Position of axis guides: :top, :bottom, :left or :right", +:lims => "NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0]", +:ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", +:scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", +:rotation => "Number. Degrees rotation of tick labels.", +:flip => "Bool. Should we flip (reverse) the axis?", +:formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", +:tickfontfamily => "String or Symbol. Font family of tick labels.", +:tickfontsize => "Integer. Font pointsize of tick labels.", +:tickfonthalign => "Symbol. Font horizontal alignment of tick labels: :hcenter, :left, :right or :center", +:tickfontvalign => "Symbol. Font vertical alignment of tick labels: :vcenter, :top, :bottom or :center", +:tickfontrotation => "Real. Font rotation of tick labels", +:tickfontcolor => "Color Type. Font color of tick labels", +:guidefontfamily => "String or Symbol. Font family of axes guides.", +:guidefontsize => "Integer. Font pointsize of axes guides.", +:guidefonthalign => "Symbol. Font horizontal alignment of axes guides: :hcenter, :left, :right or :center", +:guidefontvalign => "Symbol. Font vertical alignment of axes guides: :vcenter, :top, :bottom or :center", +:guidefontrotation => "Real. Font rotation of axes guides", +:guidefontcolor => "Color Type. Font color of axes guides", +:foreground_color_axis => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis ticks.", +:foreground_color_border => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of plot area border (spines).", +:foreground_color_text => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of tick labels.", +:foreground_color_guide => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis guides (axis labels).", +:mirror => "Bool. Switch the side of the tick labels (right or top).", +:grid => "Bool, Symbol, String or `nothing`. Show the grid lines? `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:none`, `:off`", +:foreground_color_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of grid lines.", +:gridalpha => "Number in [0,1]. The alpha/opacity override for the grid lines.", +:gridstyle => "Symbol. Style of the grid lines. Choose from $(_allStyles)", +:gridlinewidth => "Number. Width of the grid lines (in pixels)", :foreground_color_minor_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of minor grid lines.", -:minorgrid => "Bool. Adds minor grid lines and ticks to the plot. Set minorticks to change number of gridlines", -:minorticks => "Integer. Intervals to divide the gap between major ticks into", -:minorgridalpha => "Number in [0,1]. The alpha/opacity override for the minorgrid lines.", -:minorgridstyle => "Symbol. Style of the minor grid lines. Choose from $(_allStyles)", -:minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", -:tick_direction => "Symbol. Direction of the ticks. `:in` or `:out`", -:showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", -:widen => "Bool. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. Defaults to `true`.", -:draw_arrow => "Bool. Draw arrow at the end of the axis.", +:minorgrid => "Bool. Adds minor grid lines and ticks to the plot. Set minorticks to change number of gridlines", +:minorticks => "Integer. Intervals to divide the gap between major ticks into", +:minorgridalpha => "Number in [0,1]. The alpha/opacity override for the minorgrid lines.", +:minorgridstyle => "Symbol. Style of the minor grid lines. Choose from $(_allStyles)", +:minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", +:tick_direction => "Symbol. Direction of the ticks. `:in` or `:out`", +:showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", +:widen => "Bool. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. Defaults to `true`.", +:draw_arrow => "Bool. Draw arrow at the end of the axis.", ) diff --git a/src/args.jl b/src/args.jl index 3a3c963c..2452dfdf 100644 --- a/src/args.jl +++ b/src/args.jl @@ -151,54 +151,54 @@ const _shape_keys = Symbol[ const _allMarkers = vcat(:none, :auto, _shape_keys) #sort(collect(keys(_shapes)))) const _markerAliases = Dict{Symbol,Symbol}( - :n => :none, - :no => :none, - :a => :auto, - :ellipse => :circle, - :c => :circle, - :circ => :circle, - :square => :rect, - :sq => :rect, - :r => :rect, - :d => :diamond, - :^ => :utriangle, - :ut => :utriangle, - :utri => :utriangle, - :uptri => :utriangle, - :uptriangle => :utriangle, - :v => :dtriangle, - :V => :dtriangle, - :dt => :dtriangle, - :dtri => :dtriangle, - :downtri => :dtriangle, - :downtriangle => :dtriangle, - :> => :rtriangle, - :rt => :rtriangle, - :rtri => :rtriangle, + :n => :none, + :no => :none, + :a => :auto, + :ellipse => :circle, + :c => :circle, + :circ => :circle, + :square => :rect, + :sq => :rect, + :r => :rect, + :d => :diamond, + :^ => :utriangle, + :ut => :utriangle, + :utri => :utriangle, + :uptri => :utriangle, + :uptriangle => :utriangle, + :v => :dtriangle, + :V => :dtriangle, + :dt => :dtriangle, + :dtri => :dtriangle, + :downtri => :dtriangle, + :downtriangle => :dtriangle, + :> => :rtriangle, + :rt => :rtriangle, + :rtri => :rtriangle, :righttri => :rtriangle, :righttriangle => :rtriangle, - :< => :ltriangle, - :lt => :ltriangle, - :ltri => :ltriangle, + :< => :ltriangle, + :lt => :ltriangle, + :ltri => :ltriangle, :lighttri => :ltriangle, :lighttriangle => :ltriangle, - # :+ => :cross, - :plus => :cross, - # :x => :xcross, - :X => :xcross, - :star => :star5, - :s => :star5, - :star1 => :star5, - :s2 => :star8, - :star2 => :star8, - :p => :pentagon, - :pent => :pentagon, - :h => :hexagon, - :hex => :hexagon, - :hep => :heptagon, - :o => :octagon, - :oct => :octagon, - :spike => :vline, + # :+ => :cross, + :plus => :cross, + # :x => :xcross, + :X => :xcross, + :star => :star5, + :s => :star5, + :star1 => :star5, + :s2 => :star8, + :star2 => :star8, + :p => :pentagon, + :pent => :pentagon, + :h => :hexagon, + :hex => :hexagon, + :hep => :heptagon, + :o => :octagon, + :oct => :octagon, + :spike => :vline, ) const _positionAliases = Dict{Symbol,Symbol}( @@ -273,58 +273,58 @@ const _bar_width = 0.8 # ----------------------------------------------------------------------------- const _series_defaults = KW( - :label => :auto, - :colorbar_entry => true, - :seriescolor => :auto, - :seriesalpha => nothing, - :seriestype => :path, - :linestyle => :solid, - :linewidth => :auto, - :linecolor => :auto, - :linealpha => nothing, - :fillrange => nothing, # ribbons, areas, etc - :fillcolor => :match, - :fillalpha => nothing, - :markershape => :none, - :markercolor => :match, - :markeralpha => nothing, - :markersize => 4, - :markerstrokestyle => :solid, - :markerstrokewidth => 1, - :markerstrokecolor => :match, - :markerstrokealpha => nothing, - :bins => :auto, # number of bins for hists - :smooth => false, # regression line? - :group => nothing, # groupby vector - :x => nothing, - :y => nothing, - :z => nothing, # depth for contour, surface, etc - :marker_z => nothing, # value for color scale - :line_z => nothing, - :fill_z => nothing, - :levels => 15, - :orientation => :vertical, - :bar_position => :overlay, # for bar plots and histograms: could also be stack (stack up) or dodge (side by side) - :bar_width => nothing, - :bar_edges => false, - :xerror => nothing, - :yerror => nothing, - :zerror => nothing, - :ribbon => nothing, - :quiver => nothing, - :arrow => nothing, # allows for adding arrows to line/path... call `arrow(args...)` - :normalize => false, # do we want a normalized histogram? - :weights => nothing, # optional weights for histograms (1D and 2D) - :show_empty_bins => false, # should empty bins in 2D histogram be colored as zero (otherwise they are transparent) - :contours => false, # add contours to 3d surface and wireframe plots - :contour_labels => false, - :subplot => :auto, # which subplot(s) does this series belong to? + :label => :auto, + :colorbar_entry => true, + :seriescolor => :auto, + :seriesalpha => nothing, + :seriestype => :path, + :linestyle => :solid, + :linewidth => :auto, + :linecolor => :auto, + :linealpha => nothing, + :fillrange => nothing, # ribbons, areas, etc + :fillcolor => :match, + :fillalpha => nothing, + :markershape => :none, + :markercolor => :match, + :markeralpha => nothing, + :markersize => 4, + :markerstrokestyle => :solid, + :markerstrokewidth => 1, + :markerstrokecolor => :match, + :markerstrokealpha => nothing, + :bins => :auto, # number of bins for hists + :smooth => false, # regression line? + :group => nothing, # groupby vector + :x => nothing, + :y => nothing, + :z => nothing, # depth for contour, surface, etc + :marker_z => nothing, # value for color scale + :line_z => nothing, + :fill_z => nothing, + :levels => 15, + :orientation => :vertical, + :bar_position => :overlay, # for bar plots and histograms: could also be stack (stack up) or dodge (side by side) + :bar_width => nothing, + :bar_edges => false, + :xerror => nothing, + :yerror => nothing, + :zerror => nothing, + :ribbon => nothing, + :quiver => nothing, + :arrow => nothing, # allows for adding arrows to line/path... call `arrow(args...)` + :normalize => false, # do we want a normalized histogram? + :weights => nothing, # optional weights for histograms (1D and 2D) + :show_empty_bins => false, # should empty bins in 2D histogram be colored as zero (otherwise they are transparent) + :contours => false, # add contours to 3d surface and wireframe plots + :contour_labels => false, + :subplot => :auto, # which subplot(s) does this series belong to? :series_annotations => nothing, # a list of annotations which apply to the coordinates of this series :primary => true, # when true, this "counts" as a series for color selection, etc. the main use is to allow # one logical series to be broken up (path and markers, for example) :hover => nothing, # text to display when hovering over the data points :stride => (1,1), # array stride for wireframe/surface, the first element is the row stride and the second is the column stride. - :connections => nothing, # tuple of arrays to specifiy connectivity of a 3d mesh + :connections => nothing, # tuple of arrays to specifiy connectivity of a 3d mesh :extra_kwargs => Dict() ) @@ -363,104 +363,115 @@ const _plot_defaults = KW( const _subplot_defaults = KW( - :title => "", - :titlelocation => :center, # also :left or :right - :fontfamily_subplot => :match, - :titlefontfamily => :match, - :titlefontsize => 14, - :titlefonthalign => :hcenter, - :titlefontvalign => :vcenter, - :titlefontrotation => 0.0, - :titlefontcolor => :match, - :background_color_subplot => :match, # default for other bg colors... match takes plot default - :background_color_legend => :match, # background of legend - :background_color_inside => :match, # background inside grid - :foreground_color_subplot => :match, # default for other fg colors... match takes plot default - :foreground_color_legend => :match, # foreground of legend - :foreground_color_title => :match, # title color - :color_palette => :auto, - :legend => :best, - :legendtitle => nothing, - :colorbar => :legend, - :clims => :auto, - :legendfontfamily => :match, - :legendfontsize => 8, - :legendfonthalign => :hcenter, - :legendfontvalign => :vcenter, - :legendfontrotation => 0.0, - :legendfontcolor => :match, - :legendtitlefontfamily => :match, - :legendtitlefontsize => 11, - :legendtitlefonthalign => :hcenter, - :legendtitlefontvalign => :vcenter, - :legendtitlefontrotation => 0.0, - :legendtitlefontcolor => :match, - :annotations => [], # annotation tuples... list of (x,y,annotation) - :projection => :none, # can also be :polar or :3d - :aspect_ratio => :auto, # choose from :none or :equal - :margin => 1mm, - :left_margin => :match, - :top_margin => :match, - :right_margin => :match, - :bottom_margin => :match, - :subplot_index => -1, - :colorbar_title => "", - :colorbar_titlefontsize => 10, - :colorbar_title_location => :center, # also :left or :right - :colorbar_fontfamily => :match, - :colorbar_titlefontfamily => :match, - :colorbar_titlefonthalign => :hcenter, - :colorbar_titlefontvalign => :vcenter, - :colorbar_titlefontrotation => 0.0, - :colorbar_titlefontcolor => :match, - :framestyle => :axes, - :camera => (30,30), - :extra_kwargs => Dict() + :title => "", + :titlelocation => :center, # also :left or :right + :fontfamily_subplot => :match, + :titlefontfamily => :match, + :titlefontsize => 14, + :titlefonthalign => :hcenter, + :titlefontvalign => :vcenter, + :titlefontrotation => 0.0, + :titlefontcolor => :match, + :background_color_subplot => :match, # default for other bg colors... match takes plot default + :background_color_legend => :match, # background of legend + :background_color_inside => :match, # background inside grid + :foreground_color_subplot => :match, # default for other fg colors... match takes plot default + :foreground_color_legend => :match, # foreground of legend + :foreground_color_title => :match, # title color + :color_palette => :auto, + :legend => :best, + :legendtitle => nothing, + :colorbar => :legend, + :clims => :auto, + :colorbar_fontfamily => :match, + :colorbar_ticks => :auto, + :colorbar_tickfontfamily => :match, + :colorbar_tickfontsize => 8, + :colorbar_tickfonthalign => :hcenter, + :colorbar_tickfontvalign => :vcenter, + :colorbar_tickfontrotation => 0.0, + :colorbar_tickfontcolor => :match, + :colorbar_scale => :identity, + :colorbar_formatter => :auto, + :colorbar_discrete_values => [], + :colorbar_continuous_values => zeros(0), + :legendfontfamily => :match, + :legendfontsize => 8, + :legendfonthalign => :hcenter, + :legendfontvalign => :vcenter, + :legendfontrotation => 0.0, + :legendfontcolor => :match, + :legendtitlefontfamily => :match, + :legendtitlefontsize => 11, + :legendtitlefonthalign => :hcenter, + :legendtitlefontvalign => :vcenter, + :legendtitlefontrotation => 0.0, + :legendtitlefontcolor => :match, + :annotations => [], # annotation tuples... list of (x,y,annotation) + :projection => :none, # can also be :polar or :3d + :aspect_ratio => :auto, # choose from :none or :equal + :margin => 1mm, + :left_margin => :match, + :top_margin => :match, + :right_margin => :match, + :bottom_margin => :match, + :subplot_index => -1, + :colorbar_title => "", + :colorbar_titlefontsize => 10, + :colorbar_title_location => :center, # also :left or :right + :colorbar_titlefontfamily => :match, + :colorbar_titlefonthalign => :hcenter, + :colorbar_titlefontvalign => :vcenter, + :colorbar_titlefontrotation => 0.0, + :colorbar_titlefontcolor => :match, + :framestyle => :axes, + :camera => (30,30), + :extra_kwargs => Dict() ) const _axis_defaults = KW( - :guide => "", - :guide_position => :auto, - :lims => :auto, - :ticks => :auto, - :scale => :identity, - :rotation => 0, - :flip => false, - :link => [], - :tickfontfamily => :match, - :tickfontsize => 8, - :tickfonthalign => :hcenter, - :tickfontvalign => :vcenter, - :tickfontrotation => 0.0, - :tickfontcolor => :match, - :guidefontfamily => :match, - :guidefontsize => 11, - :guidefonthalign => :hcenter, - :guidefontvalign => :vcenter, - :guidefontrotation => 0.0, - :guidefontcolor => :match, - :foreground_color_axis => :match, # axis border/tick colors, - :foreground_color_border => :match, # plot area border/spines, - :foreground_color_text => :match, # tick text color, - :foreground_color_guide => :match, # guide text color, - :discrete_values => [], - :formatter => :auto, - :mirror => false, - :grid => true, - :foreground_color_grid => :match, # grid color - :gridalpha => 0.1, - :gridstyle => :solid, - :gridlinewidth => 0.5, + :guide => "", + :guide_position => :auto, + :lims => :auto, + :ticks => :auto, + :scale => :identity, + :rotation => 0, + :flip => false, + :link => [], + :tickfontfamily => :match, + :tickfontsize => 8, + :tickfonthalign => :hcenter, + :tickfontvalign => :vcenter, + :tickfontrotation => 0.0, + :tickfontcolor => :match, + :guidefontfamily => :match, + :guidefontsize => 11, + :guidefonthalign => :hcenter, + :guidefontvalign => :vcenter, + :guidefontrotation => 0.0, + :guidefontcolor => :match, + :foreground_color_axis => :match, # axis border/tick colors, + :foreground_color_border => :match, # plot area border/spines, + :foreground_color_text => :match, # tick text color, + :foreground_color_guide => :match, # guide text color, + :discrete_values => [], + :formatter => :auto, + :mirror => false, + :grid => true, + :foreground_color_grid => :match, # grid color + :gridalpha => 0.1, + :gridstyle => :solid, + :gridlinewidth => 0.5, :foreground_color_minor_grid => :match, # grid color - :minorgridalpha => 0.05, - :minorgridstyle => :solid, - :minorgridlinewidth => 0.5, - :tick_direction => :in, - :minorticks => false, - :minorgrid => false, - :showaxis => true, - :widen => true, - :draw_arrow => false, + :minorgridalpha => 0.05, + :minorgridstyle => :solid, + :minorgridlinewidth => 0.5, + :tick_direction => :in, + :minorticks => false, + :minorgrid => false, + :showaxis => true, + :widen => true, + :draw_arrow => false, ) const _suppress_warnings = Set{Symbol}([ @@ -1329,10 +1340,10 @@ const _match_map = KW( :background_color_inside => :background_color_subplot, :foreground_color_legend => :foreground_color_subplot, :foreground_color_title => :foreground_color_subplot, - :left_margin => :margin, - :top_margin => :margin, - :right_margin => :margin, - :bottom_margin => :margin, + :left_margin => :margin, + :top_margin => :margin, + :right_margin => :margin, + :bottom_margin => :margin, :titlefontfamily => :fontfamily_subplot, :titlefontcolor => :foreground_color_subplot, :legendfontfamily => :fontfamily_subplot, @@ -1342,6 +1353,8 @@ const _match_map = KW( :colorbar_fontfamily => :fontfamily_subplot, :colorbar_titlefontfamily => :fontfamily_subplot, :colorbar_titlefontcolor => :foreground_color_subplot, + :colorbar_tickfontfamily => :fontfamily_subplot, + :colorbar_tickfontcolor => :foreground_color_subplot, :plot_titlefontfamily => :fontfamily, :plot_titlefontcolor => :foreground_color, :tickfontcolor => :foreground_color_text, @@ -1580,6 +1593,7 @@ function _update_subplot_args(plt::Plot, sp::Subplot, plotattributes_in, subplot lims_warned = true end end + _update_subplot_colorbars(sp) end # ----------------------------------------------------------------------------- diff --git a/src/axes.jl b/src/axes.jl index 64bee8c6..7173999e 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -137,11 +137,10 @@ const _label_func_tex = Dict{Symbol,Function}( labelfunc_tex(scale::Symbol) = get(_label_func_tex, scale, convert_sci_unicode) -function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) - amin, amax = axis_limits(sp, axis[:letter]) +function optimal_ticks_and_labels(ticks, alims, scale, formatter) + amin, amax = alims # scale the limits - scale = axis[:scale] sf = RecipesPipeline.scale_func(scale) # If the axis input was a Date or DateTime use a special logic to find @@ -152,7 +151,7 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) # rather than on the input format # TODO: maybe: non-trivial scale (:ln, :log2, :log10) for date/datetime if ticks === nothing && scale == :identity - if axis[:formatter] == RecipesPipeline.dateformatter + if formatter == RecipesPipeline.dateformatter # optimize_datetime_ticks returns ticks and labels(!) based on # integers/floats corresponding to the DateTime type. Thus, the axes # limits, which resulted from converting the Date type to integers, @@ -163,7 +162,7 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) k_min = 2, k_max = 4) # Now the ticks are converted back to floats corresponding to Dates. return ticks / 864e5, labels - elseif axis[:formatter] == RecipesPipeline.datetimeformatter + elseif formatter == RecipesPipeline.datetimeformatter return optimize_datetime_ticks(amin, amax; k_min = 2, k_max = 4) end end @@ -187,14 +186,13 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) # chosen ticks is not too much bigger than amin - amax: strict_span = false, ) - axis[:lims] = map(RecipesPipeline.inverse_scale_func(scale), (viewmin, viewmax)) + # axis[:lims] = map(RecipesPipeline.inverse_scale_func(scale), (viewmin, viewmax)) else scaled_ticks = map(sf, (filter(t -> amin <= t <= amax, ticks))) end unscaled_ticks = map(RecipesPipeline.inverse_scale_func(scale), scaled_ticks) labels = if any(isfinite, unscaled_ticks) - formatter = axis[:formatter] if formatter in (:auto, :plain, :scientific, :engineering) map(labelfunc(scale, backend()), Showoff.showoff(scaled_ticks, formatter)) elseif formatter == :latex @@ -221,52 +219,53 @@ end # return (continuous_values, discrete_values) for the ticks on this axis function get_ticks(sp::Subplot, axis::Axis; update = true) if update || !haskey(axis.plotattributes, :optimized_ticks) + dvals = axis[:discrete_values] ticks = _transform_ticks(axis[:ticks]) - if ticks in (:none, nothing, false) - axis.plotattributes[:optimized_ticks] = nothing + axis.plotattributes[:optimized_ticks] = if ticks isa Symbol && ticks !== :none && + ispolar(sp) && axis[:letter] === :x && !isempty(dvals) + collect(0:pi/4:7pi/4), string.(0:45:315) else - # treat :native ticks as :auto - ticks = ticks == :native ? :auto : ticks - - dvals = axis[:discrete_values] - cv, dv = if typeof(ticks) <: Symbol - if !isempty(dvals) - # discrete ticks... - n = length(dvals) - rng = if ticks == :auto && n > 15 - Δ = ceil(Int, n / 10) - Δ:Δ:n - else # if ticks == :all - 1:n - end - axis[:continuous_values][rng], dvals[rng] - elseif ispolar(axis.sps[1]) && axis[:letter] == :x - #force theta axis to be full circle - (collect(0:pi/4:7pi/4), string.(0:45:315)) - else - # compute optimal ticks and labels - optimal_ticks_and_labels(sp, axis) - end - elseif typeof(ticks) <: Union{AVec, Int} - if !isempty(dvals) && typeof(ticks) <: Int - rng = Int[round(Int,i) for i in range(1, stop=length(dvals), length=ticks)] - axis[:continuous_values][rng], dvals[rng] - else - # override ticks, but get the labels - optimal_ticks_and_labels(sp, axis, ticks) - end - elseif typeof(ticks) <: NTuple{2, Any} - # assuming we're passed (ticks, labels) - ticks - else - error("Unknown ticks type in get_ticks: $(typeof(ticks))") - end - axis.plotattributes[:optimized_ticks] = (cv, dv) + cvals = axis[:continuous_values] + alims = axis_limits(sp, axis[:letter]) + scale = axis[:scale] + formatter = axis[:formatter] + get_ticks(ticks, cvals, dvals, alims, scale, formatter) end end - axis.plotattributes[:optimized_ticks] + return axis.plotattributes[:optimized_ticks] end +function get_ticks(ticks::Symbol, cvals::T, dvals, args...) where T + if ticks === :none + return T[], String[] + elseif !isempty(dvals) + n = length(dvals) + if ticks === :all || n < 16 + return cvals, string.(dvals) + else + Δ = ceil(Int, n / 10) + rng = Δ:Δ:n + return cvals[rng], string.(dvals[rng]) + end + else + return optimal_ticks_and_labels(nothing, args...) + end +end +get_ticks(ticks::AVec, cvals, dvals, args...) = optimal_ticks_and_labels(ticks, args...) +function get_ticks(ticks::Int, dvals, cvals, args...) + if !isempty(dvals) + rng = round.(Int, range(1, stop=length(dvals), length=ticks)) + cvals[rng], string.(dvals[rng]) + else + optimal_ticks_and_labels(ticks, args...) + end +end +get_ticks(ticks::NTuple{2, Any}, args...) = ticks +get_ticks(::Nothing, cvals::T, args...) where T = T[], String[] +get_ticks(ticks::Bool, args...) = + ticks ? get_ticks(:auto, args...) : get_ticks(nothing, args...) +get_ticks(::T, args...) where T = error("Unknown ticks type in get_ticks: $T") + _transform_ticks(ticks) = ticks _transform_ticks(ticks::AbstractArray{T}) where T <: Dates.TimeType = Dates.value.(ticks) _transform_ticks(ticks::NTuple{2, Any}) = (_transform_ticks(ticks[1]), ticks[2]) diff --git a/src/backends.jl b/src/backends.jl index 6164441d..c6c54f22 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -531,6 +531,10 @@ const _pyplot_attr = merge_with_base_supported([ :guidefontfamily, :guidefontsize, :guidefontcolor, :grid, :gridalpha, :gridstyle, :gridlinewidth, :legend, :legendtitle, :colorbar, :colorbar_title, :colorbar_entry, + :colorbar_ticks, :colorbar_tickfontfamily, :colorbar_tickfontsize, + :colorbar_tickfonthalign, :colorbar_tickfontvalign, + :colorbar_tickfontrotation, :colorbar_tickfontcolor, + :colorbar_scale, :marker_z, :line_z, :fill_z, :levels, :ribbon, :quiver, :arrow, diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 79e2e60c..5e1425c7 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -743,7 +743,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) xticks, yticks, zticks = get_ticks(sp, xaxis), get_ticks(sp, yaxis), get_ticks(sp, zaxis) # Add margin for x and y ticks h = 0mm - if !(xticks in (nothing, false, :none)) + if !isempty(first(xticks)) gr_set_font( tickfont(xaxis), halign = (:left, :hcenter, :right)[sign(xaxis[:rotation]) + 2], @@ -754,7 +754,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) l = 0.01 + last(gr_get_ticks_size(xticks, xaxis[:rotation])) h = max(h, 1mm + get_size(sp)[2] * l * px) end - if !(yticks in (nothing, false, :none)) + if !isempty(first(yticks)) gr_set_font( tickfont(yaxis), halign = (:left, :hcenter, :right)[sign(yaxis[:rotation]) + 2], @@ -774,7 +774,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) end end - if !(zticks in (nothing, false, :none)) + if !isempty(first(zticks)) gr_set_font( tickfont(zaxis), halign = (zaxis[:mirror] ? :left : :right), @@ -825,7 +825,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) else # Add margin for x and y ticks xticks, yticks = get_ticks(sp, sp[:xaxis]), get_ticks(sp, sp[:yaxis]) - if !(xticks in (nothing, false, :none)) + if !isempty(first(xticks)) gr_set_tickfont(sp, :x) l = 0.01 + last(gr_get_ticks_size(xticks, sp[:xaxis][:rotation])) h = 1mm + get_size(sp)[2] * l * px @@ -835,7 +835,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) bottompad += h end end - if !(yticks in (nothing, false, :none)) + if !isempty(first(yticks)) gr_set_tickfont(sp, :y) l = 0.01 + first(gr_get_ticks_size(yticks, sp[:yaxis][:rotation])) w = 1mm + get_size(sp)[1] * l * px diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index dbcd1813..aca6bb64 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -807,31 +807,37 @@ function py_compute_axis_minval(sp::Subplot, axis::Axis) minval end -function py_set_scale(ax, sp::Subplot, axis::Axis) - scale = axis[:scale] - letter = axis[:letter] +function py_set_scale(ax, sp::Subplot, scale::Symbol, letter::Symbol) scale in supported_scales() || return @warn("Unhandled scale value in pyplot: $scale") func = getproperty(ax, Symbol("set_", letter, "scale")) if PyPlot.version ≥ v"3.3" # https://matplotlib.org/3.3.0/api/api_changes.html - letter = Symbol("") + pyletter = Symbol("") + else + pyletter = letter end kw = KW() arg = if scale == :identity "linear" else - kw[Symbol(:base,letter)] = if scale == :ln + kw[Symbol(:base, pyletter)] = if scale == :ln ℯ elseif scale == :log2 2 elseif scale == :log10 10 end - kw[Symbol(:linthresh,letter)] = NaNMath.max(1e-16, py_compute_axis_minval(sp, axis)) + axis = sp[Symbol(letter, :axis)] + kw[Symbol(:linthresh, pyletter)] = NaNMath.max(1e-16, py_compute_axis_minval(sp, axis)) "symlog" end func(arg; kw...) end +function py_set_scale(ax, sp::Subplot, axis::Axis) + scale = axis[:scale] + letter = axis[:letter] + py_set_scale(ax, sp, scale, letter) +end function py_set_axis_colors(sp, ax, a::Axis) for (loc, spine) in ax.spines @@ -972,24 +978,31 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) end - cb."set_label"(sp[:colorbar_title],size=py_thickness_scale(plt, sp[:yaxis][:guidefontsize]),family=sp[:yaxis][:guidefontfamily], color = py_color(sp[:yaxis][:guidefontcolor])) + cb."set_label"(sp[:colorbar_title],size=py_thickness_scale(plt, sp[:colorbar_titlefontsize]),family=sp[:colorbar_titlefontfamily], color = py_color(sp[:colorbar_titlefontcolor])) # cb."formatter".set_useOffset(false) # This for some reason does not work, must be a pyplot bug, instead this is a workaround: cb."formatter".set_powerlimits((-Inf, Inf)) cb."update_ticks"() + env = "\\mathregular" # matches the outer fonts https://matplotlib.org/tutorials/text/mathtext.html + ticks = get_colorbar_ticks(sp) + if sp[:colorbar] in (:top, :bottom) axis = sp[:xaxis] # colorbar inherits from x axis cbar_axis = cb."ax"."xaxis" + ticks_letter=:x else axis = sp[:yaxis] # colorbar inherits from y axis cbar_axis = cb."ax"."yaxis" + ticks_letter=:y end + py_set_scale(cb.ax, sp, sp[:colorbar_scale], ticks_letter) + sp[:colorbar_ticks] == :native ? nothing : py_set_ticks(cb.ax, ticks, ticks_letter, env) for lab in cbar_axis."get_ticklabels"() - lab."set_fontsize"(py_thickness_scale(plt, axis[:tickfontsize])) - lab."set_family"(axis[:tickfontfamily]) - lab."set_color"(py_color(axis[:tickfontcolor])) + lab."set_fontsize"(py_thickness_scale(plt, sp[:colorbar_tickfontsize])) + lab."set_family"(sp[:colorbar_tickfontfamily]) + lab."set_color"(py_color(sp[:colorbar_tickfontcolor])) end # Adjust thickness of the cbar ticks diff --git a/src/colorbars.jl b/src/colorbars.jl new file mode 100644 index 00000000..b0f9996a --- /dev/null +++ b/src/colorbars.jl @@ -0,0 +1,90 @@ +# These functions return an operator for use in `get_clims(::Seres, op)` +process_clims(lims::Tuple{<:Number,<:Number}) = (zlims -> ifelse.(isfinite.(lims), lims, zlims)) ∘ ignorenan_extrema +process_clims(s::Union{Symbol,Nothing,Missing}) = ignorenan_extrema +# don't specialize on ::Function otherwise python functions won't work +process_clims(f) = f + +function get_clims(sp::Subplot, op=process_clims(sp[:clims])) + zmin, zmax = Inf, -Inf + for series in series_list(sp) + if series[:colorbar_entry] + zmin, zmax = _update_clims(zmin, zmax, get_clims(series, op)...) + end + end + return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) +end + +function get_clims(sp::Subplot, series::Series, op=process_clims(sp[:clims])) + zmin, zmax = if series[:colorbar_entry] + get_clims(sp, op) + else + get_clims(series, op) + end + return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) +end + +""" + get_clims(::Series, op=Plots.ignorenan_extrema) + +Finds the limits for the colorbar by taking the "z-values" for the series and passing them into `op`, +which must return the tuple `(zmin, zmax)`. The default op is the extrema of the finite +values of the input. +""" +function get_clims(series::Series, op=ignorenan_extrema) + zmin, zmax = Inf, -Inf + z_colored_series = (:contour, :contour3d, :heatmap, :histogram2d, :surface, :hexbin) + for vals in (series[:seriestype] in z_colored_series ? series[:z] : nothing, series[:line_z], series[:marker_z], series[:fill_z]) + if (typeof(vals) <: AbstractSurface) && (eltype(vals.surf) <: Union{Missing, Real}) + zmin, zmax = _update_clims(zmin, zmax, op(vals.surf)...) + elseif (vals !== nothing) && (eltype(vals) <: Union{Missing, Real}) + zmin, zmax = _update_clims(zmin, zmax, op(vals)...) + end + end + return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) +end + +_update_clims(zmin, zmax, emin, emax) = NaNMath.min(zmin, emin), NaNMath.max(zmax, emax) + +@enum ColorbarStyle cbar_gradient cbar_fill cbar_lines + +function colorbar_style(series::Series) + colorbar_entry = series[:colorbar_entry] + if !(colorbar_entry isa Bool) + @warn "Non-boolean colorbar_entry ignored." + colorbar_entry = true + end + + if !colorbar_entry + nothing + elseif isfilledcontour(series) + cbar_fill + elseif iscontour(series) + cbar_lines + elseif series[:seriestype] ∈ (:heatmap,:surface) || + any(series[z] !== nothing for z ∈ [:marker_z,:line_z,:fill_z]) + cbar_gradient + else + nothing + end +end + +hascolorbar(series::Series) = colorbar_style(series) !== nothing +hascolorbar(sp::Subplot) = sp[:colorbar] != :none && any(hascolorbar(s) for s in series_list(sp)) + +function get_colorbar_ticks(sp::Subplot; update = true) + if update || !haskey(sp.attr, :colorbar_optimized_ticks) + ticks = _transform_ticks(sp[:colorbar_ticks]) + cvals = sp[:colorbar_continuous_values] + dvals = sp[:colorbar_discrete_values] + clims = get_clims(sp) + scale = sp[:colorbar_scale] + formatter = sp[:colorbar_formatter] + sp.attr[:colorbar_optimized_ticks] = + get_ticks(ticks, cvals, dvals, clims, scale, formatter) + end + return sp.attr[:colorbar_optimized_ticks] +end + +function _update_subplot_colorbars(sp::Subplot) + # Dynamic callback from the pipeline if needed +end diff --git a/src/utils.jl b/src/utils.jl index a85f9d90..0bfd61ff 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -428,79 +428,6 @@ xlims(sp_idx::Int = 1) = xlims(current(), sp_idx) ylims(sp_idx::Int = 1) = ylims(current(), sp_idx) zlims(sp_idx::Int = 1) = zlims(current(), sp_idx) -# These functions return an operator for use in `get_clims(::Seres, op)` -process_clims(lims::Tuple{<:Number,<:Number}) = (zlims -> ifelse.(isfinite.(lims), lims, zlims)) ∘ ignorenan_extrema -process_clims(s::Union{Symbol,Nothing,Missing}) = ignorenan_extrema -# don't specialize on ::Function otherwise python functions won't work -process_clims(f) = f - -function get_clims(sp::Subplot, op=process_clims(sp[:clims])) - zmin, zmax = Inf, -Inf - for series in series_list(sp) - if series[:colorbar_entry] - zmin, zmax = _update_clims(zmin, zmax, get_clims(series, op)...) - end - end - return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) -end - -function get_clims(sp::Subplot, series::Series, op=process_clims(sp[:clims])) - zmin, zmax = if series[:colorbar_entry] - get_clims(sp, op) - else - get_clims(series, op) - end - return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) -end - -""" - get_clims(::Series, op=Plots.ignorenan_extrema) - -Finds the limits for the colorbar by taking the "z-values" for the series and passing them into `op`, -which must return the tuple `(zmin, zmax)`. The default op is the extrema of the finite -values of the input. -""" -function get_clims(series::Series, op=ignorenan_extrema) - zmin, zmax = Inf, -Inf - z_colored_series = (:contour, :contour3d, :heatmap, :histogram2d, :surface, :hexbin) - for vals in (series[:seriestype] in z_colored_series ? series[:z] : nothing, series[:line_z], series[:marker_z], series[:fill_z]) - if (typeof(vals) <: AbstractSurface) && (eltype(vals.surf) <: Union{Missing, Real}) - zmin, zmax = _update_clims(zmin, zmax, op(vals.surf)...) - elseif (vals !== nothing) && (eltype(vals) <: Union{Missing, Real}) - zmin, zmax = _update_clims(zmin, zmax, op(vals)...) - end - end - return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) -end - -_update_clims(zmin, zmax, emin, emax) = NaNMath.min(zmin, emin), NaNMath.max(zmax, emax) - -@enum ColorbarStyle cbar_gradient cbar_fill cbar_lines - -function colorbar_style(series::Series) - colorbar_entry = series[:colorbar_entry] - if !(colorbar_entry isa Bool) - @warn "Non-boolean colorbar_entry ignored." - colorbar_entry = true - end - - if !colorbar_entry - nothing - elseif isfilledcontour(series) - cbar_fill - elseif iscontour(series) - cbar_lines - elseif series[:seriestype] ∈ (:heatmap,:surface) || - any(series[z] !== nothing for z ∈ [:marker_z,:line_z,:fill_z]) - cbar_gradient - else - nothing - end -end - -hascolorbar(series::Series) = colorbar_style(series) !== nothing -hascolorbar(sp::Subplot) = sp[:colorbar] != :none && any(hascolorbar(s) for s in series_list(sp)) - iscontour(series::Series) = series[:seriestype] in (:contour, :contour3d) isfilledcontour(series::Series) = iscontour(series) && series[:fillrange] !== nothing From 59a1faf5909f8f010b496574834f0cb4248281fe Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 19:56:29 -0700 Subject: [PATCH 185/518] Add `even` arg to `make_steps` This is in preparation for `:stepmid` support. --- src/recipes.jl | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index b69ed3f3..285915d7 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -181,8 +181,8 @@ end # --------------------------------------------------------------------------- # steps -make_steps(x, st) = x -function make_steps(x::AbstractArray, st) +make_steps(x, st, even) = x +function make_steps(x::AbstractArray, st, even) n = length(x) n == 0 && return zeros(0) newx = zeros(2n - 1) @@ -195,19 +195,19 @@ function make_steps(x::AbstractArray, st) end return newx end -make_steps(t::Tuple, st) = Tuple(make_steps(ti, st) for ti in t) +make_steps(t::Tuple, st, even) = Tuple(make_steps(ti, st, even) for ti in t) @nospecialize # create a path from steps @recipe function f(::Type{Val{:steppre}}, x, y, z) - plotattributes[:x] = make_steps(x, :post) - plotattributes[:y] = make_steps(y, :pre) + plotattributes[:x] = make_steps(x, :post, false) + plotattributes[:y] = make_steps(y, :pre, false) seriestype := :path # handle fillrange - plotattributes[:fillrange] = make_steps(plotattributes[:fillrange], :pre) + plotattributes[:fillrange] = make_steps(plotattributes[:fillrange], :pre, false) # create a secondary series for the markers if plotattributes[:markershape] != :none @@ -227,12 +227,12 @@ end # create a path from steps @recipe function f(::Type{Val{:steppost}}, x, y, z) - plotattributes[:x] = make_steps(x, :pre) - plotattributes[:y] = make_steps(y, :post) + plotattributes[:x] = make_steps(x, :pre, false) + plotattributes[:y] = make_steps(y, :post, false) seriestype := :path # handle fillrange - plotattributes[:fillrange] = make_steps(plotattributes[:fillrange], :post) + plotattributes[:fillrange] = make_steps(plotattributes[:fillrange], :post, false) # create a secondary series for the markers if plotattributes[:markershape] != :none From 0508d05299bb76017a507ba1eafde987ef0fc46e Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 20:16:53 -0700 Subject: [PATCH 186/518] Remove conditional from `make_steps` for loop --- src/recipes.jl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index 285915d7..5ee52f5f 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -186,12 +186,11 @@ function make_steps(x::AbstractArray, st, even) n = length(x) n == 0 && return zeros(0) newx = zeros(2n - 1) - for i = 1:n + newx[1] = x[1] + for i = 2:n idx = 2i - 1 newx[idx] = x[i] - if i > 1 - newx[idx - 1] = x[st == :pre ? i : i - 1] - end + newx[idx - 1] = x[st == :pre ? i : i - 1] end return newx end From 10fa36cdd97628b8c6b8da664b9024c67da2f090 Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 20:21:12 -0700 Subject: [PATCH 187/518] Use `even` to tweak length of `make_steps` output If `even` in false, `make_steps` returns an odd-length (2n-1) Vector as it did before. If even is `true`, `make_steps` now returns an even-length (2n) Vector whose first (2n-1) elements are the same as before and whose final element is the same as the final element of the input Vector. --- src/recipes.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/recipes.jl b/src/recipes.jl index 5ee52f5f..52310696 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -185,13 +185,14 @@ make_steps(x, st, even) = x function make_steps(x::AbstractArray, st, even) n = length(x) n == 0 && return zeros(0) - newx = zeros(2n - 1) + newx = zeros(2n - (even ? 0 : 1)) newx[1] = x[1] for i = 2:n idx = 2i - 1 newx[idx] = x[i] newx[idx - 1] = x[st == :pre ? i : i - 1] end + even && (newx[end] = x[end]) return newx end make_steps(t::Tuple, st, even) = Tuple(make_steps(ti, st, even) for ti in t) From 3bb406e0ea773727d485f9ab84b8fd5828779b6c Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 20:35:08 -0700 Subject: [PATCH 188/518] Add `:mid` support to `make_steps` --- src/recipes.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index 52310696..b188a33d 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -189,8 +189,12 @@ function make_steps(x::AbstractArray, st, even) newx[1] = x[1] for i = 2:n idx = 2i - 1 - newx[idx] = x[i] - newx[idx - 1] = x[st == :pre ? i : i - 1] + if st == :mid + newx[idx] = newx[idx-1] = (x[i] + x[i-1]) / 2 + else + newx[idx] = x[i] + newx[idx - 1] = x[st == :pre ? i : i - 1] + end end even && (newx[end] = x[end]) return newx From 50f1106cd7badc04aaf1aa0be38228ad38db7c22 Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 20:47:14 -0700 Subject: [PATCH 189/518] Add recipe for `seriestype=:stepmid` --- src/recipes.jl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/recipes.jl b/src/recipes.jl index b188a33d..1ecbea62 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -229,6 +229,31 @@ make_steps(t::Tuple, st, even) = Tuple(make_steps(ti, st, even) for ti in t) end @deps steppre path scatter +# create a path from steps +@recipe function f(::Type{Val{:stepmid}}, x, y, z) + plotattributes[:x] = make_steps(x, :mid, true) + plotattributes[:y] = make_steps(y, :post, true) + seriestype := :path + + # handle fillrange + plotattributes[:fillrange] = make_steps(plotattributes[:fillrange], :post, true) + + # create a secondary series for the markers + if plotattributes[:markershape] != :none + @series begin + seriestype := :scatter + x := x + y := y + label := "" + primary := false + () + end + markershape := :none + end + () +end +@deps stepmid path scatter + # create a path from steps @recipe function f(::Type{Val{:steppost}}, x, y, z) plotattributes[:x] = make_steps(x, :pre, false) From ddf6aa976012cf5b091c3d46a9796536c255883e Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 23:24:31 -0700 Subject: [PATCH 190/518] Make Plots framework aware of new :stepmid option --- src/args.jl | 4 ++-- src/axes.jl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/args.jl b/src/args.jl index 2452dfdf..12e75cdd 100644 --- a/src/args.jl +++ b/src/args.jl @@ -54,7 +54,7 @@ const _3dTypes = [ :path3d, :scatter3d, :surface, :wireframe, :contour3d, :volume, :mesh3d ] const _allTypes = vcat([ - :none, :line, :path, :steppre, :steppost, :sticks, :scatter, + :none, :line, :path, :steppre, :stepmid, :steppost, :sticks, :scatter, :heatmap, :hexbin, :barbins, :barhist, :histogram, :scatterbins, :scatterhist, :stepbins, :stephist, :bins2d, :histogram2d, :histogram3d, :density, :bar, :hline, :vline, @@ -101,7 +101,7 @@ const _typeAliases = Dict{Symbol,Symbol}( add_non_underscore_aliases!(_typeAliases) const _histogram_like = [:histogram, :barhist, :barbins] -const _line_like = [:line, :path, :steppre, :steppost] +const _line_like = [:line, :path, :steppre, :stepmid, :steppost] const _surface_like = [:contour, :contourf, :contour3d, :heatmap, :surface, :wireframe, :image] like_histogram(seriestype::Symbol) = seriestype in _histogram_like diff --git a/src/axes.jl b/src/axes.jl index 7173999e..e2f031ad 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -441,7 +441,7 @@ function widen(lmin, lmax, scale = :identity) end # figure out if widening is a good idea. -const _widen_seriestypes = (:line, :path, :steppre, :steppost, :sticks, :scatter, :barbins, :barhist, :histogram, :scatterbins, :scatterhist, :stepbins, :stephist, :bins2d, :histogram2d, :bar, :shape, :path3d, :scatter3d) +const _widen_seriestypes = (:line, :path, :steppre, :stepmid, :steppost, :sticks, :scatter, :barbins, :barhist, :histogram, :scatterbins, :scatterhist, :stepbins, :stephist, :bins2d, :histogram2d, :bar, :shape, :path3d, :scatter3d) function default_should_widen(axis::Axis) should_widen = false From c2cb60ff1209ddae0fb4fc180af63519c9cfbaec Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 23:25:57 -0700 Subject: [PATCH 191/518] Make Plots backends aware of new :stepmid option --- src/backends.jl | 4 +++- src/backends/inspectdr.jl | 2 +- src/backends/plotly.jl | 2 ++ src/backends/pyplot.jl | 8 +++++--- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index c6c54f22..85ebfe98 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -555,6 +555,7 @@ const _pyplot_attr = merge_with_base_supported([ const _pyplot_seriestype = [ :path, :steppre, + :stepmid, :steppost, :shape, :straightline, @@ -636,6 +637,7 @@ const _hdf5_attr = merge_with_base_supported([ const _hdf5_seriestype = [ :path, :steppre, + :stepmid, :steppost, :shape, :straightline, @@ -707,7 +709,7 @@ const _inspectdr_attr = merge_with_base_supported([ ]) const _inspectdr_style = [:auto, :solid, :dash, :dot, :dashdot] const _inspectdr_seriestype = [ - :path, :scatter, :shape, :straightline, #, :steppre, :steppost + :path, :scatter, :shape, :straightline, #, :steppre, :stepmid, :steppost ] #see: _allMarkers, _shape_keys const _inspectdr_marker = Symbol[ diff --git a/src/backends/inspectdr.jl b/src/backends/inspectdr.jl index 005d3da2..e3c8dee3 100644 --- a/src/backends/inspectdr.jl +++ b/src/backends/inspectdr.jl @@ -290,7 +290,7 @@ For st in :shape: color = linecolor, fillcolor = fillcolor ) end - elseif st in (:path, :scatter, :straightline) #, :steppre, :steppost) + elseif st in (:path, :scatter, :straightline) #, :steppre, :stepmid, :steppost) #NOTE: In Plots.jl, :scatter plots have 0-linewidths (I think). linewidth = series[:linewidth] #More efficient & allows some support for markerstrokewidth: diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index a9aff316..9ff603da 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -789,6 +789,8 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z :width => get_linewidth(series, i), :shape => if st == :steppre "vh" + elseif st == :stepmid + "hvh" elseif st == :steppost "hv" else diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index aca6bb64..e23838ac 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -152,12 +152,14 @@ end function py_stepstyle(seriestype::Symbol) seriestype == :steppost && return "steps-post" + seriestype == :stepmid && return "steps-mid" seriestype == :steppre && return "steps-pre" return "default" end function py_fillstepstyle(seriestype::Symbol) seriestype == :steppost && return "post" + seriestype == :stepmid && return "mid" seriestype == :steppre && return "pre" return nothing end @@ -408,7 +410,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # for each plotting command, optionally build and add a series handle to the list # line plot - if st in (:path, :path3d, :steppre, :steppost, :straightline) + if st in (:path, :path3d, :steppre, :stepmid, :steppost, :straightline) if maximum(series[:linewidth]) > 0 # TODO: check LineCollection alternative for speed # if length(segments) > 1 && (any(typeof(series[attr]) <: AbstractVector for attr in (:fillcolor, :fillalpha)) || series[:fill_z] !== nothing) && !(typeof(series[:linestyle]) <: AbstractVector) @@ -485,7 +487,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # add markers? if series[:markershape] != :none && st in ( - :path, :scatter, :path3d, :scatter3d, :steppre, :steppost, :bar + :path, :scatter, :path3d, :scatter3d, :steppre, :stepmid, :steppost, :bar ) for segment in series_segments(series, :scatter) i, rng = segment.attr_index, segment.range @@ -1363,7 +1365,7 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) linestyle = py_linestyle(series[:seriestype], get_linestyle(series)), capstyle = "butt" ) - elseif series[:seriestype] in (:path, :straightline, :scatter, :steppre, :steppost) + elseif series[:seriestype] in (:path, :straightline, :scatter, :steppre, :stepmid, :steppost) hasline = get_linewidth(series) > 0 PyPlot.plt."Line2D"((0, 1),(0,0), color = py_color(single_color(get_linecolor(series, clims)), get_linealpha(series)), From 0d528b7c82b63d9f60bf314838188265fff4d95d Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Wed, 24 Mar 2021 23:27:16 -0700 Subject: [PATCH 192/518] Add :stepmid to line types example plot --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index cfc8e96f..963413bb 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -193,7 +193,7 @@ const _examples = PlotExample[ [ :( begin - linetypes = [:path :steppre :steppost :sticks :scatter] + linetypes = [:path :steppre :stepmid :steppost :sticks :scatter] n = length(linetypes) x = Vector[sort(rand(20)) for i = 1:n] y = rand(20, n) From 2b3fa980eef95851707b1838f7f374eaf3ec888b Mon Sep 17 00:00:00 2001 From: Misha Mikhasenko Date: Thu, 25 Mar 2021 14:34:52 +0100 Subject: [PATCH 193/518] alighment --- src/backends/gr.jl | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 9dc305f9..12bebe41 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -568,6 +568,27 @@ end gr_view_xcenter(viewport_plotarea) = 0.5 * (viewport_plotarea[1] + viewport_plotarea[2]) gr_view_ycenter(viewport_plotarea) = 0.5 * (viewport_plotarea[3] + viewport_plotarea[4]) +gr_view_xposition(viewport_plotarea, position) = viewport_plotarea[1] + position * (viewport_plotarea[2] - viewport_plotarea[1]) +gr_view_yposition(viewport_plotarea, position) = viewport_plotarea[3] + position * (viewport_plotarea[4] - viewport_plotarea[3]) + +function position(symb) + if symb == :top || symb == :right + return 0.95 + elseif symb == :left || symb == :bottom + return 0.05 + end + return 0.5 +end + +function alignment(symb) + if symb == :top || symb == :right + return GR.TEXT_HALIGN_RIGHT + elseif symb == :left || symb == :bottom + return GR.TEXT_HALIGN_LEFT + end + return GR.TEXT_HALIGN_CENTER +end + function gr_legend_pos(sp::Subplot, w, h, viewport_plotarea) legend_leftw, legend_rightw, legend_textw, x_legend_offset = w legend_dy, legendh, y_legend_offset = h @@ -1564,12 +1585,14 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) if xaxis[:guide] != "" h = 0.01 + gr_axis_height(sp, xaxis) gr_set_font(guidefont(xaxis), sp) + xposition = gr_view_xposition(viewport_plotarea, position(xaxis[:guidefonthalign])) + xalign = alignment(xaxis[:guidefonthalign]) if xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) - GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_TOP) - gr_text(gr_view_xcenter(viewport_plotarea), viewport_plotarea[4] + h, xaxis[:guide]) + GR.settextalign(xalign, GR.TEXT_VALIGN_TOP) + gr_text(xposition, viewport_plotarea[4] + h, xaxis[:guide]) else - GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_BOTTOM) - gr_text(gr_view_xcenter(viewport_plotarea), viewport_plotarea[3] - h, xaxis[:guide]) + GR.settextalign(xalign, GR.TEXT_VALIGN_BOTTOM) + gr_text(xposition, viewport_plotarea[3] - h, xaxis[:guide]) end end @@ -1577,12 +1600,14 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) w = 0.02 + gr_axis_width(sp, yaxis) gr_set_font(guidefont(yaxis), sp) GR.setcharup(-1, 0) + yposition = gr_view_yposition(viewport_plotarea, position(yaxis[:guidefontvalign])) + yalign = alignment(yaxis[:guidefontvalign]) if yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) - GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_BOTTOM) - gr_text(viewport_plotarea[2] + w, gr_view_ycenter(viewport_plotarea), yaxis[:guide]) + GR.settextalign(yalign, GR.TEXT_VALIGN_BOTTOM) + gr_text(viewport_plotarea[2] + w, yposition, yaxis[:guide]) else - GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_TOP) - gr_text(viewport_plotarea[1] - w, gr_view_ycenter(viewport_plotarea), yaxis[:guide]) + GR.settextalign(yalign, GR.TEXT_VALIGN_TOP) + gr_text(viewport_plotarea[1] - w, yposition, yaxis[:guide]) end end end From 1a9532f9fc74369b03453f69607d3946185773f7 Mon Sep 17 00:00:00 2001 From: Misha Mikhasenko Date: Thu, 25 Mar 2021 14:42:45 +0100 Subject: [PATCH 194/518] merged --- .gitattributes | 6 + .github/workflows/SnoopCompile.yml | 16 +- .github/workflows/TagBot.yml | 7 +- .github/workflows/benchmark.yml | 34 + .github/workflows/ci.yml | 6 +- .gitignore | 2 + Project.toml | 25 +- benchmark/Project.toml | 5 + benchmark/benchmarks.jl | 10 + .../precompile/apple/1.3/precompile_Plots.jl | 552 ----- .../precompile/apple/1.4/precompile_Plots.jl | 634 ------ .../precompile/apple/1.5/precompile_Plots.jl | 566 ----- .../precompile/linux/1.3/precompile_Plots.jl | 341 --- .../precompile/linux/1.4/precompile_Plots.jl | 586 ----- .../precompile/linux/1.5/precompile_Plots.jl | 554 ----- .../precompile/precompile_Plots.jl | 404 ++++ .../windows/1.3/precompile_Plots.jl | 346 --- .../windows/1.4/precompile_Plots.jl | 594 ----- .../windows/1.5/precompile_Plots.jl | 566 ----- deps/SnoopCompile/snoop_bench.jl | 5 +- deps/SnoopCompile/snoop_bot.jl | 5 +- deps/build.jl | 18 - src/Plots.jl | 33 +- src/animation.jl | 2 +- src/arg_desc.jl | 313 +-- src/args.jl | 544 +++-- src/axes.jl | 695 +++--- src/backends.jl | 18 +- src/backends/gr.jl | 1956 ++++++++--------- src/backends/hdf5.jl | 160 +- src/backends/inspectdr.jl | 78 +- src/backends/pgfplotsx.jl | 677 +++--- src/backends/plotly.jl | 202 +- src/backends/{orca.jl => plotlybase.jl} | 12 +- src/backends/pyplot.jl | 334 ++- src/backends/web.jl | 2 +- src/colorbars.jl | 90 + src/components.jl | 49 +- src/examples.jl | 243 +- src/ijulia.jl | 4 +- src/init.jl | 27 +- src/layouts.jl | 30 +- src/legend.jl | 59 + src/output.jl | 5 +- src/pipeline.jl | 59 +- src/plot.jl | 13 +- src/precompile_includer.jl | 74 +- src/recipes.jl | 182 +- src/shorthands.jl | 17 +- src/utils.jl | 248 +-- test/integration_dates.jl | 60 + test/runtests.jl | 38 +- test/test_axes.jl | 9 + test/test_axis_letter.jl | 25 + test/test_components.jl | 111 + test/test_defaults.jl | 11 + test/test_pgfplotsx.jl | 71 +- test/test_recipes.jl | 29 +- test/test_shorthands.jl | 48 + 59 files changed, 4145 insertions(+), 7665 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/workflows/benchmark.yml create mode 100644 benchmark/Project.toml create mode 100644 benchmark/benchmarks.jl delete mode 100644 deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl create mode 100644 deps/SnoopCompile/precompile/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl delete mode 100644 deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl delete mode 100644 deps/build.jl rename src/backends/{orca.jl => plotlybase.jl} (54%) create mode 100644 src/colorbars.jl create mode 100644 src/legend.jl create mode 100644 test/integration_dates.jl create mode 100644 test/test_axis_letter.jl create mode 100644 test/test_components.jl create mode 100644 test/test_defaults.jl create mode 100644 test/test_shorthands.jl diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..cf87526d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +# Set default behaviour to automatically normalize line endings. +* text=auto + +# Force bash scripts to always use lf line endings so that if a repo is accessed +# in Unix via a file share from Windows, the scripts will work. +*.sh text eol=lf diff --git a/.github/workflows/SnoopCompile.yml b/.github/workflows/SnoopCompile.yml index 1b7226fe..e4d7560a 100644 --- a/.github/workflows/SnoopCompile.yml +++ b/.github/workflows/SnoopCompile.yml @@ -21,13 +21,9 @@ jobs: fail-fast: false matrix: version: # NOTE: the versions below should match those in your botconfig - - '1.3' - - '1.4' - '1.5' os: # NOTE: should match the os setting of your botconfig - ubuntu-latest - - windows-latest - - macos-latest arch: - x64 steps: @@ -40,15 +36,15 @@ jobs: - name: Install dependencies run: | julia --project -e 'using Pkg; Pkg.instantiate();' - julia -e 'using Pkg; Pkg.add( PackageSpec(url="https://github.com/aminya/SnoopCompileBot.jl", rev = "master") ); Pkg.develop(PackageSpec(; path=pwd())); using SnoopCompileBot; SnoopCompileBot.addtestdep();' + julia -e 'using Pkg; Pkg.add( PackageSpec(name = "CompileBot", version = "1") ); Pkg.develop(PackageSpec(; path=pwd())); using CompileBot; CompileBot.addtestdep();' # TESTCMD - name: Default TESTCMD - run: echo ::set-env name=TESTCMD::"julia" + run: echo "TESTCMD=julia" >> $GITHUB_ENV - name: Ubuntu TESTCMD if: startsWith(matrix.os,'ubuntu') - run: echo ::set-env name=TESTCMD::"xvfb-run --auto-servernum julia" + run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV # Generate precompile files - name: Generating precompile files @@ -72,8 +68,8 @@ jobs: - name: Download all uses: actions/download-artifact@v2 - - name: SnoopCompileBot postprocess - run: julia -e 'using Pkg; Pkg.add( PackageSpec(url="https://github.com/aminya/SnoopCompileBot.jl", rev = "master") ); using SnoopCompileBot; SnoopCompileBot.postprocess();' + - name: CompileBot postprocess + run: julia -e 'using Pkg; Pkg.add( PackageSpec(name = "CompileBot", version = "1") ); using CompileBot; CompileBot.postprocess();' - name: Create Pull Request uses: peter-evans/create-pull-request@v3 @@ -82,7 +78,7 @@ jobs: commit-message: Update precompile_*.jl file title: "[AUTO] Update precompiles" labels: SnoopCompile - branch: "SnoopCompile_AutoPR" + branch: "Test_SnoopCompile_AutoPR_${{ github.ref }}" Skip: diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml index d77d3a0c..778c06fe 100644 --- a/.github/workflows/TagBot.yml +++ b/.github/workflows/TagBot.yml @@ -1,9 +1,12 @@ name: TagBot on: - schedule: - - cron: 0 * * * * + issue_comment: + types: + - created + workflow_dispatch: jobs: TagBot: + if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' runs-on: ubuntu-latest steps: - uses: JuliaRegistries/TagBot@v1 diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 00000000..ccc7bb31 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,34 @@ +name: Run benchmarks + +on: + pull_request: + +jobs: + Benchmark: + if: "!contains(github.event.head_commit.message, '[skip ci]')" + env: + GKS_ENCODING: "utf8" + GKSwstype: "100" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: julia-actions/setup-julia@latest + with: + version: 1 + + ## Setup + - name: Ubuntu TESTCMD + run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV + - name: Install Plots dependencies + uses: julia-actions/julia-buildpkg@latest + - name: Install Benchmarking dependencies + run: julia -e 'using Pkg; pkg"add PkgBenchmark BenchmarkCI@0.1"' + + - name: Run benchmarks + run: $TESTCMD -e 'using BenchmarkCI; BenchmarkCI.judge()' + - name: Print judgement + run: julia -e 'using BenchmarkCI; BenchmarkCI.displayjudgement()' + - name: Post results + run: julia -e 'using BenchmarkCI; BenchmarkCI.postjudge()' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 603e3b04..797cc072 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,7 @@ jobs: if: "!contains(github.event.head_commit.message, '[skip ci]')" env: GKS_ENCODING: "utf8" + GKSwstype: "100" name: Julia ${{ matrix.version }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -21,7 +22,6 @@ jobs: fail-fast: false matrix: version: - - '1.3' - '1' - 'nightly' os: @@ -60,10 +60,10 @@ jobs: # TESTCMD - name: Default TESTCMD - run: echo ::set-env name=TESTCMD::"julia" + run: echo "TESTCMD=julia" >> $GITHUB_ENV - name: Ubuntu TESTCMD if: startsWith(matrix.os,'ubuntu') - run: echo ::set-env name=TESTCMD::"xvfb-run --auto-servernum julia" + run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV # Julia Dependencies - name: Install Julia dependencies diff --git a/.gitignore b/.gitignore index c653453c..544fc7cb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ deps/deps.jl Manifest.toml dev/ test/tmpplotsave.hdf5 +/.benchmarkci +/benchmark/*.json diff --git a/Project.toml b/Project.toml index 7cd4eb7e..234ef8aa 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.6.1" +version = "1.11.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" @@ -11,8 +11,8 @@ FFMPEG = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" FixedPointNumbers = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" GR = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -GeometryTypes = "4d00f742-c7ba-57c2-abde-4428a4b178cb" JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +Latexify = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Measures = "442fdcdd-2543-5da2-b0f3-8c86c306513e" NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" @@ -25,6 +25,7 @@ RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" RecipesPipeline = "01d81517-befc-4cb6-b9ec-a95719d0359c" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" Requires = "ae029012-a4dd-5104-9daa-d747884805df" +Scratch = "6c6a2e73-6563-6170-7368-637461726353" Showoff = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" @@ -35,23 +36,22 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" -GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51" -GeometryBasics = "0.2" -GeometryTypes = "0.7, 0.8" +GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55" +GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" +Latexify = "0.14" Measures = "0.3" NaNMath = "0.3" -PGFPlotsX = "1.2.0" PlotThemes = "2" PlotUtils = "1" RecipesBase = "1" -RecipesPipeline = "0.1.12" -Reexport = "0.2" +RecipesPipeline = "0.3" +Reexport = "0.2, 1.0" Requires = "1" -Showoff = "0.3.1" -StableRNGs = "0.1.1" +Scratch = "1" +Showoff = "0.3.1, 1.0" StatsBase = "0.32, 0.33" -julia = "1.3" +julia = "1.5" [extras] Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" @@ -68,8 +68,9 @@ StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +TestImages = "5e47fb64-e119-507b-a336-dd2b206d9990" UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" [targets] -test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "UnicodePlots", "VisualRegressionTests"] +test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] diff --git a/benchmark/Project.toml b/benchmark/Project.toml new file mode 100644 index 00000000..d0c35ad5 --- /dev/null +++ b/benchmark/Project.toml @@ -0,0 +1,5 @@ +[deps] +BenchmarkCI = "20533458-34a3-403d-a444-e18f38190b5b" +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +PkgBenchmark = "32113eaa-f34f-5b0d-bd6c-c81e245fc73d" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl new file mode 100644 index 00000000..ae1d09de --- /dev/null +++ b/benchmark/benchmarks.jl @@ -0,0 +1,10 @@ +using BenchmarkTools +using Plots + +const SUITE = BenchmarkGroup() +julia_cmd = split(get(ENV, "TESTCMD", Base.JLOptions().julia_bin)) + +SUITE["load_plot_display"] = @benchmarkable run(`$julia_cmd --startup-file=no --project -e 'using Plots; display(plot(1:0.1:10, sin.(1:0.1:10)))'`) +SUITE["load"] = @benchmarkable run(`$julia_cmd --startup-file=no --project -e 'using Plots'`) +SUITE["plot"] = @benchmarkable p = plot(1:0.1:10, sin.(1:0.1:10)) samples=1 evals=1 +SUITE["display"] = @benchmarkable display(p) setup=(p = plot(1:0.1:10, sin.(1:0.1:10))) samples=1 evals=1 diff --git a/deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl b/deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl deleted file mode 100644 index 4ca129d4..00000000 --- a/deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl +++ /dev/null @@ -1,552 +0,0 @@ -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color),Tuple{Symbol,Symbol,Int64,RGBA{Float64}}},typeof(Plots.gr_set_font),Plots.Font,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Type{Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Axes,F,Args} where Args<:Tuple where F where Axes},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Int64,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Nothing,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Nothing,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linecolor),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Symbol,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.instantiate),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.instantiate),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{0},Nothing,typeof(Plots.label_to_string),Tuple{Base.RefValue{Symbol},Int64}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.collect_to_with_first!),Array{Int64,1},Int64,Base.Generator{Array{Any,1},typeof(Plots.rowsize)},Int64}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Int64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{typeof(log),Int64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_plot_args),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.PlotlyBackend},Plots.Subplot{Plots.PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.bottom),Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convertLegendValue),Symbol}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.discrete_value!),Plots.Axis,Array{String,1}}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Float64,Float64,Tuple{Float64,Float64},Int64,Float64,Float64,Symbol}) - Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Float64,Float64,Tuple{Float64,Float64},Int64,Int64,Int64,Shape}) - Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Int64,Float64,Tuple{Float64,Float64},Int64,Float64,Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Int64,Int64,Tuple{Float64,Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Float64,Float64,Tuple{Float64,Float64},Float64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_extrema),Array{Float64,2}}) - Base.precompile(Tuple{typeof(Plots.ignorenan_extrema),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.intersection_point),Float64,Float64,Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFillArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processFillArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Int64}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},String,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:bar}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:contour}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:heatmap}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:histogram2d}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:histogram}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:hline}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:image}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:mesh3d}},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:path}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:pie}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:scatter}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:shape}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:spy}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:vline}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:wireframe}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:xerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:yerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:zerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppost}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:yerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:yerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:zerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.splittable_attribute),Plots.Plot{Plots.PlotlyBackend},Symbol,Array{Int64,1},Int64}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bar),Array{Float64,1}}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Float64},Float64,Int64,Int64,Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Float64,Float64},Tuple{Float64,Float64,Float64}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Any},Plots.Plot{Plots.PlotlyBackend},Int64}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Plots.Subplot},Plots.Subplot{Plots.GRBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Plots.Subplot},Plots.Subplot{Plots.PlotlyBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Int64,Float64,Plots.PlotText},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Int64,Float64,Symbol,Plots.Stroke},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Shape,Int64,RGBA{Float64}},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Tuple{Symbol,Float64,Plots.Stroke},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Plots.Plot{Plots.GRBackend},RGBA{Float64},Symbol}) - Base.precompile(Tuple{typeof(show),IOStream,MIME{Symbol("image/png")},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(similar),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Type{PlotUtils.ContinuousColorGradient}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - isdefined(Plots, Symbol("##GridLayout#149")) && Base.precompile(Tuple{getfield(Plots, Symbol("##GridLayout#149")),Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - isdefined(Plots, Symbol("##gr_polyline#343")) && Base.precompile(Tuple{getfield(Plots, Symbol("##gr_polyline#343")),Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1}}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{7,Symbol},NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}}},typeof(plot),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:xlims, :ylims, :leg),Tuple{Tuple{Int64,Float64},Tuple{Int64,Int64},Bool}}},typeof(plot),Function,Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##text#89")) && Base.precompile(Tuple{getfield(Plots, Symbol("##text#89")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##text#89")) && Base.precompile(Tuple{getfield(Plots, Symbol("##text#89")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N}) -end diff --git a/deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl b/deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl deleted file mode 100644 index 3ffff8d7..00000000 --- a/deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl +++ /dev/null @@ -1,634 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{Int64,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linecolor),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convertLegendValue),Symbol}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Float64,Float64,Tuple{Float64,Float64},Float64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:bar}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:contour}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:heatmap}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:histogram2d}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:mesh3d}},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:path}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:pie}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:shape}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:spy}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:wireframe}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:xerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:zerror}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppost}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64,Float64,Float64}},Tuple{Float64,Float64,Float64},Tuple{Float64,Float64,Float64}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Plots.Subplot},Plots.Subplot{Plots.GRBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.GridLayout, (Int64,Vararg{Int64,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl deleted file mode 100644 index f5b6f17c..00000000 --- a/deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl +++ /dev/null @@ -1,566 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_fillcolor),Plots.Series,Tuple{Float64,Float64},Int64}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl deleted file mode 100644 index 2af68d70..00000000 --- a/deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl +++ /dev/null @@ -1,341 +0,0 @@ -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},String,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - isdefined(Plots, Symbol("##GridLayout#149")) && Base.precompile(Tuple{getfield(Plots, Symbol("##GridLayout#149")),Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - isdefined(Plots, Symbol("##gr_polyline#343")) && Base.precompile(Tuple{getfield(Plots, Symbol("##gr_polyline#343")),Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1}}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N}) -end diff --git a/deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl deleted file mode 100644 index 9f5b8d20..00000000 --- a/deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl +++ /dev/null @@ -1,586 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_plot_args),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Int64}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Bool}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},String,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(frame),Animation,Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(push!),Segments{Float64},Float64,Int64,Int64,Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.GridLayout, (Int64,Vararg{Int64,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl deleted file mode 100644 index 2367024c..00000000 --- a/deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl +++ /dev/null @@ -1,554 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_2tuple),Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:histogram}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(copyto!),Array{Any,1},Tuple{String,String,String,String,String,Plots.PlotText}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl new file mode 100644 index 00000000..c4c4f19b --- /dev/null +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -0,0 +1,404 @@ +# Use +# @warnpcfail precompile(args...) +# if you want to be warned when a precompile directive fails +macro warnpcfail(ex::Expr) + modl = __module__ + file = __source__.file === nothing ? "?" : String(__source__.file) + line = __source__.line + quote + $(esc(ex)) || @warn """precompile directive + $($(Expr(:quote, ex))) + failed. Please report an issue in $($modl) (after checking for duplicates) or remove this directive.""" _file=$file _line=$line + end +end + + +const __bodyfunction__ = Dict{Method,Any}() + +# Find keyword "body functions" (the function that contains the body +# as written by the developer, called after all missing keyword-arguments +# have been assigned values), in a manner that doesn't depend on +# gensymmed names. +# `mnokw` is the method that gets called when you invoke it without +# supplying any keywords. +function __lookup_kwbody__(mnokw::Method) + function getsym(arg) + isa(arg, Symbol) && return arg + @assert isa(arg, GlobalRef) + return arg.name + end + + f = get(__bodyfunction__, mnokw, nothing) + if f === nothing + fmod = mnokw.module + # The lowered code for `mnokw` should look like + # %1 = mkw(kwvalues..., #self#, args...) + # return %1 + # where `mkw` is the name of the "active" keyword body-function. + ast = Base.uncompressed_ast(mnokw) + if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 + callexpr = ast.code[end-1] + if isa(callexpr, Expr) && callexpr.head == :call + fsym = callexpr.args[1] + if isa(fsym, Symbol) + f = getfield(fmod, fsym) + elseif isa(fsym, GlobalRef) + if fsym.mod === Core && fsym.name === :_apply + f = getfield(mnokw.module, getsym(callexpr.args[2])) + elseif fsym.mod === Core && fsym.name === :_apply_iterate + f = getfield(mnokw.module, getsym(callexpr.args[3])) + else + f = getfield(fsym.mod, fsym.name) + end + else + f = missing + end + else + f = missing + end + else + f = missing + end + __bodyfunction__[mnokw] = f + end + return f +end + +function _precompile_() + ccall(:jl_generating_output, Cint, ()) == 1 || return nothing + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Length{:pct,Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),UnitRange{Int64},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(heatmap)),Any,typeof(heatmap),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(lens!)),Any,typeof(lens!),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{GridLayout,Array{String,2},Symbol,Array{Length{:mm,Float64},2},Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xlims),Tuple{GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:markershape, :markersize, :marker_z, :line_z, :linewidth),Tuple{Array{Symbol,2},Array{Int64,2},Array{Int64,2},Array{Int64,2},Array{Int64,2}}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{OHLC,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:yflip, :aspect_ratio),Tuple{Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Int64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp),Tuple{Array{Int64,1},Bool}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64,N} where N}) + Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol,Any},Symbol,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol,Any},Symbol,Any}) + Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{Int64,1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{Nothing,1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Array{Symbol,1},String}) + Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64,Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) + Base.precompile(Tuple{typeof(_heatmap_edges),Array{Float64,1},Bool,Bool}) + Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) + Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) + Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) + Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(backend),PlotlyBackend}) + Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) + Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) + Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) + Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) + Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) + Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) + Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) + Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) + Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) + Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) + Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) + Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) + Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) + Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Array{Float64,1},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}}}) + Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Array{Float64,1},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}}}) + Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(layout_args),Int64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) + Base.precompile(Tuple{typeof(plot!),Any}) + Base.precompile(Tuple{typeof(plot),Any,Any}) + Base.precompile(Tuple{typeof(plot),Any}) + Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) + Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Shape}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Stroke}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Symbol}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) + Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) + Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) + Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) + Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(slice_arg),Array{Int64,2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{Length{:mm,Float64},2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{RGBA{Float64},2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{String,2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Array{Symbol,2},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) + Base.precompile(Tuple{typeof(spy),Any}) + Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) + Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(title!),AbstractString}) + Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(vline!),Any}) + Base.precompile(Tuple{typeof(wireframe),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) + Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) + end + end + let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot!),)) + end + end + let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot!),Any,)) + end + end + let fbody = try __lookup_kwbody__(which(plot!, (Any,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot!),Any,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Any,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Any,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Any,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Plot,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Plot,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Plot,Plot,)) + end + end + let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,Vararg{Plot,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(plot),Plot,Plot,Vararg{Plot,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(text, (String,Int64,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) + end + end + let fbody = try __lookup_kwbody__(which(title!, (AbstractString,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(title!),AbstractString,)) + end + end + let fbody = try __lookup_kwbody__(which(vline!, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(vline!),Any,)) + end + end + let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any,N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any,N} where N,)) + end + end +end diff --git a/deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl b/deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl deleted file mode 100644 index 543c8525..00000000 --- a/deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl +++ /dev/null @@ -1,346 +0,0 @@ -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.var"#kw#Type",NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_marker),Plots.Series,Int64,Float64,Tuple{Float64,Float64},Int64,Float64,Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Plots.Axis,Plots.Extrema,Symbol}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - isdefined(Plots, Symbol("##GridLayout#149")) && Base.precompile(Tuple{getfield(Plots, Symbol("##GridLayout#149")),Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - isdefined(Plots, Symbol("##gr_polyline#343")) && Base.precompile(Tuple{getfield(Plots, Symbol("##gr_polyline#343")),Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!)}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2}}) - isdefined(Plots, Symbol("##plot!#134")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot!#134")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1}}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##plot#130")) && Base.precompile(Tuple{getfield(Plots, Symbol("##plot#130")),Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N}) - isdefined(Plots, Symbol("##text#89")) && Base.precompile(Tuple{getfield(Plots, Symbol("##text#89")),Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N}) -end diff --git a/deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl b/deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl deleted file mode 100644 index 36460609..00000000 --- a/deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl +++ /dev/null @@ -1,594 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.GRBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linecolor),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.bottompad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.leftpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.rightpad)}}) - Base.precompile(Tuple{typeof(Base.collect_similar),Array{AbstractLayout,1},Base.Generator{Array{AbstractLayout,1},typeof(Plots.toppad)}}) - Base.precompile(Tuple{typeof(Base.deepcopy_internal),Array{Plots.Series,1},IdDict{Any,Any}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._replace_markershape),Array{Symbol,1}}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots._update_plot_args),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(Plots._update_subplot_args),Plots.Plot{Plots.GRBackend},Plots.Subplot{Plots.GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.GRBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots._update_subplot_periphery),Plots.Subplot{Plots.PlotlyBackend},Array{Any,1}}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convertLegendValue),Symbol}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{Any,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_series_color),Array{Symbol,1},Plots.Subplot{Plots.PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Int64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,String}) - Base.precompile(Tuple{typeof(Plots.processFontArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Float64}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:zerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1}}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Any,Plots.Subplot},Plots.Subplot{Plots.GRBackend},Symbol}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.GridLayout, (Int64,Vararg{Int64,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Plots.RootLayout,Array{Float64,1},Array{Float64,1},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl b/deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl deleted file mode 100644 index 4c17935f..00000000 --- a/deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl +++ /dev/null @@ -1,566 +0,0 @@ -const __bodyfunction__ = Dict{Method,Any}() - -# Find keyword "body functions" (the function that contains the body -# as written by the developer, called after all missing keyword-arguments -# have been assigned values), in a manner that doesn't depend on -# gensymmed names. -# `mnokw` is the method that gets called when you invoke it without -# supplying any keywords. -function __lookup_kwbody__(mnokw::Method) - function getsym(arg) - isa(arg, Symbol) && return arg - @assert isa(arg, GlobalRef) - return arg.name - end - - f = get(__bodyfunction__, mnokw, nothing) - if f === nothing - fmod = mnokw.module - # The lowered code for `mnokw` should look like - # %1 = mkw(kwvalues..., #self#, args...) - # return %1 - # where `mkw` is the name of the "active" keyword body-function. - ast = Base.uncompressed_ast(mnokw) - if isa(ast, Core.CodeInfo) && length(ast.code) >= 2 - callexpr = ast.code[end-1] - if isa(callexpr, Expr) && callexpr.head == :call - fsym = callexpr.args[1] - if isa(fsym, Symbol) - f = getfield(fmod, fsym) - elseif isa(fsym, GlobalRef) - if fsym.mod === Core && fsym.name === :_apply - f = getfield(mnokw.module, getsym(callexpr.args[2])) - elseif fsym.mod === Core && fsym.name === :_apply_iterate - f = getfield(mnokw.module, getsym(callexpr.args[3])) - else - f = getfield(fsym.mod, fsym.name) - end - else - f = missing - end - else - f = missing - end - else - f = missing - end - __bodyfunction__[mnokw] = f - end - return f -end - -function _precompile_() - ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Measures.Length{:pct,Float64}}},Type{Plots.EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.GridLayout}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.GRBackend}}},Type{Plots.Subplot},Plots.GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.Type)),NamedTuple{(:parent,),Tuple{Plots.Subplot{Plots.PlotlyBackend}}},Type{Plots.Subplot},Plots.PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Int64,Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots._make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(Plots._make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:formatter,),Tuple{typeof(RecipesPipeline.datetimeformatter)}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Int64,Int64},Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Plots.Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.contour)),NamedTuple{(:fill,),Tuple{Bool}},typeof(contour),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(Plots.gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.heatmap)),NamedTuple{(:aspect_ratio,),Tuple{Int64}},typeof(heatmap),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram)),NamedTuple{(:bins, :weights),Tuple{Symbol,Array{Int64,1}}},typeof(histogram),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64}},typeof(histogram2d),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.histogram2d)),NamedTuple{(:nbins,),Tuple{Int64}},typeof(histogram2d),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.hline!)),NamedTuple{(:line,),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}}}},typeof(hline!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.lens!)),NamedTuple{(:inset,),Tuple{Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(lens!),Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.mesh3d)),NamedTuple{(:connections,),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}},typeof(mesh3d),Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.pie)),NamedTuple{(:title, :l),Tuple{String,Float64}},typeof(pie),Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plots.Plot{Plots.PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,Plots.PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Plots.Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{Plots.GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{Plots.GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{Plots.GridLayout,Array{String,2},Symbol,Array{Measures.Length{:mm,Float64},2},Measures.Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:layout,),Tuple{Plots.GridLayout}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{Dates.DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.portfoliocomposition)),NamedTuple{(:labels,),Tuple{Array{String,2}}},typeof(portfoliocomposition),Array{Float64,2},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:alpha,),Tuple{Float64}},typeof(scatter!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:marker, :series_annotations),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1}}},typeof(scatter!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:markersize, :c),Tuple{Int64,Symbol}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter!)),NamedTuple{(:zcolor, :m, :ms, :lab),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String}},typeof(scatter!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64}}},typeof(scatter),Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64}}},typeof(scatter),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.scatter)),NamedTuple{(:marker_z, :color, :legend),Tuple{typeof(+),Symbol,Bool}},typeof(scatter),Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(Plots.test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{Plots.GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{PlotUtils.ContinuousColorGradient,1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.copyto_nonleaf!),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.contour_levels),Tuple{Base.Broadcast.Extruded{Array{Any,1},Tuple{Bool},Tuple{Int64}},Base.RefValue{Tuple{Float64,Float64}}}},Base.OneTo{Int64},Int64,Int64}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.contour_levels),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_linecolor),Tuple{Array{Any,1},Base.RefValue{Tuple{Float64,Float64}}}}}) - Base.precompile(Tuple{typeof(Base.Broadcast.materialize),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Nothing,typeof(Plots.get_z_normalized),Tuple{Array{Float64,1},Float64,Float64}}}) - Base.precompile(Tuple{typeof(Base.vect),Tuple{Int64,Float64,Plots.PlotText},Vararg{Tuple{Int64,Float64,Plots.PlotText},N} where N}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(Plots._cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots._cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._cycle),StepRange{Int64,Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots._heatmap_edges),Array{Float64,1},Bool}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1},UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{AbstractArray{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{Float64,1},1},Array{Array{Float64,1},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Array{T,1} where T,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Complex{Float64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Dates.DateTime,1},UnitRange{Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Function,1},Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{OHLC,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{String,1},Array{String,1},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Tuple{Int64,Real},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Array{Union{Missing, Int64},1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.PortfolioComposition}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{Plots.Spy}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{StepRange{Int64,Int64},Array{Float64,2}}}) - Base.precompile(Tuple{typeof(Plots._plot!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Tuple{UnitRange{Int64}}}) - Base.precompile(Tuple{typeof(Plots._update_clims),Float64,Float64,Int64,Int64}) - Base.precompile(Tuple{typeof(Plots._update_min_padding!),Plots.GridLayout}) - Base.precompile(Tuple{typeof(Plots.build_layout),Plots.GridLayout,Int64}) - Base.precompile(Tuple{typeof(Plots.convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) - Base.precompile(Tuple{typeof(Plots.create_grid),Expr}) - Base.precompile(Tuple{typeof(Plots.error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(Plots.fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(Plots.get_clims),Plots.Subplot{Plots.GRBackend},Plots.Series,Function}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_minor_ticks),Plots.Subplot{Plots.GRBackend},Plots.Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(Plots.get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(Plots.gr_display),Plots.Subplot{Plots.GRBackend},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_colorbar),Plots.GRColorbar,Plots.Subplot{Plots.GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_draw_markers),Plots.Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(Plots.gr_legend_pos),Plots.Subplot{Plots.GRBackend},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.gr_polaraxes),Int64,Float64,Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},Function}) - Base.precompile(Tuple{typeof(Plots.gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(Plots.gr_viewport_from_bbox),Plots.Subplot{Plots.GRBackend},Measures.BoundingBox{Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Array{Float64,1},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),Base.OneTo{Int64},Symbol,Base.OneTo{Int64},Symbol,Tuple{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) - Base.precompile(Tuple{typeof(Plots.heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.ignorenan_minimum),Array{Int64,1}}) - Base.precompile(Tuple{typeof(Plots.is_uniformly_spaced),Array{Float64,1}}) - Base.precompile(Tuple{typeof(Plots.layout_args),Int64}) - Base.precompile(Tuple{typeof(Plots.make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(Plots.optimal_ticks_and_labels),Plots.Subplot{Plots.GRBackend},Plots.Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.processGridArg!),RecipesPipeline.DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(Plots.processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Plots.Stroke}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(Plots.processMarkerArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.GRBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_annotation),Plots.Subplot{Plots.PlotlyBackend},Int64,Float64,Plots.PlotText}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(Plots.process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(Plots.reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Measures.Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(Plots.slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) - Base.precompile(Tuple{typeof(Plots.straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(Plots.transpose_z),Plots.Series,Array{Float64,2},Bool}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol,Any},Type{Val{:image}},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barbins}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:barhist}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bar}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:bins2d}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Surface{Array{Float64,2}}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:histogram2d}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:hline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:line}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:pie}},Array{String,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Array{Int64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:steppre}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:sticks}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:vline}},Base.OneTo{Int64},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),RecipesPipeline.DefaultsDict,Type{Val{:xerror}},Array{Float64,1},Array{Float64,1},Nothing}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plots.Plot{Plots.PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.GRBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Array{RecipeData,1},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Float64,2}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Int64,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Plots.Spy}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},Dict{Symbol,Any},Symbol,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{Float64,1},1},Vararg{Array{Array{Float64,1},1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Array{T,1} where T,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Function,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Formatted{Array{Int64,1}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Nothing,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,RecipesPipeline.GroupBy,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,StepRange{Int64,Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipeData,Symbol,Type{T} where T,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plots.Plot{Plots.PlotlyBackend},RecipesPipeline.DefaultsDict,Symbol,Symbol}) - Base.precompile(Tuple{typeof(annotate!),Array{Tuple{Int64,Float64,Plots.PlotText},1}}) - Base.precompile(Tuple{typeof(backend),Plots.PlotlyBackend}) - Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_colorgradient),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_fillalpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linealpha),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linestyle),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.get_linewidth),Tuple{Array{Any,1}}}}) - Base.precompile(Tuple{typeof(copy),Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1},Tuple{Base.OneTo{Int64}},typeof(Plots.gr_color),Tuple{Array{RGBA{Float64},1}}}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(deepcopy),Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(default),Symbol,String}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(heatmap),Array{Dates.DateTime,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(iter_segments),Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(ohlc),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{typeof(plot!),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{typeof(plot),Array{Tuple{Int64,Int64},1}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend},Vararg{Plots.Plot{Plots.GRBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend},Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend},Vararg{Plots.Plot{Plots.PlotlyBackend},N} where N}) - Base.precompile(Tuple{typeof(plot),Plots.Plot{Plots.PlotlyBackend},Plots.Plot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Function}) - Base.precompile(Tuple{typeof(push!),Plots.Plot{Plots.GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.GRBackend}}) - Base.precompile(Tuple{typeof(setindex!),Dict{Plots.Subplot,Any},Dict{Symbol,Any},Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(title!),String}) - Base.precompile(Tuple{typeof(vcat),Array{Any,1},Tuple{Int64,Float64,Plots.PlotText}}) - Base.precompile(Tuple{typeof(vline!),Array{Int64,1}}) - Base.precompile(Tuple{typeof(xgrid!),Plots.Plot{Plots.GRBackend},Symbol,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xlims),Plots.Subplot{Plots.PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),String,Symbol}) - let fbody = try __lookup_kwbody__(which(Plots.gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(Plots.gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(Plots.text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Array{Tuple{Int64,Float64,Plots.PlotText},1},Tuple{Symbol},NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,Plots.PlotText},1}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,String,Tuple{Symbol},NamedTuple{(:title,),Tuple{String}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Tuple{String,Symbol},Tuple{Symbol},NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}}},typeof(plot!),)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Plots.Stroke},Array{Float64,1},String,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}}},typeof(plot!),Array{Float64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:w,),Tuple{Int64}}},typeof(plot!),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Float64,2},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Float64,2},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{GeometryBasics.Point{2,Float64},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Symbol,Tuple{Symbol},NamedTuple{(:seriestype,),Tuple{Symbol}}},typeof(plot!),Array{Int64,1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Int64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}}}}},typeof(plot!),Array{Int64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (Array{Tuple{Int64,Real},1},))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(plot!),Array{Tuple{Int64,Real},1},)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot!, (StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Array{T,1} where T,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}}},typeof(plot),Array{Array{T,1} where T,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Float64,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Plots.Stroke},Bool,Bool,Int64}}},typeof(plot),Array{Float64,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Array{Function,1},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol},NamedTuple{(:leg,),Tuple{Bool}}},typeof(plot),Array{Function,1},Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (Function,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}}},typeof(plot),Function,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(RecipesBase.plot, (StepRange{Int64,Int64},Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Symbol,Any,NTuple{5,Symbol},NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}}},typeof(plot),StepRange{Int64,Int64},Vararg{Any,N} where N,)) - end - end -end diff --git a/deps/SnoopCompile/snoop_bench.jl b/deps/SnoopCompile/snoop_bench.jl index 74e56299..4bb5838e 100644 --- a/deps/SnoopCompile/snoop_bench.jl +++ b/deps/SnoopCompile/snoop_bench.jl @@ -1,11 +1,8 @@ -using SnoopCompileBot +using CompileBot snoop_bench( BotConfig( "Plots", - yml_path= "SnoopCompile.yml", - else_os = "linux", - else_version = "1.4", ), joinpath(@__DIR__, "precompile_script.jl"), ) diff --git a/deps/SnoopCompile/snoop_bot.jl b/deps/SnoopCompile/snoop_bot.jl index 6cb57986..6a77f2be 100644 --- a/deps/SnoopCompile/snoop_bot.jl +++ b/deps/SnoopCompile/snoop_bot.jl @@ -1,11 +1,8 @@ -using SnoopCompileBot +using CompileBot snoop_bot( BotConfig( "Plots", - yml_path= "SnoopCompile.yml", - else_os = "linux", - else_version = "1.4", ), joinpath(@__DIR__, "precompile_script.jl"), ) diff --git a/deps/build.jl b/deps/build.jl deleted file mode 100644 index b174ab93..00000000 --- a/deps/build.jl +++ /dev/null @@ -1,18 +0,0 @@ - -#TODO: download https://cdn.plot.ly/plotly-1.54.2.min.js to deps/ if it doesn't exist -file_path = "" -if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true" - global file_path - local_fn = joinpath(dirname(@__FILE__), "plotly-1.54.2.min.js") - if !isfile(local_fn) - @info("Cannot find deps/plotly-1.54.2.min.js... downloading latest version.") - download("https://cdn.plot.ly/plotly-1.54.2.min.js", local_fn) - isfile(local_fn) && (file_path = local_fn) - else - file_path = local_fn - end -end - -open("deps.jl", "w") do io - println(io, "const plotly_local_file_path = $(repr(file_path))") -end diff --git a/src/Plots.jl b/src/Plots.jl index 0fee5a51..e7a71878 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -8,9 +8,9 @@ const _current_plots_version = VersionNumber(split(first(filter(line -> occursin using Reexport -import GeometryTypes, GeometryBasics +import GeometryBasics using Dates, Printf, Statistics, Base64, LinearAlgebra, Random -import SparseArrays: AbstractSparseMatrix, findnz +using SparseArrays using FFMPEG @@ -25,17 +25,6 @@ import JSON using Requires -if isfile(joinpath(@__DIR__, "..", "deps", "deps.jl")) - include(joinpath(@__DIR__, "..", "deps", "deps.jl")) -else - # This is a bit dirty, but I don't really see why anyone should be forced - # to build Plots, while it will just include exactly the below line - # as long as `ENV["PLOTS_HOST_DEPENDENCY_LOCAL"] = "true"` is not set. - # If the above env is set + `plotly_local_file_path == ""``, - # it will warn in the __init__ function to run build - const plotly_local_file_path = "" -end - export grid, bbox, @@ -165,6 +154,12 @@ const BBox = Measures.Absolute2DBox # allow pixels and percentages const px = AbsoluteLength(0.254) const pct = Length{:pct, Float64}(1.0) + +Base.:*(m1::AbsoluteLength, m2::Length{:pct}) = AbsoluteLength(m1.value * m2.value) +Base.:*(m1::Length{:pct}, m2::AbsoluteLength) = AbsoluteLength(m2.value * m1.value) +Base.:/(m1::AbsoluteLength, m2::Length{:pct}) = AbsoluteLength(m1.value / m2.value) +Base.:/(m1::Length{:pct}, m2::AbsoluteLength) = AbsoluteLength(m2.value / m1.value) + export BBox, BoundingBox, mm, cm, inch, px, pct, pt, w, h end @@ -192,11 +187,16 @@ import RecipesPipeline: SliceIt, datetimeformatter, timeformatter +# Use fixed version of Plotly instead of the latest one for stable dependency +# Ref: https://github.com/JuliaPlots/Plots.jl/pull/2779 +const _plotly_min_js_filename = "plotly-1.57.1.min.js" + include("types.jl") include("utils.jl") -include("components.jl") +include("colorbars.jl") include("axes.jl") include("args.jl") +include("components.jl") include("themes.jl") include("plot.jl") include("pipeline.jl") @@ -212,6 +212,7 @@ include("output.jl") include("ijulia.jl") include("fileio.jl") include("init.jl") +include("legend.jl") include("backends/plotly.jl") include("backends/gr.jl") @@ -229,8 +230,8 @@ let PlotOrSubplot = Union{Plot, Subplot} global xlims!(plt::PlotOrSubplot, xmin::Real, xmax::Real; kw...) = plot!(plt; xlims = (xmin,xmax), kw...) global ylims!(plt::PlotOrSubplot, ymin::Real, ymax::Real; kw...) = plot!(plt; ylims = (ymin,ymax), kw...) global zlims!(plt::PlotOrSubplot, zmin::Real, zmax::Real; kw...) = plot!(plt; zlims = (zmin,zmax), kw...) - global xticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) where {T<:Real} = plot!(plt; xticks = ticks, kw...) - global yticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) where {T<:Real} = plot!(plt; yticks = ticks, kw...) + global xticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) = plot!(plt; xticks = ticks, kw...) + global yticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) = plot!(plt; yticks = ticks, kw...) global xticks!(plt::PlotOrSubplot, ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(plt; xticks = (ticks,labels), kw...) global yticks!(plt::PlotOrSubplot, diff --git a/src/animation.jl b/src/animation.jl index b83c78cc..3c55967c 100644 --- a/src/animation.jl +++ b/src/animation.jl @@ -98,7 +98,7 @@ function buildanimation(anim::Animation, fn::AbstractString, ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -i "$(animdir)/palette.bmp" -lavfi "paletteuse=dither=sierra2_4a" -loop $loop -y $fn`) end else - ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -loop $loop -y $fn`) + ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -vf format=yuv420p -loop $loop -y $fn`) end show_msg && @info("Saved animation to ", fn) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index 9adad50b..2a5b9d0c 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -2,164 +2,171 @@ const _arg_desc = KW( # series args -:label => "String type. The label for a series, which appears in a legend. If empty, no legend entry is added.", -:seriescolor => "Color Type. The base color for this series. `:auto` (the default) will select a color from the subplot's `color_palette`, based on the order it was added to the subplot", -:seriesalpha => "Number in [0,1]. The alpha/opacity override for the series. `nothing` (the default) means it will take the alpha value of the color.", -:seriestype => "Symbol. This is the identifier of the type of visualization for this series. Choose from $(_allTypes) or any series recipes which are defined.", -:linestyle => "Symbol. Style of the line (for path and bar stroke). Choose from $(_allStyles)", -:linewidth => "Number. Width of the line (in pixels)", -:linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).", -:linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.", -:fillrange => "Number or AbstractVector. Fills area between fillrange and y for line-types, sets the base for bar/stick types, and similar for other types.", -:fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.", -:fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.", -:markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).", -:markercolor => "Color Type. Color of the interior of the marker or shape. `:match` will take the value from `:seriescolor`.", -:markeralpha => "Number in [0,1]. The alpha/opacity override for the marker interior. `nothing` (the default) means it will take the alpha value of markercolor.", -:markersize => "Number or AbstractVector. Size (radius pixels) of the markers.", -:markerstrokestyle => "Symbol. Style of the marker stroke (border). Choose from $(_allStyles)", -:markerstrokewidth => "Number. Width of the marker stroke (border. in pixels)", -:markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.", -:markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.", -:bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`", -:smooth => "Bool. Add a regression line?", -:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`.", -:x => "Various. Input data. First Dimension", -:y => "Various. Input data. Second Dimension", -:z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.", -:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.", -:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).", -:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.", -:levels => "Integer, NTuple{2,Integer}, or AbstractVector. Levels or number of levels (or x-levels/y-levels) for a contour type.", -:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).", -:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)", -:bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).", -:bar_edges => "Bool. Align bars to edges (true), or centers (the default)?", -:xerror => "AbstractVector or 2-Tuple of Vectors. x (horizontal) error relative to x-value. If 2-tuple of vectors, the first vector corresponds to the left error (and the second to the right)", -:yerror => "AbstractVector or 2-Tuple of Vectors. y (vertical) error relative to y-value. If 2-tuple of vectors, the first vector corresponds to the bottom error (and the second to the top)", -:ribbon => "Number or AbstractVector. Creates a fillrange around the data points.", -:quiver => "AbstractVector or 2-Tuple of vectors. The directional vectors U,V which specify velocity/gradient vectors for a quiver plot.", -:arrow => "nothing (no arrows), Bool (if true, default arrows), Arrow object, or arg(s) that could be style or head length/widths. Defines arrowheads that should be displayed at the end of path line segments (just before a NaN and the last non-NaN point). Used in quiverplot, streamplot, or similar.", -:normalize => "Bool or Symbol. Histogram normalization mode. Possible values are: false/:none (no normalization, default), true/:pdf (normalize to a discrete Probability Density Function, where the total area of the bins is 1), :probability (bin heights sum to 1) and :density (the area of each bin, rather than the height, is equal to the counts - useful for uneven bin sizes).", -:weights => "AbstractVector. Used in histogram types for weighted counts.", -:show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default).", -:contours => "Bool. Add contours to the side-grids of 3D plots? Used in surface/wireframe.", -:contour_labels => "Bool. Show labels at the contour lines?", -:match_dimensions => "Bool. For heatmap types... should the first dimension of a matrix (rows) correspond to the first dimension of the plot (x-axis)? The default is false, which matches the behavior of Matplotlib, Plotly, and others. Note: when passing a function for z, the function should still map `(x,y) -> z`.", -:subplot => "Integer (subplot index) or Subplot object. The subplot that this series belongs to.", -:series_annotations => "AbstractVector of String or PlotText. These are annotations which are mapped to data points/positions.", -:primary => "Bool. Does this count as a 'real series'? For example, you could have a path (primary), and a scatter (secondary) as 2 separate series, maybe with different data (see sticks recipe for an example). The secondary series will get the same color, etc as the primary.", -:hover => "nothing or vector of strings. Text to display when hovering over each data point.", -:colorbar_entry => "Bool. Include this series in the color bar? Set to `false` to exclude.", +:label => "String type. The label for a series, which appears in a legend. If empty, no legend entry is added.", +:seriescolor => "Color Type. The base color for this series. `:auto` (the default) will select a color from the subplot's `color_palette`, based on the order it was added to the subplot", +:seriesalpha => "Number in [0,1]. The alpha/opacity override for the series. `nothing` (the default) means it will take the alpha value of the color.", +:seriestype => "Symbol. This is the identifier of the type of visualization for this series. Choose from $(_allTypes) or any series recipes which are defined.", +:linestyle => "Symbol. Style of the line (for path and bar stroke). Choose from $(_allStyles)", +:linewidth => "Number. Width of the line (in pixels)", +:linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).", +:linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.", +:fillrange => "Number or AbstractVector. Fills area between fillrange and y for line-types, sets the base for bar/stick types, and similar for other types.", +:fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.", +:fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.", +:markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).", +:markercolor => "Color Type. Color of the interior of the marker or shape. `:match` will take the value from `:seriescolor`.", +:markeralpha => "Number in [0,1]. The alpha/opacity override for the marker interior. `nothing` (the default) means it will take the alpha value of markercolor.", +:markersize => "Number or AbstractVector. Size (radius pixels) of the markers.", +:markerstrokestyle => "Symbol. Style of the marker stroke (border). Choose from $(_allStyles)", +:markerstrokewidth => "Number. Width of the marker stroke (border. in pixels)", +:markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.", +:markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.", +:bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`", +:smooth => "Bool. Add a regression line?", +:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`.", +:x => "Various. Input data. First Dimension", +:y => "Various. Input data. Second Dimension", +:z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.", +:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.", +:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).", +:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.", +:levels => "Integer, NTuple{2,Integer}, or AbstractVector. Levels or number of levels (or x-levels/y-levels) for a contour type.", +:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).", +:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)", +:bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).", +:bar_edges => "Bool. Align bars to edges (true), or centers (the default)?", +:xerror => "AbstractVector or 2-Tuple of Vectors. x (horizontal) error relative to x-value. If 2-tuple of vectors, the first vector corresponds to the left error (and the second to the right)", +:yerror => "AbstractVector or 2-Tuple of Vectors. y (vertical) error relative to y-value. If 2-tuple of vectors, the first vector corresponds to the bottom error (and the second to the top)", +:ribbon => "Number or AbstractVector. Creates a fillrange around the data points.", +:quiver => "AbstractVector or 2-Tuple of vectors. The directional vectors U,V which specify velocity/gradient vectors for a quiver plot.", +:arrow => "nothing (no arrows), Bool (if true, default arrows), Arrow object, or arg(s) that could be style or head length/widths. Defines arrowheads that should be displayed at the end of path line segments (just before a NaN and the last non-NaN point). Used in quiverplot, streamplot, or similar.", +:normalize => "Bool or Symbol. Histogram normalization mode. Possible values are: false/:none (no normalization, default), true/:pdf (normalize to a discrete Probability Density Function, where the total area of the bins is 1), :probability (bin heights sum to 1) and :density (the area of each bin, rather than the height, is equal to the counts - useful for uneven bin sizes).", +:weights => "AbstractVector. Used in histogram types for weighted counts.", +:show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default).", +:contours => "Bool. Add contours to the side-grids of 3D plots? Used in surface/wireframe.", +:contour_labels => "Bool. Show labels at the contour lines?", +:match_dimensions => "Bool. For heatmap types... should the first dimension of a matrix (rows) correspond to the first dimension of the plot (x-axis)? The default is false, which matches the behavior of Matplotlib, Plotly, and others. Note: when passing a function for z, the function should still map `(x,y) -> z`.", +:subplot => "Integer (subplot index) or Subplot object. The subplot that this series belongs to.", +:series_annotations => "AbstractVector of String or PlotText. These are annotations which are mapped to data points/positions.", +:primary => "Bool. Does this count as a 'real series'? For example, you could have a path (primary), and a scatter (secondary) as 2 separate series, maybe with different data (see sticks recipe for an example). The secondary series will get the same color, etc as the primary.", +:hover => "nothing or vector of strings. Text to display when hovering over each data point.", +:colorbar_entry => "Bool. Include this series in the color bar? Set to `false` to exclude.", # plot args -:plot_title => "String. Title for the whole plot (not the subplots) (Note: Not currently implemented)", -:background_color => "Color Type. Base color for all backgrounds.", -:background_color_outside => "Color Type or `:match` (matches `:background_color`). Color outside the plot area(s)", -:foreground_color => "Color Type. Base color for all foregrounds.", -:size => "NTuple{2,Int}. (width_px, height_px) of the whole Plot", -:pos => "NTuple{2,Int}. (left_px, top_px) position of the GUI window (note: currently unimplemented)", -:window_title => "String. Title of the standalone gui-window.", -:show => "Bool. Should this command open/refresh a GUI/display? This allows displaying in scripts or functions without explicitly calling `display`", -:layout => "Integer (number of subplots), NTuple{2,Integer} (grid dimensions), AbstractLayout (for example `grid(2,2)`), or the return from the `@layout` macro. This builds the layout of subplots.", -:link => "Symbol. How/whether to link axis limits between subplots. Values: `:none`, `:x` (x axes are linked by columns), `:y` (y axes are linked by rows), `:both` (x and y are linked), `:all` (every subplot is linked together regardless of layout position).", -:overwrite_figure => "Bool. Should we reuse the same GUI window/figure when plotting (true) or open a new one (false).", -:html_output_format => "Symbol. When writing html output, what is the format? `:png` and `:svg` are currently supported.", -:tex_output_standalone => "Bool. When writing tex output, should the source include a preamble for a standalone document class.", -:inset_subplots => "nothing or vector of 2-tuple (parent,bbox). optionally pass a vector of (parent,bbox) tuples which are the parent layout and the relative bounding box of inset subplots", -:dpi => "Number. Dots Per Inch of output figures", -:thickness_scaling => "Number. Scale for the thickness of all line elements like lines, borders, axes, grid lines, ... defaults to 1.", -:display_type => "Symbol (`:auto`, `:gui`, or `:inline`). When supported, `display` will either open a GUI window or plot inline.", -:extra_kwargs => "Either one of (`:plot`, `:subplot`, `:series`) to specify for which element extra keyword args are collected or a KW (Dict{Symbol,Any}) to pass a map of extra keyword args which may be specific to a backend. Default: `:series`.\n Example: `pgfplotsx(); scatter(1:5, extra_kwargs=Dict(:subplot=>Dict(\"axis line shift\" => \"10pt\"))`", -:fontfamily => "String or Symbol. Default font family for title, legend entries, tick labels and guides", -:warn_on_unsupported => "Bool. Warn on unsupported attributes, series types and marker shapes", +:plot_title => "String. Title for the whole plot (not the subplots) (Note: Not currently implemented)", +:background_color => "Color Type. Base color for all backgrounds.", +:background_color_outside => "Color Type or `:match` (matches `:background_color`). Color outside the plot area(s)", +:foreground_color => "Color Type. Base color for all foregrounds.", +:size => "NTuple{2,Int}. (width_px, height_px) of the whole Plot", +:pos => "NTuple{2,Int}. (left_px, top_px) position of the GUI window (note: currently unimplemented)", +:window_title => "String. Title of the standalone gui-window.", +:show => "Bool. Should this command open/refresh a GUI/display? This allows displaying in scripts or functions without explicitly calling `display`", +:layout => "Integer (number of subplots), NTuple{2,Integer} (grid dimensions), AbstractLayout (for example `grid(2,2)`), or the return from the `@layout` macro. This builds the layout of subplots.", +:link => "Symbol. How/whether to link axis limits between subplots. Values: `:none`, `:x` (x axes are linked by columns), `:y` (y axes are linked by rows), `:both` (x and y are linked), `:all` (every subplot is linked together regardless of layout position).", +:overwrite_figure => "Bool. Should we reuse the same GUI window/figure when plotting (true) or open a new one (false).", +:html_output_format => "Symbol. When writing html output, what is the format? `:png` and `:svg` are currently supported.", +:tex_output_standalone => "Bool. When writing tex output, should the source include a preamble for a standalone document class.", +:inset_subplots => "nothing or vector of 2-tuple (parent,bbox). optionally pass a vector of (parent,bbox) tuples which are the parent layout and the relative bounding box of inset subplots", +:dpi => "Number. Dots Per Inch of output figures", +:thickness_scaling => "Number. Scale for the thickness of all line elements like lines, borders, axes, grid lines, ... defaults to 1.", +:display_type => "Symbol (`:auto`, `:gui`, or `:inline`). When supported, `display` will either open a GUI window or plot inline.", +:extra_kwargs => "Either one of (`:plot`, `:subplot`, `:series`) to specify for which element extra keyword args are collected or a KW (Dict{Symbol,Any}) to pass a map of extra keyword args which may be specific to a backend. Default: `:series`.\n Example: `pgfplotsx(); scatter(1:5, extra_kwargs=Dict(:subplot=>Dict(\"axis line shift\" => \"10pt\"))`", +:fontfamily => "String or Symbol. Default font family for title, legend entries, tick labels and guides", +:warn_on_unsupported => "Bool. Warn on unsupported attributes, series types and marker shapes", # subplot args -:title => "String. Subplot title.", -:titlelocation => "Symbol. Position of subplot title. Values: `:left`, `:center`, `:right`", -:titlefontfamily => "String or Symbol. Font family of subplot title.", -:titlefontsize => "Integer. Font pointsize of subplot title.", -:titlefonthalign => "Symbol. Font horizontal alignment of subplot title: :hcenter, :left, :right or :center", -:titlefontvalign => "Symbol. Font vertical alignment of subplot title: :vcenter, :top, :bottom or :center", -:titlefontrotation => "Real. Font rotation of subplot title", -:titlefontcolor => "Color Type. Font color of subplot title", -:background_color_subplot => "Color Type or `:match` (matches `:background_color`). Base background color of the subplot.", -:background_color_legend => "Color Type or `:match` (matches `:background_color_subplot`). Background color of the legend.", -:background_color_inside => "Color Type or `:match` (matches `:background_color_subplot`). Background color inside the plot area (under the grid).", -:foreground_color_subplot => "Color Type or `:match` (matches `:foreground_color`). Base foreground color of the subplot.", -:foreground_color_legend => "Color Type or `:match` (matches `:foreground_color_subplot`). Foreground color of the legend.", -:foreground_color_title => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of subplot title.", -:color_palette => "Vector of colors (cycle through) or color gradient (generate list from gradient) or `:auto` (generate a color list using `Colors.distiguishable_colors` and custom seed colors chosen to contrast with the background). The color palette is a color list from which series colors are automatically chosen.", -:legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position). Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend)", -:legendfontfamily => "String or Symbol. Font family of legend entries.", -:legendfontsize => "Integer. Font pointsize of legend entries.", -:legendfonthalign => "Symbol. Font horizontal alignment of legend entries: :hcenter, :left, :right or :center", -:legendfontvalign => "Symbol. Font vertical alignment of legend entries: :vcenter, :top, :bottom or :center", -:legendfontrotation => "Real. Font rotation of legend entries", -:legendfontcolor => "Color Type. Font color of legend entries", -:legendtitle => "String. Legend title.", -:legendtitlefontfamily => "String or Symbol. Font family of the legend title.", -:legendtitlefontsize => "Integer. Font pointsize the legend title.", -:legendtitlefonthalign => "Symbol. Font horizontal alignment of the legend title: :hcenter, :left, :right or :center", -:legendtitlefontvalign => "Symbol. Font vertical alignment of the legend title: :vcenter, :top, :bottom or :center", -:legendtitlefontrotation => "Real. Font rotation of the legend title", -:legendtitlefontcolor => "Color Type. Font color of the legend title", -:colorbar => "Bool (show the colorbar?) or Symbol (colorbar position). Symbol values: `:none`, `:best`, `:right`, `:left`, `:top`, `:bottom`, `:legend` (matches legend value) (note: only some may be supported in each backend)", -:clims => "`:auto`, NTuple{2,Number}, or a function that takes series data in and returns NTuple{2,Number}. Fixes the limits of the colorbar.", -:legendfont => "Font. Font of legend items.", -:legendtitlefont => "Font. Font of the legend title.", -:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.", -:projection => "Symbol or String. '3d' or 'polar'", -:aspect_ratio => "Symbol (:equal or :none) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units. With `:none`, images inherit aspect ratio of the plot area.", -:margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.", -:left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.", -:top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.", -:right_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the right of the subplot.", -:bottom_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the bottom of the subplot.", -:subplot_index => "Integer. Internal (not set by user). Specifies the index of this subplot in the Plot's `plt.subplot` list.", -:colorbar_title => "String. Title of colorbar.", -:framestyle => "Symbol. Style of the axes frame. Choose from $(_allFramestyles)", -:camera => "NTuple{2, Real}. Sets the view angle (azimuthal, elevation) for 3D plots", +:title => "String. Subplot title.", +:titlelocation => "Symbol. Position of subplot title. Values: `:left`, `:center`, `:right`", +:titlefontfamily => "String or Symbol. Font family of subplot title.", +:titlefontsize => "Integer. Font pointsize of subplot title.", +:titlefonthalign => "Symbol. Font horizontal alignment of subplot title: :hcenter, :left, :right or :center", +:titlefontvalign => "Symbol. Font vertical alignment of subplot title: :vcenter, :top, :bottom or :center", +:titlefontrotation => "Real. Font rotation of subplot title", +:titlefontcolor => "Color Type. Font color of subplot title", +:background_color_subplot => "Color Type or `:match` (matches `:background_color`). Base background color of the subplot.", +:background_color_legend => "Color Type or `:match` (matches `:background_color_subplot`). Background color of the legend.", +:background_color_inside => "Color Type or `:match` (matches `:background_color_subplot`). Background color inside the plot area (under the grid).", +:foreground_color_subplot => "Color Type or `:match` (matches `:foreground_color`). Base foreground color of the subplot.", +:foreground_color_legend => "Color Type or `:match` (matches `:foreground_color_subplot`). Foreground color of the legend.", +:foreground_color_title => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of subplot title.", +:color_palette => "Vector of colors (cycle through) or color gradient (generate list from gradient) or `:auto` (generate a color list using `Colors.distiguishable_colors` and custom seed colors chosen to contrast with the background). The color palette is a color list from which series colors are automatically chosen.", +:legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position) or angle or (angle,inout) tuple. Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend). Legend is positioned at (angle degrees) (so (90,:outer) is roughly equivalent to :outertop), close to the inside of the axes or the outside if inout=:outer.", +:legendfontfamily => "String or Symbol. Font family of legend entries.", +:legendfontsize => "Integer. Font pointsize of legend entries.", +:legendfonthalign => "Symbol. Font horizontal alignment of legend entries: :hcenter, :left, :right or :center", +:legendfontvalign => "Symbol. Font vertical alignment of legend entries: :vcenter, :top, :bottom or :center", +:legendfontrotation => "Real. Font rotation of legend entries", +:legendfontcolor => "Color Type. Font color of legend entries", +:legendtitle => "String. Legend title.", +:legendtitlefontfamily => "String or Symbol. Font family of the legend title.", +:legendtitlefontsize => "Integer. Font pointsize the legend title.", +:legendtitlefonthalign => "Symbol. Font horizontal alignment of the legend title: :hcenter, :left, :right or :center", +:legendtitlefontvalign => "Symbol. Font vertical alignment of the legend title: :vcenter, :top, :bottom or :center", +:legendtitlefontrotation => "Real. Font rotation of the legend title", +:legendtitlefontcolor => "Color Type. Font color of the legend title", +:colorbar => "Bool (show the colorbar?) or Symbol (colorbar position). Symbol values: `:none`, `:best`, `:right`, `:left`, `:top`, `:bottom`, `:legend` (matches legend value) (note: only some may be supported in each backend)", +:clims => "`:auto`, NTuple{2,Number}, or a function that takes series data in and returns NTuple{2,Number}. Fixes the limits of the colorbar.", +:colorbar_fontfamily => "String or Symbol. Font family of colobar entries.", +:colorbar_ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", +:colorbar_tickfontfamily => "String or Symbol. Font family of colorbar tick labels.", +:colorbar_tickfontsize => "Integer. Font pointsize of colorbar tick entries.", +:colorbar_tickfontcolor => "Color Type. Font color of colorbar tick entries", +:colorbar_scale => "Symbol. Scale of the colorbar axis: `:none`, `:ln`, `:log2`, `:log10`", +:colorbar_formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", +:legendfont => "Font. Font of legend items.", +:legendtitlefont => "Font. Font of the legend title.", +:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.", +:projection => "Symbol or String. '3d' or 'polar'", +:aspect_ratio => "Symbol (:equal or :none) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units. With `:none`, images inherit aspect ratio of the plot area.", +:margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.", +:left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.", +:top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.", +:right_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the right of the subplot.", +:bottom_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the bottom of the subplot.", +:subplot_index => "Integer. Internal (not set by user). Specifies the index of this subplot in the Plot's `plt.subplot` list.", +:colorbar_title => "String. Title of colorbar.", +:framestyle => "Symbol. Style of the axes frame. Choose from $(_allFramestyles)", +:camera => "NTuple{2, Real}. Sets the view angle (azimuthal, elevation) for 3D plots", # axis args -:guide => "String. Axis guide (label).", -:guide_position => "Symbol. Position of axis guides: :top, :bottom, :left or :right", -:lims => "NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0]", -:ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", -:scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", -:rotation => "Number. Degrees rotation of tick labels.", -:flip => "Bool. Should we flip (reverse) the axis?", -:formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", -:tickfontfamily => "String or Symbol. Font family of tick labels.", -:tickfontsize => "Integer. Font pointsize of tick labels.", -:tickfonthalign => "Symbol. Font horizontal alignment of tick labels: :hcenter, :left, :right or :center", -:tickfontvalign => "Symbol. Font vertical alignment of tick labels: :vcenter, :top, :bottom or :center", -:tickfontrotation => "Real. Font rotation of tick labels", -:tickfontcolor => "Color Type. Font color of tick labels", -:guidefontfamily => "String or Symbol. Font family of axes guides.", -:guidefontsize => "Integer. Font pointsize of axes guides.", -:guidefonthalign => "Symbol. Font horizontal alignment of axes guides: :hcenter, :left, :right or :center", -:guidefontvalign => "Symbol. Font vertical alignment of axes guides: :vcenter, :top, :bottom or :center", -:guidefontrotation => "Real. Font rotation of axes guides", -:guidefontcolor => "Color Type. Font color of axes guides", -:foreground_color_axis => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis ticks.", -:foreground_color_border => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of plot area border (spines).", -:foreground_color_text => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of tick labels.", -:foreground_color_guide => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis guides (axis labels).", -:mirror => "Bool. Switch the side of the tick labels (right or top).", -:grid => "Bool, Symbol, String or `nothing`. Show the grid lines? `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:none`, `:off`", -:foreground_color_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of grid lines.", -:gridalpha => "Number in [0,1]. The alpha/opacity override for the grid lines.", -:gridstyle => "Symbol. Style of the grid lines. Choose from $(_allStyles)", -:gridlinewidth => "Number. Width of the grid lines (in pixels)", +:guide => "String. Axis guide (label).", +:guide_position => "Symbol. Position of axis guides: :top, :bottom, :left or :right", +:lims => "NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0]", +:ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", +:scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", +:rotation => "Number. Degrees rotation of tick labels.", +:flip => "Bool. Should we flip (reverse) the axis?", +:formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", +:tickfontfamily => "String or Symbol. Font family of tick labels.", +:tickfontsize => "Integer. Font pointsize of tick labels.", +:tickfonthalign => "Symbol. Font horizontal alignment of tick labels: :hcenter, :left, :right or :center", +:tickfontvalign => "Symbol. Font vertical alignment of tick labels: :vcenter, :top, :bottom or :center", +:tickfontrotation => "Real. Font rotation of tick labels", +:tickfontcolor => "Color Type. Font color of tick labels", +:guidefontfamily => "String or Symbol. Font family of axes guides.", +:guidefontsize => "Integer. Font pointsize of axes guides.", +:guidefonthalign => "Symbol. Font horizontal alignment of axes guides: :hcenter, :left, :right or :center", +:guidefontvalign => "Symbol. Font vertical alignment of axes guides: :vcenter, :top, :bottom or :center", +:guidefontrotation => "Real. Font rotation of axes guides", +:guidefontcolor => "Color Type. Font color of axes guides", +:foreground_color_axis => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis ticks.", +:foreground_color_border => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of plot area border (spines).", +:foreground_color_text => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of tick labels.", +:foreground_color_guide => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis guides (axis labels).", +:mirror => "Bool. Switch the side of the tick labels (right or top).", +:grid => "Bool, Symbol, String or `nothing`. Show the grid lines? `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:none`, `:off`", +:foreground_color_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of grid lines.", +:gridalpha => "Number in [0,1]. The alpha/opacity override for the grid lines.", +:gridstyle => "Symbol. Style of the grid lines. Choose from $(_allStyles)", +:gridlinewidth => "Number. Width of the grid lines (in pixels)", :foreground_color_minor_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of minor grid lines.", -:minorgrid => "Bool. Adds minor grid lines and ticks to the plot. Set minorticks to change number of gridlines", -:minorticks => "Integer. Intervals to divide the gap between major ticks into", -:minorgridalpha => "Number in [0,1]. The alpha/opacity override for the minorgrid lines.", -:minorgridstyle => "Symbol. Style of the minor grid lines. Choose from $(_allStyles)", -:minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", -:tick_direction => "Symbol. Direction of the ticks. `:in` or `:out`", -:showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", -:widen => "Bool. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. Defaults to `true`.", -:draw_arrow => "Bool. Draw arrow at the end of the axis.", +:minorgrid => "Bool. Adds minor grid lines and ticks to the plot. Set minorticks to change number of gridlines", +:minorticks => "Integer. Intervals to divide the gap between major ticks into", +:minorgridalpha => "Number in [0,1]. The alpha/opacity override for the minorgrid lines.", +:minorgridstyle => "Symbol. Style of the minor grid lines. Choose from $(_allStyles)", +:minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", +:tick_direction => "Symbol. Direction of the ticks. `:in` or `:out`", +:showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", +:widen => "Bool. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. Defaults to `true`.", +:draw_arrow => "Bool. Draw arrow at the end of the axis.", ) diff --git a/src/args.jl b/src/args.jl index f5a8887a..2452dfdf 100644 --- a/src/args.jl +++ b/src/args.jl @@ -1,21 +1,34 @@ +function makeplural(s::Symbol) + str = string(s) + if last(str) != 's' + return Symbol(string(s,"s")) + end + return s +end +function make_non_underscore(s::Symbol) + str = string(s) + str = replace(str, "_" => "") + return Symbol(str) +end const _keyAliases = Dict{Symbol,Symbol}() function add_aliases(sym::Symbol, aliases::Symbol...) for alias in aliases - if haskey(_keyAliases, alias) - error("Already an alias $alias => $(_keyAliases[alias])... can't also alias $sym") + if haskey(_keyAliases, alias) || alias === sym + return nothing end _keyAliases[alias] = sym end + return nothing end function add_non_underscore_aliases!(aliases::Dict{Symbol,Symbol}) for (k,v) in aliases s = string(k) if '_' in s - aliases[Symbol(replace(s, "_" => ""))] = v + aliases[make_non_underscore(k)] = v end end end @@ -24,7 +37,7 @@ function add_non_underscore_aliases!(aliases::Dict{Symbol,Symbol}, args::Vector{ for arg in args s = string(arg) if '_' in s - aliases[Symbol(replace(s, "_" => ""))] = arg + aliases[make_non_underscore(arg)] = arg end end end @@ -111,56 +124,81 @@ const _styleAliases = Dict{Symbol,Symbol}( :ddd => :dashdotdot, ) +const _shape_keys = Symbol[ + :circle, + :rect, + :star5, + :diamond, + :hexagon, + :cross, + :xcross, + :utriangle, + :dtriangle, + :rtriangle, + :ltriangle, + :pentagon, + :heptagon, + :octagon, + :star4, + :star6, + :star7, + :star8, + :vline, + :hline, + :+, + :x, +] + const _allMarkers = vcat(:none, :auto, _shape_keys) #sort(collect(keys(_shapes)))) const _markerAliases = Dict{Symbol,Symbol}( - :n => :none, - :no => :none, - :a => :auto, - :ellipse => :circle, - :c => :circle, - :circ => :circle, - :square => :rect, - :sq => :rect, - :r => :rect, - :d => :diamond, - :^ => :utriangle, - :ut => :utriangle, - :utri => :utriangle, - :uptri => :utriangle, - :uptriangle => :utriangle, - :v => :dtriangle, - :V => :dtriangle, - :dt => :dtriangle, - :dtri => :dtriangle, - :downtri => :dtriangle, - :downtriangle => :dtriangle, - :> => :rtriangle, - :rt => :rtriangle, - :rtri => :rtriangle, + :n => :none, + :no => :none, + :a => :auto, + :ellipse => :circle, + :c => :circle, + :circ => :circle, + :square => :rect, + :sq => :rect, + :r => :rect, + :d => :diamond, + :^ => :utriangle, + :ut => :utriangle, + :utri => :utriangle, + :uptri => :utriangle, + :uptriangle => :utriangle, + :v => :dtriangle, + :V => :dtriangle, + :dt => :dtriangle, + :dtri => :dtriangle, + :downtri => :dtriangle, + :downtriangle => :dtriangle, + :> => :rtriangle, + :rt => :rtriangle, + :rtri => :rtriangle, :righttri => :rtriangle, :righttriangle => :rtriangle, - :< => :ltriangle, - :lt => :ltriangle, - :ltri => :ltriangle, + :< => :ltriangle, + :lt => :ltriangle, + :ltri => :ltriangle, :lighttri => :ltriangle, :lighttriangle => :ltriangle, - # :+ => :cross, - :plus => :cross, - # :x => :xcross, - :X => :xcross, - :star => :star5, - :s => :star5, - :star1 => :star5, - :s2 => :star8, - :star2 => :star8, - :p => :pentagon, - :pent => :pentagon, - :h => :hexagon, - :hex => :hexagon, - :hep => :heptagon, - :o => :octagon, - :oct => :octagon, - :spike => :vline, + # :+ => :cross, + :plus => :cross, + # :x => :xcross, + :X => :xcross, + :star => :star5, + :s => :star5, + :star1 => :star5, + :s2 => :star8, + :star2 => :star8, + :p => :pentagon, + :pent => :pentagon, + :h => :hexagon, + :hex => :hexagon, + :hep => :heptagon, + :o => :octagon, + :oct => :octagon, + :spike => :vline, ) const _positionAliases = Dict{Symbol,Symbol}( @@ -235,60 +273,58 @@ const _bar_width = 0.8 # ----------------------------------------------------------------------------- const _series_defaults = KW( - :label => :auto, - :colorbar_entry => true, - :seriescolor => :auto, - :seriesalpha => nothing, - :seriestype => :path, - :linestyle => :solid, - :linewidth => :auto, - :linecolor => :auto, - :linealpha => nothing, - :fillrange => nothing, # ribbons, areas, etc - :fillcolor => :match, - :fillalpha => nothing, - :markershape => :none, - :markercolor => :match, - :markeralpha => nothing, - :markersize => 4, - :markerstrokestyle => :solid, - :markerstrokewidth => 1, - :markerstrokecolor => :match, - :markerstrokealpha => nothing, - :bins => :auto, # number of bins for hists - :smooth => false, # regression line? - :group => nothing, # groupby vector - :x => nothing, - :y => nothing, - :z => nothing, # depth for contour, surface, etc - :marker_z => nothing, # value for color scale - :line_z => nothing, - :fill_z => nothing, - :levels => 15, - :orientation => :vertical, - :bar_position => :overlay, # for bar plots and histograms: could also be stack (stack up) or dodge (side by side) - :bar_width => nothing, - :bar_edges => false, - :xerror => nothing, - :yerror => nothing, - :zerror => nothing, - :ribbon => nothing, - :quiver => nothing, - :arrow => nothing, # allows for adding arrows to line/path... call `arrow(args...)` - :normalize => false, # do we want a normalized histogram? - :weights => nothing, # optional weights for histograms (1D and 2D) - :show_empty_bins => false, # should empty bins in 2D histogram be colored as zero (otherwise they are transparent) - :contours => false, # add contours to 3d surface and wireframe plots - :contour_labels => false, - :match_dimensions => false, # do rows match x (true) or y (false) for heatmap/image/spy? see issue 196 - # this ONLY effects whether or not the z-matrix is transposed for a heatmap display! - :subplot => :auto, # which subplot(s) does this series belong to? + :label => :auto, + :colorbar_entry => true, + :seriescolor => :auto, + :seriesalpha => nothing, + :seriestype => :path, + :linestyle => :solid, + :linewidth => :auto, + :linecolor => :auto, + :linealpha => nothing, + :fillrange => nothing, # ribbons, areas, etc + :fillcolor => :match, + :fillalpha => nothing, + :markershape => :none, + :markercolor => :match, + :markeralpha => nothing, + :markersize => 4, + :markerstrokestyle => :solid, + :markerstrokewidth => 1, + :markerstrokecolor => :match, + :markerstrokealpha => nothing, + :bins => :auto, # number of bins for hists + :smooth => false, # regression line? + :group => nothing, # groupby vector + :x => nothing, + :y => nothing, + :z => nothing, # depth for contour, surface, etc + :marker_z => nothing, # value for color scale + :line_z => nothing, + :fill_z => nothing, + :levels => 15, + :orientation => :vertical, + :bar_position => :overlay, # for bar plots and histograms: could also be stack (stack up) or dodge (side by side) + :bar_width => nothing, + :bar_edges => false, + :xerror => nothing, + :yerror => nothing, + :zerror => nothing, + :ribbon => nothing, + :quiver => nothing, + :arrow => nothing, # allows for adding arrows to line/path... call `arrow(args...)` + :normalize => false, # do we want a normalized histogram? + :weights => nothing, # optional weights for histograms (1D and 2D) + :show_empty_bins => false, # should empty bins in 2D histogram be colored as zero (otherwise they are transparent) + :contours => false, # add contours to 3d surface and wireframe plots + :contour_labels => false, + :subplot => :auto, # which subplot(s) does this series belong to? :series_annotations => nothing, # a list of annotations which apply to the coordinates of this series :primary => true, # when true, this "counts" as a series for color selection, etc. the main use is to allow # one logical series to be broken up (path and markers, for example) :hover => nothing, # text to display when hovering over the data points :stride => (1,1), # array stride for wireframe/surface, the first element is the row stride and the second is the column stride. - :connections => nothing, # tuple of arrays to specifiy connectivity of a 3d mesh + :connections => nothing, # tuple of arrays to specifiy connectivity of a 3d mesh :extra_kwargs => Dict() ) @@ -327,104 +363,115 @@ const _plot_defaults = KW( const _subplot_defaults = KW( - :title => "", - :titlelocation => :center, # also :left or :right - :fontfamily_subplot => :match, - :titlefontfamily => :match, - :titlefontsize => 14, - :titlefonthalign => :hcenter, - :titlefontvalign => :vcenter, - :titlefontrotation => 0.0, - :titlefontcolor => :match, - :background_color_subplot => :match, # default for other bg colors... match takes plot default - :background_color_legend => :match, # background of legend - :background_color_inside => :match, # background inside grid - :foreground_color_subplot => :match, # default for other fg colors... match takes plot default - :foreground_color_legend => :match, # foreground of legend - :foreground_color_title => :match, # title color - :color_palette => :auto, - :legend => :best, - :legendtitle => nothing, - :colorbar => :legend, - :clims => :auto, - :legendfontfamily => :match, - :legendfontsize => 8, - :legendfonthalign => :hcenter, - :legendfontvalign => :vcenter, - :legendfontrotation => 0.0, - :legendfontcolor => :match, - :legendtitlefontfamily => :match, - :legendtitlefontsize => 11, - :legendtitlefonthalign => :hcenter, - :legendtitlefontvalign => :vcenter, - :legendtitlefontrotation => 0.0, - :legendtitlefontcolor => :match, - :annotations => [], # annotation tuples... list of (x,y,annotation) - :projection => :none, # can also be :polar or :3d - :aspect_ratio => :auto, # choose from :none or :equal - :margin => 1mm, - :left_margin => :match, - :top_margin => :match, - :right_margin => :match, - :bottom_margin => :match, - :subplot_index => -1, - :colorbar_title => "", - :colorbar_titlefontsize => 10, - :colorbar_title_location => :center, # also :left or :right - :colorbar_fontfamily => :match, - :colorbar_titlefontfamily => :match, - :colorbar_titlefonthalign => :hcenter, - :colorbar_titlefontvalign => :vcenter, - :colorbar_titlefontrotation => 0.0, - :colorbar_titlefontcolor => :match, - :framestyle => :axes, - :camera => (30,30), - :extra_kwargs => Dict() + :title => "", + :titlelocation => :center, # also :left or :right + :fontfamily_subplot => :match, + :titlefontfamily => :match, + :titlefontsize => 14, + :titlefonthalign => :hcenter, + :titlefontvalign => :vcenter, + :titlefontrotation => 0.0, + :titlefontcolor => :match, + :background_color_subplot => :match, # default for other bg colors... match takes plot default + :background_color_legend => :match, # background of legend + :background_color_inside => :match, # background inside grid + :foreground_color_subplot => :match, # default for other fg colors... match takes plot default + :foreground_color_legend => :match, # foreground of legend + :foreground_color_title => :match, # title color + :color_palette => :auto, + :legend => :best, + :legendtitle => nothing, + :colorbar => :legend, + :clims => :auto, + :colorbar_fontfamily => :match, + :colorbar_ticks => :auto, + :colorbar_tickfontfamily => :match, + :colorbar_tickfontsize => 8, + :colorbar_tickfonthalign => :hcenter, + :colorbar_tickfontvalign => :vcenter, + :colorbar_tickfontrotation => 0.0, + :colorbar_tickfontcolor => :match, + :colorbar_scale => :identity, + :colorbar_formatter => :auto, + :colorbar_discrete_values => [], + :colorbar_continuous_values => zeros(0), + :legendfontfamily => :match, + :legendfontsize => 8, + :legendfonthalign => :hcenter, + :legendfontvalign => :vcenter, + :legendfontrotation => 0.0, + :legendfontcolor => :match, + :legendtitlefontfamily => :match, + :legendtitlefontsize => 11, + :legendtitlefonthalign => :hcenter, + :legendtitlefontvalign => :vcenter, + :legendtitlefontrotation => 0.0, + :legendtitlefontcolor => :match, + :annotations => [], # annotation tuples... list of (x,y,annotation) + :projection => :none, # can also be :polar or :3d + :aspect_ratio => :auto, # choose from :none or :equal + :margin => 1mm, + :left_margin => :match, + :top_margin => :match, + :right_margin => :match, + :bottom_margin => :match, + :subplot_index => -1, + :colorbar_title => "", + :colorbar_titlefontsize => 10, + :colorbar_title_location => :center, # also :left or :right + :colorbar_titlefontfamily => :match, + :colorbar_titlefonthalign => :hcenter, + :colorbar_titlefontvalign => :vcenter, + :colorbar_titlefontrotation => 0.0, + :colorbar_titlefontcolor => :match, + :framestyle => :axes, + :camera => (30,30), + :extra_kwargs => Dict() ) const _axis_defaults = KW( - :guide => "", - :guide_position => :auto, - :lims => :auto, - :ticks => :auto, - :scale => :identity, - :rotation => 0, - :flip => false, - :link => [], - :tickfontfamily => :match, - :tickfontsize => 8, - :tickfonthalign => :hcenter, - :tickfontvalign => :vcenter, - :tickfontrotation => 0.0, - :tickfontcolor => :match, - :guidefontfamily => :match, - :guidefontsize => 11, - :guidefonthalign => :hcenter, - :guidefontvalign => :vcenter, - :guidefontrotation => 0.0, - :guidefontcolor => :match, - :foreground_color_axis => :match, # axis border/tick colors, - :foreground_color_border => :match, # plot area border/spines, - :foreground_color_text => :match, # tick text color, - :foreground_color_guide => :match, # guide text color, - :discrete_values => [], - :formatter => :auto, - :mirror => false, - :grid => true, - :foreground_color_grid => :match, # grid color - :gridalpha => 0.1, - :gridstyle => :solid, - :gridlinewidth => 0.5, + :guide => "", + :guide_position => :auto, + :lims => :auto, + :ticks => :auto, + :scale => :identity, + :rotation => 0, + :flip => false, + :link => [], + :tickfontfamily => :match, + :tickfontsize => 8, + :tickfonthalign => :hcenter, + :tickfontvalign => :vcenter, + :tickfontrotation => 0.0, + :tickfontcolor => :match, + :guidefontfamily => :match, + :guidefontsize => 11, + :guidefonthalign => :hcenter, + :guidefontvalign => :vcenter, + :guidefontrotation => 0.0, + :guidefontcolor => :match, + :foreground_color_axis => :match, # axis border/tick colors, + :foreground_color_border => :match, # plot area border/spines, + :foreground_color_text => :match, # tick text color, + :foreground_color_guide => :match, # guide text color, + :discrete_values => [], + :formatter => :auto, + :mirror => false, + :grid => true, + :foreground_color_grid => :match, # grid color + :gridalpha => 0.1, + :gridstyle => :solid, + :gridlinewidth => 0.5, :foreground_color_minor_grid => :match, # grid color - :minorgridalpha => 0.05, - :minorgridstyle => :solid, - :minorgridlinewidth => 0.5, - :tick_direction => :in, - :minorticks => false, - :minorgrid => false, - :showaxis => true, - :widen => true, - :draw_arrow => false, + :minorgridalpha => 0.05, + :minorgridstyle => :solid, + :minorgridlinewidth => 0.5, + :tick_direction => :in, + :minorticks => false, + :minorgrid => false, + :showaxis => true, + :widen => true, + :draw_arrow => false, ) const _suppress_warnings = Set{Symbol}([ @@ -493,7 +540,7 @@ const _all_series_args = sort(union([_series_args; _magic_series_args])) const _all_plot_args = _plot_args const _all_args = - sort([_all_axis_args; _all_subplot_args; _all_series_args; _all_plot_args]) + sort(union([_all_axis_args; _all_subplot_args; _all_series_args; _all_plot_args])) is_subplot_attr(k) = k in _all_subplot_args is_series_attr(k) = k in _all_series_args @@ -504,9 +551,6 @@ RecipesBase.is_key_supported(k::Symbol) = is_attr_supported(k) is_default_attribute(k) = k in _internal_args || k in _all_args || is_axis_attr_noletter(k) # ----------------------------------------------------------------------------- - -makeplural(s::Symbol) = Symbol(string(s,"s")) - autopick_ignore_none_auto(arr::AVec, idx::Integer) = _cycle(setdiff(arr, [:none, :auto]), idx) autopick_ignore_none_auto(notarr, idx::Integer) = notarr @@ -629,7 +673,6 @@ add_aliases(:quiver, :velocity, :quiver2d, :gradient, :vectorfield) add_aliases(:normalize, :norm, :normed, :normalized) add_aliases(:show_empty_bins, :showemptybins, :showempty, :show_empty) add_aliases(:aspect_ratio, :aspectratio, :axis_ratio, :axisratio, :ratio) -add_aliases(:match_dimensions, :transpose, :transpose_z) add_aliases(:subplot, :sp, :subplt, :splt) add_aliases(:projection, :proj) add_aliases(:titlelocation, :title_location, :title_loc, :titleloc, :title_position, :title_pos, :titlepos, :titleposition, :title_align, :title_alignment) @@ -649,10 +692,10 @@ add_aliases(:contour_labels, :contourlabels, :clabels, :clabs) add_aliases(:warn_on_unsupported, :warn) # add all pluralized forms to the _keyAliases dict -for arg in keys(_series_defaults) - _keyAliases[makeplural(arg)] = arg +for arg in _all_args + add_aliases(arg, makeplural(arg)) end - +# add all non_underscored forms to the _keyAliases add_non_underscore_aliases!(_keyAliases) # ----------------------------------------------------------------------------- @@ -993,9 +1036,9 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) end end - # vline accesses the y argument but actually maps it to the x axis. + # vline and others accesses the y argument but actually maps it to the x axis. # Hence, we have to swap formatters - if get(plotattributes, :seriestype, :path) == :vline + if treats_y_as_x(get(plotattributes, :seriestype, :path)) xformatter = get(plotattributes, :xformatter, :auto) yformatter = get(plotattributes, :yformatter, :auto) plotattributes[:xformatter] = yformatter @@ -1145,7 +1188,6 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) if st in (:boxplot, :violin, :density) && !isdefined(Main, :StatsPlots) @warn("seriestype $st has been moved to StatsPlots. To use: \`Pkg.add(\"StatsPlots\"); using StatsPlots\`") end - return end @@ -1231,6 +1273,8 @@ end convertLegendValue(val::Bool) = val ? :best : :none convertLegendValue(val::Nothing) = :none 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) # ----------------------------------------------------------------------------- @@ -1296,10 +1340,10 @@ const _match_map = KW( :background_color_inside => :background_color_subplot, :foreground_color_legend => :foreground_color_subplot, :foreground_color_title => :foreground_color_subplot, - :left_margin => :margin, - :top_margin => :margin, - :right_margin => :margin, - :bottom_margin => :margin, + :left_margin => :margin, + :top_margin => :margin, + :right_margin => :margin, + :bottom_margin => :margin, :titlefontfamily => :fontfamily_subplot, :titlefontcolor => :foreground_color_subplot, :legendfontfamily => :fontfamily_subplot, @@ -1309,6 +1353,8 @@ const _match_map = KW( :colorbar_fontfamily => :fontfamily_subplot, :colorbar_titlefontfamily => :fontfamily_subplot, :colorbar_titlefontcolor => :foreground_color_subplot, + :colorbar_tickfontfamily => :fontfamily_subplot, + :colorbar_tickfontcolor => :foreground_color_subplot, :plot_titlefontfamily => :fontfamily, :plot_titlefontcolor => :foreground_color, :tickfontcolor => :foreground_color_text, @@ -1536,9 +1582,18 @@ function _update_subplot_args(plt::Plot, sp::Subplot, plotattributes_in, subplot _update_subplot_periphery(sp, anns) _update_subplot_colors(sp) + lims_warned = false for letter in (:x, :y, :z) _update_axis(plt, sp, plotattributes_in, letter, subplot_index) + lk = Symbol(letter, :lims) + + # warn against using `Range` in x,y,z lims + if !lims_warned && haskey(plotattributes_in, lk) && plotattributes_in[lk] isa AbstractRange + @warn("lims should be a Tuple, not $(typeof(plotattributes_in[lk])).") + lims_warned = true + end end + _update_subplot_colorbars(sp) end # ----------------------------------------------------------------------------- @@ -1693,3 +1748,80 @@ function _series_index(plotattributes, sp) end return idx end + +#-------------------------------------------------- +## inspired by Base.@kwdef +macro add_attributes( level, expr ) + expr = macroexpand(__module__, expr) # to expand @static + expr isa Expr && expr.head === :struct || error("Invalid usage of @add_attributes") + T = expr.args[2] + if T isa Expr && T.head === :<: + T = T.args[1] + end + + key_args = Any[] + value_args = Any[] + + _splitdef!(expr.args[3], value_args, key_args) + + insert_block = Expr(:block) + for (key, value) in zip(key_args, value_args) + # e.g. _series_defualts[key] = value + exp_key = Symbol(lowercase(string(T)), "_", key) + pl_key = makeplural(exp_key) + push!(insert_block.args, Expr( + :(=), Expr(:ref, Symbol("_", level, "_defaults"), QuoteNode(exp_key)), value + )) + push!(insert_block.args, :( + add_aliases($(QuoteNode(exp_key)), $(QuoteNode(pl_key))) + )) + push!(insert_block.args, :( + add_aliases($(QuoteNode(exp_key)), $(QuoteNode(make_non_underscore(exp_key)))) + )) + push!(insert_block.args, :( + add_aliases($(QuoteNode(exp_key)), $(QuoteNode(make_non_underscore(pl_key)))) + )) + end + return quote + $expr + $insert_block + end |> esc +end + +function _splitdef!(blk, value_args, key_args) + for i in eachindex(blk.args) + ei = blk.args[i] + if ei isa Symbol + # var + continue + elseif ei isa Expr + if ei.head === :(=) + lhs = ei.args[1] + if lhs isa Symbol + # var = defexpr + var = lhs + elseif lhs isa Expr && lhs.head === :(::) && lhs.args[1] isa Symbol + # var::T = defexpr + var = lhs.args[1] + else + # something else, e.g. inline inner constructor + # F(...) = ... + continue + end + defexpr = ei.args[2] # defexpr + push!(value_args, defexpr) + push!(key_args, var) + blk.args[i] = lhs + elseif ei.head === :(::) && ei.args[1] isa Symbol + # var::Typ + var = ei.args[1] + push!(value_args, var) + push!(key_args, var) + elseif ei.head === :block + # can arise with use of @static inside type decl + _kwdef!(ei, value_args, key_args) + end + end + end + blk +end diff --git a/src/axes.jl b/src/axes.jl index 683c62d2..7173999e 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -94,6 +94,12 @@ function attr!(axis::Axis, args...; kw...) for vi in v discrete_value!(axis, vi) end + #could perhaps use TimeType here, as Date and DateTime are both subtypes of TimeType + # or could perhaps check if dateformatter or datetimeformatter is in use + elseif k == :lims && isa(v, Tuple{Date,Date}) + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) + elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) else plotattributes[k] = v end @@ -131,11 +137,10 @@ const _label_func_tex = Dict{Symbol,Function}( labelfunc_tex(scale::Symbol) = get(_label_func_tex, scale, convert_sci_unicode) -function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) - amin, amax = axis_limits(sp, axis[:letter]) +function optimal_ticks_and_labels(ticks, alims, scale, formatter) + amin, amax = alims # scale the limits - scale = axis[:scale] sf = RecipesPipeline.scale_func(scale) # If the axis input was a Date or DateTime use a special logic to find @@ -146,7 +151,7 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) # rather than on the input format # TODO: maybe: non-trivial scale (:ln, :log2, :log10) for date/datetime if ticks === nothing && scale == :identity - if axis[:formatter] == RecipesPipeline.dateformatter + if formatter == RecipesPipeline.dateformatter # optimize_datetime_ticks returns ticks and labels(!) based on # integers/floats corresponding to the DateTime type. Thus, the axes # limits, which resulted from converting the Date type to integers, @@ -157,7 +162,7 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) k_min = 2, k_max = 4) # Now the ticks are converted back to floats corresponding to Dates. return ticks / 864e5, labels - elseif axis[:formatter] == RecipesPipeline.datetimeformatter + elseif formatter == RecipesPipeline.datetimeformatter return optimize_datetime_ticks(amin, amax; k_min = 2, k_max = 4) end end @@ -181,14 +186,13 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) # chosen ticks is not too much bigger than amin - amax: strict_span = false, ) - axis[:lims] = map(RecipesPipeline.inverse_scale_func(scale), (viewmin, viewmax)) + # axis[:lims] = map(RecipesPipeline.inverse_scale_func(scale), (viewmin, viewmax)) else scaled_ticks = map(sf, (filter(t -> amin <= t <= amax, ticks))) end unscaled_ticks = map(RecipesPipeline.inverse_scale_func(scale), scaled_ticks) labels = if any(isfinite, unscaled_ticks) - formatter = axis[:formatter] if formatter in (:auto, :plain, :scientific, :engineering) map(labelfunc(scale, backend()), Showoff.showoff(scaled_ticks, formatter)) elseif formatter == :latex @@ -213,50 +217,55 @@ function optimal_ticks_and_labels(sp::Subplot, axis::Axis, ticks = nothing) end # return (continuous_values, discrete_values) for the ticks on this axis -function get_ticks(sp::Subplot, axis::Axis) - ticks = _transform_ticks(axis[:ticks]) - ticks in (:none, nothing, false) && return nothing - - # treat :native ticks as :auto - ticks = ticks == :native ? :auto : ticks - - dvals = axis[:discrete_values] - cv, dv = if typeof(ticks) <: Symbol - if !isempty(dvals) - # discrete ticks... - n = length(dvals) - rng = if ticks == :auto - Int[round(Int,i) for i in range(1, stop=n, length=min(n,15))] - else # if ticks == :all - 1:n - end - axis[:continuous_values][rng], dvals[rng] - elseif ispolar(axis.sps[1]) && axis[:letter] == :x - #force theta axis to be full circle - (collect(0:pi/4:7pi/4), string.(0:45:315)) +function get_ticks(sp::Subplot, axis::Axis; update = true) + if update || !haskey(axis.plotattributes, :optimized_ticks) + dvals = axis[:discrete_values] + ticks = _transform_ticks(axis[:ticks]) + axis.plotattributes[:optimized_ticks] = if ticks isa Symbol && ticks !== :none && + ispolar(sp) && axis[:letter] === :x && !isempty(dvals) + collect(0:pi/4:7pi/4), string.(0:45:315) else - # compute optimal ticks and labels - optimal_ticks_and_labels(sp, axis) + cvals = axis[:continuous_values] + alims = axis_limits(sp, axis[:letter]) + scale = axis[:scale] + formatter = axis[:formatter] + get_ticks(ticks, cvals, dvals, alims, scale, formatter) end - elseif typeof(ticks) <: Union{AVec, Int} - if !isempty(dvals) && typeof(ticks) <: Int - rng = Int[round(Int,i) for i in range(1, stop=length(dvals), length=ticks)] - axis[:continuous_values][rng], dvals[rng] - else - # override ticks, but get the labels - optimal_ticks_and_labels(sp, axis, ticks) - end - elseif typeof(ticks) <: NTuple{2, Any} - # assuming we're passed (ticks, labels) - ticks - else - error("Unknown ticks type in get_ticks: $(typeof(ticks))") end - # @show ticks dvals cv dv - - return cv, dv + return axis.plotattributes[:optimized_ticks] end +function get_ticks(ticks::Symbol, cvals::T, dvals, args...) where T + if ticks === :none + return T[], String[] + elseif !isempty(dvals) + n = length(dvals) + if ticks === :all || n < 16 + return cvals, string.(dvals) + else + Δ = ceil(Int, n / 10) + rng = Δ:Δ:n + return cvals[rng], string.(dvals[rng]) + end + else + return optimal_ticks_and_labels(nothing, args...) + end +end +get_ticks(ticks::AVec, cvals, dvals, args...) = optimal_ticks_and_labels(ticks, args...) +function get_ticks(ticks::Int, dvals, cvals, args...) + if !isempty(dvals) + rng = round.(Int, range(1, stop=length(dvals), length=ticks)) + cvals[rng], string.(dvals[rng]) + else + optimal_ticks_and_labels(ticks, args...) + end +end +get_ticks(ticks::NTuple{2, Any}, args...) = ticks +get_ticks(::Nothing, cvals::T, args...) where T = T[], String[] +get_ticks(ticks::Bool, args...) = + ticks ? get_ticks(:auto, args...) : get_ticks(nothing, args...) +get_ticks(::T, args...) where T = error("Unknown ticks type in get_ticks: $T") + _transform_ticks(ticks) = ticks _transform_ticks(ticks::AbstractArray{T}) where T <: Dates.TimeType = Dates.value.(ticks) _transform_ticks(ticks::NTuple{2, Any}) = (_transform_ticks(ticks[1]), ticks[2]) @@ -578,391 +587,269 @@ end # ------------------------------------------------------------------------- # compute the line segments which should be drawn for this axis -function axis_drawing_info(sp::Subplot) - xaxis, yaxis = sp[:xaxis], sp[:yaxis] - xmin, xmax = axis_limits(sp, :x) - ymin, ymax = axis_limits(sp, :y) - xticks = get_ticks(sp, xaxis) - yticks = get_ticks(sp, yaxis) - xminorticks = get_minor_ticks(sp, xaxis, xticks) - yminorticks = get_minor_ticks(sp, yaxis, yticks) - xaxis_segs = Segments(2) - yaxis_segs = Segments(2) - xtick_segs = Segments(2) - ytick_segs = Segments(2) - xgrid_segs = Segments(2) - ygrid_segs = Segments(2) - xminorgrid_segs = Segments(2) - yminorgrid_segs = Segments(2) - xborder_segs = Segments(2) - yborder_segs = Segments(2) +function axis_drawing_info(sp, letter) + # find out which axis we are dealing with + asym = Symbol(letter, :axis) + isy = letter === :y + oletter = isy ? :x : :y + oasym = Symbol(oletter, :axis) + + # get axis objects, ticks and minor ticks + ax, oax = sp[asym], sp[oasym] + amin, amax = axis_limits(sp, letter) + oamin, oamax = axis_limits(sp, oletter) + ticks = get_ticks(sp, ax, update = false) + minor_ticks = get_minor_ticks(sp, ax, ticks) + + # initialize the segments + segments = Segments(2) + tick_segments = Segments(2) + grid_segments = Segments(2) + minorgrid_segments = Segments(2) + border_segments = Segments(2) if sp[:framestyle] != :none - # xaxis - y1, y2 = if sp[:framestyle] in (:origin, :zerolines) + oa1, oa2 = if sp[:framestyle] in (:origin, :zerolines) 0.0, 0.0 else - xor(xaxis[:mirror], yaxis[:flip]) ? (ymax, ymin) : (ymin, ymax) + xor(ax[:mirror], oax[:flip]) ? (oamax, oamin) : (oamin, oamax) end - if xaxis[:showaxis] + if ax[:showaxis] if sp[:framestyle] != :grid - push!(xaxis_segs, (xmin, y1), (xmax, y1)) + push!(segments, reverse_if((amin, oa1), isy), reverse_if((amax, oa1), isy)) # don't show the 0 tick label for the origin framestyle - if sp[:framestyle] == :origin && !(xticks in (:none, nothing, false)) && length(xticks) > 1 - showticks = xticks[1] .!= 0 - xticks = (xticks[1][showticks], xticks[2][showticks]) + if sp[:framestyle] == :origin && !(ticks in (:none, nothing, false)) && length(ticks) > 1 + i = findfirst(==(0), ticks[1]) + if i !== nothing + deleteat!(ticks[1], i) + deleteat!(ticks[2], i) + end end end - sp[:framestyle] in (:semi, :box) && push!(xborder_segs, (xmin, y2), (xmax, y2)) # top spine + if sp[:framestyle] in (:semi, :box) # top spine + push!( + border_segments, + reverse_if((amin, oa2), isy), + reverse_if((amax, oa2), isy), + ) + end end - if !(xaxis[:ticks] in (:none, nothing, false)) - f = RecipesPipeline.scale_func(yaxis[:scale]) - invf = RecipesPipeline.inverse_scale_func(yaxis[:scale]) + if !(ax[:ticks] in (:none, nothing, false)) + f = RecipesPipeline.scale_func(oax[:scale]) + invf = RecipesPipeline.inverse_scale_func(oax[:scale]) tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(ymax) - f(ymin))) + t = invf(f(0) + 0.012 * (f(oamax) - f(oamin))) (-t, t) else - ticks_in = xaxis[:tick_direction] == :out ? -1 : 1 - t = invf(f(y1) + 0.012 * (f(y2) - f(y1)) * ticks_in) - (y1, t) + ticks_in = ax[:tick_direction] == :out ? -1 : 1 + t = invf(f(oa1) + 0.012 * (f(oa2) - f(oa1)) * ticks_in) + (oa1, t) end - for xtick in xticks[1] - if xaxis[:showaxis] - push!(xtick_segs, (xtick, tick_start), (xtick, tick_stop)) # bottom tick + for tick in ticks[1] + if ax[:showaxis] + push!( + tick_segments, + reverse_if((tick, tick_start), isy), + reverse_if((tick, tick_stop), isy), + ) + end + if ax[:grid] + push!( + grid_segments, + reverse_if((tick, oamin), isy), + reverse_if((tick, oamax), isy), + ) end - xaxis[:grid] && push!(xgrid_segs, (xtick, ymin), (xtick, ymax)) # vertical grid end - if !(xaxis[:minorticks] in (:none, nothing, false)) || xaxis[:minorgrid] + if !(ax[:minorticks] in (:none, nothing, false)) || ax[:minorgrid] tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.006 * (f(ymax) - f(ymin))) + t = invf(f(0) + 0.006 * (f(oamax) - f(oamin))) (-t, t) else - t = invf(f(y1) + 0.006 * (f(y2) - f(y1)) * ticks_in) - (y1, t) + t = invf(f(oa1) + 0.006 * (f(oa2) - f(oa1)) * ticks_in) + (oa1, t) end - for xtick in xminorticks - if xaxis[:showaxis] - push!(xtick_segs, (xtick, tick_start), (xtick, tick_stop)) # bottom tick + for tick in minor_ticks + if ax[:showaxis] + push!( + tick_segments, + reverse_if((tick, tick_start), isy), + reverse_if((tick, tick_stop), isy), + ) end - xaxis[:minorgrid] && push!(xminorgrid_segs, (xtick, ymin), (xtick, ymax)) # vertical grid - end - end - end - - - # yaxis - x1, x2 = if sp[:framestyle] in (:origin, :zerolines) - 0.0, 0.0 - else - xor(yaxis[:mirror], xaxis[:flip]) ? (xmax, xmin) : (xmin, xmax) - end - if yaxis[:showaxis] - if sp[:framestyle] != :grid - push!(yaxis_segs, (x1, ymin), (x1, ymax)) - # don't show the 0 tick label for the origin framestyle - if sp[:framestyle] == :origin && !(yticks in (:none, nothing,false)) && length(yticks) > 1 - showticks = yticks[1] .!= 0 - yticks = (yticks[1][showticks], yticks[2][showticks]) - end - end - sp[:framestyle] in (:semi, :box) && push!(yborder_segs, (x2, ymin), (x2, ymax)) # right spine - end - if !(yaxis[:ticks] in (:none, nothing, false)) - f = RecipesPipeline.scale_func(xaxis[:scale]) - invf = RecipesPipeline.inverse_scale_func(xaxis[:scale]) - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(xmax) - f(xmin))) - (-t, t) - else - ticks_in = yaxis[:tick_direction] == :out ? -1 : 1 - t = invf(f(x1) + 0.012 * (f(x2) - f(x1)) * ticks_in) - (x1, t) - end - - for ytick in yticks[1] - if yaxis[:showaxis] - push!(ytick_segs, (tick_start, ytick), (tick_stop, ytick)) # left tick - end - yaxis[:grid] && push!(ygrid_segs, (xmin, ytick), (xmax, ytick)) # horizontal grid - end - - if !(yaxis[:minorticks] in (:none, nothing, false)) || yaxis[:minorgrid] - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.006 * (f(xmax) - f(xmin))) - (-t, t) - else - t = invf(f(x1) + 0.006 * (f(x2) - f(x1)) * ticks_in) - (x1, t) - end - for ytick in yminorticks - if yaxis[:showaxis] - push!(ytick_segs, (tick_start, ytick), (tick_stop, ytick)) # left tick - end - yaxis[:minorgrid] && push!(yminorgrid_segs, (xmin, ytick), (xmax, ytick)) # horizontal grid - end - end - end - end - - xticks, yticks, xaxis_segs, yaxis_segs, xtick_segs, ytick_segs, xgrid_segs, ygrid_segs, xminorgrid_segs, yminorgrid_segs, xborder_segs, yborder_segs -end - - -function axis_drawing_info_3d(sp::Subplot) - xaxis, yaxis, zaxis = sp[:xaxis], sp[:yaxis], sp[:zaxis] - xmin, xmax = axis_limits(sp, :x) - ymin, ymax = axis_limits(sp, :y) - zmin, zmax = axis_limits(sp, :z) - xticks = get_ticks(sp, xaxis) - yticks = get_ticks(sp, yaxis) - zticks = get_ticks(sp, zaxis) - xminorticks = get_minor_ticks(sp, xaxis, xticks) - yminorticks = get_minor_ticks(sp, yaxis, yticks) - zminorticks = get_minor_ticks(sp, zaxis, zticks) - xaxis_segs = Segments(3) - yaxis_segs = Segments(3) - zaxis_segs = Segments(3) - xtick_segs = Segments(3) - ytick_segs = Segments(3) - ztick_segs = Segments(3) - xgrid_segs = Segments(3) - ygrid_segs = Segments(3) - zgrid_segs = Segments(3) - xminorgrid_segs = Segments(3) - yminorgrid_segs = Segments(3) - zminorgrid_segs = Segments(3) - xborder_segs = Segments(3) - yborder_segs = Segments(3) - zborder_segs = Segments(3) - - if sp[:framestyle] != :none - - # xaxis - y1, y2 = if sp[:framestyle] in (:origin, :zerolines) - 0.0, 0.0 - else - xor(xaxis[:mirror], yaxis[:flip]) ? (ymax, ymin) : (ymin, ymax) - end - z1, z2 = if sp[:framestyle] in (:origin, :zerolines) - 0.0, 0.0 - else - xor(xaxis[:mirror], zaxis[:flip]) ? (zmax, zmin) : (zmin, zmax) - end - if xaxis[:showaxis] - if sp[:framestyle] != :grid - push!(xaxis_segs, (xmin, y1, z1), (xmax, y1, z1)) - # don't show the 0 tick label for the origin framestyle - if sp[:framestyle] == :origin && !(xticks in (:none, nothing, false)) && length(xticks) > 1 - showticks = xticks[1] .!= 0 - xticks = (xticks[1][showticks], xticks[2][showticks]) - end - end - sp[:framestyle] in (:semi, :box) && push!(xborder_segs, (xmin, y2, z2), (xmax, y2, z2)) # top spine - end - if !(xaxis[:ticks] in (:none, nothing, false)) - f = RecipesPipeline.scale_func(yaxis[:scale]) - invf = RecipesPipeline.inverse_scale_func(yaxis[:scale]) - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(ymax) - f(ymin))) - (-t, t) - else - ticks_in = xaxis[:tick_direction] == :out ? -1 : 1 - t = invf(f(y1) + 0.012 * (f(y2) - f(y1)) * ticks_in) - (y1, t) - end - - for xtick in xticks[1] - if xaxis[:showaxis] - push!(xtick_segs, (xtick, tick_start, z1), (xtick, tick_stop, z1)) # bottom tick - end - if xaxis[:grid] - if sp[:framestyle] in (:origin, :zerolines) - push!(xgrid_segs, (xtick, ymin, 0.0), (xtick, ymax, 0.0)) - push!(xgrid_segs, (xtick, 0.0, zmin), (xtick, 0.0, zmax)) - else - push!(xgrid_segs, (xtick, y1, z1), (xtick, y2, z1)) - push!(xgrid_segs, (xtick, y2, z1), (xtick, y2, z2)) - end - end - end - - if !(xaxis[:minorticks] in (:none, nothing, false)) || xaxis[:minorgrid] - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.006 * (f(ymax) - f(ymin))) - (-t, t) - else - t = invf(f(y1) + 0.006 * (f(y2) - f(y1)) * ticks_in) - (y1, t) - end - for xtick in xminorticks - if xaxis[:showaxis] - push!(xtick_segs, (xtick, tick_start, z1), (xtick, tick_stop, z1)) # bottom tick - end - if xaxis[:minorgrid] - if sp[:framestyle] in (:origin, :zerolines) - push!(xminorgrid_segs, (xtick, ymin, 0.0), (xtick, ymax, 0.0)) - push!(xminorgrid_segs, (xtick, 0.0, zmin), (xtick, 0.0, zmax)) - else - push!(xminorgrid_segs, (xtick, y1, z1), (xtick, y2, z1)) - push!(xminorgrid_segs, (xtick, y2, z1), (xtick, y2, z2)) - end - end - end - end - end - - - # yaxis - x1, x2 = if sp[:framestyle] in (:origin, :zerolines) - 0.0, 0.0 - else - xor(yaxis[:mirror], xaxis[:flip]) ? (xmin, xmax) : (xmax, xmin) - end - z1, z2 = if sp[:framestyle] in (:origin, :zerolines) - 0.0, 0.0 - else - xor(yaxis[:mirror], zaxis[:flip]) ? (zmax, zmin) : (zmin, zmax) - end - if yaxis[:showaxis] - if sp[:framestyle] != :grid - push!(yaxis_segs, (x1, ymin, z1), (x1, ymax, z1)) - # don't show the 0 tick label for the origin framestyle - if sp[:framestyle] == :origin && !(yticks in (:none, nothing,false)) && length(yticks) > 1 - showticks = yticks[1] .!= 0 - yticks = (yticks[1][showticks], yticks[2][showticks]) - end - end - sp[:framestyle] in (:semi, :box) && push!(yborder_segs, (x2, ymin, z2), (x2, ymax, z2)) # right spine - end - if !(yaxis[:ticks] in (:none, nothing, false)) - f = RecipesPipeline.scale_func(xaxis[:scale]) - invf = RecipesPipeline.inverse_scale_func(xaxis[:scale]) - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(xmax) - f(xmin))) - (-t, t) - else - ticks_in = yaxis[:tick_direction] == :out ? -1 : 1 - t = invf(f(x1) + 0.012 * (f(x2) - f(x1)) * ticks_in) - (x1, t) - end - - for ytick in yticks[1] - if yaxis[:showaxis] - push!(ytick_segs, (tick_start, ytick, z1), (tick_stop, ytick, z1)) # left tick - end - if yaxis[:grid] - if sp[:framestyle] in (:origin, :zerolines) - push!(ygrid_segs, (xmin, ytick, 0.0), (xmax, ytick, 0.0)) - push!(ygrid_segs, (0.0, ytick, zmin), (0.0, ytick, zmax)) - else - push!(ygrid_segs, (x1, ytick, z1), (x2, ytick, z1)) - push!(ygrid_segs, (x2, ytick, z1), (x2, ytick, z2)) - end - end - end - - if !(yaxis[:minorticks] in (:none, nothing, false)) || yaxis[:minorgrid] - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.006 * (f(xmax) - f(xmin))) - (-t, t) - else - t = invf(f(x1) + 0.006 * (f(x2) - f(x1)) * ticks_in) - (x1, t) - end - for ytick in yminorticks - if yaxis[:showaxis] - push!(ytick_segs, (tick_start, ytick, z1), (tick_stop, ytick, z1)) # left tick - end - if yaxis[:minorgrid] - if sp[:framestyle] in (:origin, :zerolines) - push!(yminorgrid_segs, (xmin, ytick, 0.0), (xmax, ytick, 0.0)) - push!(yminorgrid_segs, (0.0, ytick, zmin), (0.0, ytick, zmax)) - else - push!(yminorgrid_segs, (x1, ytick, z1), (x2, ytick, z1)) - push!(yminorgrid_segs, (x2, ytick, z1), (x2, ytick, z2)) - end - end - end - end - end - - - # zaxis - x1, x2 = if sp[:framestyle] in (:origin, :zerolines) - 0.0, 0.0 - else - xor(zaxis[:mirror], xaxis[:flip]) ? (xmax, xmin) : (xmin, xmax) - end - y1, y2 = if sp[:framestyle] in (:origin, :zerolines) - 0.0, 0.0 - else - xor(zaxis[:mirror], yaxis[:flip]) ? (ymax, ymin) : (ymin, ymax) - end - if zaxis[:showaxis] - if sp[:framestyle] != :grid - push!(zaxis_segs, (x1, y1, zmin), (x1, y1, zmax)) - # don't show the 0 tick label for the origin framestyle - if sp[:framestyle] == :origin && !(zticks in (:none, nothing,false)) && length(zticks) > 1 - showticks = zticks[1] .!= 0 - zticks = (zticks[1][showticks], zticks[2][showticks]) - end - end - sp[:framestyle] in (:semi, :box) && push!(zborder_segs, (x2, y2, zmin), (x2, y2, zmax)) - end - if !(zaxis[:ticks] in (:none, nothing, false)) - f = RecipesPipeline.scale_func(xaxis[:scale]) - invf = RecipesPipeline.inverse_scale_func(xaxis[:scale]) - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(ymax) - f(ymin))) - (-t, t) - else - ticks_in = zaxis[:tick_direction] == :out ? -1 : 1 - t = invf(f(y1) + 0.012 * (f(y2) - f(y1)) * ticks_in) - (y1, t) - end - - for ztick in zticks[1] - if zaxis[:showaxis] - push!(ztick_segs, (x1, tick_start, ztick), (x1, tick_stop, ztick)) # left tick - end - if zaxis[:grid] - if sp[:framestyle] in (:origin, :zerolines) - push!(zgrid_segs, (xmin, 0.0, ztick), (xmax, 0.0, ztick)) - push!(ygrid_segs, (0.0, ymin, ztick), (0.0, ymax, ztick)) - else - push!(ygrid_segs, (x1, y1, ztick), (x1, y2, ztick)) - push!(ygrid_segs, (x1, y2, ztick), (x2, y2, ztick)) - end - end - end - - if !(zaxis[:minorticks] in (:none, nothing, false)) || zaxis[:minorgrid] - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.006 * (f(ymax) - f(ymin))) - (-t, t) - else - t = invf(f(y1) + 0.006 * (f(y2) - f(y1)) * ticks_in) - (y1, t) - end - for ztick in zminorticks - if zaxis[:showaxis] - push!(ztick_segs, (x1, tick_start, ztick), (x1, tick_stop, ztick)) # left tick - end - if zaxis[:minorgrid] - if sp[:framestyle] in (:origin, :zerolines) - push!(zminorgrid_segs, (xmin, 0.0, ztick), (xmax, 0.0, ztick)) - push!(zminorgrid_segs, (0.0, ymin, ztick), (0.0, ymax, ztick)) - else - push!(zminorgrid_segs, (x1, y1, ztick), (x1, y2, ztick)) - push!(zminorgrid_segs, (x1, y2, ztick), (x2, y2, ztick)) - end + if ax[:minorgrid] + push!( + minorgrid_segments, + reverse_if((tick, oamin), isy), + reverse_if((tick, oamax), isy), + ) end end end end end - xticks, yticks, zticks, xaxis_segs, yaxis_segs, zaxis_segs, xtick_segs, ytick_segs, ztick_segs, xgrid_segs, ygrid_segs, zgrid_segs, xminorgrid_segs, yminorgrid_segs, zminorgrid_segs, xborder_segs, yborder_segs, zborder_segs + return ( + ticks = ticks, + segments = segments, + tick_segments = tick_segments, + grid_segments = grid_segments, + minorgrid_segments = minorgrid_segments, + border_segments = border_segments + ) end + +function sort_3d_axes(a, b, c, letter) + if letter === :x + a, b, c + elseif letter === :y + b, a, c + else + c, b, a + end +end + +function axis_drawing_info_3d(sp, letter) + near_letter = letter in (:x, :z) ? :y : :x + far_letter = letter in (:x, :y) ? :z : :x + + ax = sp[Symbol(letter, :axis)] + nax = sp[Symbol(near_letter, :axis)] + fax = sp[Symbol(far_letter, :axis)] + + amin, amax = axis_limits(sp, letter) + namin, namax = axis_limits(sp, near_letter) + famin, famax = axis_limits(sp, far_letter) + + ticks = get_ticks(sp, ax, update = false) + minor_ticks = get_minor_ticks(sp, ax, ticks) + + # initialize the segments + segments = Segments(3) + tick_segments = Segments(3) + grid_segments = Segments(3) + minorgrid_segments = Segments(3) + border_segments = Segments(3) + + + if sp[:framestyle] != :none# && letter === :x + na0, na1 = if sp[:framestyle] in (:origin, :zerolines) + 0, 0 + else + # reverse_if((namin, namax), xor(ax[:mirror], nax[:flip])) + reverse_if(reverse_if((namin, namax), letter === :y), xor(ax[:mirror], nax[:flip])) + end + fa0, fa1 = if sp[:framestyle] in (:origin, :zerolines) + 0, 0 + else + reverse_if((famin, famax), xor(ax[:mirror], fax[:flip])) + end + if ax[:showaxis] + if sp[:framestyle] != :grid + push!( + segments, + sort_3d_axes(amin, na0, fa0, letter), + sort_3d_axes(amax, na0, fa0, letter), + ) + # don't show the 0 tick label for the origin framestyle + if sp[:framestyle] == :origin && !(ticks in (:none, nothing, false)) && length(ticks) > 1 + i0 = findfirst(==(0), ticks[1]) + if ind !== nothing + deleteat!(ticks[1], i0) + deleteat!(ticks[2], i0) + end + end + end + if sp[:framestyle] in (:semi, :box) + push!( + border_segments, + sort_3d_axes(amin, na1, fa1, letter), + sort_3d_axes(amax, na1, fa1, letter), + ) + end + end + # TODO this can be simplified, we do almost the same thing twice for grid and minorgrid + if !(ax[:ticks] in (:none, nothing, false)) + f = RecipesPipeline.scale_func(nax[:scale]) + invf = RecipesPipeline.inverse_scale_func(nax[:scale]) + tick_start, tick_stop = if sp[:framestyle] == :origin + t = invf(f(0) + 0.012 * (f(namax) - f(namin))) + (-t, t) + else + ticks_in = ax[:tick_direction] == :out ? -1 : 1 + t = invf(f(na0) + 0.012 * (f(na1) - f(na0)) * ticks_in) + (na0, t) + end + + ga0, ga1 = sp[:framestyle] in (:origin, :zerolines) ? (namin, namax) : (na0, na1) + for tick in ticks[1] + if ax[:showaxis] + push!( + tick_segments, + sort_3d_axes(tick, tick_start, fa0, letter), + sort_3d_axes(tick, tick_stop, fa0, letter), + ) + end + if ax[:grid] + push!( + grid_segments, + sort_3d_axes(tick, ga0, fa0, letter), + sort_3d_axes(tick, ga1, fa0, letter), + ) + push!( + grid_segments, + sort_3d_axes(tick, ga1, fa0, letter), + sort_3d_axes(tick, ga1, fa1, letter), + ) + end + end + + if !(ax[:minorticks] in (:none, nothing, false)) || ax[:minorgrid] + tick_start, tick_stop = if sp[:framestyle] == :origin + t = invf(f(0) + 0.006 * (f(namax) - f(namin))) + (-t, t) + else + t = invf(f(na0) + 0.006 * (f(na1) - f(na0)) * ticks_in) + (na0, t) + end + for tick in minor_ticks + if ax[:showaxis] + push!( + tick_segments, + sort_3d_axes(tick, tick_start, fa0, letter), + sort_3d_axes(tick, tick_stop, fa0, letter), + ) + end + if ax[:minorgrid] + push!( + minorgrid_segments, + sort_3d_axes(tick, ga0, fa0, letter), + sort_3d_axes(tick, ga1, fa0, letter), + ) + push!( + minorgrid_segments, + sort_3d_axes(tick, ga1, fa0, letter), + sort_3d_axes(tick, ga1, fa1, letter), + ) + end + end + end + end + end + + return ( + ticks = ticks, + segments = segments, + tick_segments = tick_segments, + grid_segments = grid_segments, + minorgrid_segments = minorgrid_segments, + border_segments = border_segments + ) +end + +reverse_if(x, cond) = cond ? reverse(x) : x +axis_tuple(x, y, letter) = reverse_if((x, y), letter === :y) + +axes_shift(t, i) = i % 3 == 0 ? t : i % 3 == 1 ? (t[3], t[1], t[2]) : (t[2], t[3], t[1]) diff --git a/src/backends.jl b/src/backends.jl index 68aaca71..c6c54f22 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -316,7 +316,6 @@ const _gr_attr = merge_with_base_supported([ :layout, :title, :window_title, :guide, :lims, :ticks, :scale, :flip, - :match_dimensions, :titlefontfamily, :titlefontsize, :titlefonthalign, :titlefontvalign, :titlefontrotation, :titlefontcolor, :legendfontfamily, :legendfontsize, :legendfonthalign, :legendfontvalign, @@ -367,10 +366,10 @@ is_marker_supported(::GRBackend, shape::Shape) = true function _initialize_backend(pkg::PlotlyBackend) try @eval Main begin - import ORCA + import PlotlyBase end catch - @info "For saving to png with the Plotly backend ORCA has to be installed." + @info "For saving to png with the Plotly backend PlotlyBase has to be installed." end end @@ -472,7 +471,6 @@ const _pgfplots_attr = merge_with_base_supported([ :polar, # :normalize, :weights, :contours, :aspect_ratio, - # :match_dimensions, :tick_direction, :framestyle, :camera, @@ -488,7 +486,7 @@ const _pgfplots_scale = [:identity, :ln, :log2, :log10] function _initialize_backend(pkg::PlotlyJSBackend) @eval Main begin - import PlotlyJS, ORCA + import PlotlyJS export PlotlyJS end end @@ -533,6 +531,10 @@ const _pyplot_attr = merge_with_base_supported([ :guidefontfamily, :guidefontsize, :guidefontcolor, :grid, :gridalpha, :gridstyle, :gridlinewidth, :legend, :legendtitle, :colorbar, :colorbar_title, :colorbar_entry, + :colorbar_ticks, :colorbar_tickfontfamily, :colorbar_tickfontsize, + :colorbar_tickfonthalign, :colorbar_tickfontvalign, + :colorbar_tickfontrotation, :colorbar_tickfontcolor, + :colorbar_scale, :marker_z, :line_z, :fill_z, :levels, :ribbon, :quiver, :arrow, @@ -541,7 +543,6 @@ const _pyplot_attr = merge_with_base_supported([ :polar, :normalize, :weights, :contours, :aspect_ratio, - :match_dimensions, :clims, :inset_subplots, :dpi, @@ -627,7 +628,6 @@ const _hdf5_attr = merge_with_base_supported([ :polar, :normalize, :weights, :contours, :aspect_ratio, - :match_dimensions, :clims, :inset_subplots, :dpi, @@ -700,7 +700,6 @@ const _inspectdr_attr = merge_with_base_supported([ :polar, # :normalize, :weights, # :contours, :aspect_ratio, - :match_dimensions, # :clims, # :inset_subplots, :dpi, @@ -761,7 +760,6 @@ const _pgfplotsx_attr = merge_with_base_supported([ :ticks, :scale, :flip, - :match_dimensions, :titlefontfamily, :titlefontsize, :titlefonthalign, @@ -824,6 +822,7 @@ const _pgfplotsx_seriestype = [ :surface, :wireframe, :heatmap, + :mesh3d, :contour, :contour3d, :quiver, @@ -847,6 +846,7 @@ const _pgfplotsx_marker = [ :rtriangle, :cross, :xcross, + :x, :star5, :pentagon, :hline, diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 12bebe41..e196797d 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -42,18 +42,50 @@ gr_halign(k) = (left = 1, hcenter = 2, right = 3)[k] gr_valign(k) = (top = 1, vcenter = 3, bottom = 5)[k] const gr_font_family = Dict( - "times" => 1, - "helvetica" => 5, - "courier" => 9, - "bookman" => 14, - "newcenturyschlbk" => 18, - "avantgarde" => 22, - "palatino" => 26 -) - -const gr_vector_font = Dict( + # compat: + "times" => 101, + "helvetica" => 105, + "courier" => 109, + "bookman" => 114, + "newcenturyschlbk" => 118, + "avantgarde" => 122, + "palatino" => 126, "serif-roman" => 232, - "sans-serif" => 233 + "sans-serif" => 233, + # https://gr-framework.org/fonts.html: + "times roman" => 101, + "times italic" => 102, + "times bold" => 103, + "times bold italic" => 104, + "helvetica" => 105, + "helvetica oblique" => 106, + "helvetica bold" => 107, + "helvetica bold oblique" => 108, + "courier" => 109, + "courier oblique" => 110, + "courier bold" => 111, + "courier bold oblique" => 112, + "symbol" => 113, + "bookman light" => 114, + "bookman light italic" => 115, + "bookman demi" => 116, + "bookman demi italic" => 117, + "new century schoolbook roman" => 118, + "new century schoolbook italic" => 119, + "new century schoolbook bold" => 120, + "new century schoolbook bold italic" => 121, + "avantgarde book" => 122, + "avantgarde book oblique" => 123, + "avantgarde demi" => 124, + "avantgarde demi oblique" => 125, + "palatino roman" => 126, + "palatino italic" => 127, + "palatino bold" => 128, + "palatino bold italic" => 129, + "zapf chancery medium italic" => 130, + "zapf dingbats" => 131, + "computer modern" => 232, + "dejavu sans" => 233, ) # -------------------------------------------------------------------------------------- @@ -182,24 +214,24 @@ function gr_polyline3d(x, y, z, func = GR.polyline3d) end end -gr_inqtext(x, y, s::Symbol) = gr_inqtext(x, y, string(s)) +gr_inqtext(x, y, s) = gr_inqtext(x, y, string(s)) -function gr_inqtext(x, y, s) +function gr_inqtext(x, y, s::AbstractString) if length(s) >= 2 && s[1] == '$' && s[end] == '$' GR.inqmathtex(x, y, s[2:end-1]) - elseif findfirst(isequal('\\'), s) !== nothing || occursin("10^{", s) + elseif occursin('\\', s) || occursin("10^{", s) GR.inqtextext(x, y, s) else GR.inqtext(x, y, s) end end -gr_text(x, y, s::Symbol) = gr_text(x, y, string(s)) +gr_text(x, y, s) = gr_text(x, y, string(s)) -function gr_text(x, y, s) +function gr_text(x, y, s::AbstractString) if length(s) >= 2 && s[1] == '$' && s[end] == '$' GR.mathtex(x, y, s[2:end-1]) - elseif findfirst(isequal('\\'), s) !== nothing || occursin("10^{", s) + elseif occursin('\\', s) || occursin("10^{", s) GR.textext(x, y, s) else GR.text(x, y, s) @@ -215,7 +247,7 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) a = α .+ 90 sinf = sind.(a) cosf = cosd.(a) - rtick_values, rtick_labels = get_ticks(sp, yaxis) + rtick_values, rtick_labels = get_ticks(sp, yaxis, update = false) #draw angular grid if xaxis[:grid] @@ -316,7 +348,7 @@ function gr_draw_marker(series, xi, yi, clims, i, msize, strokewidth, shape::Sha GR.selntran(1) end -function nominal_size(s) +function gr_nominal_size(s) w, h = get_size(s) min(w, h) / 500 end @@ -328,50 +360,20 @@ function gr_draw_marker(series, xi, yi, clims, i, msize, strokewidth, shape::Sym gr_set_markercolor(get_markercolor(series, clims, i)); gr_set_transparency(get_markeralpha(series, i)) GR.setmarkertype(gr_markertype(shape)) - GR.setmarkersize(0.3msize / nominal_size(series)) + GR.setmarkersize(0.3msize / gr_nominal_size(series)) GR.polymarker([xi], [yi]) end -# draw the markers, one at a time -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, rng) in enumerate(iter_segments(series, :scatter)) - rng = intersect(eachindex(x), rng) - if !isempty(rng) - ms = get_thickness_scaling(series) * _cycle(msize, i) - msw = get_thickness_scaling(series) * _cycle(strokewidth, i) - shape = _cycle(shapes, i) - for j in rng - gr_draw_marker(series, _cycle(x, j), _cycle(y, j), clims, i, ms, msw, shape) - end - end - end - end -end - # --------------------------------------------------------- function gr_set_line(lw, style, c, s) # s can be Subplot or Series GR.setlinetype(gr_linetype(style)) - GR.setlinewidth(get_thickness_scaling(s) * max(0, lw / nominal_size(s))) + GR.setlinewidth(get_thickness_scaling(s) * max(0, lw / gr_nominal_size(s))) gr_set_linecolor(c) end - function gr_set_fill(c) #, a) gr_set_fillcolor(c) #, a) GR.setfillintstyle(GR.INTSTYLE_SOLID) @@ -388,9 +390,10 @@ function gr_set_font(f::Font, s; halign = f.halign, valign = f.valign, GR.setcharheight(gr_point_mult(s) * f.pointsize) GR.setcharup(sind(-rotation), cosd(-rotation)) if haskey(gr_font_family, family) - GR.settextfontprec(100 + gr_font_family[family], GR.TEXT_PRECISION_STRING) - elseif haskey(gr_vector_font, family) - GR.settextfontprec(gr_vector_font[family], 3) + GR.settextfontprec( + gr_font_family[family], + gr_font_family[family] >= 200 ? 3 : GR.TEXT_PRECISION_STRING + ) end gr_set_textcolor(color) GR.settextalign(gr_halign(halign), gr_valign(valign)) @@ -589,61 +592,6 @@ function alignment(symb) return GR.TEXT_HALIGN_CENTER end -function gr_legend_pos(sp::Subplot, w, h, viewport_plotarea) - legend_leftw, legend_rightw, legend_textw, x_legend_offset = w - legend_dy, legendh, y_legend_offset = h - s = sp[:legend] - typeof(s) <: Symbol || return gr_legend_pos(s, w, h, viewport_plotarea) - str = string(s) - if str == "best" - str = "topright" - end - if occursin("outer", str) - xaxis, yaxis = sp[:xaxis], sp[:yaxis] - xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) - ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) - end - if occursin("right", str) - if occursin("outer", str) - # As per https://github.com/jheinen/GR.jl/blob/master/src/jlgr.jl#L525 - xpos = viewport_plotarea[2] + x_legend_offset + legend_leftw + ymirror * gr_axis_width(sp, sp[:yaxis]) - else - xpos = viewport_plotarea[2] - legend_rightw - legend_textw - x_legend_offset - end - elseif occursin("left", str) - if occursin("outer", str) - xpos = viewport_plotarea[1] - !ymirror * gr_axis_width(sp, sp[:yaxis]) - x_legend_offset * 2 - legend_rightw - legend_textw - else - xpos = viewport_plotarea[1] + legend_leftw + x_legend_offset - end - else - xpos = (viewport_plotarea[2]-viewport_plotarea[1])/2 + viewport_plotarea[1] + legend_leftw - legend_rightw - legend_textw - x_legend_offset * 2 - end - if occursin("top", str) - if s == :outertop - ypos = viewport_plotarea[4] + y_legend_offset + legendh + xmirror * gr_axis_height(sp, sp[:xaxis]) - else - ypos = viewport_plotarea[4] - y_legend_offset - legend_dy - end - elseif occursin("bottom", str) - if s == :outerbottom - ypos = viewport_plotarea[3] - y_legend_offset - legendh - !xmirror * gr_axis_height(sp, sp[:xaxis]) - else - ypos = viewport_plotarea[3] + legendh + y_legend_offset - end - else - # Adding min y to shift legend pos to correct graph (#2377) - ypos = (viewport_plotarea[4]-viewport_plotarea[3])/2 + legendh/2 + viewport_plotarea[3] - end - (xpos,ypos) -end - -function gr_legend_pos(v::Tuple{S,T}, w, h, viewport_plotarea) where {S<:Real, T<:Real} - xpos = v[1] * (viewport_plotarea[2] - viewport_plotarea[1]) + viewport_plotarea[1] - ypos = v[2] * (viewport_plotarea[4] - viewport_plotarea[3]) + viewport_plotarea[3] - (xpos,ypos) -end - # -------------------------------------------------------------------------------------- function gr_set_gradient(c) @@ -665,9 +613,6 @@ function gr_display(plt::Plot, fmt="") GR.clearws() dpi_factor = plt[:dpi] / Plots.DPI - if fmt == "svg" - dpi_factor *= 4 - end # collect some monitor/display sizes in meters and pixels display_width_meters, display_height_meters, display_width_px, display_height_px = GR.inqdspsize() @@ -704,32 +649,23 @@ function gr_display(plt::Plot, fmt="") GR.updatews() end - -function gr_set_xticks_font(sp) - flip = sp[:yaxis][:flip] - mirror = sp[:xaxis][:mirror] +function gr_set_tickfont(sp, letter) + axis = sp[Symbol(letter, :axis)] + if letter === :x || (RecipesPipeline.is3d(sp) && letter === :y) + halign = (:left, :hcenter, :right)[sign(axis[:rotation]) + 2] + valign = (axis[:mirror] ? :bottom : :top) + else + halign = (axis[:mirror] ? :left : :right) + valign = (:top, :vcenter, :bottom)[sign(axis[:rotation]) + 2] + end gr_set_font( - tickfont(sp[:xaxis]), + tickfont(axis), sp, - halign = (:left, :hcenter, :right)[sign(sp[:xaxis][:rotation]) + 2], - valign = (mirror ? :bottom : :top), - rotation = sp[:xaxis][:rotation], + halign = halign, + valign = valign, + rotation = axis[:rotation], + color = axis[:tickfontcolor], ) - return flip, mirror -end - - -function gr_set_yticks_font(sp) - flip = sp[:xaxis][:flip] - mirror = sp[:yaxis][:mirror] - gr_set_font( - tickfont(sp[:yaxis]), - sp, - halign = (mirror ? :left : :right), - valign = (:top, :vcenter, :bottom)[sign(sp[:yaxis][:rotation]) + 2], - rotation = sp[:yaxis][:rotation], - ) - return flip, mirror end function gr_text_size(str) @@ -777,7 +713,7 @@ end function gr_axis_height(sp, axis) GR.savestate() - ticks = get_ticks(sp, axis) + ticks = get_ticks(sp, axis, update = false) gr_set_font(tickfont(axis), sp) h = (ticks in (nothing, false, :none) ? 0 : last(gr_get_ticks_size(ticks, axis[:rotation]))) if axis[:guide] != "" @@ -790,7 +726,7 @@ end function gr_axis_width(sp, axis) GR.savestate() - ticks = get_ticks(sp, axis) + ticks = get_ticks(sp, axis, update = false) gr_set_font(tickfont(axis), sp) w = (ticks in (nothing, false, :none) ? 0 : first(gr_get_ticks_size(ticks, axis[:rotation]))) if axis[:guide] != "" @@ -827,7 +763,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) xticks, yticks, zticks = get_ticks(sp, xaxis), get_ticks(sp, yaxis), get_ticks(sp, zaxis) # Add margin for x and y ticks h = 0mm - if !(xticks in (nothing, false, :none)) + if !isempty(first(xticks)) gr_set_font( tickfont(xaxis), halign = (:left, :hcenter, :right)[sign(xaxis[:rotation]) + 2], @@ -838,7 +774,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) l = 0.01 + last(gr_get_ticks_size(xticks, xaxis[:rotation])) h = max(h, 1mm + get_size(sp)[2] * l * px) end - if !(yticks in (nothing, false, :none)) + if !isempty(first(yticks)) gr_set_font( tickfont(yaxis), halign = (:left, :hcenter, :right)[sign(yaxis[:rotation]) + 2], @@ -858,7 +794,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) end end - if !(zticks in (nothing, false, :none)) + if !isempty(first(zticks)) gr_set_font( tickfont(zaxis), halign = (zaxis[:mirror] ? :left : :right), @@ -909,21 +845,21 @@ function _update_min_padding!(sp::Subplot{GRBackend}) else # Add margin for x and y ticks xticks, yticks = get_ticks(sp, sp[:xaxis]), get_ticks(sp, sp[:yaxis]) - if !(xticks in (nothing, false, :none)) - flip, mirror = gr_set_xticks_font(sp) + if !isempty(first(xticks)) + gr_set_tickfont(sp, :x) l = 0.01 + last(gr_get_ticks_size(xticks, sp[:xaxis][:rotation])) h = 1mm + get_size(sp)[2] * l * px - if mirror + if sp[:xaxis][:mirror] toppad += h else bottompad += h end end - if !(yticks in (nothing, false, :none)) - flip, mirror = gr_set_yticks_font(sp) + if !isempty(first(yticks)) + gr_set_tickfont(sp, :y) l = 0.01 + first(gr_get_ticks_size(yticks, sp[:yaxis][:rotation])) w = 1mm + get_size(sp)[1] * l * px - if mirror + if sp[:yaxis][:mirror] rightpad += w else leftpad += w @@ -970,38 +906,257 @@ function get_z_normalized(z, clims...) return remap(clamp(z, clims...), clims...) end +function gr_clims(args...) + lo, hi = get_clims(args...) + if lo == hi + if lo == 0 + hi = one(hi) + elseif lo < 0 + hi = zero(hi) + else + lo = zero(lo) + end + end + return lo, hi +end + function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) _update_min_padding!(sp) # the viewports for this subplot viewport_subplot = gr_viewport_from_bbox(sp, bbox(sp), w, h, viewport_canvas) viewport_plotarea = gr_viewport_from_bbox(sp, plotarea(sp), w, h, viewport_canvas) - # get data limits - data_lims = gr_xy_axislims(sp) - xy_lims = data_lims - ratio = get_aspect_ratio(sp) - if ratio != :none - if ratio == :equal - ratio = 1 - end - viewport_ratio = (viewport_plotarea[2] - viewport_plotarea[1]) / (viewport_plotarea[4] - viewport_plotarea[3]) - window_ratio = (data_lims[2] - data_lims[1]) / (data_lims[4] - data_lims[3]) / ratio - if window_ratio < viewport_ratio - viewport_center = 0.5 * (viewport_plotarea[1] + viewport_plotarea[2]) - viewport_size = (viewport_plotarea[2] - viewport_plotarea[1]) * window_ratio / viewport_ratio - viewport_plotarea[1] = viewport_center - 0.5 * viewport_size - viewport_plotarea[2] = viewport_center + 0.5 * viewport_size - elseif window_ratio > viewport_ratio - viewport_center = 0.5 * (viewport_plotarea[3] + viewport_plotarea[4]) - viewport_size = (viewport_plotarea[4] - viewport_plotarea[3]) * viewport_ratio / window_ratio - viewport_plotarea[3] = viewport_center - 0.5 * viewport_size - viewport_plotarea[4] = viewport_center + 0.5 * viewport_size - end + # update viewport_plotarea + leg = gr_get_legend_geometry(viewport_plotarea, sp) + gr_update_viewport_legend!(viewport_plotarea, sp, leg) + gr_update_viewport_ratio!(viewport_plotarea, sp) + + # fill in the plot area background + gr_fill_plotarea(sp, viewport_plotarea) + + # set our plot area view + GR.setviewport(viewport_plotarea...) + + # set the scale flags and window + gr_set_window(sp, viewport_plotarea) + + # draw the axes + gr_draw_axes(sp, viewport_plotarea) + gr_add_title(sp, viewport_plotarea, viewport_subplot) + + # this needs to be here to point the colormap to the right indices + GR.setcolormap(1000 + GR.COLORMAP_COOLWARM) + + # init the colorbar + cbar = GRColorbar() + + for series in series_list(sp) + gr_add_series(sp, series) + gr_update_colorbar!(cbar, series) end - # calculate legend size - # has to be done now due to a potential adjustment to the plotarea given an outer legend. + # draw the colorbar + hascolorbar(sp) && gr_draw_colorbar(cbar, sp, gr_clims(sp), viewport_plotarea) + + # add the legend + gr_add_legend(sp, leg, viewport_plotarea) + + # add annotations + for ann in sp[:annotations] + x, y, val = locate_annotation(sp, ann...) + x, y = if RecipesPipeline.is3d(sp) + gr_w3tondc(x, y, z) + else + GR.wctondc(x, y) + end + gr_set_font(val.font, sp) + gr_text(x, y, val.str) + end +end + + +## Legend + +function gr_add_legend(sp, leg, viewport_plotarea) + if !(sp[:legend] in(:none, :inline)) + GR.savestate() + GR.selntran(0) + GR.setscale(0) + gr_set_font(legendfont(sp), sp) + if leg.w > 0 + xpos, ypos = gr_legend_pos(sp, leg, viewport_plotarea) + GR.setfillintstyle(GR.INTSTYLE_SOLID) + gr_set_fillcolor(sp[:background_color_legend]) + GR.fillrect( + xpos - leg.leftw, xpos + leg.textw + leg.rightw, + ypos + leg.dy, ypos - leg.h + ) # Allocating white space for actual legend width here + gr_set_line(1, :solid, sp[:foreground_color_legend], sp) + GR.drawrect( + xpos - leg.leftw, xpos + leg.textw + leg.rightw, + ypos + leg.dy, ypos - leg.h + ) # Drawing actual legend width here + i = 0 + if sp[:legendtitle] !== nothing + GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_HALF) + gr_set_font(legendtitlefont(sp), sp) + gr_text(xpos - 0.03 + 0.5 * leg.w, ypos, string(sp[:legendtitle])) + ypos -= leg.dy + gr_set_font(legendfont(sp), sp) + end + for series in series_list(sp) + clims = gr_clims(sp, series) + should_add_to_legend(series) || continue + st = series[:seriestype] + lc = get_linecolor(series, clims) + gr_set_line(sp[:legendfontsize] / 8, get_linestyle(series), lc, sp) + + if (st == :shape || series[:fillrange] !== nothing) && series[:ribbon] === nothing + fc = get_fillcolor(series, clims) + gr_set_fill(fc) #, series[:fillalpha]) + l, r = xpos - leg.width_factor * 3.5, xpos - leg.width_factor / 2 + b, t = ypos - 0.4 * leg.dy, ypos + 0.4 * leg.dy + x = [l, r, r, l, l] + y = [b, b, t, t, b] + gr_set_transparency(fc, get_fillalpha(series)) + gr_polyline(x, y, GR.fillarea) + lc = get_linecolor(series, clims) + gr_set_transparency(lc, get_linealpha(series)) + gr_set_line(get_linewidth(series), get_linestyle(series), lc, sp) + st == :shape && gr_polyline(x, y) + end + + if st in (:path, :straightline, :path3d) + gr_set_transparency(lc, get_linealpha(series)) + if series[:fillrange] === nothing || series[:ribbon] !== nothing + GR.polyline( + [xpos - leg.width_factor * 3.5, xpos - leg.width_factor / 2], + [ypos, ypos], + ) + else + GR.polyline( + [xpos - leg.width_factor * 3.5, xpos - leg.width_factor / 2], + [ypos + 0.4 * leg.dy, ypos + 0.4 * leg.dy], + ) + end + end + + if series[:markershape] != :none + 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 - leg.width_factor * 2, ypos, clims, s, sw) + end + + lab = series[:label] + GR.settextalign(GR.TEXT_HALIGN_LEFT, GR.TEXT_VALIGN_HALF) + gr_set_textcolor(plot_color(sp[:legendfontcolor])) + gr_text(xpos, ypos, string(lab)) + ypos -= leg.dy + end + end + GR.selntran(1) + GR.restorestate() + end +end + +function gr_legend_pos(sp::Subplot, leg, viewport_plotarea) + s = sp[:legend] + s isa Real && return gr_legend_pos(s, leg, viewport_plotarea) + if s isa Tuple{<:Real,Symbol} + if s[2] !== :outer + return gr_legend_pos(s[1], leg, viewport_plotarea) + end + + xaxis, yaxis = sp[:xaxis], sp[:yaxis] + xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) + axisclearance = [ + !ymirror*gr_axis_width(sp, sp[:yaxis]), + ymirror*gr_axis_width(sp,sp[:yaxis]), + !xmirror*gr_axis_height(sp,sp[:xaxis]), + xmirror*gr_axis_height(sp,sp[:xaxis]), + ] + return gr_legend_pos(s[1], leg, viewport_plotarea; axisclearance) + end + s isa Symbol || return gr_legend_pos(s, viewport_plotarea) + str = string(s) + if str == "best" + str = "topright" + end + if occursin("outer", str) + xaxis, yaxis = sp[:xaxis], sp[:yaxis] + xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) + end + if occursin("right", str) + if occursin("outer", str) + # As per https://github.com/jheinen/GR.jl/blob/master/src/jlgr.jl#L525 + xpos = viewport_plotarea[2] + leg.xoffset + leg.leftw + ymirror * gr_axis_width(sp, sp[:yaxis]) + else + xpos = viewport_plotarea[2] - leg.rightw - leg.textw - leg.xoffset + end + elseif occursin("left", str) + if occursin("outer", str) + xpos = viewport_plotarea[1] - !ymirror * gr_axis_width(sp, sp[:yaxis]) - leg.xoffset * 2 - leg.rightw - leg.textw + else + xpos = viewport_plotarea[1] + leg.leftw + leg.xoffset + end + else + xpos = (viewport_plotarea[2] - viewport_plotarea[1]) / 2 + viewport_plotarea[1] + leg.leftw - leg.rightw - leg.textw - leg.xoffset * 2 + end + if occursin("top", str) + if s == :outertop + ypos = viewport_plotarea[4] + leg.yoffset + leg.h + xmirror * gr_axis_height(sp, sp[:xaxis]) + else + ypos = viewport_plotarea[4] - leg.yoffset - leg.dy + end + elseif occursin("bottom", str) + if s == :outerbottom + ypos = viewport_plotarea[3] - leg.yoffset - leg.dy - !xmirror * gr_axis_height(sp, sp[:xaxis]) + else + ypos = viewport_plotarea[3] + leg.yoffset + leg.h + end + else + # Adding min y to shift legend pos to correct graph (#2377) + ypos = (viewport_plotarea[4] - viewport_plotarea[3] + leg.h) / 2 + viewport_plotarea[3] + end + return xpos, ypos +end + +function gr_legend_pos(v::Tuple{S,T}, viewport_plotarea) where {S<:Real, T<:Real} + xpos = v[1] * (viewport_plotarea[2] - viewport_plotarea[1]) + viewport_plotarea[1] + ypos = v[2] * (viewport_plotarea[4] - viewport_plotarea[3]) + viewport_plotarea[3] + (xpos,ypos) +end + +function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance=nothing) + xcenter = +(viewport_plotarea[1:2]...)/2 + ycenter = +(viewport_plotarea[3:4]...)/2 + + if isnothing(axisclearance) + # Inner + # rectangle where the anchor can legally be + xmin = viewport_plotarea[1] + leg.xoffset + leg.leftw + xmax = viewport_plotarea[2] - leg.xoffset - leg.rightw - leg.textw + ymin = viewport_plotarea[3] + leg.yoffset + leg.h + ymax = viewport_plotarea[4] - leg.yoffset - leg.dy + else + # Outer + xmin = viewport_plotarea[1] - leg.xoffset - leg.rightw - leg.textw - axisclearance[1] + xmax = viewport_plotarea[2] + leg.xoffset + leg.leftw + axisclearance[2] + ymin = viewport_plotarea[3] - leg.yoffset - leg.dy - axisclearance[3] + ymax = viewport_plotarea[4] + leg.yoffset + leg.h + axisclearance[4] + end + return legend_pos_from_angle(theta,xmin,xcenter,xmax,ymin,ycenter,ymax) +end + +function gr_get_legend_geometry(viewport_plotarea, sp) legendn = 0 legendw = 0 if sp[:legend] != :none @@ -1039,484 +1194,409 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) dy = gr_point_mult(sp) * sp[:legendfontsize] * 1.75 legendh = dy * legendn - leg_str = string(sp[:legend]) + + return ( + w = legendw, + h = legendh, + dy = dy, + leftw = legend_leftw, + textw = legend_textw, + rightw = legend_rightw, + xoffset = x_legend_offset, + yoffset = y_legend_offset, + width_factor = legend_width_factor, + ) +end + + +## Viewport, window and scale + +function gr_update_viewport_legend!(viewport_plotarea, sp, leg) + s = sp[:legend] xaxis, yaxis = sp[:xaxis], sp[:yaxis] xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) + if s isa Tuple{<:Real,Symbol} + if s[2] === :outer + (x,y) = gr_legend_pos(sp, leg, viewport_plotarea) # Dry run, to figure out + if x < viewport_plotarea[1] + viewport_plotarea[1] += leg.leftw + leg.textw + leg.rightw + leg.xoffset + !ymirror * gr_axis_width(sp, sp[:yaxis]) + elseif x > viewport_plotarea[2] + viewport_plotarea[2] -= leg.leftw + leg.textw + leg.rightw + leg.xoffset + end + if y < viewport_plotarea[3] + viewport_plotarea[3] += leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) + elseif y > viewport_plotarea[4] + viewport_plotarea[4] -= leg.h + leg.dy + leg.yoffset + end + end + end + leg_str = string(s) if occursin("outer", leg_str) if occursin("right", leg_str) - viewport_plotarea[2] -= total_legendw + x_legend_offset + viewport_plotarea[2] -= leg.leftw + leg.textw + leg.rightw + leg.xoffset elseif occursin("left", leg_str) - viewport_plotarea[1] += total_legendw + x_legend_offset + !ymirror * gr_axis_width(sp, sp[:yaxis]) + viewport_plotarea[1] += leg.leftw + leg.textw + leg.rightw + leg.xoffset + !ymirror * gr_axis_width(sp, sp[:yaxis]) elseif occursin("top", leg_str) - viewport_plotarea[4] -= legendh + dy + y_legend_offset + viewport_plotarea[4] -= leg.h + leg.dy + leg.yoffset elseif occursin("bottom", leg_str) - viewport_plotarea[3] += legendh + dy + y_legend_offset + !xmirror * gr_axis_height(sp, sp[:xaxis]) + viewport_plotarea[3] += leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) end end - if sp[:legend] == :inline + if s === :inline if sp[:yaxis][:mirror] - viewport_plotarea[1] += legendw + viewport_plotarea[1] += leg.w else - viewport_plotarea[2] -= legendw + viewport_plotarea[2] -= leg.w end end +end - # fill in the plot area background - bg = plot_color(sp[:background_color_inside]) - RecipesPipeline.is3d(sp) || gr_fill_viewport(viewport_plotarea, bg) - - # reduced from before... set some flags based on the series in this subplot - # TODO: can these be generic flags? - outside_ticks = false - cbar = GRColorbar() - - draw_axes = sp[:framestyle] != :none - # axes_2d = true - for series in series_list(sp) - st = series[:seriestype] - if st in (:heatmap, :image) - outside_ticks = true - x, y = heatmap_edges(series[:x], sp[:xaxis][:scale], series[:y], sp[:yaxis][:scale], size(series[:z])) - xy_lims = x[1], x[end], y[1], y[end] - expand_extrema!(sp[:xaxis], x) - expand_extrema!(sp[:yaxis], y) - data_lims = gr_xy_axislims(sp) +function gr_update_viewport_ratio!(viewport_plotarea, sp) + ratio = get_aspect_ratio(sp) + if ratio != :none + xmin, xmax, ymin, ymax = gr_xy_axislims(sp) + if ratio == :equal + ratio = 1 + end + viewport_ratio = (viewport_plotarea[2] - viewport_plotarea[1]) / (viewport_plotarea[4] - viewport_plotarea[3]) + window_ratio = (xmax - xmin) / (ymax - ymin) / ratio + if window_ratio < viewport_ratio + viewport_center = 0.5 * (viewport_plotarea[1] + viewport_plotarea[2]) + viewport_size = (viewport_plotarea[2] - viewport_plotarea[1]) * window_ratio / viewport_ratio + viewport_plotarea[1] = viewport_center - 0.5 * viewport_size + viewport_plotarea[2] = viewport_center + 0.5 * viewport_size + elseif window_ratio > viewport_ratio + viewport_center = 0.5 * (viewport_plotarea[3] + viewport_plotarea[4]) + viewport_size = (viewport_plotarea[4] - viewport_plotarea[3]) * viewport_ratio / window_ratio + viewport_plotarea[3] = viewport_center - 0.5 * viewport_size + viewport_plotarea[4] = viewport_center + 0.5 * viewport_size end - - gr_update_colorbar!(cbar,series) end +end - # set our plot area view - GR.setviewport(viewport_plotarea...) - - # these are the Axis objects, which hold scale, lims, etc - xaxis = sp[:xaxis] - yaxis = sp[:yaxis] - zaxis = sp[:zaxis] - - # set the scale flags and window - xmin, xmax, ymin, ymax = data_lims - scaleop = 0 - xtick, ytick = 1, 1 - if xmax > xmin && ymax > ymin - # NOTE: for log axes, the major_x and major_y - if non-zero (omit labels) - control the minor grid lines (1 = draw 9 minor grid lines, 2 = no minor grid lines) - # NOTE: for log axes, the x_tick and y_tick - if non-zero (omit axes) - only affect the output appearance (1 = nomal, 2 = scientiic notation) - xaxis[:scale] == :log10 && (scaleop |= GR.OPTION_X_LOG) - yaxis[:scale] == :log10 && (scaleop |= GR.OPTION_Y_LOG) - xaxis[:flip] && (scaleop |= GR.OPTION_FLIP_X) - yaxis[:flip] && (scaleop |= GR.OPTION_FLIP_Y) - if scaleop & GR.OPTION_X_LOG == 0 - majorx = 1 #5 - xtick = GR.tick(xmin, xmax) / majorx - else - # log axis - xtick = 2 # scientific notation - majorx = 2 # no minor grid lines +function gr_set_window(sp, viewport_plotarea) + if ispolar(sp) + gr_set_viewport_polar(viewport_plotarea) + else + xmin, xmax, ymin, ymax = gr_xy_axislims(sp) + scaleop = 0 + if xmax > xmin && ymax > ymin + sp[:xaxis][:scale] == :log10 && (scaleop |= GR.OPTION_X_LOG) + sp[:yaxis][:scale] == :log10 && (scaleop |= GR.OPTION_Y_LOG) + sp[:xaxis][:flip] && (scaleop |= GR.OPTION_FLIP_X) + sp[:yaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Y) + # NOTE: setwindow sets the "data coordinate" limits of the current "viewport" + GR.setwindow(xmin, xmax, ymin, ymax) + GR.setscale(scaleop) end - if scaleop & GR.OPTION_Y_LOG == 0 - majory = 1 #5 - ytick = GR.tick(ymin, ymax) / majory - else - # log axis - ytick = 2 # scientific notation - majory = 2 # no minor grid lines - end - - # NOTE: setwindow sets the "data coordinate" limits of the current "viewport" - GR.setwindow(xmin, xmax, ymin, ymax) - GR.setscale(scaleop) end +end - # draw the axes - gr_set_font(tickfont(xaxis), sp) +function gr_fill_plotarea(sp, viewport_plotarea) + if !RecipesPipeline.is3d(sp) + gr_fill_viewport(viewport_plotarea, plot_color(sp[:background_color_inside])) + end +end + + +## Axes + +function gr_draw_axes(sp, viewport_plotarea) GR.setlinewidth(sp.plt[:thickness_scaling]) if RecipesPipeline.is3d(sp) + # set space + xmin, xmax, ymin, ymax = gr_xy_axislims(sp) zmin, zmax = axis_limits(sp, :z) GR.setspace(zmin, zmax, round.(Int, sp[:camera])...) - xticks, yticks, zticks, xaxis_segs, yaxis_segs, zaxis_segs, xtick_segs, ytick_segs, ztick_segs, xgrid_segs, ygrid_segs, zgrid_segs, xminorgrid_segs, yminorgrid_segs, zminorgrid_segs, xborder_segs, yborder_segs, zborder_segs = axis_drawing_info_3d(sp) - # fill the plot area - gr_set_fill(sp[:background_color_inside]) + gr_set_fill(plot_color(sp[:background_color_inside])) plot_area_x = [xmin, xmin, xmin, xmax, xmax, xmax, xmin] plot_area_y = [ymin, ymin, ymax, ymax, ymax, ymin, ymin] plot_area_z = [zmin, zmax, zmax, zmax, zmin, zmin, zmin] x_bg, y_bg = RecipesPipeline.unzip(GR.wc3towc.(plot_area_x, plot_area_y, plot_area_z)) GR.fillarea(x_bg, y_bg) - # draw the grid lines - if xaxis[:grid] - gr_set_line( - xaxis[:gridlinewidth], - xaxis[:gridstyle], - xaxis[:foreground_color_grid], - sp - ) - gr_set_transparency(xaxis[:foreground_color_grid], xaxis[:gridalpha]) - gr_polyline3d(coords(xgrid_segs)...) + for letter in (:x, :y, :z) + gr_draw_axis_3d(sp, letter) end - if yaxis[:grid] - gr_set_line( - yaxis[:gridlinewidth], - yaxis[:gridstyle], - yaxis[:foreground_color_grid], - sp - ) - gr_set_transparency(yaxis[:foreground_color_grid], yaxis[:gridalpha]) - gr_polyline3d(coords(ygrid_segs)...) - end - if zaxis[:grid] - gr_set_line( - zaxis[:gridlinewidth], - zaxis[:gridstyle], - zaxis[:foreground_color_grid], - sp - ) - gr_set_transparency(zaxis[:foreground_color_grid], zaxis[:gridalpha]) - gr_polyline3d(coords(zgrid_segs)...) - end - - if xaxis[:minorgrid] - gr_set_line( - xaxis[:minorgridlinewidth], - xaxis[:minorgridstyle], - xaxis[:foreground_color_minor_grid], - sp - ) - gr_set_transparency(xaxis[:foreground_color_minor_grid], xaxis[:minorgridalpha]) - gr_polyline3d(coords(xminorgrid_segs)...) - end - if yaxis[:minorgrid] - gr_set_line( - yaxis[:minorgridlinewidth], - yaxis[:minorgridstyle], - yaxis[:foreground_color_minor_grid], - sp - ) - gr_set_transparency(yaxis[:foreground_color_minor_grid], yaxis[:minorgridalpha]) - gr_polyline3d(coords(yminorgrid_segs)...) - end - if zaxis[:minorgrid] - gr_set_line( - zaxis[:minorgridlinewidth], - zaxis[:minorgridstyle], - zaxis[:foreground_color_minor_grid], - sp - ) - gr_set_transparency(zaxis[:foreground_color_minor_grid], zaxis[:minorgridalpha]) - gr_polyline3d(coords(zminorgrid_segs)...) - end - gr_set_transparency(1.0) - - # axis lines - if xaxis[:showaxis] - gr_set_line(1, :solid, xaxis[:foreground_color_border], sp) - GR.setclip(0) - gr_polyline3d(coords(xaxis_segs)...) - end - if yaxis[:showaxis] - gr_set_line(1, :solid, yaxis[:foreground_color_border], sp) - GR.setclip(0) - gr_polyline3d(coords(yaxis_segs)...) - end - if zaxis[:showaxis] - gr_set_line(1, :solid, zaxis[:foreground_color_border], sp) - GR.setclip(0) - gr_polyline3d(coords(zaxis_segs)...) - end - GR.setclip(1) - - # axis ticks - if xaxis[:showaxis] - if sp[:framestyle] in (:zerolines, :grid) - gr_set_line(1, :solid, xaxis[:foreground_color_grid], sp) - gr_set_transparency( - xaxis[:foreground_color_grid], - xaxis[:tick_direction] == :out ? xaxis[:gridalpha] : 0 - ) - else - gr_set_line(1, :solid, xaxis[:foreground_color_axis], sp) - end - GR.setclip(0) - gr_polyline3d(coords(xtick_segs)...) - end - if yaxis[:showaxis] - if sp[:framestyle] in (:zerolines, :grid) - gr_set_line(1, :solid, yaxis[:foreground_color_grid], sp) - gr_set_transparency( - yaxis[:foreground_color_grid], - yaxis[:tick_direction] == :out ? yaxis[:gridalpha] : 0 - ) - else - gr_set_line(1, :solid, yaxis[:foreground_color_axis], sp) - end - GR.setclip(0) - gr_polyline3d(coords(ytick_segs)...) - end - if zaxis[:showaxis] - if sp[:framestyle] in (:zerolines, :grid) - gr_set_line(1, :solid, zaxis[:foreground_color_grid], sp) - gr_set_transparency( - zaxis[:foreground_color_grid], - zaxis[:tick_direction] == :out ? zaxis[:gridalpha] : 0 - ) - else - gr_set_line(1, :solid, zaxis[:foreground_color_axis], sp) - end - GR.setclip(0) - gr_polyline3d(coords(ztick_segs)...) - end - GR.setclip(1) - - # tick marks - if !(xticks in (:none, nothing, false)) && xaxis[:showaxis] - # x labels - gr_set_font( - tickfont(xaxis), - halign = (:left, :hcenter, :right)[sign(xaxis[:rotation]) + 2], - valign = (xaxis[:mirror] ? :bottom : :top), - rotation = xaxis[:rotation], - color = xaxis[:tickfontcolor], - sp - ) - yt = if sp[:framestyle] == :origin - 0 - elseif xor(xaxis[:mirror], yaxis[:flip]) - ymax - else - ymin - end - zt = if sp[:framestyle] == :origin - 0 - elseif xor(xaxis[:mirror], zaxis[:flip]) - zmax - else - zmin - end - for (cv, dv) in zip(xticks...) - xi, yi = gr_w3tondc(cv, yt, zt) - xi += (yaxis[:mirror] ? 1 : -1) * 1e-2 * (xaxis[:tick_direction] == :out ? 1.5 : 1.0) - yi += (xaxis[:mirror] ? 1 : -1) * 5e-3 * (xaxis[:tick_direction] == :out ? 1.5 : 1.0) - gr_text(xi, yi, dv) - end - end - - if !(yticks in (:none, nothing, false)) && yaxis[:showaxis] - # y labels - gr_set_font( - tickfont(yaxis), - halign = (:left, :hcenter, :right)[sign(yaxis[:rotation]) + 2], - valign = (yaxis[:mirror] ? :bottom : :top), - rotation = yaxis[:rotation], - color = yaxis[:tickfontcolor], - sp - ) - xt = if sp[:framestyle] == :origin - 0 - elseif xor(yaxis[:mirror], xaxis[:flip]) - xmin - else - xmax - end - zt = if sp[:framestyle] == :origin - 0 - elseif xor(yaxis[:mirror], zaxis[:flip]) - zmax - else - zmin - end - for (cv, dv) in zip(yticks...) - xi, yi = gr_w3tondc(xt, cv, zt) - gr_text(xi + (yaxis[:mirror] ? -1 : 1) * 1e-2 * (yaxis[:tick_direction] == :out ? 1.5 : 1.0), - yi + (yaxis[:mirror] ? 1 : -1) * 5e-3 * (yaxis[:tick_direction] == :out ? 1.5 : 1.0), - dv) - end - end - - if !(zticks in (:none, nothing, false)) && zaxis[:showaxis] - # z labels - gr_set_font( - tickfont(zaxis), - halign = (zaxis[:mirror] ? :left : :right), - valign = (:top, :vcenter, :bottom)[sign(zaxis[:rotation]) + 2], - rotation = zaxis[:rotation], - color = zaxis[:tickfontcolor], - sp - ) - xt = if sp[:framestyle] == :origin - 0 - elseif xor(zaxis[:mirror], xaxis[:flip]) - xmax - else - xmin - end - yt = if sp[:framestyle] == :origin - 0 - elseif xor(zaxis[:mirror], yaxis[:flip]) - ymax - else - ymin - end - for (cv, dv) in zip(zticks...) - xi, yi = gr_w3tondc(xt, yt, cv) - gr_text(xi + (zaxis[:mirror] ? 1 : -1) * 1e-2 * (zaxis[:tick_direction] == :out ? 1.5 : 1.0), - yi, dv) - end - end - # - # # border - # intensity = sp[:framestyle] == :semi ? 0.5 : 1.0 - # if sp[:framestyle] in (:box, :semi) - # gr_set_line(intensity, :solid, xaxis[:foreground_color_border], sp) - # gr_set_transparency(xaxis[:foreground_color_border], intensity) - # gr_polyline3d(coords(xborder_segs)...) - # gr_set_line(intensity, :solid, yaxis[:foreground_color_border], sp) - # gr_set_transparency(yaxis[:foreground_color_border], intensity) - # gr_polyline3d(coords(yborder_segs)...) - # end - elseif ispolar(sp) r = gr_set_viewport_polar(viewport_plotarea) #rmin, rmax = GR.adjustrange(ignorenan_minimum(r), ignorenan_maximum(r)) rmin, rmax = axis_limits(sp, :y) gr_polaraxes(rmin, rmax, sp) - - elseif draw_axes - if xmax > xmin && ymax > ymin - GR.setwindow(xmin, xmax, ymin, ymax) - end - - xticks, yticks, xspine_segs, yspine_segs, xtick_segs, ytick_segs, xgrid_segs, ygrid_segs, xminorgrid_segs, yminorgrid_segs, xborder_segs, yborder_segs = axis_drawing_info(sp) - - # draw the grid lines - if xaxis[:grid] - # GR.grid(xtick, ytick, 0, 0, majorx, majory) - gr_set_line( - xaxis[:gridlinewidth], - xaxis[:gridstyle], - xaxis[:foreground_color_grid], - sp - ) - gr_set_transparency(xaxis[:foreground_color_grid], xaxis[:gridalpha]) - gr_polyline(coords(xgrid_segs)...) - end - if yaxis[:grid] - gr_set_line( - yaxis[:gridlinewidth], - yaxis[:gridstyle], - yaxis[:foreground_color_grid], - sp - ) - gr_set_transparency(yaxis[:foreground_color_grid], yaxis[:gridalpha]) - gr_polyline(coords(ygrid_segs)...) - end - if xaxis[:minorgrid] - gr_set_line( - xaxis[:minorgridlinewidth], - xaxis[:minorgridstyle], - xaxis[:foreground_color_minor_grid], - sp - ) - gr_set_transparency(xaxis[:foreground_color_minor_grid], xaxis[:minorgridalpha]) - gr_polyline(coords(xminorgrid_segs)...) - end - if yaxis[:minorgrid] - gr_set_line( - yaxis[:minorgridlinewidth], - yaxis[:minorgridstyle], - yaxis[:foreground_color_minor_grid], - sp - ) - gr_set_transparency(yaxis[:foreground_color_minor_grid], yaxis[:minorgridalpha]) - gr_polyline(coords(yminorgrid_segs)...) - end - gr_set_transparency(1.0) - - # axis lines - if xaxis[:showaxis] - gr_set_line(1, :solid, xaxis[:foreground_color_border], sp) - GR.setclip(0) - gr_polyline(coords(xspine_segs)...) - end - if yaxis[:showaxis] - gr_set_line(1, :solid, yaxis[:foreground_color_border], sp) - GR.setclip(0) - gr_polyline(coords(yspine_segs)...) - end - GR.setclip(1) - - # axis ticks - if xaxis[:showaxis] - if sp[:framestyle] in (:zerolines, :grid) - gr_set_line(1, :solid, xaxis[:foreground_color_grid], sp) - gr_set_transparency( - xaxis[:foreground_color_grid], - xaxis[:tick_direction] == :out ? xaxis[:gridalpha] : 0 - ) - else - gr_set_line(1, :solid, xaxis[:foreground_color_axis], sp) - end - GR.setclip(0) - gr_polyline(coords(xtick_segs)...) - end - if yaxis[:showaxis] - if sp[:framestyle] in (:zerolines, :grid) - gr_set_line(1, :solid, yaxis[:foreground_color_grid], sp) - gr_set_transparency( - yaxis[:foreground_color_grid], - yaxis[:tick_direction] == :out ? yaxis[:gridalpha] : 0 - ) - else - gr_set_line(1, :solid, yaxis[:foreground_color_axis], sp) - end - GR.setclip(0) - gr_polyline(coords(ytick_segs)...) - end - GR.setclip(1) - - # tick marks - if !(xticks in (:none, nothing, false)) && xaxis[:showaxis] - # x labels - flip, mirror = gr_set_xticks_font(sp) - for (cv, dv) in zip(xticks...) - xi, yi = GR.wctondc(cv, sp[:framestyle] == :origin ? 0 : xor(flip, mirror) ? ymax : ymin) - gr_text(xi, yi + (mirror ? 1 : -1) * 5e-3 * (xaxis[:tick_direction] == :out ? 1.5 : 1.0), dv) - end - end - - if !(yticks in (:none, nothing, false)) && yaxis[:showaxis] - # y labels - flip, mirror = gr_set_yticks_font(sp) - for (cv, dv) in zip(yticks...) - xi, yi = GR.wctondc(sp[:framestyle] == :origin ? 0 : xor(flip, mirror) ? xmax : xmin, cv) - gr_text(xi + (mirror ? 1 : -1) * 1e-2 * (yaxis[:tick_direction] == :out ? 1.5 : 1.0), - yi, dv) - - end - end - - # border - intensity = sp[:framestyle] == :semi ? 0.5 : 1 - if sp[:framestyle] in (:box, :semi) - GR.setclip(0) - gr_set_line(intensity, :solid, xaxis[:foreground_color_border], sp) - gr_set_transparency(xaxis[:foreground_color_border], intensity) - gr_polyline(coords(xborder_segs)...) - gr_set_line(intensity, :solid, yaxis[:foreground_color_border], sp) - gr_set_transparency(yaxis[:foreground_color_border], intensity) - gr_polyline(coords(yborder_segs)...) - GR.setclip(1) + elseif sp[:framestyle] != :none + for letter in (:x, :y) + gr_draw_axis(sp, letter, viewport_plotarea) end end - # end +end - # add the guides - GR.savestate() +function gr_draw_axis(sp, letter, viewport_plotarea) + ax = axis_drawing_info(sp, letter) + axis = sp[Symbol(letter, :axis)] + + # draw segments + gr_draw_grid(sp, axis, ax.grid_segments) + gr_draw_minorgrid(sp, axis, ax.minorgrid_segments) + gr_draw_spine(sp, axis, ax.segments) + gr_draw_border(sp, axis, ax.border_segments) + gr_draw_ticks(sp, axis, ax.tick_segments) + + # labels + gr_label_ticks(sp, letter, ax.ticks) + gr_label_axis(sp, letter, viewport_plotarea) +end + +function gr_draw_axis_3d(sp, letter) + ax = axis_drawing_info_3d(sp, letter) + axis = sp[Symbol(letter, :axis)] + + # draw segments + gr_draw_grid(sp, axis, ax.grid_segments, gr_polyline3d) + gr_draw_minorgrid(sp, axis, ax.minorgrid_segments, gr_polyline3d) + gr_draw_spine(sp, axis, ax.segments, gr_polyline3d) + gr_draw_border(sp, axis, ax.border_segments, gr_polyline3d) + gr_draw_ticks(sp, axis, ax.tick_segments, gr_polyline3d) + + # labels + gr_label_ticks_3d(sp, letter, ax.ticks) + gr_label_axis_3d(sp, letter) +end + +function gr_draw_grid(sp, axis, segments, func = gr_polyline) + if axis[:grid] + gr_set_line( + axis[:gridlinewidth], + axis[:gridstyle], + axis[:foreground_color_grid], + sp + ) + gr_set_transparency(axis[:foreground_color_grid], axis[:gridalpha]) + func(coords(segments)...) + end +end + +function gr_draw_minorgrid(sp, axis, segments, func = gr_polyline) + if axis[:grid] + gr_set_line( + axis[:minorgridlinewidth], + axis[:minorgridstyle], + axis[:foreground_color_minor_grid], + sp + ) + gr_set_transparency(axis[:foreground_color_minor_grid], axis[:minorgridalpha]) + func(coords(segments)...) + end +end + +function gr_draw_spine(sp, axis, segments, func = gr_polyline) + if axis[:showaxis] + gr_set_line(1, :solid, axis[:foreground_color_border], sp) + gr_set_transparency(1.0) + GR.setclip(0) + func(coords(segments)...) + GR.setclip(1) + end +end + +function gr_draw_border(sp, axis, segments, func = gr_polyline) + intensity = sp[:framestyle] == :semi ? 0.5 : 1 + if sp[:framestyle] in (:box, :semi) + GR.setclip(0) + gr_set_line(intensity, :solid, axis[:foreground_color_border], sp) + gr_set_transparency(axis[:foreground_color_border], intensity) + func(coords(segments)...) + GR.setclip(1) + end +end + +function gr_draw_ticks(sp, axis, segments, func = gr_polyline) + if axis[:showaxis] + if sp[:framestyle] in (:zerolines, :grid) + gr_set_line(1, :solid, axis[:foreground_color_grid], sp) + gr_set_transparency( + axis[:foreground_color_grid], + axis[:tick_direction] == :out ? axis[:gridalpha] : 0, + ) + else + gr_set_line(1, :solid, axis[:foreground_color_axis], sp) + end + GR.setclip(0) + func(coords(segments)...) + GR.setclip(1) + end +end + +function gr_label_ticks(sp, letter, ticks) + axis = sp[Symbol(letter, :axis)] + isy = letter === :y + oletter = isy ? :x : :y + oaxis = sp[Symbol(oletter, :axis)] + oamin, oamax = axis_limits(sp, oletter) + gr_set_tickfont(sp, letter) + out_factor = ifelse(axis[:tick_direction] === :out, 1.5, 1) + x_offset = isy ? (axis[:mirror] ? 1 : -1) * 1.5e-2 * out_factor : 0 + y_offset = isy ? 0 : (axis[:mirror] ? 1 : -1) * 8e-3 * out_factor + + ov = sp[:framestyle] == :origin ? 0 : xor(oaxis[:flip], axis[:mirror]) ? oamax : oamin + for (cv, dv) in zip(ticks...) + x, y = GR.wctondc(reverse_if((cv, ov), isy)...) + gr_text(x + x_offset, y + y_offset, dv) + end +end + +function gr_label_ticks(sp, letter, ticks::Nothing) end + +function gr_label_ticks_3d(sp, letter, ticks) + near_letter = letter in (:x, :z) ? :y : :x + far_letter = letter in (:x, :y) ? :z : :x + + ax = sp[Symbol(letter, :axis)] + nax = sp[Symbol(near_letter, :axis)] + fax = sp[Symbol(far_letter, :axis)] + + amin, amax = axis_limits(sp, letter) + namin, namax = axis_limits(sp, near_letter) + famin, famax = axis_limits(sp, far_letter) + n0, n1 = letter === :y ? (namax, namin) : (namin, namax) + + + # find out which axes we are dealing with + i = findfirst(==(letter), (:x, :y, :z)) + letters = axes_shift((:x, :y, :z), 1 - i) + asyms = Symbol.(letters, :axis) + + # get axis objects, ticks and minor ticks + # regardless of the `letter` we now use the convention that `x` in variable names refer to + # the first axesm `y` to the second, etc ... + ylims, zlims = axis_limits.(Ref(sp), letters[2:3]) + xax, yax, zax = getindex.(Ref(sp), asyms) + + gr_set_tickfont(sp, letter) + nt = sp[:framestyle] == :origin ? 0 : xor(ax[:mirror], nax[:flip]) ? n1 : n0 + ft = sp[:framestyle] == :origin ? 0 : xor(ax[:mirror], fax[:flip]) ? famax : famin + + xoffset = if letter === :x + (sp[:yaxis][:mirror] ? 1 : -1) * 1e-2 * (sp[:xaxis][:tick_direction] == :out ? 1.5 : 1) + elseif letter === :y + (sp[:yaxis][:mirror] ? -1 : 1) * 1e-2 * (sp[:yaxis][:tick_direction] == :out ? 1.5 : 1) + else + (sp[:zaxis][:mirror] ? 1 : -1) * 1e-2 * (sp[:zaxis][:tick_direction] == :out ? 1.5 : 1) + end + yoffset = if letter === :x + (sp[:xaxis][:mirror] ? 1 : -1) * 1e-2 * (sp[:xaxis][:tick_direction] == :out ? 1.5 : 1) + elseif letter === :y + (sp[:yaxis][:mirror] ? 1 : -1) * 1e-2 * (sp[:yaxis][:tick_direction] == :out ? 1.5 : 1) + else + 0 + end + + for (cv, dv) in zip(ticks...) + xi, yi = gr_w3tondc(sort_3d_axes(cv, nt, ft, letter)...) + gr_text(xi + xoffset, yi + yoffset, dv) + end +end + + +xposition = gr_view_xposition(viewport_plotarea, position(xaxis[:guidefonthalign])) +xalign = alignment(xaxis[:guidefonthalign]) +if xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + GR.settextalign(xalign, GR.TEXT_VALIGN_TOP) + gr_text(xposition, viewport_plotarea[4] + h, xaxis[:guide]) +else + GR.settextalign(xalign, GR.TEXT_VALIGN_BOTTOM) + gr_text(xposition, viewport_plotarea[3] - h, xaxis[:guide]) +end + + +function gr_label_axis(sp, letter, viewport_plotarea) + axis = sp[Symbol(letter, :axis)] + # guide + if axis[:guide] != "" + GR.savestate() + gr_set_font(guidefont(axis), sp) + guide_position = axis[:guide_position] + if letter === :y + w = 0.03 + gr_axis_width(sp, axis) + GR.setcharup(-1, 0) + # + yposition = gr_view_yposition(viewport_plotarea, position(yaxis[:guidefontvalign])) + yalign = alignment(yaxis[:guidefontvalign]) + # + if guide_position == :right || (guide_position == :auto && axis[:mirror]) + GR.settextalign(yalign, GR.TEXT_VALIGN_BOTTOM) + gr_text(viewport_plotarea[2] + w, yposition, axis[:guide]) + else + GR.settextalign(yalign, GR.TEXT_VALIGN_TOP) + gr_text(viewport_plotarea[1] - w, yposition, axis[:guide]) + end + else + h = 0.015 + gr_axis_height(sp, axis) + # + xposition = gr_view_xposition(viewport_plotarea, position(xaxis[:guidefonthalign])) + xalign = alignment(xaxis[:guidefonthalign]) + # + if guide_position == :top || (guide_position == :auto && axis[:mirror]) + GR.settextalign(xalign, GR.TEXT_VALIGN_TOP) + gr_text(xposition, viewport_plotarea[4] + h, axis[:guide]) + else + GR.settextalign(xalign, GR.TEXT_VALIGN_BOTTOM) + gr_text(xposition, viewport_plotarea[3] - h, axis[:guide]) + end + end + GR.restorestate() + end +end + +function gr_label_axis_3d(sp, letter) + ax = sp[Symbol(letter, :axis)] + if ax[:guide] != "" + near_letter = letter in (:x, :z) ? :y : :x + far_letter = letter in (:x, :y) ? :z : :x + + nax = sp[Symbol(near_letter, :axis)] + fax = sp[Symbol(far_letter, :axis)] + + amin, amax = axis_limits(sp, letter) + namin, namax = axis_limits(sp, near_letter) + famin, famax = axis_limits(sp, far_letter) + n0, n1 = letter === :y ? (namax, namin) : (namin, namax) + + GR.savestate() + gr_set_font( + guidefont(ax), + sp, + halign = (:left, :hcenter, :right)[sign(ax[:rotation]) + 2], + valign = ax[:mirror] ? :bottom : :top, + rotation = ax[:rotation], + # color = ax[:guidefontcolor], + ) + ag = (amin + amax) / 2 + ng = xor(ax[:mirror], nax[:flip]) ? n1 : n0 + fg = xor(ax[:mirror], fax[:flip]) ? famax : famin + x, y = gr_w3tondc(sort_3d_axes(ag, ng, fg, letter)...) + if letter in (:x, :y) + h = gr_axis_height(sp, ax) + x_offset = letter === :x ? -h : h + y_offset = -h + else + x_offset = -0.03 - gr_axis_width(sp, ax) + y_offset = 0 + end + letter === :z && GR.setcharup(-1, 0) + gr_text(x + x_offset, y + y_offset, ax[:guide]) + GR.restorestate() + end +end + +function gr_add_title(sp, viewport_plotarea, viewport_subplot) if sp[:title] != "" + GR.savestate() gr_set_font(titlefont(sp), sp) loc = sp[:titlelocation] if loc == :left @@ -1531,447 +1611,285 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) end GR.settextalign(halign, GR.TEXT_VALIGN_TOP) gr_text(xpos, viewport_subplot[4], sp[:title]) + GR.restorestate() end - if RecipesPipeline.is3d(sp) - if xaxis[:guide] != "" - gr_set_font( - guidefont(xaxis), - halign = (:left, :hcenter, :right)[sign(xaxis[:rotation]) + 2], - valign = (xaxis[:mirror] ? :bottom : :top), - rotation = xaxis[:rotation], - sp - ) - yg = xor(xaxis[:mirror], yaxis[:flip]) ? ymax : ymin - zg = xor(xaxis[:mirror], zaxis[:flip]) ? zmax : zmin - xg = (xmin + xmax) / 2 - xndc, yndc = gr_w3tondc(xg, yg, zg) - h = gr_axis_height(sp, xaxis) - gr_text(xndc - h, yndc - h, xaxis[:guide]) - end +end - if yaxis[:guide] != "" - gr_set_font( - guidefont(yaxis), - halign = (:left, :hcenter, :right)[sign(yaxis[:rotation]) + 2], - valign = (yaxis[:mirror] ? :bottom : :top), - rotation = yaxis[:rotation], - sp - ) - xg = xor(yaxis[:mirror], xaxis[:flip]) ? xmin : xmax - yg = (ymin + ymax) / 2 - zg = xor(yaxis[:mirror], zaxis[:flip]) ? zmax : zmin - xndc, yndc = gr_w3tondc(xg, yg, zg) - h = gr_axis_height(sp, yaxis) - gr_text(xndc + h, yndc - h, yaxis[:guide]) - end - if zaxis[:guide] != "" - gr_set_font( - guidefont(zaxis), - halign = (:left, :hcenter, :right)[sign(zaxis[:rotation]) + 2], - valign = (zaxis[:mirror] ? :bottom : :top), - rotation = zaxis[:rotation], - sp - ) - xg = xor(zaxis[:mirror], xaxis[:flip]) ? xmax : xmin - yg = xor(zaxis[:mirror], yaxis[:flip]) ? ymax : ymin - zg = (zmin + zmax) / 2 - xndc, yndc = gr_w3tondc(xg, yg, zg) - w = gr_axis_width(sp, zaxis) - GR.setcharup(-1, 0) - gr_text(xndc - w, yndc, zaxis[:guide]) - end - else - if xaxis[:guide] != "" - h = 0.01 + gr_axis_height(sp, xaxis) - gr_set_font(guidefont(xaxis), sp) - xposition = gr_view_xposition(viewport_plotarea, position(xaxis[:guidefonthalign])) - xalign = alignment(xaxis[:guidefonthalign]) - if xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) - GR.settextalign(xalign, GR.TEXT_VALIGN_TOP) - gr_text(xposition, viewport_plotarea[4] + h, xaxis[:guide]) - else - GR.settextalign(xalign, GR.TEXT_VALIGN_BOTTOM) - gr_text(xposition, viewport_plotarea[3] - h, xaxis[:guide]) - end - end +## Series - if yaxis[:guide] != "" - w = 0.02 + gr_axis_width(sp, yaxis) - gr_set_font(guidefont(yaxis), sp) - GR.setcharup(-1, 0) - yposition = gr_view_yposition(viewport_plotarea, position(yaxis[:guidefontvalign])) - yalign = alignment(yaxis[:guidefontvalign]) - if yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) - GR.settextalign(yalign, GR.TEXT_VALIGN_BOTTOM) - gr_text(viewport_plotarea[2] + w, yposition, yaxis[:guide]) - else - GR.settextalign(yalign, GR.TEXT_VALIGN_TOP) - gr_text(viewport_plotarea[1] - w, yposition, yaxis[:guide]) - end +function gr_add_series(sp, series) + st = series[:seriestype] + + # update the current stored gradient + gr_set_gradient(series) + + GR.savestate() + + x, y, z = (handle_surface(series[letter]) for letter in (:x, :y, :z)) + xscale, yscale = sp[:xaxis][:scale], sp[:yaxis][:scale] + frng = series[:fillrange] + + # recompute data + if ispolar(sp) && z === nothing + rmin, rmax = axis_limits(sp, :y) + if frng !== nothing + _, frng = convert_to_polar(x, frng, (rmin, rmax)) end + x, y = convert_to_polar(x, y, (rmin, rmax)) end - GR.restorestate() - gr_set_font(tickfont(xaxis), sp) + clims = gr_clims(sp, series) - # this needs to be here to point the colormap to the right indices - GR.setcolormap(1000 + GR.COLORMAP_COOLWARM) + # add custom frame shapes to markershape? + series_annotations_shapes!(series) + # ------------------------------------------------------- - for (idx, series) in enumerate(series_list(sp)) - st = series[:seriestype] - - # update the current stored gradient - gr_set_gradient(series) - - GR.savestate() - - # update the bounding window - if ispolar(sp) - gr_set_viewport_polar(viewport_plotarea) - else - xmin, xmax, ymin, ymax = data_lims - if xmax > xmin && ymax > ymin - GR.setwindow(xmin, xmax, ymin, ymax) - end - end - - x, y, z = series[:x], series[:y], series[:z] - frng = series[:fillrange] - - clims = get_clims(sp, series) - - # add custom frame shapes to markershape? - series_annotations_shapes!(series) - # ------------------------------------------------------- - - # recompute data - if typeof(z) <: Surface - z = vec(transpose_z(series, z.surf, false)) - elseif ispolar(sp) - if frng !== nothing - _, frng = convert_to_polar(x, frng, (rmin, rmax)) - end - x, y = convert_to_polar(x, y, (rmin, rmax)) - end - - if st == :straightline + # draw the series + if st in (:path, :scatter, :straightline) + if st === :straightline x, y = straightline_data(series) end - - if st in (:path, :scatter, :straightline) - if x !== nothing && length(x) > 1 - lz = series[:line_z] - segments = iter_segments(series, st) - # do area fill - if frng !== nothing - GR.setfillintstyle(GR.INTSTYLE_SOLID) - fr_from, fr_to = (is_2tuple(frng) ? frng : (y, frng)) - for (i, rng) in enumerate(segments) - fc = get_fillcolor(series, clims, i) - gr_set_fillcolor(fc) - fx = _cycle(x, vcat(rng, reverse(rng))) - fy = vcat(_cycle(fr_from,rng), _cycle(fr_to,reverse(rng))) - gr_set_transparency(fc, get_fillalpha(series, i)) - GR.fillarea(fx, fy) - end - end - - # draw the line(s) - if st in (:path, :straightline) - for (i, rng) in enumerate(segments) - lc = get_linecolor(series, clims, i) - gr_set_line( - get_linewidth(series, i), get_linestyle(series, i), lc, sp - ) - arrowside = isa(series[:arrow], Arrow) ? series[:arrow].side : :none - arrowstyle = isa(series[:arrow], Arrow) ? series[:arrow].style : :simple - gr_set_fillcolor(lc) - gr_set_transparency(lc, get_linealpha(series, i)) - gr_polyline(x[rng], y[rng]; arrowside = arrowside, arrowstyle = arrowstyle) - end - end - end - - if series[:markershape] != :none - gr_draw_markers(series, x, y, clims) - end - - elseif st == :contour - GR.setspace(clims[1], clims[2], 0, 90) - GR.setlinetype(gr_linetype(get_linestyle(series))) - GR.setlinewidth(max(0, get_linewidth(series)) / nominal_size(sp)) - is_lc_black = let black=plot_color(:black) - plot_color(series[:linecolor]) in (black,[black]) - end - h = gr_contour_levels(series, clims) - if series[:fillrange] !== nothing - if series[:fillcolor] != series[:linecolor] && !is_lc_black - @warn("GR: filled contour only supported with black contour lines") - end - GR.contourf(x, y, h, z, series[:contour_labels] == true ? 1 : 0) - else - coff = is_lc_black ? 0 : 1000 - GR.contour(x, y, h, z, coff + (series[:contour_labels] == true ? 1 : 0)) - end - - elseif st in [:surface, :wireframe] - if st == :surface - if length(x) == length(y) == length(z) - GR.trisurface(x, y, z) - else - try - GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) - catch - GR.surface(x, y, z, GR.OPTION_COLORED_MESH) - end - end - else - GR.setfillcolorind(0) - GR.surface(x, y, z, GR.OPTION_FILLED_MESH) - end - - elseif st == :volume - sp[:legend] = :none - GR.gr3.clear() - dmin, dmax = GR.gr3.volume(y.v, 0) - - elseif st == :heatmap - zmin, zmax = clims - fillgrad = _as_gradient(series[:fillcolor]) - if !ispolar(sp) - GR.setspace(clims..., 0, 90) - x, y = heatmap_edges(series[:x], sp[:xaxis][:scale], series[:y], sp[:yaxis][:scale], size(series[:z])) - w, h = length(x) - 1, length(y) - 1 - if is_uniformly_spaced(x) && is_uniformly_spaced(y) - # For uniformly spaced data use GR.drawimage, which can be - # much faster than GR.nonuniformcellarray, especially for - # pdf output, and also supports alpha values. - # Note that drawimage draws uniformly spaced data correctly - # even on log scales, where it is visually non-uniform. - colors = plot_color.(get(fillgrad, z, clims), series[:fillalpha]) - rgba = gr_color.(colors) - GR.drawimage(first(x), last(x), last(y), first(y), w, h, rgba) - else - if something(series[:fillalpha],1) < 1 - @warn "GR: transparency not supported in non-uniform heatmaps. Alpha values ignored." - end - z_normalized = get_z_normalized.(z, zmin, zmax) - rgba = Int32[round(Int32, 1000 + _i * 255) for _i in z_normalized] - GR.nonuniformcellarray(x, y, w, h, rgba) - end - else - phimin, phimax = 0.0, 360.0 # nonuniform polar array is not yet supported in GR.jl - nx, ny = length(series[:x]), length(series[:y]) - xmin, xmax, ymin, ymax = xy_lims - rmax = data_lims[4] - GR.setwindow(-rmax, rmax, -rmax, rmax) - if ymin > 0 - @warn "'ymin[1] > 0' (rmin) is not yet supported." - end - if series[:y][end] != ny - @warn "Right now only the maximum value of y (r) is taken into account." - end - # colors = get(fillgrad, z, clims) - # GR.polarcellarray(0, 0, phimin, phimax, ymin, ymax, nx, ny, colors) - z_normalized = get_z_normalized.(z, zmin, zmax) - # z_normalized = map(c -> c == invisible() ? 256/255 : PlotUtils.getinverse(fillgrad.colors, c), colors) - rgba = Int32[round(Int32, 1000 + _i * 255) for _i in z_normalized] - GR.polarcellarray(0, 0, phimin, phimax, 0, ymax, nx, ny, rgba) - # Right now only the maximum value of y (r) is taken into account. - # This is certainly not perfect but nonuniform polar array is not yet supported in GR.jl - end - - elseif st in (:path3d, :scatter3d) - # draw path - if st == :path3d - if length(x) > 1 - lz = series[:line_z] - segments = iter_segments(series, st) - for (i, rng) in enumerate(segments) - lc = get_linecolor(series, clims, i) - gr_set_line( - get_linewidth(series, i), get_linestyle(series, i), lc, sp - ) - gr_set_transparency(lc, get_linealpha(series, i)) - GR.polyline3d(x[rng], y[rng], z[rng]) - end - end - end - - # draw markers - if st == :scatter3d || series[:markershape] != :none - x2, y2 = RecipesPipeline.unzip(map(GR.wc3towc, x, y, z)) - gr_draw_markers(series, x2, y2, clims) - end - - elseif st == :shape - x, y = shape_data(series) - for (i,rng) in enumerate(iter_segments(x, y)) - if length(rng) > 1 - # connect to the beginning - rng = vcat(rng, rng[1]) - - # get the segments - xseg, yseg = x[rng], y[rng] - - # draw the interior - fc = get_fillcolor(series, clims, i) - gr_set_fill(fc) - gr_set_transparency(fc, get_fillalpha(series, i)) - GR.fillarea(xseg, yseg) - - # draw the shapes - lc = get_linecolor(series, clims, i) - gr_set_line(get_linewidth(series, i), get_linestyle(series, i), lc, sp) - gr_set_transparency(lc, get_linealpha(series, i)) - GR.polyline(xseg, yseg) - end - end - - - elseif st == :image - z = transpose_z(series, series[:z].surf, true)' - x, y = heatmap_edges(series[:x], sp[:xaxis][:scale], series[:y], sp[:yaxis][:scale], size(z)) - w, h = size(z) - xmin, xmax = ignorenan_extrema(x) - ymin, ymax = ignorenan_extrema(y) - rgba = gr_color.(z) - GR.drawimage(xmin, xmax, ymax, ymin, w, h, rgba) + gr_draw_segments(series, x, y, frng, clims) + if series[:markershape] !== :none + gr_draw_markers(series, x, y, clims) end - - # this is all we need to add the series_annotations text - anns = series[:series_annotations] - for (xi,yi,str,fnt) in EachAnn(anns, x, y) - gr_set_font(fnt, sp) - gr_text(GR.wctondc(xi, yi)..., str) + elseif st === :shape + gr_draw_shapes(series, clims) + elseif st in (:path3d, :scatter3d) + gr_draw_segments_3d(series, x, y, z, clims) + if st === :scatter3d || series[:markershape] !== :none + # TODO: Do we need to transform to 2d coordinates here? + x2, y2 = RecipesPipeline.unzip(map(GR.wc3towc, x, y, z)) + gr_draw_markers(series, x2, y2, clims) end - - if sp[:legend] == :inline && should_add_to_legend(series) - gr_set_font(legendfont(sp), sp) - gr_set_textcolor(plot_color(sp[:legendfontcolor])) - if sp[:yaxis][:mirror] - (_,i) = sp[:xaxis][:flip] ? findmax(x) : findmin(x) - GR.settextalign(GR.TEXT_HALIGN_RIGHT, GR.TEXT_VALIGN_HALF) - offset = -0.01 - else - (_,i) = sp[:xaxis][:flip] ? findmin(x) : findmax(x) - GR.settextalign(GR.TEXT_HALIGN_LEFT, GR.TEXT_VALIGN_HALF) - offset = 0.01 - end - (x_l,y_l) = GR.wctondc(x[i],y[i]) - gr_text(x_l+offset,y_l,series[:label]) - end - GR.restorestate() + elseif st === :contour + gr_draw_contour(series, x, y, z, clims) + elseif st in (:surface, :wireframe) + gr_draw_surface(series, x, y, z, clims) + elseif st === :volume + sp[:legend] = :none + GR.gr3.clear() + dmin, dmax = GR.gr3.volume(y.v, 0) + elseif st === :heatmap + # `z` is already transposed, so we need to reverse before passing its size. + x, y = heatmap_edges(x, xscale, y, yscale, reverse(size(z)), ispolar(series)) + gr_draw_heatmap(series, x, y, z, clims) + elseif st === :image + gr_draw_image(series, x, y, z, clims) end - # draw the colorbar - hascolorbar(sp) && gr_draw_colorbar(cbar, sp, get_clims(sp), viewport_plotarea) + # this is all we need to add the series_annotations text + anns = series[:series_annotations] + for (xi,yi,str,fnt) in EachAnn(anns, x, y) + gr_set_font(fnt, sp) + gr_text(GR.wctondc(xi, yi)..., str) + end - # add the legend - if !(sp[:legend] in(:none, :inline)) - GR.savestate() - GR.selntran(0) - GR.setscale(0) + if sp[:legend] == :inline && should_add_to_legend(series) gr_set_font(legendfont(sp), sp) - w = legendw # This is the legend text width - n = legendn - if w > 0 - dy = gr_point_mult(sp) * sp[:legendfontsize] * 1.75 - h = dy*n - xpos, ypos = gr_legend_pos(sp, [legend_leftw, legend_rightw, legend_textw, x_legend_offset, y_legend_offset], [dy, h, y_legend_offset], viewport_plotarea) # Passing legend width components instead of legend text width - GR.setfillintstyle(GR.INTSTYLE_SOLID) - gr_set_fillcolor(sp[:background_color_legend]) - GR.fillrect(xpos - legend_leftw, xpos + legend_textw + legend_rightw, ypos + dy, ypos - dy * n) # Allocating white space for actual legend width here - gr_set_line(1, :solid, sp[:foreground_color_legend], sp) - GR.drawrect(xpos - legend_leftw, xpos + legend_textw + legend_rightw, ypos + dy, ypos - dy * n) # Drawing actual legend width here - i = 0 - if sp[:legendtitle] !== nothing - GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_HALF) - gr_set_font(legendtitlefont(sp), sp) - gr_text(xpos - 0.03 + 0.5*w, ypos, string(sp[:legendtitle])) - ypos -= dy - gr_set_font(legendfont(sp), sp) - end - for series in series_list(sp) - clims = get_clims(sp, series) - should_add_to_legend(series) || continue - st = series[:seriestype] - lc = get_linecolor(series, clims) - gr_set_line(sp[:legendfontsize] / 8, get_linestyle(series), lc, sp) - - if (st == :shape || series[:fillrange] !== nothing) && series[:ribbon] === nothing - fc = get_fillcolor(series, clims) - gr_set_fill(fc) #, series[:fillalpha]) - l, r = xpos - legend_width_factor * 3.5, xpos - legend_width_factor / 2 - b, t = ypos-0.4dy, ypos+0.4dy - x = [l, r, r, l, l] - y = [b, b, t, t, b] - gr_set_transparency(fc, get_fillalpha(series)) - gr_polyline(x, y, GR.fillarea) - lc = get_linecolor(series, clims) - gr_set_transparency(lc, get_linealpha(series)) - gr_set_line(get_linewidth(series), get_linestyle(series), lc, sp) - st == :shape && gr_polyline(x, y) - end - - if st in (:path, :straightline, :path3d) - gr_set_transparency(lc, get_linealpha(series)) - if series[:fillrange] === nothing || series[:ribbon] !== nothing - GR.polyline([xpos - legend_width_factor * 3.5, xpos - legend_width_factor / 2], [ypos, ypos]) - else - GR.polyline([xpos - legend_width_factor * 3.5, xpos - legend_width_factor / 2], [ypos+0.4dy, ypos+0.4dy]) - end - end - - if series[:markershape] != :none - 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 - legend_width_factor * 2, ypos, clims, s, sw - ) - end - - lab = series[:label] - GR.settextalign(GR.TEXT_HALIGN_LEFT, GR.TEXT_VALIGN_HALF) - gr_set_textcolor(plot_color(sp[:legendfontcolor])) - gr_text(xpos, ypos, string(lab)) - ypos -= dy - end - end - GR.selntran(1) - GR.restorestate() - end - - # add annotations - GR.savestate() - # update the bounding window - if ispolar(sp) - gr_set_viewport_polar(viewport_plotarea) - else - xmin, xmax, ymin, ymax = data_lims - if xmax > xmin && ymax > ymin - GR.setwindow(xmin, xmax, ymin, ymax) - end - end - for ann in sp[:annotations] - x, y, val = locate_annotation(sp, ann...) - x, y = if RecipesPipeline.is3d(sp) - gr_w3tondc(x, y, z) + gr_set_textcolor(plot_color(sp[:legendfontcolor])) + if sp[:yaxis][:mirror] + (_,i) = sp[:xaxis][:flip] ? findmax(x) : findmin(x) + GR.settextalign(GR.TEXT_HALIGN_RIGHT, GR.TEXT_VALIGN_HALF) + offset = -0.01 else - GR.wctondc(x, y) + (_,i) = sp[:xaxis][:flip] ? findmin(x) : findmax(x) + GR.settextalign(GR.TEXT_HALIGN_LEFT, GR.TEXT_VALIGN_HALF) + offset = 0.01 end - gr_set_font(val.font, sp) - gr_text(x, y, val.str) + (x_l,y_l) = GR.wctondc(x[i],y[i]) + gr_text(x_l+offset,y_l,series[:label]) end GR.restorestate() end +function gr_draw_segments(series, x, y, fillrange, clims) + st = series[:seriestype] + if x !== nothing && length(x) > 1 + segments = series_segments(series, st) + # do area fill + if fillrange !== nothing + GR.setfillintstyle(GR.INTSTYLE_SOLID) + fr_from, fr_to = (is_2tuple(fillrange) ? fillrange : (y, fillrange)) + for segment in segments + i, rng = segment.attr_index, segment.range + fc = get_fillcolor(series, clims, i) + gr_set_fillcolor(fc) + fx = _cycle(x, vcat(rng, reverse(rng))) + fy = vcat(_cycle(fr_from, rng), _cycle(fr_to, reverse(rng))) + gr_set_transparency(fc, get_fillalpha(series, i)) + GR.fillarea(fx, fy) + end + end + + # draw the line(s) + if st in (:path, :straightline) + for segment in segments + i, rng = segment.attr_index, segment.range + lc = get_linecolor(series, clims, i) + gr_set_line( + get_linewidth(series, i), get_linestyle(series, i), lc, series + ) + arrowside = isa(series[:arrow], Arrow) ? series[:arrow].side : :none + arrowstyle = isa(series[:arrow], Arrow) ? series[:arrow].style : :simple + gr_set_fillcolor(lc) + gr_set_transparency(lc, get_linealpha(series, i)) + gr_polyline(x[rng], y[rng]; arrowside = arrowside, arrowstyle = arrowstyle) + end + end + end +end + +function gr_draw_segments_3d(series, x, y, z, clims) + if series[:seriestype] === :path3d && length(x) > 1 + lz = series[:line_z] + segments = series_segments(series, :path3d) + for segment in segments + i, rng = segment.attr_index, segment.range + lc = get_linecolor(series, clims, i) + gr_set_line( + get_linewidth(series, i), get_linestyle(series, i), lc, series + ) + gr_set_transparency(lc, get_linealpha(series, i)) + GR.polyline3d(x[rng], y[rng], z[rng]) + end + end +end + +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 segment in series_segments(series, :scatter) + i = segment.attr_index + rng = intersect(eachindex(x), segment.range) + if !isempty(rng) + ms = get_thickness_scaling(series) * _cycle(msize, i) + msw = get_thickness_scaling(series) * _cycle(strokewidth, i) + shape = _cycle(shapes, i) + for j in rng + gr_draw_marker(series, _cycle(x, j), _cycle(y, j), clims, i, ms, msw, shape) + end + end + end + end +end + +function gr_draw_shapes(series, clims) + x, y = shape_data(series) + for segment in series_segments(series, :shape) + i, rng = segment.attr_index, segment.range + if length(rng) > 1 + # connect to the beginning + rng = vcat(rng, rng[1]) + + # get the segments + xseg, yseg = x[rng], y[rng] + + # draw the interior + fc = get_fillcolor(series, clims, i) + gr_set_fill(fc) + gr_set_transparency(fc, get_fillalpha(series, i)) + GR.fillarea(xseg, yseg) + + # draw the shapes + lc = get_linecolor(series, clims, i) + gr_set_line(get_linewidth(series, i), get_linestyle(series, i), lc, series) + gr_set_transparency(lc, get_linealpha(series, i)) + GR.polyline(xseg, yseg) + end + end +end + +function gr_draw_contour(series, x, y, z, clims) + GR.setspace(clims[1], clims[2], 0, 90) + gr_set_line(get_linewidth(series), get_linestyle(series), get_linecolor(series), series) + is_lc_black = let black=plot_color(:black) + plot_color(series[:linecolor]) in (black,[black]) + end + h = gr_contour_levels(series, clims) + if series[:fillrange] !== nothing + if series[:fillcolor] != series[:linecolor] && !is_lc_black + @warn("GR: filled contour only supported with black contour lines") + end + GR.contourf(x, y, h, z, series[:contour_labels] == true ? 1 : 0) + else + coff = is_lc_black ? 0 : 1000 + GR.contour(x, y, h, z, coff + (series[:contour_labels] == true ? 1 : 0)) + end +end + +function gr_draw_surface(series, x, y, z, clims) + + if series[:seriestype] === :surface + fillalpha = get_fillalpha(series) + fillcolor = get_fillcolor(series) + if length(x) == length(y) == length(z) + x, y, z = GR.gridit(x, y, z, 200, 200) + end + if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 + gr_set_transparency(fillcolor, fillalpha) + GR.surface(x, y, z, GR.OPTION_COLORED_MESH) + else + GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) + end + else # wireframe + GR.setfillcolorind(0) + GR.surface(x, y, z, GR.OPTION_FILLED_MESH) + end +end + +function gr_draw_heatmap(series, x, y, z, clims) + fillgrad = _as_gradient(series[:fillcolor]) + GR.setspace(clims..., 0, 90) + w, h = length(x) - 1, length(y) - 1 + if !ispolar(series) && is_uniformly_spaced(x) && is_uniformly_spaced(y) + # For uniformly spaced data use GR.drawimage, which can be + # much faster than GR.nonuniformcellarray, especially for + # pdf output, and also supports alpha values. + # Note that drawimage draws uniformly spaced data correctly + # even on log scales, where it is visually non-uniform. + colors = plot_color.(get(fillgrad, z, clims), series[:fillalpha]) + rgba = gr_color.(colors) + GR.drawimage(first(x), last(x), last(y), first(y), w, h, rgba) + else + if something(series[:fillalpha], 1) < 1 + @warn "GR: transparency not supported in non-uniform heatmaps. Alpha values ignored." + end + z_normalized = get_z_normalized.(z, clims...) + rgba = Int32[round(Int32, 1000 + _i * 255) for _i in z_normalized] + if !ispolar(series) + GR.nonuniformcellarray(x, y, w, h, rgba) + else + if y[1] < 0 + @warn "'y[1] < 0' (rmin) is not yet supported." + end + xmin, xmax, ymin, ymax = gr_xy_axislims(series[:subplot]) + GR.setwindow(-ymax, ymax, -ymax, ymax) + GR.nonuniformpolarcellarray(rad2deg.(x), y, w, h, rgba) + end + end +end + +function gr_draw_image(series, x, y, z, clims) + w, h = size(z) + xmin, xmax = ignorenan_extrema(x) + ymin, ymax = ignorenan_extrema(y) + rgba = gr_color.(z) + GR.drawimage(xmin, xmax, ymax, ymin, w, h, rgba) +end + # ---------------------------------------------------------------- diff --git a/src/backends/hdf5.jl b/src/backends/hdf5.jl index 8c1d24f2..050992aa 100644 --- a/src/backends/hdf5.jl +++ b/src/backends/hdf5.jl @@ -46,7 +46,7 @@ import Dates #Plots.jl imports HDF5 to main: import ..HDF5 -import ..HDF5: HDF5Group, HDF5Dataset +import ..HDF5: Group, Dataset import ..Colors, ..Colorant import ..PlotUtils.ColorSchemes.ColorScheme @@ -159,40 +159,40 @@ _type_for_map(::Type{T}) where T<:Surface = Surface #==Read/write things like type name in attributes ===============================================================================# -function _write_datatype_attr(ds::Union{HDF5Group, HDF5Dataset}, ::Type{T}) where T +function _write_datatype_attr(ds::Union{Group, Dataset}, ::Type{T}) where T typestr = HDF5PLOT_MAP_TELEM2STR[T] - HDF5.attrs(ds)["TYPE"] = typestr + HDF5.attributes(ds)["TYPE"] = typestr end -function _read_datatype_attr(ds::Union{HDF5Group, HDF5Dataset}) - if !HDF5.exists(HDF5.attrs(ds), "TYPE") +function _read_datatype_attr(ds::Union{Group, Dataset}) + if !Base.haskey(HDF5.attributes(ds), "TYPE") return HDF5_AutoDetect end - typestr = HDF5.read(HDF5.attrs(ds)["TYPE"]) + typestr = HDF5.read(HDF5.attributes(ds)["TYPE"]) return HDF5PLOT_MAP_STR2TELEM[typestr] end #Type parameter attributes: -function _write_typeparam_attr(ds::HDF5Dataset, v::Length{T}) where T - HDF5.attrs(ds)["TYPEPARAM"] = string(T) #Need to add units for Length +function _write_typeparam_attr(ds::Dataset, v::Length{T}) where T + HDF5.attributes(ds)["TYPEPARAM"] = string(T) #Need to add units for Length end -_read_typeparam_attr(ds::HDF5Dataset) = HDF5.read(HDF5.attrs(ds)["TYPEPARAM"]) +_read_typeparam_attr(ds::Dataset) = HDF5.read(HDF5.attributes(ds)["TYPEPARAM"]) -function _write_length_attr(grp::HDF5Group, v::Vector) #of a vector - HDF5.attrs(grp)["LENGTH"] = length(v) +function _write_length_attr(grp::Group, v::Vector) #of a vector + HDF5.attributes(grp)["LENGTH"] = length(v) end -_read_length_attr(::Type{Vector}, grp::HDF5Group) = HDF5.read(HDF5.attrs(grp)["LENGTH"]) +_read_length_attr(::Type{Vector}, grp::Group) = HDF5.read(HDF5.attributes(grp)["LENGTH"]) -function _write_size_attr(grp::HDF5Group, v::Array) #of an array - HDF5.attrs(grp)["SIZE"] = [size(v)...] +function _write_size_attr(grp::Group, v::Array) #of an array + HDF5.attributes(grp)["SIZE"] = [size(v)...] end -_read_size_attr(::Type{Array}, grp::HDF5Group) = tuple(HDF5.read(HDF5.attrs(grp)["SIZE"])...) +_read_size_attr(::Type{Array}, grp::Group) = tuple(HDF5.read(HDF5.attributes(grp)["SIZE"])...) #==_write_typed(): Simple (leaf) datatypes. (Labels with type name.) ===============================================================================# #= No: write out struct instead! -function _write_typed(grp::HDF5Group, name::String, v::T) where T +function _write_typed(grp::Group, name::String, v::T) where T tstr = string(T) path = HDF5.name(grp) * "/" * name @info("Type not supported: $tstr\npath: $path") @@ -200,41 +200,41 @@ function _write_typed(grp::HDF5Group, name::String, v::T) where T end =# #Default behaviour: Assumes value is supported by HDF5 format -function _write_typed(grp::HDF5Group, name::String, v::HDF5_SupportedTypes) +function _write_typed(grp::Group, name::String, v::HDF5_SupportedTypes) grp[name] = v return #No need to _write_datatype_attr end -function _write_typed(grp::HDF5Group, name::String, v::Nothing) +function _write_typed(grp::Group, name::String, v::Nothing) grp[name] = "nothing" #Redundancy check/easier to read HDF5 file _write_datatype_attr(grp[name], Nothing) end -function _write_typed(grp::HDF5Group, name::String, v::Symbol) +function _write_typed(grp::Group, name::String, v::Symbol) grp[name] = String(v) _write_datatype_attr(grp[name], Symbol) end -function _write_typed(grp::HDF5Group, name::String, v::Colorant) +function _write_typed(grp::Group, name::String, v::Colorant) vstr = "#" * Colors.hex(v, :RRGGBBAA) grp[name] = vstr _write_datatype_attr(grp[name], Colorant) end -function _write_typed(grp::HDF5Group, name::String, v::Extrema) +function _write_typed(grp::Group, name::String, v::Extrema) grp[name] = [v.emin, v.emax] #More compact than writing struct _write_datatype_attr(grp[name], Extrema) end -function _write_typed(grp::HDF5Group, name::String, v::Length) +function _write_typed(grp::Group, name::String, v::Length) grp[name] = v.value _write_datatype_attr(grp[name], Length) _write_typeparam_attr(grp[name], v) end -function _write_typed(grp::HDF5Group, name::String, v::typeof(datetimeformatter)) +function _write_typed(grp::Group, name::String, v::typeof(datetimeformatter)) grp[name] = string(v) #Just write something that helps reader _write_datatype_attr(grp[name], typeof(datetimeformatter)) end -function _write_typed(grp::HDF5Group, name::String, v::Array{T}) where T<:Number #Default for arrays +function _write_typed(grp::Group, name::String, v::Array{T}) where T<:Number #Default for arrays grp[name] = v return #No need to _write_datatype_attr end -function _write_typed(grp::HDF5Group, name::String, v::AbstractRange) +function _write_typed(grp::Group, name::String, v::AbstractRange) _write_typed(grp, name, collect(v)) #For now end @@ -244,8 +244,8 @@ end ===============================================================================# #Write an array using HDF5 hierarchy (when not using simple numeric eltype): -function _write_harray(grp::HDF5Group, name::String, v::Array) - sgrp = HDF5.g_create(grp, name) +function _write_harray(grp::Group, name::String, v::Array) + sgrp = HDF5.create_group(grp, name) sz = size(v) lidx = LinearIndices(sz) @@ -260,8 +260,8 @@ function _write_harray(grp::HDF5Group, name::String, v::Array) end #Write Dict without tagging with type: -function _write(grp::HDF5Group, name::String, d::AbstractDict) - sgrp = HDF5.g_create(grp, name) +function _write(grp::Group, name::String, d::AbstractDict) + sgrp = HDF5.create_group(grp, name) for (k, v) in d kstr = string(k) _write_typed(sgrp, kstr, v) @@ -270,7 +270,7 @@ function _write(grp::HDF5Group, name::String, d::AbstractDict) end #Write out arbitrary `struct`s: -function _writestructgeneric(grp::HDF5Group, obj::T) where T +function _writestructgeneric(grp::Group, obj::T) where T for fname in fieldnames(T) v = getfield(obj, fname) _write_typed(grp, String(fname), v) @@ -283,7 +283,7 @@ end ===============================================================================# #Catch-all (default behaviour for `struct`s): -function _write_typed(grp::HDF5Group, name::String, v::T) where T +function _write_typed(grp::Group, name::String, v::T) where T #NOTE: need "name" parameter so that call signature is same with built-ins MT = _type_for_map(T) try #Check to see if type is supported @@ -294,27 +294,27 @@ function _write_typed(grp::HDF5Group, name::String, v::T) where T end #If attribute is supported and no writer is defined, then this should work: - objgrp = HDF5.g_create(grp, name) + objgrp = HDF5.create_group(grp, name) _write_datatype_attr(objgrp, MT) _writestructgeneric(objgrp, v) end -function _write_typed(grp::HDF5Group, name::String, v::Array{T}) where T +function _write_typed(grp::Group, name::String, v::Array{T}) where T _write_harray(grp, name, v) _write_datatype_attr(grp[name], Array) #{Any} end -function _write_typed(grp::HDF5Group, name::String, v::Tuple, ::Type{ELT}) where ELT<: Number #Basic Tuple +function _write_typed(grp::Group, name::String, v::Tuple, ::Type{ELT}) where ELT<: Number #Basic Tuple _write_typed(grp, name, [v...]) _write_datatype_attr(grp[name], Tuple) end -function _write_typed(grp::HDF5Group, name::String, v::Tuple, ::Type) #CplxTuple +function _write_typed(grp::Group, name::String, v::Tuple, ::Type) #CplxTuple _write_harray(grp, name, [v...]) _write_datatype_attr(grp[name], CplxTuple) end -_write_typed(grp::HDF5Group, name::String, v::Tuple) = _write_typed(grp, name, v, eltype(v)) +_write_typed(grp::Group, name::String, v::Tuple) = _write_typed(grp, name, v, eltype(v)) -function _write_typed(grp::HDF5Group, name::String, v::Dict) +function _write_typed(grp::Group, name::String, v::Dict) #= tstr = string(Dict) path = HDF5.name(grp) * "/" * name @@ -323,27 +323,27 @@ function _write_typed(grp::HDF5Group, name::String, v::Dict) =# #No support for structures with Dicts yet end -function _write_typed(grp::HDF5Group, name::String, d::DefaultsDict) #Typically for plot attributes +function _write_typed(grp::Group, name::String, d::DefaultsDict) #Typically for plot attributes _write(grp, name, d) _write_datatype_attr(grp[name], DefaultsDict) end -function _write_typed(grp::HDF5Group, name::String, v::Axis) - sgrp = HDF5.g_create(grp, name) +function _write_typed(grp::Group, name::String, v::Axis) + sgrp = HDF5.create_group(grp, name) #Ignore: sps::Vector{Subplot} _write_typed(sgrp, "plotattributes", v.plotattributes) _write_datatype_attr(sgrp, Axis) end -function _write_typed(grp::HDF5Group, name::String, v::Subplot) +function _write_typed(grp::Group, name::String, v::Subplot) #Not for use in main "Plot.subplots[]" hierarchy. Just establishes reference with subplot_index. - sgrp = HDF5.g_create(grp, name) + sgrp = HDF5.create_group(grp, name) _write_typed(sgrp, "index", v[:subplot_index]) _write_datatype_attr(sgrp, Subplot) return end -function _write_typed(grp::HDF5Group, name::String, v::Plot) +function _write_typed(grp::Group, name::String, v::Plot) #Don't write plot references end @@ -352,10 +352,10 @@ end NOTE: No need to write out type information (inferred from hierarchy) ===============================================================================# -function _write(grp::HDF5Group, sp::Subplot{HDF5Backend}) +function _write(grp::Group, sp::Subplot{HDF5Backend}) _write_typed(grp, "attr", sp.attr) - listgrp = HDF5.g_create(grp, "series_list") + listgrp = HDF5.create_group(grp, "series_list") _write_length_attr(listgrp, sp.series_list) for (i, series) in enumerate(sp.series_list) #Just write .plotattributes part: @@ -365,13 +365,13 @@ function _write(grp::HDF5Group, sp::Subplot{HDF5Backend}) return end -function _write(grp::HDF5Group, plt::Plot{HDF5Backend}) +function _write(grp::Group, plt::Plot{HDF5Backend}) _write_typed(grp, "attr", plt.attr) - listgrp = HDF5.g_create(grp, "subplots") + listgrp = HDF5.create_group(grp, "subplots") _write_length_attr(listgrp, plt.subplots) for (i, sp) in enumerate(plt.subplots) - sgrp = HDF5.g_create(listgrp, "$i") + sgrp = HDF5.create_group(listgrp, "$i") _write(sgrp, sp) end @@ -380,8 +380,8 @@ end function hdf5plot_write(plt::Plot{HDF5Backend}, path::AbstractString; name::String="_unnamed") HDF5.h5open(path, "w") do file - HDF5.d_write(file, "VERSION_INFO", _get_Plots_versionstr()) - grp = HDF5.g_create(file, h5plotpath(name)) + HDF5.write_dataset(file, "VERSION_INFO", _get_Plots_versionstr()) + grp = HDF5.create_group(file, h5plotpath(name)) _write(grp, plt) end end @@ -391,45 +391,45 @@ end ===============================================================================# #Types with built-in HDF5 support: -_read(::Type{HDF5_AutoDetect}, ds::HDF5Dataset) = HDF5.read(ds) +_read(::Type{HDF5_AutoDetect}, ds::Dataset) = HDF5.read(ds) -function _read(::Type{Nothing}, ds::HDF5Dataset) +function _read(::Type{Nothing}, ds::Dataset) nstr = "nothing" v = HDF5.read(ds) if nstr != v path = HDF5.name(ds) - throw(Meta.ParseError("_read(::Nothing, ::HDF5Group): Read $v != $nstr:\n$path")) + throw(Meta.ParseError("_read(::Nothing, ::Group): Read $v != $nstr:\n$path")) end return nothing end -_read(::Type{Symbol}, ds::HDF5Dataset) = Symbol(HDF5.read(ds)) -_read(::Type{Colorant}, ds::HDF5Dataset) = parse(Colorant, HDF5.read(ds)) -_read(::Type{Tuple}, ds::HDF5Dataset) = tuple(HDF5.read(ds)...) -function _read(::Type{Extrema}, ds::HDF5Dataset) +_read(::Type{Symbol}, ds::Dataset) = Symbol(HDF5.read(ds)) +_read(::Type{Colorant}, ds::Dataset) = parse(Colorant, HDF5.read(ds)) +_read(::Type{Tuple}, ds::Dataset) = tuple(HDF5.read(ds)...) +function _read(::Type{Extrema}, ds::Dataset) v = HDF5.read(ds) return Extrema(v[1], v[2]) end -function _read(::Type{Length}, ds::HDF5Dataset) +function _read(::Type{Length}, ds::Dataset) TUNIT = Symbol(_read_typeparam_attr(ds)) v = HDF5.read(ds) T = typeof(v) return Length{TUNIT,T}(v) end -_read(::Type{typeof(datetimeformatter)}, ds::HDF5Dataset) = datetimeformatter +_read(::Type{typeof(datetimeformatter)}, ds::Dataset) = datetimeformatter #== Helper functions for reading in complex data structures ===============================================================================# #When type is unknown, _read_typed() figures it out: -function _read_typed(grp::HDF5Group, name::String) +function _read_typed(grp::Group, name::String) ds = grp[name] t = _read_datatype_attr(ds) return _read(t, ds) end #_readstructgeneric: Needs object values to be written out with _write_typed(): -function _readstructgeneric(::Type{T}, grp::HDF5Group) where T +function _readstructgeneric(::Type{T}, grp::Group) where T vlist = Array{Any}(nothing, fieldcount(T)) for (i, fname) in enumerate(fieldnames(T)) vlist[i] = _read_typed(grp, String(fname)) @@ -438,10 +438,10 @@ function _readstructgeneric(::Type{T}, grp::HDF5Group) where T end #Read KW from group: -function _read(::Type{KW}, grp::HDF5Group) +function _read(::Type{KW}, grp::Group) d = KW() - gnames = names(grp) - for k in gnames + gkeys = keys(grp) + for k in gkeys try v = _read_typed(grp, k) d[Symbol(k)] = v @@ -459,9 +459,9 @@ end ===============================================================================# #Catch-all (default behaviour for `struct`s): -_read(T::Type, grp::HDF5Group) = _readstructgeneric(T, grp) +_read(T::Type, grp::Group) = _readstructgeneric(T, grp) -function _read(::Type{Array}, grp::HDF5Group) #Array{Any} +function _read(::Type{Array}, grp::Group) #Array{Any} sz = _read_size_attr(Array, grp) if tuple(0) == sz; return []; end result = Array{Any}(undef, sz) @@ -479,9 +479,9 @@ function _read(::Type{Array}, grp::HDF5Group) #Array{Any} return reshape(result, sz) end -_read(::Type{CplxTuple}, grp::HDF5Group) = tuple(_read(Array, grp)...) +_read(::Type{CplxTuple}, grp::Group) = tuple(_read(Array, grp)...) -function _read(::Type{GridLayout}, grp::HDF5Group) +function _read(::Type{GridLayout}, grp::Group) #parent = _read_typed(grp, "parent") #Can't use generic reader parent = RootLayout() #TODO: support parent??? minpad = _read_typed(grp, "minpad") @@ -494,17 +494,17 @@ function _read(::Type{GridLayout}, grp::HDF5Group) return GridLayout(parent, minpad, bbox, grid, widths, heights, attr) end #Defaults depends on context. So: user must constructs with defaults, then read. -function _read(::Type{DefaultsDict}, grp::HDF5Group) +function _read(::Type{DefaultsDict}, grp::Group) #User should set DefaultsDict.defaults to one of: # _plot_defaults, _subplot_defaults, _axis_defaults, _series_defaults path = HDF5.name(ds) @warn("Cannot yet read DefaultsDict using _read_typed():\n $path\nCannot fully reconstruct plot.") end -function _read(::Type{Axis}, grp::HDF5Group) +function _read(::Type{Axis}, grp::Group) #1st arg appears to be ref to subplots. Seems to work without it. return Axis([], DefaultsDict(_read(KW, grp["plotattributes"]), _axis_defaults)) end -function _read(::Type{Subplot}, grp::HDF5Group) +function _read(::Type{Subplot}, grp::Group) #Not for use in main "Plot.subplots[]" hierarchy. Just establishes reference with subplot_index. idx = _read_typed(grp, "index") return HDF5PLOT_PLOTREF.ref.subplots[idx] @@ -514,12 +514,12 @@ end #== _read(): Main plot structures ===============================================================================# -function _read(grp::HDF5Group, sp::Subplot) - listgrp = HDF5.g_open(grp, "series_list") +function _read(grp::Group, sp::Subplot) + listgrp = HDF5.open_group(grp, "series_list") nseries = _read_length_attr(Vector, listgrp) for i in 1:nseries - sgrp = HDF5.g_open(listgrp, "$i") + sgrp = HDF5.open_group(listgrp, "$i") seriesinfo = _read(KW, sgrp) plot!(sp, seriesinfo[:x], seriesinfo[:y]) #Add data & create data structures @@ -527,25 +527,25 @@ function _read(grp::HDF5Group, sp::Subplot) end #Perform after adding series... otherwise values get overwritten: - agrp = HDF5.g_open(grp, "attr") + agrp = HDF5.open_group(grp, "attr") _hdf5_merge!(sp.attr, _read(KW, agrp)) return sp end -function _read_plot(grp::HDF5Group) - listgrp = HDF5.g_open(grp, "subplots") +function _read_plot(grp::Group) + listgrp = HDF5.open_group(grp, "subplots") n = _read_length_attr(Vector, listgrp) #Construct new plot, +allocate subplots: plt = plot(layout=n) HDF5PLOT_PLOTREF.ref = plt #Used when reading "layout" - agrp = HDF5.g_open(grp, "attr") + agrp = HDF5.open_group(grp, "attr") _hdf5_merge!(plt.attr, _read(KW, agrp)) for (i, sp) in enumerate(plt.subplots) - sgrp = HDF5.g_open(listgrp, "$i") + sgrp = HDF5.open_group(listgrp, "$i") _read(sgrp, sp) end @@ -554,7 +554,7 @@ end function hdf5plot_read(path::AbstractString; name::String="_unnamed") HDF5.h5open(path, "r") do file - grp = HDF5.g_open(file, h5plotpath("_unnamed")) + grp = HDF5.open_group(file, h5plotpath("_unnamed")) return _read_plot(grp) end end diff --git a/src/backends/inspectdr.jl b/src/backends/inspectdr.jl index e86fb995..005d3da2 100644 --- a/src/backends/inspectdr.jl +++ b/src/backends/inspectdr.jl @@ -79,6 +79,58 @@ end # --------------------------------------------------------------------------- +function _inspectdr_getaxisticks(ticks, gridlines, xfrm) + TickCustom = InspectDR.TickCustom + _xfrm(coord) = InspectDR.axis2aloc(Float64(coord), xfrm.spec) #Ensure Float64 - in case + + ttype = ticksType(ticks) + if ticks == :native + #keep current + elseif ttype == :ticks_and_labels + pos = ticks[1]; labels = ticks[2]; nticks = length(ticks[1]) + newticks = TickCustom[TickCustom(_xfrm(pos[i]), labels[i]) for i in 1:nticks] + gridlines = InspectDR.GridLinesCustom(gridlines) + gridlines.major = newticks + gridlines.minor = [] + gridlines.displayminor = false + elseif ttype == :ticks + nticks = length(ticks) + gridlines.major = Float64[_xfrm(t) for t in ticks] + gridlines.minor = [] + gridlines.displayminor = false + elseif isnothing(ticks) + gridlines.major = [] + gridlines.minor = [] + else #Assume ticks == :native + #keep current + end + + return gridlines #keep current +end + +function _inspectdr_setticks(sp::Subplot, plot, strip, xaxis, yaxis) + InputXfrm1D = InspectDR.InputXfrm1D + _get_ticks(axis) = :native == axis[:ticks] ? (:native) : get_ticks(sp, axis) + wantnative(ticks) = (:native == ticks) + + xticks = _get_ticks(xaxis) + yticks = _get_ticks(yaxis) + + if wantnative(xticks) && wantnative(yticks) + #Don't "eval" tick values + return + end + + #TODO: Allow InspectDR to independently "eval" x or y ticks + ext = InspectDR.getextents_aloc(plot, 1) + grid = InspectDR._eval(strip.grid, plot.xscale, strip.yscale, ext) + grid.xlines = _inspectdr_getaxisticks(xticks, grid.xlines, InputXfrm1D(plot.xscale)) + grid.ylines = _inspectdr_getaxisticks(yticks, grid.ylines, InputXfrm1D(strip.yscale)) + strip.grid = grid +end + +# --------------------------------------------------------------------------- + function _inspectdr_getscale(s::Symbol, yaxis::Bool) #TODO: Support :asinh, :sqrt kwargs = yaxis ? (:tgtmajor=>8, :tgtminor=>2) : () #More grid lines on y-axis @@ -167,6 +219,7 @@ function _series_added(plt::Plot{InspectDRBackend}, series::Series) st = series[:seriestype] sp = series[:subplot] plot = sp.o + clims = get_clims(sp, series) #Don't do anything without a "subplot" object: Will process later. if nothing == plot; return; end @@ -256,8 +309,8 @@ For st in :shape: wfrm.glyph = InspectDR.glyph( shape = _inspectdr_mapglyph(series[:markershape]), size = _inspectdr_mapglyphsize(series[:markersize]), - color = _inspectdr_mapcolor(plot_color(series[:markerstrokecolor], series[:markerstrokealpha])), - fillcolor = _inspectdr_mapcolor(plot_color(series[:markercolor], series[:markeralpha])), + color = _inspectdr_mapcolor(plot_color(get_markerstrokecolor(series), get_markerstrokealpha(series))), + fillcolor = _inspectdr_mapcolor(plot_color(get_markercolor(series, clims), get_markeralpha(series))), ) end @@ -288,8 +341,8 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) ygrid_show = yaxis[:grid] strip.grid = InspectDR.GridRect( - vmajor=xgrid_show, # vminor=xgrid_show, - hmajor=ygrid_show, # hminor=ygrid_show, + vmajor=xgrid_show, # vminor=xgrid_show, + hmajor=ygrid_show, # hminor=ygrid_show, ) plot.xscale = _inspectdr_getscale(xaxis[:scale], false) @@ -302,18 +355,27 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) xmin, xmax = -rmax, rmax ymin, ymax = -rmax, rmax end - plot.xext = InspectDR.PExtents1D() #reset - strip.yext = InspectDR.PExtents1D() #reset plot.xext_full = InspectDR.PExtents1D(xmin, xmax) strip.yext_full = InspectDR.PExtents1D(ymin, ymax) + #Set current extents = full extents (needed for _eval(strip.grid,...)) + plot.xext = plot.xext_full + strip.yext = strip.yext_full + _inspectdr_setticks(sp, plot, strip, xaxis, yaxis) + a = plot.annotation a.title = sp[:title] a.xlabel = xaxis[:guide]; a.ylabels = [yaxis[:guide]] l = plot.layout + #IMPORTANT: Don't forget to actually register changes + #(TODO: need to find a better way to set layout properties) l[:frame_canvas].fillcolor = _inspectdr_mapcolor(sp[:background_color_subplot]) + l[:frame_canvas] = l[:frame_canvas] #register changes l[:frame_data].fillcolor = _inspectdr_mapcolor(sp[:background_color_inside]) + l[:frame_data] = l[:frame_data] #register changes + l[:frame_data].line.color = _inspectdr_mapcolor(xaxis[:foreground_color_axis]) + l[:frame_data] = l[:frame_data] #register changes l[:font_title] = InspectDR.Font(sp[:titlefontfamily], _inspectdr_mapptsize(sp[:titlefontsize]), color = _inspectdr_mapcolor(sp[:titlefontcolor]) @@ -334,6 +396,7 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) color = _inspectdr_mapcolor(sp[:legendfontcolor]) ) l[:frame_legend].fillcolor = _inspectdr_mapcolor(sp[:background_color_legend]) + l[:frame_legend] = l[:frame_legend] #register changes end # called just before updating layout bounding boxes... in case you need to prep @@ -347,8 +410,9 @@ function _before_layout_calcs(plt::Plot{InspectDRBackend}) #Don't use window_title... probably not what you want. #mplot.title = plt[:window_title] end - mplot.layout[:frame].fillcolor = _inspectdr_mapcolor(plt[:background_color_outside]) + mplot.layout[:frame].fillcolor = _inspectdr_mapcolor(plt[:background_color_outside]) + mplot.layout[:frame] = mplot.layout[:frame] #register changes resize!(mplot.subplots, length(plt.subplots)) nsubplots = length(plt.subplots) for (i, sp) in enumerate(plt.subplots) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index bcdec6b5..ebe445a8 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -1,5 +1,6 @@ using Contour: Contour using UUIDs +using Latexify Base.@kwdef mutable struct PGFPlotsXPlot is_created::Bool = false was_shown::Bool = false @@ -72,6 +73,9 @@ function surface_to_vecs(x::AVec, y::AVec, s::Union{AMat,Surface}) yn = Vector{eltype(y)}(undef, length(a)) zn = Vector{eltype(s)}(undef, length(a)) for (n, (i, j)) in enumerate(Tuple.(CartesianIndices(a))) + if length(x) == size(s)[1] + i, j = j, i + end xn[n] = x[j] yn[n] = y[i] zn[n] = a[i, j] @@ -159,11 +163,12 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) ) => nothing, "fill" => cstr, "fill opacity" => a, - "text opacity" => alpha(plot_color(sp[:legendfontcolor])), + "text opacity" => alpha(plot_color(sp[:legendfontcolor])), "font" => pgfx_font( sp[:legendfontsize], pgfx_thickness_scaling(sp), ), + "text" => plot_color(sp[:legendfontcolor]), ), "axis background/.style" => PGFPlotsX.Options( "fill" => bgc_inside, @@ -278,7 +283,7 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) ) extra_series, extra_series_opt = pgfx_split_extra_opts(series[:extra_kwargs]) series_opt = merge(series_opt, PGFPlotsX.Options(extra_series_opt...)) - if RecipesPipeline.is3d(series) || st in (:heatmap, :contour) + if RecipesPipeline.is3d(series) || st in (:heatmap, :contour) || (st == :quiver && opt[:z] !== nothing) series_func = PGFPlotsX.Plot3 else series_func = PGFPlotsX.Plot @@ -287,129 +292,11 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) !isfilledcontour(series) && series[:ribbon] === nothing push!(series_opt, "area legend" => nothing) end - if st in (:heatmap, :contour) - push!(axis.options, "view" => "{0}{90}") + pgfx_add_series!(Val(st), axis, series_opt, series, series_func, opt) + if extra_series !== nothing + extra_series = wraptuple(extra_series) + push!(axis.contents[end], extra_series...) 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, st) - 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 = _cycle(opt[:markershape], i) - 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 # add series annotations anns = series[:series_annotations] for (xi, yi, str, fnt) in EachAnn(anns, series[:x], series[:y]) @@ -443,11 +330,352 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) return pgfx_plot end ## seriestype specifics -@inline function pgfx_series_coordinates!(sp, series, segment_opt, opt, rng) +function pgfx_add_series!(axis, series_opt, series, series_func, opt) + args = pgfx_series_arguments(series, opt) + series_plot = series_func(series_opt, PGFPlotsX.Table(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 = collect(series_segments(series, series[:seriestype])) + sf = opt[:fillrange] + for segment in segments + i, rng = segment.attr_index, segment.range + segment_opt = PGFPlotsX.Options() + segment_opt = merge(segment_opt, pgfx_linestyle(opt, i)) + if opt[:markershape] != :none + marker = _cycle(opt[:markershape], i) + 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!( + series[:plot_object].o.the_plot, + """ + \\pgfdeclareplotmark{PlotsShape$(series[:series_plotindex])}{ + \\filldraw + $path; + } + """, + ) + end + segment_opt = merge(segment_opt, pgfx_marker(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 && + series[:subplot][:legend] != :none && pgfx_should_add_to_legend(series) + pgfx_filllegend!(series_opt, opt) + end + end + # handle arrows + arrow = opt[:arrow] + if arrow isa Arrow + arrow_opt = merge( + segment_opt, + PGFPlotsX.Options("quiver" => PGFPlotsX.Options( + "u" => "\\thisrow{u}", + "v" => "\\thisrow{v}", + pgfx_arrow(arrow, :head) => nothing, + ) + ) + ) + if arrow.side == :head + x_arrow = opt[:x][rng][end-1:end] + y_arrow = opt[:y][rng][end-1:end] + x_path = opt[:x][rng][1:end-1] + y_path = opt[:y][rng][1:end-1] + elseif arrow.side == :tail + x_arrow = opt[:x][rng][2:-1:1] + y_arrow = opt[:y][rng][2:-1:1] + x_path = opt[:x][rng][2:end] + y_path = opt[:y][rng][2:end] + elseif arrow.side == :both + x_arrow = opt[:x][rng][[2,1,end-1,end]] + y_arrow = opt[:y][rng][[2,1,end-1,end]] + x_path = opt[:x][rng][2:end-1] + y_path = opt[:y][rng][2:end-1] + end + coordinates = PGFPlotsX.Table([ + :x => x_arrow[1:2:end-1], + :y => y_arrow[1:2:end-1], + :u => [x_arrow[i] - x_arrow[i-1] for i in 2:2:lastindex(x_arrow)], + :v => [y_arrow[i] - y_arrow[i-1] for i in 2:2:lastindex(y_arrow)], + ]) + arrow_plot = + series_func(merge(series_opt, arrow_opt), coordinates) + push!(axis, arrow_plot) + coordinates = PGFPlotsX.Table(x_path, y_path) + segment_plot = + series_func(merge(series_opt, segment_opt), coordinates) + push!(axis, segment_plot) + else + coordinates = PGFPlotsX.Table(pgfx_series_arguments(series, opt, rng)...) + segment_plot = + series_func(merge(series_opt, segment_opt), coordinates) + push!(axis, segment_plot) + end + # 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 + pgfx_add_legend!(axis, series, opt, i) + end # for segments + # get that last marker + if !isnothing(opt[:y]) && !any(isnan, opt[:y]) && opt[:markershape] isa AVec + additional_plot = PGFPlotsX.PlotInc(pgfx_marker(opt, length(segments) + 1), PGFPlotsX.Coordinates(tuple((last(opt[:x]), last(opt[:y]))))) + push!(axis, additional_plot) + end +end + +function pgfx_add_series!(::Val{:scatter}, axis, series_opt, series, series_func, opt) + push!(series_opt, "only marks" => nothing) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:straightline}, axis, series_opt, series, series_func, opt) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:path3d}, axis, series_opt, series, series_func, opt) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:scatter3d}, axis, series_opt, series, series_func, opt) + push!(series_opt, "only marks" => nothing) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:surface}, axis, series_opt, series, series_func, opt) + push!( + series_opt, + "surf" => nothing, + "mesh/rows" => length(opt[:x]), + "mesh/cols" => length(opt[:y]), + "z buffer" => "sort", + "opacity" => get_fillalpha(series), + ) + 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]) + ) + pgfx_add_series!(axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:heatmap}, axis, series_opt, series, series_func, opt) + push!(axis.options, "view" => "{0}{90}") + push!( + series_opt, + "matrix plot*" => nothing, + "mesh/rows" => length(opt[:x]), + "mesh/cols" => length(opt[:y]), + "point meta" => "\\thisrow{meta}", + ) + args = pgfx_series_arguments(series, opt) + meta = [any(!isfinite, r) ? NaN : r[3] for r in zip(args...)] + for arg in args + arg[(!isfinite).(arg)] .= 0 + end + t = PGFPlotsX.Table(["x" => args[1], "y" => args[2], "z" => args[3], "meta" => meta]) + series_plot = series_func(series_opt, t) + push!(axis, series_plot) + pgfx_add_legend!(axis, series, opt) +end + +function pgfx_add_series!(::Val{:mesh3d}, axis, series_opt, series, series_func, opt) + ptable = join([ string(i, " ", j, " ", k, "\\\\") for (i, j, k) in zip(opt[:connections]...) ], "\n ") + push!( + series_opt, + "patch" => nothing, + "table/row sep" => "\\\\", + "patch table" => ptable + ) + pgfx_add_series!(axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:contour}, axis, series_opt, series, series_func, opt) + push!(axis.options, "view" => "{0}{90}") + if isfilledcontour(series) + pgfx_add_series!(Val(:filledcontour), axis, series_opt, series, series_func, opt) + return nothing + end + pgfx_add_series!(Val(:contour3d), axis, series_opt, series, series_func, opt) + return nothing +end + +function pgfx_add_series!(::Val{:filledcontour}, axis, series_opt, series, series_func, opt) + push!( + series_opt, + "contour filled" => PGFPlotsX.Options(), # labels not supported + "patch type" => "bilinear", + "shader" => "flat", + ) + if opt[:levels] isa Number + push!(series_opt["contour filled"], "number" => opt[:levels]) + elseif opt[:levels] isa AVec + push!(series_opt["contour filled"], "levels" => opt[:levels]) + end + pgfx_add_series!(axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:contour3d}, axis, series_opt, series, series_func, opt) + push!( + series_opt, + "contour prepared" => PGFPlotsX.Options("labels" => opt[:contour_labels]), + ) + series_opt = merge( series_opt, pgfx_linestyle(opt) ) + 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) + if opt[:quiver] !== nothing + push!( + series_opt, + "quiver" => PGFPlotsX.Options( + "u" => "\\thisrow{u}", + "v" => "\\thisrow{v}", + pgfx_arrow(opt[:arrow]) => nothing, + ), + ) + x = opt[:x] + y = opt[:y] + z = opt[:z] + if z !== nothing + push!(series_opt["quiver"], "w" => "\\thisrow{w}") + pgfx_axis!(axis.options, series[:subplot], :z) + table = PGFPlotsX.Table([ + :x => x, + :y => y, + :z => z, + :u => opt[:quiver][1], + :v => opt[:quiver][2], + :w => opt[:quiver][3], + ]) + else + table = PGFPlotsX.Table([ + :x => x, + :y => y, + :u => opt[:quiver][1], + :v => opt[:quiver][2], + ]) + end + 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) + push!(series_opt, "area legend" => nothing) + series_opt = merge(series_opt, pgfx_fillstyle(opt)) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:steppre}, axis, series_opt, series, series_func, opt) + push!(series_opt, "const plot mark right" => nothing) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:stepmid}, axis, series_opt, series, series_func, opt) + push!(series_opt, "const plot mark mid" => nothing) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:steppost}, axis, series_opt, series, series_func, opt) + push!(series_opt, "const plot" => nothing) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:ysticks}, axis, series_opt, series, series_func, opt) + push!(series_opt, "ycomb" => nothing) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_series!(::Val{:xsticks}, axis, series_opt, series, series_func, opt) + push!(series_opt, "xcomb" => nothing) + pgfx_add_series!(Val(:path), axis, series_opt, series, series_func, opt) +end + +function pgfx_add_legend!(axis, series, opt, i = 1) + if series[:subplot][: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 + return nothing +end + +pgfx_series_arguments(series, opt, range) = (arg[range] for arg in pgfx_series_arguments(series, opt)) +function pgfx_series_arguments(series, opt) st = series[:seriestype] - # function args - args = if st in (:contour, :contour3d) - opt[:x], opt[:y], Array(opt[:z])' + return if st in (:contour, :contour3d) + opt[:x], opt[:y], handle_surface(opt[:z]) elseif st in (:heatmap, :surface, :wireframe) surface_to_vecs(opt[:x], opt[:y], opt[:z]) elseif RecipesPipeline.is3d(st) @@ -456,146 +684,12 @@ end straightline_data(series) elseif st == :shape shape_data(series) - elseif ispolar(sp) + elseif ispolar(series) theta, r = opt[:x], opt[:y] rad2deg.(theta), r else opt[:x], opt[:y] end - seg_args = if st in (:contour, :contour3d) - args - else - (arg[rng] for arg in args) - end - if opt[:quiver] !== nothing - push!( - segment_opt, - "quiver" => PGFPlotsX.Options( - "u" => "\\thisrow{u}", - "v" => "\\thisrow{v}", - pgfx_arrow(opt[:arrow]) => nothing, - ), - ) - x, y = collect(seg_args) - return PGFPlotsX.Table([ - :x => x, - :y => y, - :u => opt[:quiver][1], - :v => opt[:quiver][2], - ]) - else - if isfilledcontour(series) - st = :filledcontour - end - pgfx_series_coordinates!(Val(st), segment_opt, opt, seg_args) - end -end -function pgfx_series_coordinates!( - st_val::Union{Val{:path},Val{:path3d},Val{:straightline}}, - segment_opt, - opt, - args, -) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!( - st_val::Union{Val{:scatter},Val{:scatter3d}}, - segment_opt, - opt, - args, -) - push!(segment_opt, "only marks" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:heatmap}, segment_opt, opt, args) - push!( - segment_opt, - "matrix plot*" => nothing, - "mesh/rows" => length(opt[:x]), - "mesh/cols" => length(opt[:y]), - ) - return PGFPlotsX.Table(args...) -end - -function pgfx_series_coordinates!(st_val::Val{:steppre}, segment_opt, opt, args) - push!(segment_opt, "const plot mark right" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:stepmid}, segment_opt, opt, args) - push!(segment_opt, "const plot mark mid" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:steppost}, segment_opt, opt, args) - push!(segment_opt, "const plot" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!( - st_val::Union{Val{:ysticks},Val{:sticks}}, - segment_opt, - opt, - args, -) - push!(segment_opt, "ycomb" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:xsticks}, segment_opt, opt, args) - push!(segment_opt, "xcomb" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:surface}, segment_opt, opt, args) - push!( - segment_opt, - "surf" => nothing, - "mesh/rows" => length(opt[:x]), - "mesh/cols" => length(opt[:y]), - "z buffer" => "sort", - ) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:volume}, segment_opt, opt, args) - push!(segment_opt, "patch" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:wireframe}, segment_opt, opt, args) - push!(segment_opt, "mesh" => nothing, "mesh/rows" => length(opt[:x])) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!(st_val::Val{:shape}, segment_opt, opt, args) - push!(segment_opt, "area legend" => nothing) - return PGFPlotsX.Coordinates(args...) -end -function pgfx_series_coordinates!( - st_val::Union{Val{:contour},Val{:contour3d}}, - segment_opt, - opt, - args, -) - push!( - segment_opt, - "contour prepared" => PGFPlotsX.Options("labels" => opt[:contour_labels]), - ) - return PGFPlotsX.Table(Contour.contours(args..., opt[:levels])) -end -function pgfx_series_coordinates!( - st_val::Val{:filledcontour}, - segment_opt, - opt, - args, -) - xs, ys, zs = collect(args) - push!( - segment_opt, - "contour filled" => PGFPlotsX.Options(), # labels not supported - "patch type" => "bilinear", - "shader" => "flat", - ) - if opt[:levels] isa Number - push!(segment_opt["contour filled"], "number" => opt[:levels]) - elseif opt[:levels] isa AVec - push!(segment_opt["contour filled"], "levels" => opt[:levels]) - end - - PGFPlotsX.Coordinates(args...) end ## pgfx_get_linestyle(k) = get( @@ -676,8 +770,26 @@ pgfx_get_legend_pos(k) = get( Symbol(k), ("at" => string((1.02, 1)), "anchor" => "north west"), ) -pgfx_get_legend_pos(t::Tuple) = ("at" => "{$(string(t))}", "anchor" => "north west") +pgfx_get_legend_pos(t::Tuple{S,T}) where {S<:Real,T<:Real} = ("at" => "{$(string(t))}", "anchor" => "north west") pgfx_get_legend_pos(nt::NamedTuple) = ("at" => "{$(string(nt.at))}", "anchor" => string(nt.anchor)) +pgfx_get_legend_pos(theta::Real) = pgfx_get_legend_pos((theta,:inner)) +function pgfx_get_legend_pos(v::Tuple{S,Symbol}) where S <: Real + (s,c) = sincosd(v[1]) + anchors = [ + "south west" "south" "south east"; + "west" "center" "east"; + "north west" "north" "north east"; + ] + + if v[2] === :inner + rect = (0.07,0.5,1.0,0.07,0.52,1.0) + anchor = anchors[legend_anchor_index(s),legend_anchor_index(c)] + else + rect = (-0.15,0.5,1.05,-0.15,0.52,1.1) + anchor = anchors[4-legend_anchor_index(s),4-legend_anchor_index(c)] + end + return ("at"=>"$(string(legend_pos_from_angle(v[1],rect...)))", "anchor"=>anchor) +end pgfx_get_colorbar_pos(s) = get((left = " left", bottom = " horizontal", top = " horizontal"), s, "") @@ -707,7 +819,7 @@ end ## -------------------------------------------------------------------------------------- # Generates a colormap for pgfplots based on a ColorGradient pgfx_arrow(::Nothing) = "every arrow/.append style={-}" -function pgfx_arrow(arr::Arrow) +function pgfx_arrow(arr::Arrow, side = arr.side) components = String[] head = String[] push!(head, "{stealth[length = $(arr.headlength)pt, width = $(arr.headwidth)pt") @@ -716,11 +828,11 @@ function pgfx_arrow(arr::Arrow) end push!(head, "]}") head = join(head, "") - if arr.side == :both || arr.side == :tail + if side == :both || side == :tail push!(components, head) end push!(components, "-") - if arr.side == :both || arr.side == :head + if side == :both || side == :head push!(components, head) end components = join(components, "") @@ -744,7 +856,7 @@ function pgfx_colormap(v::Vector{<:Colorant}) end function pgfx_colormap(cg::ColorGradient) join(map(1:length(cg)) do i - @sprintf("rgb(%.8fcm)=(%.8f,%.8f,%.8f)", cg.values[i], red(cg.colors[i]), green(cg.colors[i]), blue(cg.colors[i])) + @sprintf("rgb(%.8f)=(%.8f,%.8f,%.8f)", cg.values[i], red(cg.colors[i]), green(cg.colors[i]), blue(cg.colors[i])) end, "\n") end @@ -796,6 +908,13 @@ function pgfx_font(fontsize, thickness_scaling = 1, font = "\\selectfont") return string("{\\fontsize{", fs, " pt}{", 1.3fs, " pt}", font, "}") end +# If a particular fontsize parameter is `nothing`, produce a figure that doesn't specify the +# font size, and therefore uses whatever fontsize is utilised by the doc in which the +# figure is located. +function pgfx_font(fontsize::Nothing, thickness_scaling = 1, font = "\\selectfont") + return string("{", font, "}") +end + function pgfx_should_add_to_legend(series::Series) series.plotattributes[:primary] && !( @@ -828,9 +947,12 @@ function pgfx_marker(plotattributes, i = 1) pgfx_thickness_scaling(plotattributes) * 0.75 * _cycle(plotattributes[:markersize], i) + mark_freq = !any(isnan, plotattributes[:y]) && plotattributes[:markershape] isa AVec ? + length(plotattributes[:markershape]) : 1 return PGFPlotsX.Options( "mark" => shape isa Shape ? "PlotsShape$i" : pgfx_get_marker(shape), "mark size" => "$mark_size pt", + "mark repeat" => mark_freq, "mark options" => PGFPlotsX.Options( "color" => cstr_stroke, "draw opacity" => a_stroke, @@ -960,7 +1082,7 @@ function pgfx_fillrange_args(fillrange, x, y, z) x_fill = [x; x[n:-1:1]; x[1]] y_fill = [y; y[n:-1:1]; x[1]] z_fill = [z; _cycle(fillrange, n:-1:1); z[1]] - return PGFPlotsX.Coordiantes(x_fill, y_fill, z_fill) + return PGFPlotsX.Coordinates(x_fill, y_fill, z_fill) end function pgfx_sanitize_string(p::PlotText) @@ -973,6 +1095,9 @@ function pgfx_sanitize_string(s::AbstractString) s = replace(s, r"\\?\&" => "\\&") s = replace(s, r"\\?\{" => "\\{") s = replace(s, r"\\?\}" => "\\}") + s = map(split(s, "")) do s + isascii(s) ? s : latexify(s) + end |> join end @require LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" begin using .LaTeXStrings @@ -1256,7 +1381,7 @@ function _update_plot_object(plt::Plot{PGFPlotsXBackend}) plt.o(plt) end -for mime in ("application/pdf", "image/png", "image/svg+xml") +for mime in ("application/pdf", "image/svg+xml") @eval function _show( io::IO, mime::MIME{Symbol($mime)}, @@ -1267,6 +1392,18 @@ for mime in ("application/pdf", "image/png", "image/svg+xml") end end + function _show( + io::IO, + mime::MIME{Symbol("image/png")}, + plt::Plot{PGFPlotsXBackend}, + ) + plt.o.was_shown = true + plt_file = tempname() * ".png" + PGFPlotsX.pgfsave(plt_file, plt.o.the_plot; dpi=plt[:dpi]) + write(io, read(plt_file)) + rm(plt_file; force = true) + end + function _show( io::IO, mime::MIME{Symbol("application/x-tex")}, diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 4847f15f..a9aff316 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -120,16 +120,17 @@ end # this method gets the start/end in percentage of the canvas for this axis direction -function plotly_domain(sp::Subplot, letter) +function plotly_domain(sp::Subplot) figw, figh = sp.plt[:size] pcts = bbox_to_pcts(sp.plotarea, figw*px, figh*px) pcts = plotly_apply_aspect_ratio(sp, sp.plotarea, pcts) - i1,i2 = (letter == :x ? (1,3) : (2,4)) - [pcts[i1], pcts[i1]+pcts[i2]] + x_domain = [pcts[1], pcts[1] + pcts[3]] + y_domain = [pcts[2], pcts[2] + pcts[4]] + return x_domain, y_domain end -function plotly_axis(plt::Plot, axis::Axis, sp::Subplot) +function plotly_axis(axis, sp, anchor = nothing, domain = nothing) letter = axis[:letter] framestyle = sp[:framestyle] ax = KW( @@ -146,16 +147,11 @@ function plotly_axis(plt::Plot, axis::Axis, sp::Subplot) :mirror => framestyle == :box, :showticklabels => axis[:showaxis], ) - - if letter in (:x,:y) - ax[:domain] = plotly_domain(sp, letter) - if RecipesPipeline.is3d(sp) - # don't link 3d axes for synchronized interactivity - x_idx = y_idx = sp[:subplot_index] - else - x_idx, y_idx = plotly_link_indicies(plt, sp) - end - ax[:anchor] = "$(letter==:x ? "y$(y_idx)" : "x$(x_idx)")" + if anchor !== nothing + ax[:anchor] = anchor + end + if domain !== nothing + ax[:domain] = domain end ax[:tickangle] = -axis[:rotation] @@ -250,31 +246,38 @@ function plotly_layout(plt::Plot) # set to supported framestyle sp[:framestyle] = _plotly_framestyle(sp[:framestyle]) - # if any(RecipesPipeline.is3d, seriesargs) - if RecipesPipeline.is3d(sp) - azim = sp[:camera][1] - 90 #convert azimuthal to match GR behaviour - theta = 90 - sp[:camera][2] #spherical coordinate angle from z axis - plotattributes_out[:scene] = KW( - Symbol("xaxis$(spidx)") => plotly_axis(plt, sp[:xaxis], sp), - Symbol("yaxis$(spidx)") => plotly_axis(plt, sp[:yaxis], sp), - Symbol("zaxis$(spidx)") => plotly_axis(plt, sp[:zaxis], sp), - - #2.6 multiplier set camera eye such that whole plot can be seen - :camera => KW( - :eye => KW( - :x => cosd(azim)*sind(theta)*2.6, - :y => sind(azim)*sind(theta)*2.6, - :z => cosd(theta)*2.6, - ), - ), - ) - elseif ispolar(sp) + if ispolar(sp) plotattributes_out[Symbol("angularaxis$(spidx)")] = plotly_polaraxis(sp, sp[:xaxis]) plotattributes_out[Symbol("radialaxis$(spidx)")] = plotly_polaraxis(sp, sp[:yaxis]) else - plotattributes_out[Symbol("xaxis$(x_idx)")] = plotly_axis(plt, sp[:xaxis], sp) - # don't allow yaxis to be reupdated/reanchored in a linked subplot - spidx == y_idx ? plotattributes_out[Symbol("yaxis$(y_idx)")] = plotly_axis(plt, sp[:yaxis], sp) : nothing + x_domain, y_domain = plotly_domain(sp) + if RecipesPipeline.is3d(sp) + azim = sp[:camera][1] - 90 #convert azimuthal to match GR behaviour + theta = 90 - sp[:camera][2] #spherical coordinate angle from z axis + plotattributes_out[Symbol(:scene, spidx)] = KW( + :domain => KW(:x => x_domain, :y => y_domain), + Symbol("xaxis$(spidx)") => plotly_axis(sp[:xaxis], sp), + Symbol("yaxis$(spidx)") => plotly_axis(sp[:yaxis], sp), + Symbol("zaxis$(spidx)") => plotly_axis(sp[:zaxis], sp), + + #2.6 multiplier set camera eye such that whole plot can be seen + :camera => KW( + :eye => KW( + :x => cosd(azim)*sind(theta)*2.6, + :y => sind(azim)*sind(theta)*2.6, + :z => cosd(theta)*2.6, + ), + ), + ) + else + plotattributes_out[Symbol("xaxis$(x_idx)")] = + plotly_axis(sp[:xaxis], sp, string("y", y_idx) , x_domain) + # don't allow yaxis to be reupdated/reanchored in a linked subplot + if spidx == y_idx + plotattributes_out[Symbol("yaxis$(y_idx)")] = + plotly_axis(sp[:yaxis], sp, string("x", x_idx), y_domain) + end + end end # legend @@ -336,7 +339,11 @@ function plotly_add_legend!(plotattributes_out::KW, sp::Subplot) :font => plotly_font(legendfont(sp)), :tracegroupgap => 0, :x => legend_position.coords[1], - :y => legend_position.coords[2] + :y => legend_position.coords[2], + :title => KW( + :text => sp[:legendtitle] === nothing ? "" : string(sp[:legendtitle]), + :font => plotly_font(legendtitlefont(sp)), + ), ) end end @@ -377,6 +384,25 @@ end plotly_legend_pos(v::Tuple{S,T}) where {S<:Real, T<:Real} = (coords=v, xanchor="left", yanchor="top") +plotly_legend_pos(theta::Real) = plotly_legend_pos((theta, :inner)) + +function plotly_legend_pos(v::Tuple{S,Symbol}) where S<:Real + (s,c) = sincosd(v[1]) + xanchors = ["left", "center", "right"] + yanchors = ["bottom", "middle", "top"] + + if v[2] === :inner + rect = (0.07,0.5,1.0,0.07,0.52,1.0) + xanchor = xanchors[legend_anchor_index(c)] + yanchor = yanchors[legend_anchor_index(s)] + else + rect = (-0.15,0.5,1.05,-0.15,0.52,1.1) + xanchor = xanchors[4-legend_anchor_index(c)] + yanchor = yanchors[4-legend_anchor_index(s)] + end + return (coords=legend_pos_from_angle(v[1],rect...), xanchor=xanchor, yanchor=yanchor) +end + function plotly_layout_json(plt::Plot) JSON.json(plotly_layout(plt), 4) @@ -456,7 +482,7 @@ function plotly_data(series::Series, letter::Symbol, data) end if series[:seriestype] in (:heatmap, :contour, :surface, :wireframe, :mesh3d) - plotly_surface_data(series, data) + handle_surface(data) else plotly_data(data) end @@ -466,10 +492,6 @@ plotly_data(v::AbstractArray) = v plotly_data(surf::Surface) = surf.surf plotly_data(v::AbstractArray{R}) where {R<:Rational} = float(v) -plotly_surface_data(series::Series, a::AbstractVector) = a -plotly_surface_data(series::Series, a::AbstractMatrix) = transpose_z(series, a, false) -plotly_surface_data(series::Series, a::Surface) = plotly_surface_data(series, a.surf) - function plotly_native_data(axis::Axis, data::AbstractArray) if !isempty(axis[:discrete_values]) construct_categorical_data(data, axis) @@ -510,9 +532,17 @@ function plotly_series(plt::Plot, series::Series) plotattributes_out = KW() # these are the axes that the series should be mapped to - x_idx, y_idx = plotly_link_indicies(plt, sp) - plotattributes_out[:xaxis] = "x$(x_idx)" - plotattributes_out[:yaxis] = "y$(y_idx)" + if RecipesPipeline.is3d(sp) + spidx = length(plt.subplots) > 1 ? sp[:subplot_index] : "" + plotattributes_out[:xaxis] = "x$spidx" + plotattributes_out[:yaxis] = "y$spidx" + plotattributes_out[:zaxis] = "z$spidx" + plotattributes_out[:scene] = "scene$spidx" + else + x_idx, y_idx = length(plt.subplots) > 1 ? plotly_link_indicies(plt, sp) : ("", "") + plotattributes_out[:xaxis] = "x$(x_idx)" + plotattributes_out[:yaxis] = "y$(y_idx)" + end plotattributes_out[:showlegend] = should_add_to_legend(series) if st == :straightline @@ -577,16 +607,16 @@ function plotly_series(plt::Plot, series::Series) plotattributes_out[:colorscale] = plotly_colorscale(series[:fillcolor], series[:fillalpha]) plotattributes_out[:opacity] = series[:fillalpha] if series[:fill_z] !== nothing - plotattributes_out[:surfacecolor] = plotly_surface_data(series, series[:fill_z]) + plotattributes_out[:surfacecolor] = handle_surface(series[:fill_z]) end plotattributes_out[:showscale] = hascolorbar(sp) end elseif st == :mesh3d plotattributes_out[:type] = "mesh3d" plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = x, y, z - - if series[:connections] != nothing - if typeof(series[:connections]) <: Tuple{Array,Array,Array} + + if series[:connections] !== nothing + if typeof(series[:connections]) <: Tuple{Array,Array,Array} i,j,k = series[:connections] if !(length(i) == length(j) == length(k)) throw(ArgumentError("Argument connections must consist of equally sized arrays.")) @@ -602,9 +632,9 @@ function plotly_series(plt::Plot, series::Series) plotattributes_out[:color] = rgba_string(plot_color(series[:fillcolor], series[:fillalpha])) plotattributes_out[:opacity] = series[:fillalpha] if series[:fill_z] !== nothing - plotattributes_out[:surfacecolor] = plotly_surface_data(series, series[:fill_z]) + plotattributes_out[:surfacecolor] = handle_surface(series[:fill_z]) end - plotattributes_out[:showscale] = hascolorbar(sp) + plotattributes_out[:showscale] = hascolorbar(sp) else @warn("Plotly: seriestype $st isn't supported.") return KW() @@ -632,7 +662,7 @@ function plotly_series(plt::Plot, series::Series) end function plotly_series_shapes(plt::Plot, series::Series, clims) - segments = iter_segments(series) + segments = collect(series_segments(series)) plotattributes_outs = Vector{KW}(undef, length(segments)) # TODO: create a plotattributes_out for each polygon @@ -651,7 +681,8 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) for (letter, data) in zip((:x, :y), shape_data(series, 100)) ) - for (i,rng) in enumerate(segments) + for segment in segments + i, rng = segment.attr_index, segment.range length(rng) < 2 && continue # to draw polygons, we actually draw lines with fill @@ -694,14 +725,16 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z hasfillrange = st in (:path, :scatter, :scattergl, :straightline) && (isa(series[:fillrange], AbstractVector) || isa(series[:fillrange], Tuple)) - segments = iter_segments(series, st) + segments = collect(series_segments(series, st)) plotattributes_outs = fill(KW(), (hasfillrange ? 2 : 1 ) * length(segments)) - needs_scatter_fix = !isscatter && hasmarker && !any(isnan,y) + needs_scatter_fix = !isscatter && hasmarker && !any(isnan,y) && length(segments) > 1 - for (i,rng) in enumerate(segments) + for (k, segment) in enumerate(segments) + i, rng = segment.attr_index, segment.range + plotattributes_out = deepcopy(plotattributes_base) - plotattributes_out[:showlegend] = i==1 ? should_add_to_legend(series) : false + plotattributes_out[:showlegend] = k==1 ? should_add_to_legend(series) : false plotattributes_out[:legendgroup] = series[:label] # set the type @@ -788,16 +821,15 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z else # if fillrange is a tuple with upper and lower limit, plotattributes_out_fillrange # is the series that will do the filling - fillrng = Tuple(series[:fillrange][i][rng] for i in 1:2) - plotattributes_out_fillrange[:x], plotattributes_out_fillrange[:y] = concatenate_fillrange(x[rng], fillrng) + plotattributes_out_fillrange[:x], plotattributes_out_fillrange[:y] = concatenate_fillrange(x[rng], series[:fillrange]) plotattributes_out_fillrange[:line][:width] = 0 delete!(plotattributes_out, :fill) delete!(plotattributes_out, :fillcolor) end - plotattributes_outs[(2 * i - 1):(2 * i)] = [plotattributes_out_fillrange, plotattributes_out] + plotattributes_outs[(2k-1):(2k)] = [plotattributes_out_fillrange, plotattributes_out] else - plotattributes_outs[i] = plotattributes_out + plotattributes_outs[k] = plotattributes_out end end @@ -825,8 +857,8 @@ function plotly_colorbar_hack(series::Series, plotattributes_base::KW, sym::Symb end # zrange = zmax == zmin ? 1 : zmax - zmin # if all marker_z values are the same, plot all markers same color (avoids division by zero in next line) plotattributes_out[:marker] = KW( - :size => 0, - :opacity => 0, + :size => 1e-10, + :opacity => 1e-10, :color => [0.5], :cmin => cmin, :cmax => cmax, @@ -873,31 +905,19 @@ plotly_series_json(plt::Plot) = JSON.json(plotly_series(plt), 4) html_head(plt::Plot{PlotlyBackend}) = plotly_html_head(plt) html_body(plt::Plot{PlotlyBackend}) = plotly_html_body(plt) -const ijulia_initialized = Ref(false) - function plotly_html_head(plt::Plot) - local_file = ("file:///" * plotly_local_file_path) plotly = - use_local_dependencies[] ? local_file : "https://cdn.plot.ly/plotly-1.54.2.min.js" + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" include_mathjax = get(plt[:extra_plot_kwargs], :include_mathjax, "") mathjax_file = include_mathjax != "cdn" ? ("file://" * include_mathjax) : "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" mathjax_head = include_mathjax == "" ? "" : "\n\t\t" - if isijulia() && !ijulia_initialized[] - # using requirejs seems to be key to load a js depency in IJulia! - # https://requirejs.org/docs/start.html - # https://github.com/JuliaLang/IJulia.jl/issues/345 - display("text/html", """ - - """) - ijulia_initialized[] = true + if isijulia() + mathjax_head + else + "$mathjax_head" end - return "$mathjax_head" end function plotly_html_body(plt, style = nothing) @@ -905,12 +925,34 @@ function plotly_html_body(plt, style = nothing) w, h = plt[:size] style = "width:$(w)px;height:$(h)px;" end + + requirejs_prefix = "" + requirejs_suffix = "" + if isijulia() + # require.js adds .js automatically + plotly_no_ext = + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" + plotly_no_ext = plotly_no_ext[1:end-3] + + requirejs_prefix = """ + requirejs.config({ + paths: { + Plotly: '$(plotly_no_ext)' + } + }); + require(['Plotly'], function (Plotly) { + """ + requirejs_suffix = "});" + end + uuid = UUIDs.uuid4() html = """
""" html diff --git a/src/backends/orca.jl b/src/backends/plotlybase.jl similarity index 54% rename from src/backends/orca.jl rename to src/backends/plotlybase.jl index 733e25a9..d0e34f2b 100644 --- a/src/backends/orca.jl +++ b/src/backends/plotlybase.jl @@ -1,14 +1,14 @@ function plotlybase_syncplot(plt::Plot) - plt.o = ORCA.PlotlyBase.Plot() - traces = ORCA.PlotlyBase.GenericTrace[] + plt.o = PlotlyBase.Plot() + traces = PlotlyBase.GenericTrace[] for series_dict in plotly_series(plt) plotly_type = pop!(series_dict, :type) - push!(traces, ORCA.PlotlyBase.GenericTrace(plotly_type; series_dict...)) + push!(traces, PlotlyBase.GenericTrace(plotly_type; series_dict...)) end - ORCA.PlotlyBase.addtraces!(plt.o, traces...) + PlotlyBase.addtraces!(plt.o, traces...) layout = plotly_layout(plt) w, h = plt[:size] - ORCA.PlotlyBase.relayout!(plt.o, layout, width = w, height = h) + PlotlyBase.relayout!(plt.o, layout, width = w, height = h) return plt.o end @@ -19,5 +19,5 @@ for (mime, fmt) in ( "image/eps" => "eps", ) @eval _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{PlotlyBackend}) = - ORCA.PlotlyBase.savefig(io, plotlybase_syncplot(plt), format = $fmt) + PlotlyBase.savefig(io, plotlybase_syncplot(plt), format = $fmt) end diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 10e1bd51..aca6bb64 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -25,6 +25,7 @@ pycollections = PyPlot.pyimport("matplotlib.collections") pyart3d = PyPlot.art3D pyrcparams = PyPlot.PyDict(PyPlot.matplotlib."rcParams") + # "support" matplotlib v1.5 set_facecolor_sym = if PyPlot.version < v"2" @warn("You are using Matplotlib $(PyPlot.version), which is no longer officialy supported by the Plots community. To ensure smooth Plots.jl integration update your Matplotlib library to a version >= 2.0.0") @@ -60,6 +61,9 @@ end # # anything else just gets a bluesred gradient # py_colormap(c, α=nothing) = py_colormap(default_gradient(), α) +py_handle_surface(v) = v +py_handle_surface(z::Surface) = z.surf + py_color(s) = py_color(parse(Colorant, string(s))) py_color(c::Colorant) = (red(c), green(c), blue(c), alpha(c)) py_color(cs::AVec) = map(py_color, cs) @@ -201,9 +205,15 @@ function fix_xy_lengths!(plt::Plot{PyPlotBackend}, series::Series) end end -py_linecolormap(series::Series) = py_colormap(series[:linecolor]) -py_markercolormap(series::Series) = py_colormap(series[:markercolor]) -py_fillcolormap(series::Series) = py_colormap(series[:fillcolor]) +function py_linecolormap(series::Series) + py_colormap(cgrad(get_linecolor(series), alpha=get_linealpha(series))) +end +function py_markercolormap(series::Series) + py_colormap(cgrad(get_markercolor(series), alpha=get_markeralpha(series))) +end +function py_fillcolormap(series::Series) + py_colormap(cgrad(get_fillcolor(series), alpha=get_fillalpha(series))) +end # --------------------------------------------------------------------------- @@ -343,7 +353,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) fix_xy_lengths!(plt, series) # ax = getAxis(plt, series) - x, y, z = series[:x], series[:y], series[:z] + x, y, z = (py_handle_surface(series[letter]) for letter in (:x, :y, :z)) if st == :straightline x, y = straightline_data(series) elseif st == :shape @@ -368,8 +378,10 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) vmin, vmax = clims = get_clims(sp, series) # Dict to store extra kwargs - if st == :wireframe - extrakw = KW() # vmin, vmax cause an error for wireframe plot + if st == :wireframe || st == :hexbin + # vmin, vmax cause an error for wireframe plot + # We are not supporting clims for hexbin as calculation of bins is not trivial + extrakw = KW() else extrakw = KW(:vmin => vmin, :vmax => vmax) end @@ -428,9 +440,10 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # end # push!(handles, handle) # else - for (i, rng) in enumerate(iter_segments(series, st)) + for (k, segment) in enumerate(series_segments(series, st)) + i, rng = segment.attr_index, segment.range handle = ax."plot"((arg[rng] for arg in xyargs)...; - label = i == 1 ? series[:label] : "", + label = k == 1 ? series[:label] : "", zorder = series[:series_plotindex], color = py_color(single_color(get_linecolor(series, clims, i)), get_linealpha(series, i)), linewidth = py_thickness_scale(plt, get_linewidth(series, i)), @@ -474,11 +487,20 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) if series[:markershape] != :none && st in ( :path, :scatter, :path3d, :scatter3d, :steppre, :steppost, :bar ) - for (i, rng) in enumerate(iter_segments(series, :scatter)) + for segment in series_segments(series, :scatter) + i, rng = segment.attr_index, segment.range xyargs = if st == :bar && !isvertical(series) - y[rng], x[rng] + if RecipesPipeline.is3d(sp) + y[rng], x[rng], z[rng] + else + y[rng], x[rng] + end else - x[rng], y[rng] + if RecipesPipeline.is3d(sp) + x[rng], y[rng], z[rng] + else + x[rng], y[rng] + end end handle = ax."scatter"(xyargs...; @@ -496,31 +518,27 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end if st == :hexbin - handle = ax."hexbin"(x, y, + extrakw[:mincnt] = get(series[:extra_kwargs], :mincnt, nothing) + extrakw[:edgecolors] = get(series[:extra_kwargs], :edgecolors, py_color(get_linecolor(series))) + handle = ax."hexbin"(x, y; label = series[:label], C = series[:weights], gridsize = series[:bins]==:auto ? 100 : series[:bins], # 100 is the default value linewidths = py_thickness_scale(plt, series[:linewidth]), - edgecolors = py_color(get_linecolor(series)), alpha = series[:fillalpha], cmap = py_fillcolormap(series), # applies to the pcolorfast object zorder = series[:series_plotindex], - # extrakw... # We are not supporting clims for hexbin as calculation of bins is not trivial + extrakw... ) push!(handles, handle) end if st in (:contour, :contour3d) - z = transpose_z(series, z.surf) - if typeof(x)<:Plots.Surface - x = Plots.transpose_z(series, x.surf) - end - if typeof(y)<:Plots.Surface - y = Plots.transpose_z(series, y.surf) - end - if st == :contour3d extrakw[:extend3d] = true + if !ismatrix(x) || !ismatrix(y) + x, y = repeat(x', length(y), 1), repeat(y, 1, length(x)) + end end if typeof(series[:linecolor]) <: AbstractArray @@ -555,17 +573,17 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end if st in (:surface, :wireframe) - if typeof(z) <: AbstractMatrix || typeof(z) <: Surface - x, y, z = map(Array, (x,y,z)) + if z isa AbstractMatrix if !ismatrix(x) || !ismatrix(y) - x = repeat(x', length(y), 1) - y = repeat(y, 1, length(series[:x])) + x, y = repeat(x', length(y), 1), repeat(y, 1, length(x)) end - z = transpose_z(series, z) if st == :surface if series[:fill_z] !== nothing # the surface colors are different than z-value - extrakw[:facecolors] = py_shading(series[:fillcolor], transpose_z(series, series[:fill_z].surf)) + extrakw[:facecolors] = py_shading( + series[:fillcolor], + py_handle_surface(series[:fill_z]), + ) extrakw[:shade] = false else extrakw[:cmap] = py_fillcolormap(series) @@ -617,15 +635,15 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) ymin, ymax = ignorenan_extrema(series[:y]) dx = (xmax - xmin) / (length(series[:x]) - 1) / 2 dy = (ymax - ymin) / (length(series[:y]) - 1) / 2 - img = Array(transpose_z(series, z.surf)) - z = if eltype(img) <: Colors.AbstractGray - float(img) - elseif eltype(img) <: Colorant - map(c -> Float64[red(c),green(c),blue(c),alpha(c)], img) + z = if eltype(z) <: Colors.AbstractGray + float(z) + elseif eltype(z) <: Colorant + map(c -> Float64[red(c),green(c),blue(c),alpha(c)], z) else z # hopefully it's in a data format that will "just work" with imshow end - handle = ax."imshow"(z; + handle = ax."imshow"( + z; zorder = series[:series_plotindex], cmap = py_colormap(cgrad(plot_color([:black, :white]))), vmin = 0.0, @@ -641,7 +659,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end if st == :heatmap - x, y, z = heatmap_edges(x, sp[:xaxis][:scale]), heatmap_edges(y, sp[:yaxis][:scale]), transpose_z(series, z.surf) + x, y = heatmap_edges(x, sp[:xaxis][:scale], y, sp[:yaxis][:scale], size(z)) expand_extrema!(sp[:xaxis], x) expand_extrema!(sp[:yaxis], y) @@ -663,7 +681,8 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) if st == :shape handle = [] - for (i, rng) in enumerate(iter_segments(series)) + for segment in series_segments(series) + i, rng = segment.attr_index, segment.range if length(rng) > 1 path = pypath."Path"(hcat(x[rng], y[rng])) patches = pypatches."PathPatch"( @@ -690,7 +709,8 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # handle area filling fillrange = series[:fillrange] if fillrange !== nothing && st != :contour - for (i, rng) in enumerate(iter_segments(series)) + for segment in series_segments(series) + i, rng = segment.attr_index, segment.range f, dim1, dim2 = if isvertical(series) :fill_between, x[rng], y[rng] else @@ -727,7 +747,15 @@ function py_set_lims(ax, sp::Subplot, axis::Axis) getproperty(ax, Symbol("set_", letter, "lim"))(lfrom, lto) end -py_surround_latextext(latexstring, env) = PyPlot.LaTeXStrings.latexstring(env, "{",latexstring[2:end-1],"}") +function py_surround_latextext(latexstring, env) + if !isempty(latexstring) && latexstring[1] == '$' && latexstring[end] == '$' + unenclosed = latexstring[2:end-1] + else + unenclosed = latexstring + end + PyPlot.LaTeXStrings.latexstring(env, "{", unenclosed, "}") +end + function py_set_ticks(ax, ticks, letter, env) ticks == :auto && return @@ -746,7 +774,13 @@ function py_set_ticks(ax, ticks, letter, env) axis."set_ticks"(ticks) elseif ttype == :ticks_and_labels axis."set_ticks"(ticks[1]) - tick_labels = [py_surround_latextext(ticklabel, env) for ticklabel in ticks[2]] + + if pyrcparams["text.usetex"] + tick_labels = ticks[2] + else + tick_labels = [py_surround_latextext(ticklabel, env) for ticklabel in ticks[2]] + end + axis."set_ticklabels"(tick_labels) else error("Invalid input for $(letter)ticks: $ticks") @@ -773,28 +807,37 @@ function py_compute_axis_minval(sp::Subplot, axis::Axis) minval end -function py_set_scale(ax, sp::Subplot, axis::Axis) - scale = axis[:scale] - letter = axis[:letter] +function py_set_scale(ax, sp::Subplot, scale::Symbol, letter::Symbol) scale in supported_scales() || return @warn("Unhandled scale value in pyplot: $scale") func = getproperty(ax, Symbol("set_", letter, "scale")) + if PyPlot.version ≥ v"3.3" # https://matplotlib.org/3.3.0/api/api_changes.html + pyletter = Symbol("") + else + pyletter = letter + end kw = KW() arg = if scale == :identity "linear" else - kw[Symbol(:base,letter)] = if scale == :ln + kw[Symbol(:base, pyletter)] = if scale == :ln ℯ elseif scale == :log2 2 elseif scale == :log10 10 end - kw[Symbol(:linthresh,letter)] = NaNMath.max(1e-16, py_compute_axis_minval(sp, axis)) + axis = sp[Symbol(letter, :axis)] + kw[Symbol(:linthresh, pyletter)] = NaNMath.max(1e-16, py_compute_axis_minval(sp, axis)) "symlog" end func(arg; kw...) end +function py_set_scale(ax, sp::Subplot, axis::Axis) + scale = axis[:scale] + letter = axis[:letter] + py_set_scale(ax, sp, scale, letter) +end function py_set_axis_colors(sp, ax, a::Axis) for (loc, spine) in ax.spines @@ -896,10 +939,8 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) end kw[:spacing] = "proportional" - fig = plt.o - - if RecipesPipeline.is3d(sp) - cbax = fig."add_axes"([0.9, 0.1, 0.03, 0.8]) + if RecipesPipeline.is3d(sp) || ispolar(sp) + cbax = fig."add_axes"([0.9, 0.1, 0.03, 0.8], label=string("cbar", sp[:subplot_index])) cb = fig."colorbar"(handle; cax=cbax, kw...) else # divider approach works only with 2d plots @@ -924,7 +965,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) colorbar_orientation="horizontal" end - cbax = divider.append_axes(colorbar_position, size="5%", pad=colorbar_pad) # Reasonable value works most of the usecases + cbax = divider.append_axes(colorbar_position, size="5%", pad=colorbar_pad, label=string("cbar", sp[:subplot_index])) # Reasonable value works most of the usecases cb = fig."colorbar"(handle; cax=cbax, orientation = colorbar_orientation, kw...) if sp[:colorbar] == :left @@ -937,34 +978,74 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) end - cb."set_label"(sp[:colorbar_title],size=py_thickness_scale(plt, sp[:yaxis][:guidefontsize]),family=sp[:yaxis][:guidefontfamily], color = py_color(sp[:yaxis][:guidefontcolor])) + cb."set_label"(sp[:colorbar_title],size=py_thickness_scale(plt, sp[:colorbar_titlefontsize]),family=sp[:colorbar_titlefontfamily], color = py_color(sp[:colorbar_titlefontcolor])) # cb."formatter".set_useOffset(false) # This for some reason does not work, must be a pyplot bug, instead this is a workaround: cb."formatter".set_powerlimits((-Inf, Inf)) cb."update_ticks"() - for lab in cb."ax"."yaxis"."get_ticklabels"() - lab."set_fontsize"(py_thickness_scale(plt, sp[:yaxis][:tickfontsize])) - lab."set_family"(sp[:yaxis][:tickfontfamily]) - lab."set_color"(py_color(sp[:yaxis][:tickfontcolor])) + env = "\\mathregular" # matches the outer fonts https://matplotlib.org/tutorials/text/mathtext.html + ticks = get_colorbar_ticks(sp) + + if sp[:colorbar] in (:top, :bottom) + axis = sp[:xaxis] # colorbar inherits from x axis + cbar_axis = cb."ax"."xaxis" + ticks_letter=:x + else + axis = sp[:yaxis] # colorbar inherits from y axis + cbar_axis = cb."ax"."yaxis" + ticks_letter=:y end + py_set_scale(cb.ax, sp, sp[:colorbar_scale], ticks_letter) + sp[:colorbar_ticks] == :native ? nothing : py_set_ticks(cb.ax, ticks, ticks_letter, env) + + for lab in cbar_axis."get_ticklabels"() + lab."set_fontsize"(py_thickness_scale(plt, sp[:colorbar_tickfontsize])) + lab."set_family"(sp[:colorbar_tickfontfamily]) + lab."set_color"(py_color(sp[:colorbar_tickfontcolor])) + end + + # Adjust thickness of the cbar ticks + intensity = 0.5 + cbar_axis."set_tick_params"( + direction = axis[:tick_direction] == :out ? "out" : "in", + width=py_thickness_scale(plt, intensity), + length= 5 * py_thickness_scale(plt, intensity) + ) + + + + cb.outline."set_linewidth"(py_thickness_scale(plt, 1)) + sp.attr[:cbar_handle] = cb sp.attr[:cbar_ax] = cbax end + # framestyle if !ispolar(sp) && !RecipesPipeline.is3d(sp) - ax.spines["left"]."set_linewidth"(py_thickness_scale(plt, 1)) - ax.spines["bottom"]."set_linewidth"(py_thickness_scale(plt, 1)) + for pos in ("left", "right", "top", "bottom") + # Scale all axes by default first + ax.spines[pos]."set_linewidth"(py_thickness_scale(plt, 1)) + end + + # Then set visible some of them if sp[:framestyle] == :semi intensity = 0.5 - ax.spines["right"]."set_alpha"(intensity) - ax.spines["top"]."set_alpha"(intensity) - ax.spines["right"]."set_linewidth"(py_thickness_scale(plt, intensity)) - ax.spines["top"]."set_linewidth"(py_thickness_scale(plt, intensity)) + + spine = sp[:yaxis][:mirror] ? "left" : "right" + ax.spines[spine]."set_alpha"(intensity) + ax.spines[spine]."set_linewidth"(py_thickness_scale(plt, intensity)) + + spine = sp[:xaxis][:mirror] ? "bottom" : "top" + ax.spines[spine]."set_linewidth"(py_thickness_scale(plt, intensity)) + ax.spines[spine]."set_alpha"(intensity) + elseif sp[:framestyle] == :box + ax.tick_params(top=true) # Add ticks too + ax.tick_params(right=true) # Add ticks too elseif sp[:framestyle] in (:axes, :origin) - ax.spines["right"]."set_visible"(false) - ax.spines["top"]."set_visible"(false) + sp[:xaxis][:mirror] ? ax.spines["bottom"]."set_visible"(false) : ax.spines["top"]."set_visible"(false) + sp[:yaxis][:mirror] ? ax.spines["left"]."set_visible"(false) : ax.spines["right"]."set_visible"(false) if sp[:framestyle] == :origin ax.spines["bottom"]."set_position"("zero") ax.spines["left"]."set_position"("zero") @@ -978,6 +1059,16 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) ax."axvline"(x = 0, color = py_color(sp[:yaxis][:foreground_color_axis]), lw = py_thickness_scale(plt, 0.75)) end end + + if sp[:xaxis][:mirror] + ax.xaxis."set_label_position"("top") # the guides + sp[:framestyle] == :box ? nothing : ax.xaxis."tick_top"() + end + + if sp[:yaxis][:mirror] + ax.yaxis."set_label_position"("right") # the guides + sp[:framestyle] == :box ? nothing : ax.yaxis."tick_right"() + end end # axis attributes @@ -986,15 +1077,11 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) PyPlot.PyCall.hasproperty(ax, axissym) || continue axis = sp[axissym] pyaxis = getproperty(ax, axissym) - if axis[:mirror] && letter != :z - pos = letter == :x ? "top" : "right" - pyaxis."set_label_position"(pos) # the guides - pyaxis."set_ticks_position"("both") # the hash marks - getproperty(pyaxis, Symbol(:tick_, pos))() # the tick labels - end + if axis[:guide_position] != :auto && letter != :z pyaxis."set_label_position"(axis[:guide_position]) end + py_set_scale(ax, sp, axis) axis[:ticks] == :native ? nothing : py_set_lims(ax, sp, axis) if ispolar(sp) && letter == :y @@ -1007,20 +1094,39 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) end # Set ticks - fontProperties = PyPlot.PyCall.PyDict(Dict("family" => axis[:tickfontfamily], - "size" => py_thickness_scale(plt, axis[:tickfontsize]), - "useTex" => false, - "rotation" => axis[:tickfontrotation])) - getproperty(ax, Symbol("set_",letter,"ticklabels"))(getproperty(ax, Symbol("get_",letter,"ticks"))(), fontProperties) + fontProperties = PyPlot.PyCall.PyDict( + Dict( + "family" => axis[:tickfontfamily], + "size" => py_thickness_scale(plt, axis[:tickfontsize]), + "rotation" => axis[:tickfontrotation], + ) + ) + + positions = getproperty(ax, Symbol("get_",letter,"ticks"))() + pyaxis.set_major_locator(pyticker.FixedLocator(positions)) + if RecipesPipeline.is3d(sp) + getproperty(ax, Symbol("set_",letter,"ticklabels"))( + positions; + (Symbol(k) => v for (k, v) in fontProperties)... + ) + else + getproperty(ax, Symbol("set_",letter,"ticklabels"))( + positions, + fontdict=fontProperties, + ) + end # workaround to set mathtext.fontspec per Text element env = "\\mathregular" # matches the outer fonts https://matplotlib.org/tutorials/text/mathtext.html - axis[:ticks] == :native ? nothing : py_set_ticks(ax, ticks, letter, env) + axis[:ticks] == :native ? nothing : py_set_ticks(ax, ticks, letter, env) # Tick marks intensity = 0.5 # This value corresponds to scaling of other grid elements - pyaxis."set_tick_params"(direction = axis[:tick_direction] == :out ? "out" : "in", width=py_thickness_scale(plt, intensity), - length= 5 * py_thickness_scale(plt, intensity)) + pyaxis."set_tick_params"( + direction = axis[:tick_direction] == :out ? "out" : "in", + width=py_thickness_scale(plt, intensity), + length= 5 * py_thickness_scale(plt, intensity) + ) getproperty(ax, Symbol("set_", letter, "label"))(axis[:guide]) if get(axis.plotattributes, :flip, false) @@ -1150,6 +1256,7 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) toppad = 0mm rightpad = 0mm bottompad = 0mm + for bb in (py_bbox_axis(ax, "x"), py_bbox_axis(ax, "y"), py_bbox_title(ax), py_bbox_legend(ax)) if ispositive(width(bb)) && ispositive(height(bb)) leftpad = max(leftpad, left(plotbb) - left(bb)) @@ -1159,11 +1266,23 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) end end + if haskey(sp.attr, :cbar_ax) # Treat colorbar the same way + ax = sp.attr[:cbar_handle]."ax" + for bb in (py_bbox_axis(ax, "x"), py_bbox_axis(ax, "y"), py_bbox_title(ax), ) + if ispositive(width(bb)) && ispositive(height(bb)) + leftpad = max(leftpad, left(plotbb) - left(bb)) + toppad = max(toppad, top(plotbb) - top(bb)) + rightpad = max(rightpad, right(bb) - right(plotbb)) + bottompad = max(bottompad, bottom(bb) - bottom(plotbb)) + end + end + end + + # optionally add the width of colorbar labels and colorbar to rightpad - if haskey(sp.attr, :cbar_ax) + if RecipesPipeline.is3d(sp) && haskey(sp.attr, :cbar_ax) bb = py_bbox(sp.attr[:cbar_handle]."ax"."get_yticklabels"()) sp.attr[:cbar_width] = width(bb) + (sp[:colorbar_title] == "" ? 0px : 30px) - rightpad = rightpad + sp.attr[:cbar_width] end # add in the user-specified margin @@ -1203,44 +1322,26 @@ end # ----------------------------------------------------------------- -py_legend_pos(pos::Symbol) = get( - ( - right = "right", - left = "center left", - top = "upper center", - bottom = "lower center", - bottomleft = "lower left", - bottomright = "lower right", - topright = "upper right", - topleft = "upper left", - outerright = "center left", - outerleft = "right", - outertop = "lower center", - outerbottom = "upper center", - outerbottomleft = "lower right", - outerbottomright = "lower left", - outertopright = "upper left", - outertopleft = "upper right", - ), - pos, - "best", -) -py_legend_pos(pos) = "lower left" +py_legend_pos(pos::Tuple{S,T}) where {S<:Real,T<:Real} = "lower left" + +function py_legend_pos(pos::Tuple{<:Real,Symbol}) + (s,c) = sincosd(pos[1]) + if pos[2] === :outer + s = -s + c = -c + end + yanchors = ["lower","center","upper"] + xanchors = ["left","center","right"] + return join([yanchors[legend_anchor_index(s)], xanchors[legend_anchor_index(c)]], ' ') +end + +function py_legend_bbox(pos::Tuple{T,Symbol}) where T<:Real + if pos[2] === :outer + return legend_pos_from_angle(pos[1],-0.15,0.5,1.0,-0.15,0.5,1.0) + end + legend_pos_from_angle(pos[1],0.0,0.5,1.0,0.0,0.5,1.0) +end -py_legend_bbox(pos::Symbol) = get( - ( - outerright = (1.0, 0.5, 0.0, 0.0), - outerleft = (-0.15, 0.5, 0.0, 0.0), - outertop = (0.5, 1.0, 0.0, 0.0), - outerbottom = (0.5, -0.15, 0.0, 0.0), - outerbottomleft = (-0.15, 0.0, 0.0, 0.0), - outerbottomright = (1.0, 0.0, 0.0, 0.0), - outertopright = (1.0, 1.0, 0.0, 0.0), - outertopleft = (-0.15, 1.0, 0.0, 0.0), - ), - pos, - (0.0, 0.0, 1.0, 1.0), -) py_legend_bbox(pos) = pos function py_add_legend(plt::Plot, sp::Subplot, ax) @@ -1286,6 +1387,7 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) # if anything was added, call ax.legend and set the colors if !isempty(handles) + leg = legend_angle(leg) leg = ax."legend"(handles, labels, loc = py_legend_pos(leg), @@ -1296,7 +1398,7 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) edgecolor = py_color(sp[:foreground_color_legend]), framealpha = alpha(plot_color(sp[:background_color_legend])), fancybox = false, # makes the legend box square - borderpad=0.8 # to match GR legendbox + borderpad = 0.8 # to match GR legendbox ) frame = leg."get_frame"() frame."set_linewidth"(py_thickness_scale(plt, 1)) diff --git a/src/backends/web.jl b/src/backends/web.jl index b1663435..4f827529 100644 --- a/src/backends/web.jl +++ b/src/backends/web.jl @@ -45,7 +45,7 @@ function standalone_html_window(plt::AbstractPlot) old = use_local_dependencies[] # save state to restore afterwards # if we open a browser ourself, we can host local files, so # when we have a local plotly downloaded this is the way to go! - use_local_dependencies[] = isfile(plotly_local_file_path) + use_local_dependencies[] = plotly_local_file_path[] === nothing ? false : isfile(plotly_local_file_path[]) filename = write_temp_html(plt) open_browser_window(filename) # restore for other backends diff --git a/src/colorbars.jl b/src/colorbars.jl new file mode 100644 index 00000000..b0f9996a --- /dev/null +++ b/src/colorbars.jl @@ -0,0 +1,90 @@ +# These functions return an operator for use in `get_clims(::Seres, op)` +process_clims(lims::Tuple{<:Number,<:Number}) = (zlims -> ifelse.(isfinite.(lims), lims, zlims)) ∘ ignorenan_extrema +process_clims(s::Union{Symbol,Nothing,Missing}) = ignorenan_extrema +# don't specialize on ::Function otherwise python functions won't work +process_clims(f) = f + +function get_clims(sp::Subplot, op=process_clims(sp[:clims])) + zmin, zmax = Inf, -Inf + for series in series_list(sp) + if series[:colorbar_entry] + zmin, zmax = _update_clims(zmin, zmax, get_clims(series, op)...) + end + end + return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) +end + +function get_clims(sp::Subplot, series::Series, op=process_clims(sp[:clims])) + zmin, zmax = if series[:colorbar_entry] + get_clims(sp, op) + else + get_clims(series, op) + end + return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) +end + +""" + get_clims(::Series, op=Plots.ignorenan_extrema) + +Finds the limits for the colorbar by taking the "z-values" for the series and passing them into `op`, +which must return the tuple `(zmin, zmax)`. The default op is the extrema of the finite +values of the input. +""" +function get_clims(series::Series, op=ignorenan_extrema) + zmin, zmax = Inf, -Inf + z_colored_series = (:contour, :contour3d, :heatmap, :histogram2d, :surface, :hexbin) + for vals in (series[:seriestype] in z_colored_series ? series[:z] : nothing, series[:line_z], series[:marker_z], series[:fill_z]) + if (typeof(vals) <: AbstractSurface) && (eltype(vals.surf) <: Union{Missing, Real}) + zmin, zmax = _update_clims(zmin, zmax, op(vals.surf)...) + elseif (vals !== nothing) && (eltype(vals) <: Union{Missing, Real}) + zmin, zmax = _update_clims(zmin, zmax, op(vals)...) + end + end + return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) +end + +_update_clims(zmin, zmax, emin, emax) = NaNMath.min(zmin, emin), NaNMath.max(zmax, emax) + +@enum ColorbarStyle cbar_gradient cbar_fill cbar_lines + +function colorbar_style(series::Series) + colorbar_entry = series[:colorbar_entry] + if !(colorbar_entry isa Bool) + @warn "Non-boolean colorbar_entry ignored." + colorbar_entry = true + end + + if !colorbar_entry + nothing + elseif isfilledcontour(series) + cbar_fill + elseif iscontour(series) + cbar_lines + elseif series[:seriestype] ∈ (:heatmap,:surface) || + any(series[z] !== nothing for z ∈ [:marker_z,:line_z,:fill_z]) + cbar_gradient + else + nothing + end +end + +hascolorbar(series::Series) = colorbar_style(series) !== nothing +hascolorbar(sp::Subplot) = sp[:colorbar] != :none && any(hascolorbar(s) for s in series_list(sp)) + +function get_colorbar_ticks(sp::Subplot; update = true) + if update || !haskey(sp.attr, :colorbar_optimized_ticks) + ticks = _transform_ticks(sp[:colorbar_ticks]) + cvals = sp[:colorbar_continuous_values] + dvals = sp[:colorbar_discrete_values] + clims = get_clims(sp) + scale = sp[:colorbar_scale] + formatter = sp[:colorbar_formatter] + sp.attr[:colorbar_optimized_ticks] = + get_ticks(ticks, cvals, dvals, clims, scale, formatter) + end + return sp.attr[:colorbar_optimized_ticks] +end + +function _update_subplot_colorbars(sp::Subplot) + # Dynamic callback from the pipeline if needed +end diff --git a/src/components.jl b/src/components.jl index 71894343..b0a76167 100644 --- a/src/components.jl +++ b/src/components.jl @@ -1,7 +1,5 @@ - - -const P2 = GeometryTypes.Point2{Float64} -const P3 = GeometryTypes.Point3{Float64} +const P2 = GeometryBasics.Point2{Float64} +const P3 = GeometryBasics.Point3{Float64} nanpush!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN,NaN)); push!(a, b)) nanappend!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN,NaN)); append!(a, b)) @@ -44,15 +42,11 @@ function coords(shape::Shape) shape.x, shape.y end +#coords(shapes::AVec{Shape}) = unzip(map(coords, shapes)) function coords(shapes::AVec{Shape}) - length(shapes) == 0 && return zeros(0), zeros(0) - xs = map(get_xs, shapes) - ys = map(get_ys, shapes) - x, y = map(copy, coords(shapes[1])) - for shape in shapes[2:end] - nanappend!(x, shape.x) - nanappend!(y, shape.y) - end + c = map(coords, shapes) + x = [q[1] for q in c] + y = [q[2] for q in c] x, y end @@ -77,7 +71,6 @@ function weave(x,y; ordering = Vector[x,y]) ret end - "create a star by weaving together points from an outer and inner circle. `n` is the number of arms" function makestar(n; offset = -0.5, radius = 1.0) z1 = offset * π @@ -93,7 +86,6 @@ function makeshape(n; offset = -0.5, radius = 1.0) Shape(partialcircle(z, z + 2π, n+1, radius)) end - function makecross(; offset = -0.5, radius = 1.0) z2 = offset * π z1 = z2 - π/8 @@ -103,7 +95,6 @@ function makecross(; offset = -0.5, radius = 1.0) ordering=Vector[outercircle,innercircle,outercircle])) end - from_polar(angle, dist) = P2(dist*cos(angle), dist*sin(angle)) function makearrowhead(angle; h = 2.0, w = 0.4) @@ -112,31 +103,6 @@ function makearrowhead(angle; h = 2.0, w = 0.4) from_polar(angle + 0.5π, w) - tip, (0,0)]) end -const _shape_keys = Symbol[ - :circle, - :rect, - :star5, - :diamond, - :hexagon, - :cross, - :xcross, - :utriangle, - :dtriangle, - :rtriangle, - :ltriangle, - :pentagon, - :heptagon, - :octagon, - :star4, - :star6, - :star7, - :star8, - :vline, - :hline, - :+, - :x, -] - const _shapes = KW( :circle => makeshape(20), :rect => makeshape(4, offset=-0.25), @@ -659,6 +625,7 @@ function locate_annotation(sp::Subplot, pos::Symbol, lab::PlotText) (x, y, lab) end locate_annotation(sp::Subplot, x, y, label::PlotText) = (x, y, label) +locate_annotation(sp::Subplot, x, y, z, label::PlotText) = (x, y, z, label) # ----------------------------------------------------------------------- "type which represents z-values for colors and sizes (and anything else that might come up)" @@ -758,7 +725,7 @@ end # ----------------------------------------------------------------------- "create a BezierCurve for plotting" -mutable struct BezierCurve{T <: GeometryTypes.Point} +mutable struct BezierCurve{T <: GeometryBasics.Point} control_points::Vector{T} end diff --git a/src/examples.jl b/src/examples.jl index 463d0387..cfc8e96f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -9,7 +9,7 @@ end # the _examples we'll run for each const _examples = PlotExample[ - PlotExample( + PlotExample( # 1 "Lines", "A simple line plot of the columns.", [:( @@ -18,7 +18,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 2 "Functions, adding data, and animations", """ Plot multiple functions. You can also put the function first, or use the form `plot(f, @@ -30,16 +30,16 @@ const _examples = PlotExample[ """, [:( begin - p = plot([sin, cos], zeros(0), leg = false) + p = plot([sin, cos], zeros(0), leg = false, xlims = (0, 2π), ylims = (-1, 1)) anim = Animation() - for x in range(0, stop = 10π, length = 100) + for x in range(0, stop = 2π, length = 20) push!(p, x, Float64[sin(x), cos(x)]) frame(anim) end end )], ), - PlotExample( + PlotExample( # 3 "Parametric plots", "Plot function pair (x(u), y(u)).", [ @@ -58,7 +58,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 4 "Colors", """ Access predefined palettes (or build your own with the `colorscheme` method). @@ -89,7 +89,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 5 "Global", """ Change the guides/background/limits/ticks. Convenience args `xaxis` and `yaxis` allow @@ -121,13 +121,7 @@ const _examples = PlotExample[ ], ), - # PlotExample("Two-axis", - # "Use the `axis` arguments.", - # [ - # :(plot(Vector[randn(100), randn(100)*100], axis = [:l :r], ylabel="LEFT", yrightlabel="RIGHT", xlabel="X", title="TITLE")) - # ]), - - PlotExample( + PlotExample( # 6 "Images", "Plot an image. y-axis is set to flipped", [ @@ -142,7 +136,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 7 "Arguments", """ Plot multiple series with different numbers of points. Mix arguments that apply to all @@ -166,7 +160,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 8 "Build plot in pieces", "Start with a base plot...", [:( @@ -175,7 +169,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 9 "", "and add to it later.", [:( @@ -184,7 +178,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 10 "Histogram2D", "", [:( @@ -193,7 +187,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 11 "Line types", "", [ @@ -214,7 +208,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 12 "Line styles", "", [ @@ -237,7 +231,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 13 "Marker types", "", [ @@ -264,7 +258,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 14 "Bar", "`x` is the midpoint of the bar. (todo: allow passing of edges instead of midpoints)", [:( @@ -273,7 +267,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 15 "Histogram", "", [ @@ -288,7 +282,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 16 "Subplots", """ Use the `layout` keyword, and optionally the convenient `@layout` macro to generate @@ -310,7 +304,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 17 "Adding to subplots", """ Note here the automatic grid layout, as well as the order in which new series are added @@ -329,14 +323,20 @@ const _examples = PlotExample[ ), ], ), - PlotExample("", "", [:( - begin - using Random - Random.seed!(111) - plot!(Plots.fakedata(100, 10)) - end - )]), - PlotExample( + PlotExample( # 18 + "", + "", + [ + :( + begin + using Random + Random.seed!(111) + plot!(Plots.fakedata(100, 10)) + end + ) + ] + ), + PlotExample( # 19 "Open/High/Low/Close", """ Create an OHLC chart. Pass in a list of (open,high,low,close) tuples as your `y` @@ -365,7 +365,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 20 "Annotations", """ The `annotations` keyword is used for text annotations in data-coordinates. Pass in a @@ -408,7 +408,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 21 "Custom Markers", """A `Plots.Shape` is a light wrapper around vertices of a polygon. For supported backends, pass arbitrary polygons as the marker shapes. Note: The center is (0,0) and @@ -454,7 +454,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 22 "Contours", """ Any value for fill works here. We first build a filled contour from a function, then an @@ -474,7 +474,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 23 "Pie", "", [:( @@ -485,7 +485,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 24 "3D", "", [ @@ -511,7 +511,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 25 "DataFrames", "Plot using DataFrame column symbols.", [ @@ -534,7 +534,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 26 "Groups and Subplots", "", [ @@ -552,7 +552,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 27 "Polar Plots", "", [:( @@ -563,7 +563,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 28 "Heatmap, categorical axes, and aspect_ratio", "", [:( @@ -575,7 +575,7 @@ const _examples = PlotExample[ end )], ), - PlotExample( + PlotExample( # 29 "Layouts, margins, label rotation, title location", "", [ @@ -595,7 +595,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 30 "Boxplot and Violin series recipes", "", [ @@ -620,7 +620,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 31 "Animation with subplots", "The `layout` macro can be used to create an animation with subplots.", [ @@ -628,14 +628,15 @@ const _examples = PlotExample[ begin l = @layout([[a; b] c]) p = plot( - plot([sin, cos], 1, leg = false), - scatter([atan, cos], 1, leg = false), - plot(log, 1, xlims = (1, 10π), ylims = (0, 5), leg = false), + plot([sin, cos], 1, ylims = (-1, 1), leg = false), + scatter([atan, cos], 1, ylims = (-1, 1.5), leg = false), + plot(log, 1, ylims = (0, 2), leg = false), layout = l, + xlims = (1, 2π), ) anim = Animation() - for x in range(1, stop = 10π, length = 100) + for x in range(1, stop = 2π, length = 20) plot(push!( p, x, @@ -647,7 +648,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 32 "Spy", """ For a matrix `mat` with unique nonzeros `spy(mat)` returns a colorless plot. If `mat` has @@ -681,7 +682,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 33 "Magic grid argument", """ The grid lines can be modified individually for each axis with the magic `grid` argument. @@ -711,7 +712,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 34 "Framestyle", """ The style of the frame/axes of a (sub)plot can be changed with the `framestyle` @@ -735,7 +736,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 35 "Lines and markers with varying colors", """ You can use the `line_z` and `marker_z` properties to associate a color with @@ -761,7 +762,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 36 "Portfolio Composition maps", """ see: http://stackoverflow.com/a/37732384/5075246 @@ -787,7 +788,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 37 "Ribbons", """ Ribbons can be added to lines via the `ribbon` keyword; @@ -810,7 +811,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 38 "Histogram2D (complex values)", "", [ @@ -829,7 +830,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 39 "Unconnected lines using `missing` or `NaN`", """ Missing values and non-finite values, including `NaN`, are not plotted. @@ -853,7 +854,7 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 40 "Lens", "A lens lets you easily magnify a region of a plot. x and y coordinates refer to the to be magnified region and the via the `inset` keyword the subplot index and the bounding box (in relative coordinates) of the inset plot with the magnified plot can be specified. Additional attributes count for the inset plot.", [ @@ -875,7 +876,7 @@ const _examples = PlotExample[ end, ], ), - PlotExample( + PlotExample( # 41 "Array Types", "Plots supports different `Array` types that follow the `AbstractArray` interface, like `StaticArrays` and `OffsetArrays.`", [ @@ -890,7 +891,7 @@ const _examples = PlotExample[ end, ], ), - PlotExample( + PlotExample( # 42 "Setting defaults and font arguments", "", [ @@ -920,7 +921,7 @@ const _examples = PlotExample[ end, ], ), - PlotExample( + PlotExample( # 43 "Heatmap with DateTime axis", "", [ @@ -935,7 +936,7 @@ const _examples = PlotExample[ end, ], ), - PlotExample( + PlotExample( # 44 "Linked axes", "", [ @@ -947,7 +948,7 @@ const _examples = PlotExample[ end, ], ), - PlotExample( + PlotExample( # 45 "Error bars and array type recipes", "", [ @@ -984,7 +985,7 @@ const _examples = PlotExample[ end, ], ), - PlotExample( + PlotExample( # 46 "Tuples and `Point`s as data", "", [quote @@ -995,13 +996,13 @@ const _examples = PlotExample[ scatter!(Point2.(eachcol(rand(d,1000))), alpha=0.25) end] ), - PlotExample( + PlotExample( # 47 "Mesh3d", """ Allows to plot arbitrary 3d meshes. If only x,y,z are given the mesh is generated automatically. - You can also specify the connections using the connections keyword. This is only supported on the Plotly backend. - The connections are specified using a tuple of vectors. Each vector contains the 0-based indices of one point of a triangle, - such that elements at the same position of these vectors form a triangle. + You can also specify the connections using the connections keyword. + The connections are specified using a tuple of vectors. Each vector contains the 0-based indices of one point of a triangle, + such that elements at the same position of these vectors form a triangle. """, [ :( @@ -1011,9 +1012,9 @@ const _examples = PlotExample[ y=[0, 0, 1, 2] z=[0, 2, 0, 1] - # specify the triangles + # specify the triangles # every column is one triangle, - # where the values denote the indices of the vertices of the triangle + # where the values denote the indices of the vertices of the triangle i=[0, 0, 0, 1] j=[1, 2, 3, 2] k=[2, 3, 1, 3] @@ -1024,19 +1025,98 @@ const _examples = PlotExample[ ), ], ), - PlotExample( + PlotExample( # 48 "Vectors of markershapes and segments", "", [quote + using Base.Iterators: cycle, take + yv = ones(9) ys = [1; 1; NaN; ones(6)] - plot( - 5 .- [yv 2ys 3yv 4ys], + y = 5 .- [yv 2ys 3yv 4ys] + + plt_color_rows = plot( + y, seriestype = [:path :path :scatter :scatter], - markershape = [:utriangle, :rect], + markershape = collect(take(cycle((:utriangle, :rect)), 9)), markersize = 8, - color = [:red, :black], + color = collect(take(cycle((:red, :black)), 9)) ) + + plt_z_cols = plot( + y, + markershape = [:utriangle :x :circle :square], + markersize = [5 10 10 5], + marker_z = [5 4 3 2], + line_z = [1 3 3 1], + linewidth = [1 10 5 1] + ) + + plot(plt_color_rows, plt_z_cols) + end] + ), + PlotExample( # 49 + "Polar heatmaps", + "", + [quote + x = range(0, 2π, length=9) + y = 0:4 + z = (1:4) .+ (1:8)' + heatmap(x, y, z, projection = :polar) + end] + ), + PlotExample( # 50 + "3D surface with axis guides", + "", + [quote + f(x,a) = 1/x + a*x^2 + xs = collect(0.1:0.05:2.0); + as = collect(0.2:0.1:2.0); + + x_grid = [x for x in xs for y in as]; + a_grid = [y for x in xs for y in as]; + + plot(x_grid, a_grid, f.(x_grid,a_grid), + st = :surface, + xlabel = "longer xlabel", + ylabel = "longer ylabel", + zlabel = "longer zlabel", + ) + end] + ), + PlotExample( # 51 + "Images with custom axes", + "", + [quote + using Plots + using TestImages + img = testimage("lighthouse") + + # plot the image reversing the first dimension and setting yflip = false + plot([-π, π], [-1, 1], reverse(img, dims=1), yflip=false, aspect_ratio=:none) + # plot other data + plot!(sin, -π, π, lw=3, color=:red) + end] + ), + PlotExample( + "3d quiver", + "", + [quote + using Plots + + ϕs = range(-π, π, length=50) + θs = range(0, π, length=25) + θqs = range(1, π-1, length=25) + + x = vec([sin(θ) * cos(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) + y = vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) + z = vec([cos(θ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) + + u = 0.1 * vec([sin(θ) * cos(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) + v = 0.1 * vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) + w = 0.1 * vec([cos(θ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) + + quiver(x,y,z, quiver=(u,v,w)) end] ), ] @@ -1045,21 +1125,18 @@ const _examples = PlotExample[ _animation_examples = [2, 31] _backend_skips = Dict( :gr => [25, 30, 47], - :pyplot => [2, 25, 30, 31, 47], - :plotlyjs => [2, 21, 24, 25, 30, 31], - :plotly => [2, 21, 24, 25, 30, 31], - :pgfplots => [2, 5, 6, 10, 16, 20, 22, 23, 25, 28, 30, 31, 34, 37, 38, 39, 47], + :pyplot => [2, 25, 30, 31, 47, 49], + :plotlyjs => [2, 21, 24, 25, 30, 31, 49, 51], + :plotly => [2, 21, 24, 25, 30, 31, 49, 51], :pgfplotsx => [ 2, # animation 6, # images - 10, # histogram2d 16, # pgfplots thinks the upper panel is too small - 25, # @df 30, # @df 31, # animation 32, # spy - 38, # histogram2d - 47, # mesh3d + 49, # polar heatmap + 51, # image with custom axes ], ) diff --git a/src/ijulia.jl b/src/ijulia.jl index 1f0ef219..7d2786ee 100644 --- a/src/ijulia.jl +++ b/src/ijulia.jl @@ -4,7 +4,7 @@ const use_local_plotlyjs = Ref(false) function _init_ijulia_plotting() # IJulia is more stable with local file - use_local_plotlyjs[] = isfile(plotly_local_file_path) + use_local_plotlyjs[] = plotly_local_file_path[] === nothing ? false : isfile(plotly_local_file_path[]) ENV["MPLBACKEND"] = "Agg" end @@ -54,9 +54,9 @@ function _ijulia_display_dict(plt::Plot) elseif output_type == :html mime = "text/html" out[mime] = sprint(show, MIME(mime), plt) + _ijulia__extra_mime_info!(plt, out) else error("Unsupported output type $output_type") end - _ijulia__extra_mime_info!(plt, out) out end diff --git a/src/init.jl b/src/init.jl index 3f731395..22bb4b51 100644 --- a/src/init.jl +++ b/src/init.jl @@ -1,4 +1,7 @@ using REPL +using Scratch + +const plotly_local_file_path = Ref{Union{Nothing, String}}(nothing) function _plots_defaults() @@ -13,9 +16,10 @@ end function __init__() user_defaults = _plots_defaults() if haskey(user_defaults, :theme) - theme(pop!(user_defaults, :theme)) + theme(pop!(user_defaults, :theme); user_defaults...) + else + default(; user_defaults...) end - default(; user_defaults...) insert!(Base.Multimedia.displays, findlast(x -> x isa Base.TextDisplay || x isa REPL.REPLDisplay, Base.Multimedia.displays) + 1, PlotsDisplay()) @@ -41,8 +45,8 @@ function __init__() include(fn) end - @require ORCA = "47be7bcc-f1a6-5447-8b36-7eeeff7534fd" begin - fn = joinpath(@__DIR__, "backends", "orca.jl") + @require PlotlyBase = "a03496cd-edff-5a9b-9e67-9cda94a718b5" begin + fn = joinpath(@__DIR__, "backends", "plotlybase.jl") include(fn) end @@ -74,16 +78,17 @@ function __init__() end end - if haskey(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL") - use_local_plotlyjs[] = ENV["PLOTS_HOST_DEPENDENCY_LOCAL"] == "true" - use_local_dependencies[] = isfile(plotly_local_file_path) && use_local_plotlyjs[] - if use_local_plotlyjs[] && !isfile(plotly_local_file_path) - @warn("PLOTS_HOST_DEPENDENCY_LOCAL is set to true, but no local plotly file found. run Pkg.build(\"Plots\") and make sure PLOTS_HOST_DEPENDENCY_LOCAL is set to true") + if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true" + global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), _plotly_min_js_filename) + if !isfile(plotly_local_file_path[]) + download("https://cdn.plot.ly/$(_plotly_min_js_filename)", plotly_local_file_path[]) end - else - use_local_dependencies[] = use_local_plotlyjs[] + + use_local_plotlyjs[] = true end + use_local_dependencies[] = use_local_plotlyjs[] + @require FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" begin _show(io::IO, mime::MIME"image/png", plt::Plot{<:PDFBackends}) = _show_pdfbackends(io, mime, plt) diff --git a/src/layouts.jl b/src/layouts.jl index 7b95c539..ff4d0041 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -4,34 +4,6 @@ to_pixels(m::AbsoluteLength) = m.value / 0.254 const _cbar_width = 5mm - -#Base.broadcast(::typeof(Base.:.*), m::Measure, n::Number) = m * n -#Base.broadcast(::typeof(Base.:.*), m::Number, n::Measure) = m * n -Base.:-(m::Measure, a::AbstractArray) = map(ai -> m - ai, a) -Base.:-(a::AbstractArray, m::Measure) = map(ai -> ai - m, a) -Base.zero(::Type{typeof(mm)}) = 0mm -Base.one(::Type{typeof(mm)}) = 1mm -Base.typemin(::typeof(mm)) = -Inf*mm -Base.typemax(::typeof(mm)) = Inf*mm -Base.convert(::Type{F}, l::AbsoluteLength) where {F<:AbstractFloat} = convert(F, l.value) - -# TODO: these are unintuitive and may cause tricky bugs -# Base.:+(m1::AbsoluteLength, m2::Length{:pct}) = AbsoluteLength(m1.value * (1 + m2.value)) -# Base.:+(m1::Length{:pct}, m2::AbsoluteLength) = AbsoluteLength(m2.value * (1 + m1.value)) -# Base.:-(m1::AbsoluteLength, m2::Length{:pct}) = AbsoluteLength(m1.value * (1 - m2.value)) -# Base.:-(m1::Length{:pct}, m2::AbsoluteLength) = AbsoluteLength(m2.value * (m1.value - 1)) - -Base.:*(m1::AbsoluteLength, m2::Length{:pct}) = AbsoluteLength(m1.value * m2.value) -Base.:*(m1::Length{:pct}, m2::AbsoluteLength) = AbsoluteLength(m2.value * m1.value) -Base.:/(m1::AbsoluteLength, m2::Length{:pct}) = AbsoluteLength(m1.value / m2.value) -Base.:/(m1::Length{:pct}, m2::AbsoluteLength) = AbsoluteLength(m2.value / m1.value) - - -Base.zero(::Type{typeof(pct)}) = 0pct -Base.one(::Type{typeof(pct)}) = 1pct -Base.typemin(::typeof(pct)) = 0pct -Base.typemax(::typeof(pct)) = 1pct - const defaultbox = BoundingBox(0mm, 0mm, 0mm, 0mm) left(bbox::BoundingBox) = bbox.x0[1] @@ -258,7 +230,7 @@ end grid(args...; kw...) Create a grid layout for subplots. `args` specify the dimensions, e.g. -`grid(3,2, widths = (0.6,04))` creates a grid with three rows and two +`grid(3,2, widths = (0.6,0.4))` creates a grid with three rows and two columns of different width. """ grid(args...; kw...) = GridLayout(args...; kw...) diff --git a/src/legend.jl b/src/legend.jl new file mode 100644 index 00000000..0b996619 --- /dev/null +++ b/src/legend.jl @@ -0,0 +1,59 @@ +""" +```julia +legend_pos_from_angle(theta, xmin, xcenter, xmax, ymin, ycenter, ymax, inout) +``` + +Return `(x,y)` at an angle `theta` degrees from +`(xcenter,ycenter)` on a rectangle defined by (`xmin`, +`xmax`, `ymin`, `ymax`). +""" +function legend_pos_from_angle(theta, xmin, xcenter, xmax, ymin, ycenter, ymax) + (s,c) = sincosd(theta) + x = c < 0 ? (xmin-xcenter)/c : (xmax-xcenter)/c + y = s < 0 ? (ymin-ycenter)/s : (ymax-ycenter)/s + A = min(x,y) + return (xcenter + A*c, ycenter + A*s) +end + + +""" +Split continuous range `[-1,1]` evenly into an integer `[1,2,3]` +""" +function legend_anchor_index(x) + x<-1//3 && return 1 + x<1//3 && return 2 + return 3 +end + +""" +Turn legend argument into a (theta, :inner) or (theta, :outer) tuple. +For backends where legend position is given in normal coordinates (0,0) -- (1,1), +so :topleft exactly corresponds to (45, :inner) etc. + +If `leg` is a (::Real,::Real) tuple, keep it as is. +""" +legend_angle(leg::Real) = (leg,:inner) +legend_angle(leg::Tuple{S,T}) where {S<:Real,T<:Real} = leg +legend_angle(leg::Tuple{S,Symbol}) where S<:Real = leg +legend_angle(leg::Symbol) = get( + ( + topleft = (135,:inner), + top = (90, :inner), + topright = (45, :inner), + left = (180,:inner), + right = (0, :inner), + bottomleft = (225,:inner), + bottom = (270,:inner), + bottomright = (315,:inner), + outertopleft = (135,:outer), + outertop = (90, :outer), + outertopright = (45, :outer), + outerleft = (180,:outer), + outerright = (0, :outer), + outerbottomleft = (225,:outer), + outerbottom = (270,:outer), + outerbottomright = (315,:outer), + ), + leg, + (45, :inner) + ) diff --git a/src/output.jl b/src/output.jl index e2eb5185..92f7ec01 100644 --- a/src/output.jl +++ b/src/output.jl @@ -194,9 +194,9 @@ function _display(plt::Plot) @warn("_display is not defined for this backend.") end +Base.show(io::IO, m::MIME"text/plain", plt::Plot) = show(io, plt) # for writing to io streams... first prepare, then callback for mime in ( - "text/plain", "text/html", "image/png", "image/eps", @@ -221,9 +221,6 @@ end Base.show(io::IO, m::MIME"application/prs.juno.plotpane+html", plt::Plot) = showjuno(io, MIME("text/html"), plt) -# default text/plain for all backends -_show(io::IO, ::MIME{Symbol("text/plain")}, plt::Plot) = show(io, plt) - "Close all open gui windows of the current backend" closeall() = closeall(backend()) diff --git a/src/pipeline.jl b/src/pipeline.jl index e0130f3f..c360649b 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -4,43 +4,31 @@ function RecipesPipeline.warn_on_recipe_aliases!( plt::Plot, - plotattributes, - recipe_type, - args..., + plotattributes::AKW, + recipe_type::Symbol, + @nospecialize(args) ) for k in keys(plotattributes) if !is_default_attribute(k) dk = get(_keyAliases, k, k) if k !== dk - @warn "Attribute alias `$k` detected in the $recipe_type recipe defined for the signature $(_signature_string(Val{recipe_type}, args...)). To ensure expected behavior it is recommended to use the default attribute `$dk`." + if recipe_type == :user + signature_string = RecipesPipeline.userrecipe_signature_string(args) + elseif recipe_type == :type + signature_string = RecipesPipeline.typerecipe_signature_string(args) + elseif recipe_type == :plot + signature_string = RecipesPipeline.plotrecipe_signature_string(args) + elseif recipe_type == :series + signature_string = RecipesPipeline.seriesrecipe_signature_string(args) + else + throw(ArgumentError("Invalid recipe type `$recipe_type`")) + end + @warn "Attribute alias `$k` detected in the $recipe_type recipe defined for the signature $signature_string. To ensure expected behavior it is recommended to use the default attribute `$dk`." end plotattributes[dk] = RecipesPipeline.pop_kw!(plotattributes, k) end end end -function RecipesPipeline.warn_on_recipe_aliases!( - plt::Plot, - v::AbstractVector, - recipe_type, - args..., -) - foreach(x -> RecipesPipeline.warn_on_recipe_aliases!(plt, x, recipe_type, args...), v) -end -function RecipesPipeline.warn_on_recipe_aliases!( - plt::Plot, - rd::RecipeData, - recipe_type, - args..., -) - RecipesPipeline.warn_on_recipe_aliases!(plt, rd.plotattributes, recipe_type, args...) -end - -function _signature_string(::Type{Val{:user}}, args...) - return string("(::", join(string.(typeof.(args)), ", ::"), ")") -end -_signature_string(::Type{Val{:type}}, T) = "(::Type{$T}, ::$T)" -_signature_string(::Type{Val{:plot}}, st) = "(::Type{Val{:$st}}, ::AbstractPlot)" -_signature_string(::Type{Val{:series}}, st) = "(::Type{Val{:$st}}, x, y, z)" ## Grouping @@ -49,12 +37,23 @@ RecipesPipeline.splittable_attribute(plt::Plot, key, val::SeriesAnnotations, len RecipesPipeline.splittable_attribute(plt, key, val.strs, len) function RecipesPipeline.split_attribute(plt::Plot, key, val::SeriesAnnotations, indices) - split_strs = RecipesPipeline.split_attribute(key, val.strs, indices) + split_strs = RecipesPipeline.split_attribute(plt, key, val.strs, indices) return SeriesAnnotations(split_strs, val.font, val.baseshape, val.scalefactor) end ## Preprocessing attributes +function RecipesPipeline.preprocess_axis_args!(plt::Plot, plotattributes, letter) + # Fix letter for seriestypes that are x only but data gets passed as y + if treats_y_as_x(get(plotattributes, :seriestype, :path)) + if get(plotattributes, :orientation, :vertical) == :vertical + letter = :x + end + end + + plotattributes[:letter] = letter + RecipesPipeline.preprocess_axis_args!(plt, plotattributes) +end RecipesPipeline.preprocess_attributes!(plt::Plot, plotattributes) = RecipesPipeline.preprocess_attributes!(plotattributes) # in src/args.jl @@ -142,7 +141,7 @@ function _add_smooth_kw(kw_list::Vector{KW}, kw::AKW) end -RecipesPipeline.get_axis_limits(plt::Plot, f, letter) = axis_limits(plt[1], letter) +RecipesPipeline.get_axis_limits(plt::Plot, letter) = axis_limits(plt[1], letter) ## Plot recipes @@ -328,7 +327,7 @@ end function _override_seriestype_check(plotattributes::AKW, st::Symbol) # do we want to override the series type? - if !RecipesPipeline.is3d(st) && !(st in (:contour, :contour3d)) + if !RecipesPipeline.is3d(st) && !(st in (:contour, :contour3d, :quiver)) z = plotattributes[:z] if !isa(z, Nothing) && (size(plotattributes[:x]) == size(plotattributes[:y]) == size(z)) diff --git a/src/plot.jl b/src/plot.jl index e52ac499..ae48d907 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -43,10 +43,11 @@ The main plot command. Use `plot` to create a new plot object, and `plot!` to ad There are lots of ways to pass in data, and lots of keyword arguments... just try it and it will likely work as expected. When you pass in matrices, it splits by columns. To see the list of available attributes, use the `plotattr([attr])` -function, where `attr` is the symbol `:Series:`, `:Subplot:`, `:Plot` or `:Axis`. Pass any attribute to `plotattr` -as a String to look up its docstring; e.g. `plotattr("seriestype")`. +function, where `attr` is the symbol `:Series`, `:Subplot`, `:Plot`, or `:Axis`. Pass any attribute to `plotattr` +as a String to look up its docstring, e.g., `plotattr("seriestype")`. """ function plot(args...; kw...) + @nospecialize # this creates a new plot with args/kw and sets it to be the current plot plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) @@ -60,6 +61,7 @@ end # build a new plot from existing plots # note: we split into plt1 and plts_tail so we can dispatch correctly function plot(plt1::Plot, plts_tail::Plot...; kw...) + @nospecialize plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) @@ -140,7 +142,8 @@ end # this adds to the current plot, or creates a new plot if none are current -function plot!(args...; kw...) +function plot!(args...; kw...) + @nospecialize local plt try plt = current() @@ -152,6 +155,7 @@ end # this adds to a specific plot... most plot commands will flow through here function plot!(plt::Plot, args...; kw...) + @nospecialize plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) # merge!(plt.user_attr, plotattributes) @@ -164,6 +168,7 @@ end # a list of series KW dicts. # note: at entry, we only have those preprocessed args which were passed in... no default values yet function _plot!(plt::Plot, plotattributes, args) + @nospecialize RecipesPipeline.recipe_pipeline!(plt, plotattributes, args) current(plt) _do_plot_show(plt, plt[:show]) @@ -205,10 +210,12 @@ end # plot to a Subplot function plot(sp::Subplot, args...; kw...) + @nospecialize plt = sp.plt plot(plt, args...; kw..., subplot = findfirst(isequal(sp), plt.subplots)) end function plot!(sp::Subplot, args...; kw...) + @nospecialize plt = sp.plt plot!(plt, args...; kw..., subplot = findfirst(isequal(sp), plt.subplots)) end diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index b697b8a0..ed5fe1c5 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -2,75 +2,19 @@ should_precompile = true # Don't edit the following! Instead change the script for `snoop_bot`. -ismultios = true -ismultiversion = true +ismultios = false +ismultiversion = false # precompile_enclosure @static if !should_precompile # nothing elseif !ismultios && !ismultiversion - include("../deps/SnoopCompile/precompile/precompile_Plots.jl") - _precompile_() -else - @static if Sys.islinux() - @static if v"1.3.0-DEV" <= VERSION <= v"1.3.9" - include("../deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl") - _precompile_() - elseif v"1.4.0-DEV" <= VERSION <= v"1.4.9" - include("../deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl") - _precompile_() - elseif v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl") - _precompile_() - end - - elseif Sys.iswindows() - @static if v"1.3.0-DEV" <= VERSION <= v"1.3.9" - include("../deps/SnoopCompile/precompile/windows/1.3/precompile_Plots.jl") - _precompile_() - elseif v"1.4.0-DEV" <= VERSION <= v"1.4.9" - include("../deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl") - _precompile_() - elseif v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/windows/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/windows/1.4/precompile_Plots.jl") - _precompile_() - end - - elseif Sys.isapple() - @static if v"1.3.0-DEV" <= VERSION <= v"1.3.9" - include("../deps/SnoopCompile/precompile/apple/1.3/precompile_Plots.jl") - _precompile_() - elseif v"1.4.0-DEV" <= VERSION <= v"1.4.9" - include("../deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl") - _precompile_() - elseif v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/apple/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/apple/1.4/precompile_Plots.jl") - _precompile_() - end - - else - @static if v"1.3.0-DEV" <= VERSION <= v"1.3.9" - include("../deps/SnoopCompile/precompile/linux/1.3/precompile_Plots.jl") - _precompile_() - elseif v"1.4.0-DEV" <= VERSION <= v"1.4.9" - include("../deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl") - _precompile_() - elseif v"1.5.0-DEV" <= VERSION <= v"1.5.9" - include("../deps/SnoopCompile/precompile/linux/1.5/precompile_Plots.jl") - _precompile_() - else - include("../deps/SnoopCompile/precompile/linux/1.4/precompile_Plots.jl") - _precompile_() - end - + @static if isfile(joinpath( + @__DIR__, + "../deps/SnoopCompile/precompile/precompile_Plots.jl", + )) + include("../deps/SnoopCompile/precompile/precompile_Plots.jl") + _precompile_() end +else end # precompile_enclosure diff --git a/src/recipes.jl b/src/recipes.jl index 331c5100..b69ed3f3 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -78,6 +78,8 @@ const POTENTIAL_VECTOR_ARGUMENTS = [ :fillrange, ] +@nospecialize + @recipe function f(::Type{Val{:line}}, x, y, z) indices = sortperm(x) x := x[indices] @@ -124,9 +126,8 @@ end @recipe function f(::Type{Val{:vline}}, x, y, z) n = length(y) newx = vec(Float64[yi for i = 1:3, yi in y]) - newy = repeat(Float64[1, 2, NaN], n) x := newx - y := newy + y := repeat(Float64[1, 2, NaN], n) seriestype := :straightline () end @@ -174,6 +175,8 @@ end end @deps scatterpath path scatter +@specialize + # --------------------------------------------------------------------------- # steps @@ -195,6 +198,8 @@ end make_steps(t::Tuple, st) = Tuple(make_steps(ti, st) for ti in t) +@nospecialize + # create a path from steps @recipe function f(::Type{Val{:steppre}}, x, y, z) plotattributes[:x] = make_steps(x, :post) @@ -263,24 +268,39 @@ end end end newx, newy = zeros(3n), zeros(3n) - for i = 1:n + newz = z !== nothing ? zeros(3n) : nothing + for (i, (xi, yi, zi)) = enumerate(zip(x, y, z !== nothing ? z : 1:n)) rng = (3i - 2):(3i) - newx[rng] = [x[i], x[i], NaN] - newy[rng] = [_cycle(fr, i), y[i], NaN] + newx[rng] = [xi, xi, NaN] + if z !== nothing + newy[rng] = [yi, yi, NaN] + newz[rng] = [_cycle(fr, i), zi, NaN] + else + newy[rng] = [_cycle(fr, i), yi, NaN] + end end x := newx y := newy + if z !== nothing + z := newz + end fillrange := nothing seriestype := :path + if plotattributes[:linecolor] == :auto && plotattributes[:marker_z] !== nothing && plotattributes[:line_z] === nothing + line_z := plotattributes[:marker_z] + end - # create a secondary series for the markers + # create a primary series for the markers if plotattributes[:markershape] != :none + primary := false @series begin seriestype := :scatter x := x y := y - label := "" - primary := false + if z !== nothing + z := z + end + primary := true () end markershape := :none @@ -289,6 +309,8 @@ end end @deps sticks path scatter +@specialize + # --------------------------------------------------------------------------- # bezier curves @@ -303,6 +325,8 @@ function bezier_value(pts::AVec, t::Real) val end +@nospecialize + # create segmented bezier curves in place of line segments @recipe function f(::Type{Val{:curves}}, x, y, z; npoints = 30) args = z !== nothing ? (x, y, z) : (x, y) @@ -391,6 +415,15 @@ end fillto = map(x -> _is_positive(x) ? typeof(baseline)(x) : baseline, fillto) end + if !isnothing(plotattributes[:series_annotations]) + if isvertical(plotattributes) + annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) + else + annotations := (y,x,plotattributes[:series_annotations].strs,:left) + end + series_annotations := nothing + end + # create the bar shapes by adding x/y segments xseg, yseg = Segments(), Segments() for i = 1:ny @@ -458,6 +491,9 @@ end () end @deps plots_heatmap shape + +@specialize + is_3d(::Type{Val{:plots_heatmap}}) = true RecipesPipeline.is_surface(::Type{Val{:plots_heatmap}}) = true RecipesPipeline.is_surface(::Type{Val{:hexbin}}) = true @@ -521,6 +557,8 @@ function _preprocess_binlike(plotattributes, x, y) end +@nospecialize + @recipe function f(::Type{Val{:barbins}}, x, y, z) edge, weights, xscale, yscale, baseline = _preprocess_binlike(plotattributes, x, y) @@ -552,6 +590,8 @@ end end @deps scatterbins xerror scatter +@specialize + function _stepbins_path( edge, weights, @@ -618,8 +658,8 @@ function _stepbins_path( (x, y) end - @recipe function f(::Type{Val{:stepbins}}, x, y, z) + @nospecialize axis = plotattributes[:subplot][Plots.isvertical(plotattributes) ? :xaxis : :yaxis] @@ -756,6 +796,7 @@ function _make_hist( normalize!(h, mode = _hist_norm_mode(normed)) end +@nospecialize @recipe function f(::Type{Val{:histogram}}, x, y, z) seriestype := length(y) > 1e6 ? :stephist : :barhist @@ -765,7 +806,7 @@ end @recipe function f(::Type{Val{:barhist}}, x, y, z) h = _make_hist( - (y,), + tuple(y), plotattributes[:bins], normed = plotattributes[:normalize], weights = plotattributes[:weights], @@ -779,7 +820,7 @@ end @recipe function f(::Type{Val{:stephist}}, x, y, z) h = _make_hist( - (y,), + tuple(y), plotattributes[:bins], normed = plotattributes[:normalize], weights = plotattributes[:weights], @@ -793,7 +834,7 @@ end @recipe function f(::Type{Val{:scatterhist}}, x, y, z) h = _make_hist( - (y,), + tuple(y), plotattributes[:bins], normed = plotattributes[:normalize], weights = plotattributes[:weights], @@ -860,9 +901,7 @@ end x := Plots._bin_centers(edge_x) y := Plots._bin_centers(edge_y) - z := Surface(float_weights) - - match_dimensions := true + z := Surface(permutedims(float_weights)) seriestype := :heatmap () end @@ -919,7 +958,7 @@ end @recipe function f(::Type{Val{:mesh3d}}, x, y, z) # As long as no i,j,k are supplied this should work with PyPlot and GR seriestype := :surface - if plotattributes[:connections] != nothing + if plotattributes[:connections] !== nothing throw(ArgumentError("Giving triangles using the connections argument is only supported on Plotly backend.")) end () @@ -995,7 +1034,7 @@ export lens! # add subplot for series in sp.series_list @series begin - plotattributes = merge(plotattributes, copy(series.plotattributes)) + plotattributes = merge(backup, copy(series.plotattributes)) subplot := lens_index primary := false xlims := (x1, x2) @@ -1006,6 +1045,8 @@ export lens! nothing end +@specialize + function intersection_point(xA, yA, xB, yB, h, w) s = (yA - yB) / (xA - xB) hh = h / 2 @@ -1033,6 +1074,7 @@ end # contourf - filled contours @recipe function f(::Type{Val{:contourf}}, x, y, z) + @nospecialize fillrange := true seriestype := :contour () @@ -1090,9 +1132,17 @@ function error_coords(errorbar, errordata, otherdata...) return (ed, od...) end +# clamp non-NaN values in an array to Base.eps(Float64) for log-scale plots +function clamp_to_eps!(ary) + replace!(x -> x <= 0.0 ? Base.eps(Float64) : x, ary) + nothing +end + # we will create a series of path segments, where each point represents one # side of an errorbar +@nospecialize + @recipe function f(::Type{Val{:xerror}}, x, y, z) error_style!(plotattributes) markershape := :vline @@ -1103,6 +1153,9 @@ end plotattributes[:x], plotattributes[:y], plotattributes[:z] = error_coords(xerr, x, y, z) end + if :xscale ∈ keys(plotattributes) && plotattributes[:xscale] == :log10 + clamp_to_eps!(plotattributes[:x]) + end () end @deps xerror path @@ -1117,6 +1170,9 @@ end plotattributes[:y], plotattributes[:x], plotattributes[:z] = error_coords(yerr, y, x, z) end + if :yscale ∈ keys(plotattributes) && plotattributes[:yscale] == :log10 + clamp_to_eps!(plotattributes[:y]) + end () end @deps yerror path @@ -1129,10 +1185,14 @@ end plotattributes[:z], plotattributes[:x], plotattributes[:y] = error_coords(zerr, z, x, y) end + if :zscale ∈ keys(plotattributes) && plotattributes[:zscale] == :log10 + clamp_to_eps!(plotattributes[:z]) + end () end @deps zerror path +@specialize # TODO: move quiver to PlotRecipes @@ -1146,35 +1206,51 @@ function quiver_using_arrows(plotattributes::AKW) if !isa(plotattributes[:arrow], Arrow) plotattributes[:arrow] = arrow() end - + is_3d = haskey(plotattributes,:z) && !isnothing(plotattributes[:z]) velocity = error_zipit(plotattributes[:quiver]) xorig, yorig = plotattributes[:x], plotattributes[:y] + zorig = is_3d ? plotattributes[:z] : [] # for each point, we create an arrow of velocity vi, translated to the x/y coordinates x, y = zeros(0), zeros(0) - for i = 1:max(length(xorig), length(yorig)) + is_3d && ( z = zeros(0)) + for i = 1:max(length(xorig), length(yorig), is_3d ? 0 : length(zorig)) # get the starting position xi = _cycle(xorig, i) yi = _cycle(yorig, i) - + zi = is_3d ? _cycle(zorig, i) : 0 # get the velocity vi = _cycle(velocity, i) - vx, vy = if istuple(vi) - first(vi), last(vi) - elseif isscalar(vi) - vi, vi - elseif isa(vi, Function) - vi(xi, yi) - else - error("unexpected vi type $(typeof(vi)) for quiver: $vi") + if is_3d + vx, vy, vz = if istuple(vi) + vi[1], vi[2], vi[3] + elseif isscalar(vi) + vi, vi, vi + elseif isa(vi, Function) + vi(xi, yi, zi) + else + error("unexpected vi type $(typeof(vi)) for quiver: $vi") + end + else # 2D quiver + vx, vy = if istuple(vi) + first(vi), last(vi) + elseif isscalar(vi) + vi, vi + elseif isa(vi, Function) + vi(xi, yi) + else + error("unexpected vi type $(typeof(vi)) for quiver: $vi") + end end - # add the points nanappend!(x, [xi, xi + vx, NaN]) nanappend!(y, [yi, yi + vy, NaN]) + is_3d && nanappend!(z, [zi, zi + vz, NaN]) end - plotattributes[:x], plotattributes[:y] = x, y + if is_3d + plotattributes[:z] = z + end # KW[plotattributes] end @@ -1229,6 +1305,7 @@ end # function apply_series_recipe(plotattributes::AKW, ::Type{Val{:quiver}}) @recipe function f(::Type{Val{:quiver}}, x, y, z) + @nospecialize if :arrow in supported_attrs() quiver_using_arrows(plotattributes) else @@ -1267,6 +1344,8 @@ end end end +@nospecialize + # images - colors @recipe function f(mat::AMat{T}) where {T <: Colorant} n, m = axes(mat) @@ -1294,6 +1373,16 @@ end @recipe function f(shapes::AVec{Shape}) seriestype --> :shape + # For backwards compatibility, column vectors of segmenting attributes are + # interpreted as having one element per shape + for attr in union(_segmenting_array_attributes, _segmenting_vector_attributes) + v = get(plotattributes, attr, nothing) + if v isa AVec || v isa AMat && size(v,2) == 1 + @warn "Column vector attribute `$attr` reinterpreted as row vector (one value per shape).\n" * + "Pass a row vector instead (e.g. using `permutedims`) to suppress this warning." + plotattributes[attr] = permutedims(v) + end + end coords(shapes) end @@ -1342,14 +1431,15 @@ end # -------------------------------------------------------------------- # Lists of tuples and GeometryBasics.Points # -------------------------------------------------------------------- -@recipe f(v::AVec{<:_Point}) = RecipesPipeline.unzip(v) -@recipe f(p::_Point) = [p] +@recipe f(v::AVec{<:GeometryBasics.Point}) = RecipesPipeline.unzip(v) +@recipe f(p::GeometryBasics.Point) = [p] # Special case for 4-tuples in :ohlc series @recipe f(xyuv::AVec{<:Tuple{R1, R2, R3, R4}}) where {R1, R2, R3, R4} = get(plotattributes, :seriestype, :path) == :ohlc ? OHLC[OHLC(t...) for t in xyuv] : RecipesPipeline.unzip(xyuv) +@specialize # ------------------------------------------------- @@ -1389,6 +1479,8 @@ end # TODO: when I allow `@recipe f(::Type{T}, v::T) = ...` definitions to replace convertToAnyVector, # then I should replace these with one definition to convert to a vector of 4-tuples +@nospecialize + # to squash ambiguity warnings... @recipe f(x::AVec{Function}, v::AVec{OHLC}) = error() @recipe f( @@ -1447,16 +1539,16 @@ end yflip := true aspect_ratio := 1 rs, cs, zs = Plots.findnz(z.surf) - xlims := ignorenan_extrema(cs) - ylims := ignorenan_extrema(rs) - if plotattributes[:markershape] == :none - markershape := :circle - end - if plotattributes[:markersize] == default(:markersize) - markersize := 1 - end + xlims := widen(ignorenan_extrema(cs)..., get(plotattributes, :xscale, :identity)) + ylims := widen(ignorenan_extrema(rs)..., get(plotattributes, :yscale, :identity)) + markershape --> :circle + markersize --> 1 markerstrokewidth := 0 - marker_z := zs + if length(unique(zs)) == 1 + seriescolor --> :black + else + marker_z := zs + end label := "" x := cs y := rs @@ -1466,8 +1558,10 @@ end () end +@specialize -Plots.findnz(A::AbstractSparseMatrix) = findnz(A) + +Plots.findnz(A::AbstractSparseMatrix) = SparseArrays.findnz(A) # fallback function for finding non-zero elements of non-sparse matrices function Plots.findnz(A::AbstractMatrix) @@ -1480,6 +1574,8 @@ end # ------------------------------------------------- +@nospecialize + "Adds ax+b... straight line over the current plot, without changing the axis limits" abline!(plt::Plot, a, b; kw...) = plot!(plt, [0, 1], [b, b + a]; seriestype = :straightline, kw...) @@ -1549,3 +1645,5 @@ julia> areaplot(1:3, [1 2 3; 7 8 9; 4 5 6], seriescolor = [:red :green :blue], f end end end + +@specialize diff --git a/src/shorthands.jl b/src/shorthands.jl index 7b9584c9..dfcc2302 100644 --- a/src/shorthands.jl +++ b/src/shorthands.jl @@ -1,3 +1,5 @@ +@nospecialize + """ scatter(x,y) scatter!(x,y) @@ -55,6 +57,7 @@ Plot a histogram. # Example ```julia-repl julia> histogram([1,2,1,1,4,3,8],bins=0:8) +julia> histogram([1,2,1,1,4,3,8],bins=0:8,weights=weights([4,7,3,9,12,2,6])) ``` """ @shorthands histogram @@ -69,7 +72,7 @@ Make a histogram bar plot. See `histogram`. """ stephist(x) - stephist(x) + stephist!(x) Make a histogram step plot (bin counts are represented using horizontal lines instead of bars). See `histogram`. @@ -418,13 +421,13 @@ xlabel!(s::AbstractString; kw...) = plot!(; xlabel = s, kw...) ylabel!(s::AbstractString; kw...) = plot!(; ylabel = s, kw...) "Set xlims for an existing plot" -xlims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; xlims = lims, kw...) +xlims!(lims::Tuple; kw...) = plot!(; xlims = lims, kw...) "Set ylims for an existing plot" -ylims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; ylims = lims, kw...) +ylims!(lims::Tuple; kw...) = plot!(; ylims = lims, kw...) "Set zlims for an existing plot" -zlims!(lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(; zlims = lims, kw...) +zlims!(lims::Tuple; kw...) = plot!(; zlims = lims, kw...) xlims!(xmin::Real, xmax::Real; kw...) = plot!(; xlims = (xmin,xmax), kw...) ylims!(ymin::Real, ymax::Real; kw...) = plot!(; ylims = (ymin,ymax), kw...) @@ -432,10 +435,10 @@ zlims!(zmin::Real, zmax::Real; kw...) = plot!(; zlims = (zmi "Set xticks for an existing plot" -xticks!(v::TicksArgs; kw...) where {T<:Real} = plot!(; xticks = v, kw...) +xticks!(v::TicksArgs; kw...) = plot!(; xticks = v, kw...) "Set yticks for an existing plot" -yticks!(v::TicksArgs; kw...) where {T<:Real} = plot!(; yticks = v, kw...) +yticks!(v::TicksArgs; kw...) = plot!(; yticks = v, kw...) xticks!( ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(; xticks = (ticks,labels), kw...) @@ -475,3 +478,5 @@ xaxis!(args...; kw...) = plot!(; xaxis = args yaxis!(args...; kw...) = plot!(; yaxis = args, kw...) xgrid!(args...; kw...) = plot!(; xgrid = args, kw...) ygrid!(args...; kw...) = plot!(; ygrid = args, kw...) + +@specialize diff --git a/src/utils.jl b/src/utils.jl index a446eac9..0bfd61ff 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -1,4 +1,6 @@ - +function treats_y_as_x(seriestype) + return seriestype in (:vline, :vspan, :histogram, :barhist, :stephist, :scatterhist) +end function replace_image_with_heatmap(z::Array{T}) where T<:Colorant n, m = size(z) colors = palette(vec(z)) @@ -51,10 +53,16 @@ function Base.push!(segments::Segments{T}, vs::AVec) where T end +struct SeriesSegment + # indexes of this segement in series data vectors + range::UnitRange + # index into vector-valued attributes corresponding to this segment + attr_index::Int +end + # ----------------------------------------------------- # helper to manage NaN-separated segments - -mutable struct SegmentsIterator +struct NaNSegmentsIterator args::Tuple n1::Int n2::Int @@ -64,29 +72,47 @@ function iter_segments(args...) tup = Plots.wraptuple(args) n1 = minimum(map(firstindex, tup)) n2 = maximum(map(lastindex, tup)) - SegmentsIterator(tup, n1, n2) + NaNSegmentsIterator(tup, n1, n2) end -function iter_segments(series::Series, seriestype::Symbol = :path) +function series_segments(series::Series, seriestype::Symbol = :path) x, y, z = series[:x], series[:y], series[:z] - if x === nothing - return UnitRange{Int}[] - elseif has_attribute_segments(series) - if any(isnan,y) - return [iter_segments(y)...] - elseif seriestype in (:scatter, :scatter3d) - return [[i] for i in eachindex(y)] - else - return [i:(i + 1) for i in firstindex(y):lastindex(y)-1] - end + (x === nothing || isempty(x)) && return UnitRange{Int}[] + + args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) + nan_segments = collect(iter_segments(args...)) + + result = if has_attribute_segments(series) + Iterators.flatten(map(nan_segments) do r + if seriestype in (:scatter, :scatter3d) + (SeriesSegment(i:i, i) for i in r) + else + (SeriesSegment(i:i+1, i) for i in first(r):last(r)-1) + end + end) else - segs = UnitRange{Int}[] - args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) - for seg in iter_segments(args...) - push!(segs, seg) + (SeriesSegment(r, 1) for r in nan_segments) + end + + seg_range = UnitRange(minimum(first(seg.range) for seg in result), + maximum(last(seg.range) for seg in result)) + for attr in _segmenting_vector_attributes + v = get(series, attr, nothing) + if v isa AVec && eachindex(v) != seg_range + @warn "Indices $(eachindex(v)) of attribute `$attr` does not match data indices $seg_range." + if any(v -> !isnothing(v) && any(isnan, v), (x,y,z)) + @info """Data contains NaNs or missing values, and indices of `$attr` vector do not match data indices. + If you intend elements of `$attr` to apply to individual NaN-separated segements in the data, + pass each segment in a separate vector instead, and use a row vector for `$attr`. Legend entries + may be suppressed by passing an empty label. + For example, + plot([1:2,1:3], [[4,5],[3,4,5]], label=["y" ""], $attr=[1 2]) + """ + end end - return segs end + + return result end # helpers to figure out if there are NaN values in a list of array types @@ -95,7 +121,7 @@ anynan(args::Tuple) = i -> anynan(i,args) anynan(istart::Int, iend::Int, args::Tuple) = any(anynan(args), istart:iend) allnan(istart::Int, iend::Int, args::Tuple) = all(anynan(args), istart:iend) -function Base.iterate(itr::SegmentsIterator, nextidx::Int = itr.n1) +function Base.iterate(itr::NaNSegmentsIterator, nextidx::Int = itr.n1) i = findfirst(!anynan(itr.args), nextidx:itr.n2) i === nothing && return nothing nextval = nextidx + i - 1 @@ -105,6 +131,7 @@ function Base.iterate(itr::SegmentsIterator, nextidx::Int = itr.n1) nextval:nextnan-1, nextnan end +Base.IteratorSize(::NaNSegmentsIterator) = Base.SizeUnknown() # Find minimal type that can contain NaN and x # To allow use of NaN separated segments with categorical x axis @@ -147,18 +174,20 @@ makevec(v::T) where {T} = T[v] maketuple(x::Real) = (x,x) maketuple(x::Tuple{T,S}) where {T,S} = x -const _Point{N,T} = Union{GeometryTypes.Point{N,T}, GeometryBasics.Point{N,T}} for i in 2:4 @eval begin - RecipesPipeline.unzip(v::Union{AVec{<:Tuple{Vararg{T,$i} where T}}, - AVec{<:_Point{$i}}}) = $(Expr(:tuple, (:([t[$j] for t in v]) for j=1:i)...)) + RecipesPipeline.unzip( + v::Union{AVec{<:Tuple{Vararg{T,$i} where T}}, AVec{<:GeometryBasics.Point{$i}}}, + ) = $(Expr(:tuple, (:([t[$j] for t in v]) for j=1:i)...)) end end -RecipesPipeline.unzip(v::Union{AVec{<:_Point{N}}, - AVec{<:Tuple{Vararg{T,N} where T}}}) where N = error("$N-dimensional unzip not implemented.") -RecipesPipeline.unzip(v::Union{AVec{<:_Point}, - AVec{<:Tuple}}) = error("Can't unzip points of different dimensions.") +RecipesPipeline.unzip( + ::Union{AVec{<:GeometryBasics.Point{N}}, AVec{<:Tuple{Vararg{T,N} where T}}} +) where N = error("$N-dimensional unzip not implemented.") +RecipesPipeline.unzip(::Union{AVec{<:GeometryBasics.Point}, AVec{<:Tuple}}) = error( + "Can't unzip points of different dimensions." +) # given 2-element lims and a vector of data x, widen lims to account for the extrema of x function _expand_limits(lims, x) @@ -205,30 +234,27 @@ end createSegments(z) = collect(repeat(reshape(z,1,:),2,1))[2:end] -Base.first(c::Colorant) = c -Base.first(x::Symbol) = x - sortedkeys(plotattributes::Dict) = sort(collect(keys(plotattributes))) -function _heatmap_edges(v::AVec, isedges::Bool = false) - length(v) == 1 && return v[1] .+ [-0.5, 0.5] +function _heatmap_edges(v::AVec, isedges::Bool = false, ispolar::Bool = false) + length(v) == 1 && return v[1] .+ [ispolar ? max(-v[1], -0.5) : -0.5, 0.5] if isedges return v end # `isedges = true` means that v is a vector which already describes edges # and does not need to be extended. vmin, vmax = ignorenan_extrema(v) - extra_min = (v[2] - v[1]) / 2 + extra_min = ispolar ? min(v[1], (v[2] - v[1]) / 2) : (v[2] - v[1]) / 2 extra_max = (v[end] - v[end - 1]) / 2 vcat(vmin-extra_min, 0.5 * (v[1:end-1] + v[2:end]), vmax+extra_max) end "create an (n+1) list of the outsides of heatmap rectangles" -function heatmap_edges(v::AVec, scale::Symbol = :identity, isedges::Bool = false) +function heatmap_edges(v::AVec, scale::Symbol = :identity, isedges::Bool = false, ispolar::Bool = false) f, invf = RecipesPipeline.scale_func(scale), RecipesPipeline.inverse_scale_func(scale) - map(invf, _heatmap_edges(map(f,v), isedges)) + map(invf, _heatmap_edges(map(f,v), isedges, ispolar)) end -function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size::Tuple{Int, Int}) +function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size::Tuple{Int, Int}, ispolar::Bool = false) nx, ny = length(x), length(y) # ismidpoints = z_size == (ny, nx) # This fails some tests, but would actually be # the correct check, since (4, 3) != (3, 4) and a missleading plot is produced. @@ -240,7 +266,7 @@ function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size: or `size(z) == (length(y)+1, length(x)+1))` (x & y define edges).""") end x, y = heatmap_edges(x, xscale, isedges), - heatmap_edges(y, yscale, isedges) + heatmap_edges(y, yscale, isedges, ispolar) # special handle for `r` in polar plots return x, y end @@ -293,13 +319,6 @@ limsType(lims::Tuple{T,S}) where {T<:Real,S<:Real} = :limits limsType(lims::Symbol) = lims == :auto ? :auto : :invalid limsType(lims) = :invalid -# axis_Symbol(letter, postfix) = Symbol(letter * postfix) -# axis_symbols(letter, postfix...) = map(s -> axis_Symbol(letter, s), postfix) - -Base.convert(::Type{Vector{T}}, rng::AbstractRange{T}) where {T<:Real} = T[x for x in rng] -Base.convert(::Type{Vector{T}}, rng::AbstractRange{S}) where {T<:Real,S<:Real} = T[x for x in rng] - -Base.merge(a::AbstractVector, b::AbstractVector) = sort(unique(vcat(a,b))) # recursively merge kw-dicts, e.g. for merging extra_kwargs / extra_plot_kwargs in plotly) recursive_merge(x::AbstractDict...) = merge(recursive_merge, x...) @@ -342,17 +361,8 @@ function indices_and_unique_values(z::AbstractArray) newz, vals end -# this is a helper function to determine whether we need to transpose a surface matrix. -# it depends on whether the backend matches rows to x (transpose_on_match == true) or vice versa -# for example: PyPlot sends rows to y, so transpose_on_match should be true -function transpose_z(plotattributes, z, transpose_on_match::Bool = true) - if plotattributes[:match_dimensions] == transpose_on_match - # z' - permutedims(z, [2,1]) - else - z - end -end +handle_surface(z) = z +handle_surface(z::Surface) = permutedims(z.surf) function ok(x::Number, y::Number, z::Number = 0) isfinite(x) && isfinite(y) && isfinite(z) @@ -418,79 +428,6 @@ xlims(sp_idx::Int = 1) = xlims(current(), sp_idx) ylims(sp_idx::Int = 1) = ylims(current(), sp_idx) zlims(sp_idx::Int = 1) = zlims(current(), sp_idx) -# These functions return an operator for use in `get_clims(::Seres, op)` -process_clims(lims::Tuple{<:Number,<:Number}) = (zlims -> ifelse.(isfinite.(lims), lims, zlims)) ∘ ignorenan_extrema -process_clims(s::Union{Symbol,Nothing,Missing}) = ignorenan_extrema -# don't specialize on ::Function otherwise python functions won't work -process_clims(f) = f - -function get_clims(sp::Subplot, op=process_clims(sp[:clims])) - zmin, zmax = Inf, -Inf - for series in series_list(sp) - if series[:colorbar_entry] - zmin, zmax = _update_clims(zmin, zmax, get_clims(series, op)...) - end - end - return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) -end - -function get_clims(sp::Subplot, series::Series, op=process_clims(sp[:clims])) - zmin, zmax = if series[:colorbar_entry] - get_clims(sp, op) - else - get_clims(series, op) - end - return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) -end - -""" - get_clims(::Series, op=Plots.ignorenan_extrema) - -Finds the limits for the colorbar by taking the "z-values" for the series and passing them into `op`, -which must return the tuple `(zmin, zmax)`. The default op is the extrema of the finite -values of the input. -""" -function get_clims(series::Series, op=ignorenan_extrema) - zmin, zmax = Inf, -Inf - z_colored_series = (:contour, :contour3d, :heatmap, :histogram2d, :surface, :hexbin) - for vals in (series[:seriestype] in z_colored_series ? series[:z] : nothing, series[:line_z], series[:marker_z], series[:fill_z]) - if (typeof(vals) <: AbstractSurface) && (eltype(vals.surf) <: Union{Missing, Real}) - zmin, zmax = _update_clims(zmin, zmax, op(vals.surf)...) - elseif (vals !== nothing) && (eltype(vals) <: Union{Missing, Real}) - zmin, zmax = _update_clims(zmin, zmax, op(vals)...) - end - end - return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) -end - -_update_clims(zmin, zmax, emin, emax) = NaNMath.min(zmin, emin), NaNMath.max(zmax, emax) - -@enum ColorbarStyle cbar_gradient cbar_fill cbar_lines - -function colorbar_style(series::Series) - colorbar_entry = series[:colorbar_entry] - if !(colorbar_entry isa Bool) - @warn "Non-boolean colorbar_entry ignored." - colorbar_entry = true - end - - if !colorbar_entry - nothing - elseif isfilledcontour(series) - cbar_fill - elseif iscontour(series) - cbar_lines - elseif series[:seriestype] ∈ (:heatmap,:surface) || - any(series[z] !== nothing for z ∈ [:marker_z,:line_z,:fill_z]) - cbar_gradient - else - nothing - end -end - -hascolorbar(series::Series) = colorbar_style(series) !== nothing -hascolorbar(sp::Subplot) = sp[:colorbar] != :none && any(hascolorbar(s) for s in series_list(sp)) - iscontour(series::Series) = series[:seriestype] in (:contour, :contour3d) isfilledcontour(series::Series) = iscontour(series) && series[:fillrange] !== nothing @@ -587,39 +524,34 @@ function get_markerstrokewidth(series, i::Int = 1) _cycle(series[:markerstrokewidth], i) end +const _segmenting_vector_attributes = ( + :seriescolor, + :seriesalpha, + :linecolor, + :linealpha, + :linewidth, + :linestyle, + :fillcolor, + :fillalpha, + :markercolor, + :markeralpha, + :markersize, + :markerstrokecolor, + :markerstrokealpha, + :markerstrokewidth, + :markershape, +) + +const _segmenting_array_attributes = (:line_z, :fill_z, :marker_z) + function has_attribute_segments(series::Series) # we want to check if a series needs to be split into segments just because # of its attributes - for letter in (:x, :y, :z) - # If we have NaNs in the data they define the segments and - # SegmentsIterator is used - series[letter] !== nothing && NaN in collect(series[letter]) && return false - end series[:seriestype] == :shape && return false - # ... else we check relevant attributes if they have multiple inputs - return any( - (typeof(series[attr]) <: AbstractVector && length(series[attr]) > 1) - for - attr in [ - :seriescolor, - :seriesalpha, - :linecolor, - :linealpha, - :linewidth, - :linestyle, - :fillcolor, - :fillalpha, - :markercolor, - :markeralpha, - :markersize, - :markerstrokecolor, - :markerstrokealpha, - :markerstrokewidth, - :markershape, - ] - ) || any( - typeof(series[attr]) <: AbstractArray for attr in (:line_z, :fill_z, :marker_z) - ) + # check relevant attributes if they have multiple inputs + return any(series[attr] isa AbstractVector && length(series[attr]) > 1 + for attr in _segmenting_vector_attributes + ) || any(series[attr] isa AbstractArray for attr in _segmenting_array_attributes) end function get_aspect_ratio(sp) diff --git a/test/integration_dates.jl b/test/integration_dates.jl new file mode 100644 index 00000000..081d69fb --- /dev/null +++ b/test/integration_dates.jl @@ -0,0 +1,60 @@ +using Plots, Test, Dates + +@testset "Limits" begin + y=[1.0*i*i for i in 1:10] + x=[Date(2019,11,i) for i in 1:10] + + rx=[x[3],x[5]] + + p = plot(x,y, widen = false) + vspan!(p, rx, label="", alpha=0.2) + + ref_ylims = (y[1], y[end]) + ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) + @test Plots.ylims(p) == ref_ylims + @test Plots.xlims(p) == ref_xlims + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + closeall() + end +end # testset + +@testset "Date xlims" begin + y=[1.0*i*i for i in 1:10] + x=[Date(2019,11,i) for i in 1:10] + span = (Date(2019,10,31), Date(2019,11,11)) + + ref_xlims = map(date->date.instant.periods.value, span) + + p = plot(x,y, xlims=span, widen = false) + + @test Plots.xlims(p) == ref_xlims + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + closeall() + end +end # testset + +@testset "DateTime xlims" begin + y=[1.0*i*i for i in 1:10] + x=[DateTime(2019,11,i,11) for i in 1:10] + span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) + + ref_xlims = map(date->date.instant.periods.value, span) + + p = plot(x,y, xlims=span, widen = false) + @test Plots.xlims(p) == ref_xlims + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + closeall() + end +end # testset diff --git a/test/runtests.jl b/test/runtests.jl index 946f13fc..26797405 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,13 +4,36 @@ using Plots using Random using StableRNGs using Test +using TestImages using FileIO using Gtk using LibGit2 -import GeometryTypes, GeometryBasics +import GeometryBasics using Dates +using RecipesBase + +@testset "Plotly standalone" begin + @test_nowarn Plots._init_ijulia_plotting() + @test Plots.plotly_local_file_path[] === nothing + temp = Plots.use_local_dependencies[] + withenv("PLOTS_HOST_DEPENDENCY_LOCAL" => true) do + Plots.__init__() + @test Plots.plotly_local_file_path[] isa String + @test isfile(Plots.plotly_local_file_path[]) + @test Plots.use_local_dependencies[] = true + @test_nowarn Plots._init_ijulia_plotting() + end + Plots.plotly_local_file_path[] = nothing + Plots.use_local_dependencies[] = temp +end # testset + +include("test_defaults.jl") include("test_axes.jl") +include("test_axis_letter.jl") +include("test_components.jl") +include("test_shorthands.jl") +include("integration_dates.jl") include("test_recipes.jl") include("test_hdf5plots.jl") include("test_pgfplotsx.jl") @@ -110,7 +133,7 @@ const IMG_TOL = VERSION < v"1.4" && Sys.iswindows() ? 1e-1 : is_ci() ? 1e-2 : 1e @test isa(p, Plots.Plot) == true @test isa(display(p), Nothing) == true p = plot([Dates.Date(2019, 1, 1), Dates.Date(2019, 2, 1)], [3, 4]) - annotate!(p, [(Dates.Date(2019, 1, 15), 3.2, Plots.text("Test", :red, :center))]) + annotate!(p, [(Dates.Date(2019, 1, 15), 3.2, :auto)]) hline!(p, [3.1]) @test isa(p, Plots.Plot) == true @test isa(display(p), Nothing) == true @@ -152,14 +175,8 @@ end @test_throws ArgumentError gif(anim) end -@testset "Segments" begin - function segments(args...) - segs = UnitRange{Int}[] - for seg in iter_segments(args...) - push!(segs,seg) - end - segs - end +@testset "NaN-separated Segments" begin + segments(args...) = collect(iter_segments(args...)) nan10 = fill(NaN,10) @test segments(11:20) == [1:10] @@ -179,7 +196,6 @@ end [(missing,missing)], [(missing,missing,missing),("a","b","c")]) for z in zipped @test isequal(collect(zip(Plots.unzip(z)...)), z) - @test isequal(collect(zip(Plots.unzip(GeometryTypes.Point.(z))...)), z) @test isequal(collect(zip(Plots.unzip(GeometryBasics.Point.(z))...)), z) end op1 = Plots.process_clims((1.0, 2.0)) diff --git a/test/test_axes.jl b/test/test_axes.jl index 07db6102..db2cb8cd 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -12,3 +12,12 @@ end @test plot(1, axis=nothing)[1][:xaxis][:ticks] == [] @test plot(1, axis=nothing)[1][:yaxis][:ticks] == [] end # testset + +@testset "Categorical ticks" begin + p1 = plot('A':'M', 1:13) + p2 = plot('A':'Z', 1:26) + p3 = plot('A':'Z', 1:26, ticks = :all) + @test Plots.get_ticks(p1[1], p1[1][:xaxis])[2] == string.('A':'M') + @test Plots.get_ticks(p2[1], p2[1][:xaxis])[2] == string.('C':3:'Z') + @test Plots.get_ticks(p3[1], p3[1][:xaxis])[2] == string.('A':'Z') +end diff --git a/test/test_axis_letter.jl b/test/test_axis_letter.jl new file mode 100644 index 00000000..691034b8 --- /dev/null +++ b/test/test_axis_letter.jl @@ -0,0 +1,25 @@ +using Plots, Test + +@testset "axis letter" begin + using Plots, RecipesBase + # a custom type for dispacthing the axis-letter-testing recipe + struct MyType <: Number + val::Float64 + end + value(m::MyType) = m.val + data = MyType.(sort(randn(20))) + # A recipe that puts the axis letter in the title + @recipe function f(::Type{T}, m::T) where T <: AbstractArray{<:MyType} + title --> string(plotattributes[:letter]) + value.(m) + end + @testset "$f (orientation = $o)" for f in [histogram, barhist, stephist, scatterhist], o in [:vertical, :horizontal] + @test f(data, orientation=o).subplots[1].attr[:title] == (o == :vertical ? "x" : "y") + end + @testset "$f" for f in [hline, hspan] + @test f(data).subplots[1].attr[:title] == "y" + end + @testset "$f" for f in [vline, vspan] + @test f(data).subplots[1].attr[:title] == "x" + end +end diff --git a/test/test_components.jl b/test/test_components.jl new file mode 100644 index 00000000..1ade43d5 --- /dev/null +++ b/test/test_components.jl @@ -0,0 +1,111 @@ +using Plots, Test + +@testset "Shapes" begin + @testset "Copy" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + square2 = Shape(square) + @test square2.x == square.x + @test square2.y == square.y + end + + @testset "Center" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + @test Plots.center(square) == (0.5,0.5) + end + + @testset "Translate" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + squareUp = Shape([(0,1),(1,1),(1,2),(0,2)]) + squareUpRight = Shape([(1,1),(2,1),(2,2),(1,2)]) + + @test Plots.translate(square,0,1).x == squareUp.x + @test Plots.translate(square,0,1).y == squareUp.y + + @test Plots.center(translate!(square,1)) == (1.5,1.5) + end + + @testset "Rotate" begin + # 2 radians rotation matrix + R2 = [cos(2) sin(2); -sin(2) cos(2)] + coords = [0 0; 1 0; 1 1; 0 1]' + coordsRotated2 = R2*(coords.-0.5).+0.5 + + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + + # make a new, rotated square + square2 = Plots.rotate(square, -2) + @test square2.x ≈ coordsRotated2[1,:] + @test square2.y ≈ coordsRotated2[2,:] + + # unrotate the new square in place + rotate!(square2, 2) + @test square2.x ≈ coords[1,:] + @test square2.y ≈ coords[2,:] + end +end + +@testset "Brush" begin + @testset "Colors" begin + baseline = brush(1, RGB(0,0,0)) + @test brush(:black) == baseline + @test brush("black") == baseline + end + @testset "Weight" begin + @test brush(10).size == 10 + @test brush(0.1).size == 1 + end + @testset "Alpha" begin + @test brush(0.4).alpha == 0.4 + @test brush(20).alpha == nothing + end + @testset "Bad Argument" begin + # using test_logs because test_warn seems to not work anymore + @test_logs (:warn,"Unused brush arg: nothing (Nothing)") begin + brush(nothing) + end + end +end + +@testset "Fonts" begin + @testset "Scaling" begin + sizesToCheck = [:titlefontsize, :legendfontsize, :legendtitlefontsize, + :xtickfontsize, :ytickfontsize, :ztickfontsize, + :xguidefontsize, :yguidefontsize, :zguidefontsize,] + # get inital font sizes + initialSizes = [Plots.default(s) for s in sizesToCheck ] + + #scale up font sizes + scalefontsizes(2) + + # get inital font sizes + doubledSizes = [Plots.default(s) for s in sizesToCheck ] + + @test doubledSizes == initialSizes*2 + + # reset font sizes + resetfontsizes() + + finalSizes = [Plots.default(s) for s in sizesToCheck ] + + @test finalSizes == initialSizes + end +end + +@testset "Series Annotations" begin + square = Shape([(0,0),(1,0),(1,1),(0,1)]) + @test_logs (:warn,"Unused SeriesAnnotations arg: triangle (Symbol)") begin + p = plot([1,2,3], + series_annotations=(["a"], + 2, # pass a scale factor + (1,4), # pass two scale factors (overwrites first one) + square, # pass a shape + font(:courier), # pass an annotation font + :triangle # pass an incorrect argument + )) + sa = p.series_list[1].plotattributes[:series_annotations] + @test sa.strs == ["a"] + @test sa.font.family == "courier" + @test sa.baseshape == square + @test sa.scalefactor == (1,4) + end +end diff --git a/test/test_defaults.jl b/test/test_defaults.jl new file mode 100644 index 00000000..96c0ac44 --- /dev/null +++ b/test/test_defaults.jl @@ -0,0 +1,11 @@ +using Plots, Test + +const PLOTS_DEFAULTS = Dict(:theme => :wong2) +Plots.__init__() + +@testset "Loading theme" begin + @test plot(1:5)[1][1][:seriescolor] == RGBA(colorant"black") +end + +empty!(PLOTS_DEFAULTS) +Plots.__init__() diff --git a/test/test_pgfplotsx.jl b/test/test_pgfplotsx.jl index 2e640ead..b105de42 100644 --- a/test/test_pgfplotsx.jl +++ b/test/test_pgfplotsx.jl @@ -21,12 +21,12 @@ end @test !haskey(axis.contents[1].options.dict, "fill") @testset "Legends" begin - legends_plot = plot( rand(5,2), lab = ["1" ""] ) - scatter!(legends_plot, rand(5) ) + legends_plot = plot(rand(5, 2), lab = ["1" ""]) + scatter!(legends_plot, rand(5)) Plots._update_plot_object(legends_plot) axis_contents = Plots.pgfx_axes(legends_plot.o)[1].contents - leg_entries = filter( x -> x isa PGFPlotsX.LegendEntry, axis_contents ) - series = filter( x -> x isa PGFPlotsX.Plot, axis_contents ) + leg_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis_contents) + series = filter(x -> x isa PGFPlotsX.Plot, axis_contents) @test length(leg_entries) == 2 @test !haskey(series[1].options.dict, "forget plot") @test haskey(series[2].options.dict, "forget plot") @@ -91,8 +91,8 @@ end scatter!(pic, rand(100), markersize = 6, c = :orange) Plots._update_plot_object(pic) axis_contents = Plots.pgfx_axes(pic.o)[1].contents - leg_entries = filter( x -> x isa PGFPlotsX.LegendEntry, axis_contents ) - series = filter( x -> x isa PGFPlotsX.Plot, axis_contents ) + leg_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis_contents) + series = filter(x -> x isa PGFPlotsX.Plot, axis_contents) @test length(leg_entries) == 2 @test length(series) == 4 @test haskey(series[1].options.dict, "forget plot") @@ -106,7 +106,7 @@ end end), Plots._shape_keys) markers = reshape(markers, 1, length(markers)) n = length(markers) - x = (range(0, stop = 10, length = n + 2))[2:(end - 1)] + x = (range(0, stop = 10, length = n + 2))[2:(end-1)] y = repeat(reshape(reverse(x), 1, :), n, 1) scatter( x, @@ -231,7 +231,7 @@ end # TODO: support :semi end # testset @testset "Quiver" begin - x = (-2pi):0.2:(2 * pi) + x = (-2pi):0.2:(2*pi) y = sin.(x) u = ones(length(x)) @@ -255,7 +255,7 @@ end nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) @test length(nodes) == 1 mktempdir() do path - file_path =joinpath(path,"annotations.tex") + file_path = joinpath(path, "annotations.tex") @test_nowarn savefig(pgfx_plot, file_path) open(file_path) do io lines = readlines(io) @@ -271,7 +271,7 @@ end nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) @test length(nodes) == 3 mktempdir() do path - file_path =joinpath(path,"annotations.tex") + file_path = joinpath(path, "annotations.tex") @test_nowarn savefig(pgfx_plot, file_path) open(file_path) do io lines = readlines(io) @@ -296,14 +296,14 @@ end nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) @test length(nodes) == 9 mktempdir() do path - file_path =joinpath(path,"annotations.tex") + file_path = joinpath(path, "annotations.tex") @test_nowarn savefig(annotation_plot, file_path) open(file_path) do io lines = readlines(io) @test count(s -> occursin("node", s), lines) == 9 end # test .tikz extension - file_path =joinpath(path,"annotations.tikz") + file_path = joinpath(path, "annotations.tikz") @test_nowarn savefig(annotation_plot, file_path) @test_nowarn open(file_path) do io end @@ -326,6 +326,18 @@ end @test ribbon_plot.o !== nothing @test ribbon_plot.o.the_plot !== nothing end # testset + @testset "Markers and Paths" begin + pl = plot( + 5 .- ones(9), + markershape = [:utriangle, :rect], + markersize = 8, + color = [:red, :black], + ) + Plots._update_plot_object(pl) + axis = Plots.pgfx_axes(pl.o)[1] + plots = filter(x -> x isa PGFPlotsX.Plot, axis.contents) + @test length(plots) == 9 + end # testset end # testset @testset "Extra kwargs" begin @@ -335,27 +347,44 @@ end # testset @test pl[1].attr[:extra_kwargs][:test] == "me" pl = plot(1:5, test = "me", extra_kwargs = :plot) @test pl.attr[:extra_plot_kwargs][:test] == "me" - pl = plot(1:5, extra_kwargs = Dict(:plot => Dict(:test => "me"), :series => Dict(:and => "me too"))) + pl = plot( + 1:5, + extra_kwargs = Dict( + :plot => Dict(:test => "me"), + :series => Dict(:and => "me too"), + ), + ) @test pl.attr[:extra_plot_kwargs][:test] == "me" @test pl[1][1].plotattributes[:extra_kwargs][:and] == "me too" pl = plot( - plot(1:5, title="Line"), - scatter(1:5, title="Scatter", extra_kwargs=Dict(:subplot=>Dict("axis line shift" => "10pt"))) + plot(1:5, title = "Line"), + scatter( + 1:5, + title = "Scatter", + extra_kwargs = Dict(:subplot => Dict("axis line shift" => "10pt")), + ), ) Plots._update_plot_object(pl) axes = Plots.pgfx_axes(pl.o) @test !haskey(axes[1].options.dict, "axis line shift") @test haskey(axes[2].options.dict, "axis line shift") - pl = plot(x->x, -1:1; add = raw"\node at (0,0.5) {\huge hi};", extra_kwargs = :subplot) + pl = plot( + x -> x, + -1:1; + add = raw"\node at (0,0.5) {\huge hi};", + extra_kwargs = :subplot, + ) @test pl[1][:extra_kwargs] == Dict(:add => raw"\node at (0,0.5) {\huge hi};") Plots._update_plot_object(pl) axes = Plots.pgfx_axes(pl.o) - @test filter(x->x isa String, axes[1].contents)[1] == raw"\node at (0,0.5) {\huge hi};" + @test filter(x -> x isa String, axes[1].contents)[1] == + raw"\node at (0,0.5) {\huge hi};" plot!(pl) @test pl[1][:extra_kwargs] == Dict(:add => raw"\node at (0,0.5) {\huge hi};") Plots._update_plot_object(pl) axes = Plots.pgfx_axes(pl.o) - @test filter(x->x isa String, axes[1].contents)[1] == raw"\node at (0,0.5) {\huge hi};" + @test filter(x -> x isa String, axes[1].contents)[1] == + raw"\node at (0,0.5) {\huge hi};" end # testset @testset "Titlefonts" begin @@ -371,7 +400,11 @@ end # testset @test pl[:plot_title] == "Test me" @test pl[:plot_titlefontsize] == 2 @test pl[:plot_titlefonthalign] == :left - pl = heatmap(rand(3,3), colorbar_title = "Test me", colorbar_titlefont = (12, :right)) + pl = heatmap( + rand(3, 3), + colorbar_title = "Test me", + colorbar_titlefont = (12, :right), + ) @test pl[1][:colorbar_title] == "Test me" @test pl[1][:colorbar_titlefontsize] == 12 @test pl[1][:colorbar_titlefonthalign] == :right diff --git a/test/test_recipes.jl b/test/test_recipes.jl index b1f34351..d2dcfdf4 100644 --- a/test/test_recipes.jl +++ b/test/test_recipes.jl @@ -1,6 +1,33 @@ using Plots, Test +using OffsetArrays + @testset "lens!" begin pl = plot(1:5) - lens!(pl, [1,2], [1,2], inset = (1, bbox(0.0,0.0,0.2,0.2))) + lens!(pl, [1,2], [1,2], inset = (1, bbox(0.0,0.0,0.2,0.2)), colorbar = false) @test length(pl.series_list) == 4 + @test pl[2][:colorbar] == :none end # testset + +@testset "vline, vspan" begin + vl = vline([1], widen = false) + @test Plots.xlims(vl) == (1,2) + @test Plots.ylims(vl) == (1,2) + vl = vline([1], xlims=(0,2), widen = false) + @test Plots.xlims(vl) == (0,2) + vl = vline([1], ylims=(-3,5), widen = false) + @test Plots.ylims(vl) == (-3,5) + + vsp = vspan([1,3], widen = false) + @test Plots.xlims(vsp) == (1,3) + @test Plots.ylims(vsp) == (0,1) # TODO: might be problematic on log-scales + vsp = vspan([1,3], xlims=(-2,5), widen = false) + @test Plots.xlims(vsp) == (-2,5) + vsp = vspan([1,3], ylims=(-2,5), widen = false) + @test Plots.ylims(vsp) == (-2,5) +end # testset + +@testset "offset axes" begin + tri = OffsetVector(vcat(1:5, 4:-1:1), 11:19) + sticks = plot(tri, seriestype = :sticks) + @test length(sticks) == 1 +end diff --git a/test/test_shorthands.jl b/test/test_shorthands.jl new file mode 100644 index 00000000..891c0c14 --- /dev/null +++ b/test/test_shorthands.jl @@ -0,0 +1,48 @@ +using Plots, Test + +@testset "Shorthands" begin + @testset "Set Lims" begin + p = plot(rand(10)) + + xlims!((1,20)) + @test xlims(p) == (1,20) + + ylims!((-1,1)) + @test ylims(p) == (-1,1) + + zlims!((-1,1)) + @test zlims(p) == (-1,1) + + xlims!(-1,11) + @test xlims(p) == (-1,11) + + ylims!((-10,10)) + @test ylims(p) == (-10,10) + + zlims!((-10,10)) + @test zlims(p) == (-10,10) + end + + @testset "Set Ticks" begin + p = plot([0,2,3,4,5,6,7,8,9,10]) + + xticks = 2:6 + xticks!(xticks) + @test Plots.get_subplot(current(),1).attr[:xaxis][:ticks] == xticks + + yticks = 0.2:0.1:0.7 + yticks!(yticks) + @test Plots.get_subplot(current(),1).attr[:yaxis][:ticks] == yticks + + xticks = [5,6,7.5] + xlabels = ["a","b","c"] + + xticks!(xticks, xlabels) + @test Plots.get_subplot(current(),1).attr[:xaxis][:ticks] == (xticks, xlabels) + + yticks = [.5,.6,.75] + ylabels = ["z","y","x"] + yticks!(yticks, ylabels) + @test Plots.get_subplot(current(),1).attr[:yaxis][:ticks] == (yticks, ylabels) + end +end From 4841c1331170a9d2765149d45bffa10fb4891d78 Mon Sep 17 00:00:00 2001 From: Misha Mikhasenko Date: Thu, 25 Mar 2021 17:36:23 +0100 Subject: [PATCH 195/518] typo: axis --- src/backends/gr.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 87f92e4d..c5dd04b3 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1513,8 +1513,8 @@ function gr_label_axis(sp, letter, viewport_plotarea) w = 0.03 + gr_axis_width(sp, axis) GR.setcharup(-1, 0) # - yposition = gr_view_yposition(viewport_plotarea, position(yaxis[:guidefontvalign])) - yalign = alignment(yaxis[:guidefontvalign]) + yposition = gr_view_yposition(viewport_plotarea, position(axis[:guidefontvalign])) + yalign = alignment(axis[:guidefontvalign]) # if guide_position == :right || (guide_position == :auto && axis[:mirror]) GR.settextalign(yalign, GR.TEXT_VALIGN_BOTTOM) @@ -1526,8 +1526,8 @@ function gr_label_axis(sp, letter, viewport_plotarea) else h = 0.015 + gr_axis_height(sp, axis) # - xposition = gr_view_xposition(viewport_plotarea, position(xaxis[:guidefonthalign])) - xalign = alignment(xaxis[:guidefonthalign]) + xposition = gr_view_xposition(viewport_plotarea, position(axis[:guidefonthalign])) + xalign = alignment(axis[:guidefonthalign]) # if guide_position == :top || (guide_position == :auto && axis[:mirror]) GR.settextalign(xalign, GR.TEXT_VALIGN_TOP) From 074c56867de56e9c0d9105bd7a47a04dfe4b761b Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Fri, 26 Mar 2021 10:49:19 -0700 Subject: [PATCH 196/518] Revert "Add :stepmid to line types example plot" This reverts commit 0d528b7c82b63d9f60bf314838188265fff4d95d. --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index 963413bb..cfc8e96f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -193,7 +193,7 @@ const _examples = PlotExample[ [ :( begin - linetypes = [:path :steppre :stepmid :steppost :sticks :scatter] + linetypes = [:path :steppre :steppost :sticks :scatter] n = length(linetypes) x = Vector[sort(rand(20)) for i = 1:n] y = rand(20, n) From b3bf5db9bc104f3bb1745ff5a9022fa68b8b8b16 Mon Sep 17 00:00:00 2001 From: David MacMahon Date: Fri, 26 Mar 2021 11:12:14 -0700 Subject: [PATCH 197/518] Add new "Steps Types" example/test plot 53 This new example/test plot showcases the various step-like `seriestype`s: `:steppre`, `:stepmid`, and `:steppost`. --- src/examples.jl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/examples.jl b/src/examples.jl index cfc8e96f..c834be44 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1119,6 +1119,25 @@ const _examples = PlotExample[ quiver(x,y,z, quiver=(u,v,w)) end] ), + PlotExample( # 53 + "Step Types", + "A comparison of the various step-like `seriestype`s", + [ + :( + begin + x = 1:5 + y = [1, 2, 3, 2, 1] + default(shape=:circle) + plot( + plot(x, y, markershape=:circle, seriestype=:steppre, label="steppre"), + plot(x, y, markershape=:circle, seriestype=:stepmid, label="stepmid"), + plot(x, y, markershape=:circle, seriestype=:steppost, label="steppost"), + layout=(3,1) + ) + end + ), + ], + ), ] # Some constants for PlotDocs and PlotReferenceImages From bb26bb055703e9f95a9587d88ccfe28762366670 Mon Sep 17 00:00:00 2001 From: Peter Gagarinov Date: Sat, 27 Mar 2021 00:34:15 +0300 Subject: [PATCH 198/518] ADD: happy-path test for #3365 --- test/runtests.jl | 59 ++++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 26797405..b31c1674 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -18,12 +18,12 @@ using RecipesBase @test Plots.plotly_local_file_path[] === nothing temp = Plots.use_local_dependencies[] withenv("PLOTS_HOST_DEPENDENCY_LOCAL" => true) do - Plots.__init__() - @test Plots.plotly_local_file_path[] isa String - @test isfile(Plots.plotly_local_file_path[]) - @test Plots.use_local_dependencies[] = true - @test_nowarn Plots._init_ijulia_plotting() - end + Plots.__init__() + @test Plots.plotly_local_file_path[] isa String + @test isfile(Plots.plotly_local_file_path[]) + @test Plots.use_local_dependencies[] = true + @test_nowarn Plots._init_ijulia_plotting() +end Plots.plotly_local_file_path[] = nothing Plots.use_local_dependencies[] = temp end # testset @@ -43,7 +43,7 @@ reference_dir(args...) = joinpath(homedir(), ".julia", "dev", "PlotReferenceImag function reference_file(backend, i, version) refdir = reference_dir("Plots", string(backend)) fn = "ref$i.png" - versions = sort(VersionNumber.(readdir(refdir)), rev = true) + versions = sort(VersionNumber.(readdir(refdir)), rev=true) reffn = joinpath(refdir, string(version), fn) for v in versions @@ -107,7 +107,7 @@ const IMG_TOL = VERSION < v"1.4" && Sys.iswindows() ? 1e-1 : is_ci() ? 1e-2 : 1e @static if haskey(ENV, "APPVEYOR") @info "Skipping GR image comparison tests on AppVeyor" else - image_comparison_facts(:gr, tol=IMG_TOL, skip = Plots._backend_skips[:gr]) + image_comparison_facts(:gr, tol=IMG_TOL, skip=Plots._backend_skips[:gr]) end end @@ -147,27 +147,36 @@ end @test typeof(axis) == Plots.Axis @test Plots.discrete_value!(axis, "HI") == (0.5, 1) @test Plots.discrete_value!(axis, :yo) == (1.5, 2) - @test Plots.ignorenan_extrema(axis) == (0.5,1.5) + @test Plots.ignorenan_extrema(axis) == (0.5, 1.5) @test axis[:discrete_map] == Dict{Any,Any}(:yo => 2, "HI" => 1) - Plots.discrete_value!(axis, ["x$i" for i=1:5]) - Plots.discrete_value!(axis, ["x$i" for i=0:2]) + Plots.discrete_value!(axis, ["x$i" for i = 1:5]) + Plots.discrete_value!(axis, ["x$i" for i = 0:2]) @test Plots.ignorenan_extrema(axis) == (0.5, 7.5) end @testset "NoFail" begin - plots = [histogram([1, 0, 0, 0, 0, 0]), - plot([missing]), - plot([missing; 1:4]), - plot([fill(missing,10); 1:4]), - plot([1 1; 1 missing]), - plot(["a" "b"; missing "d"], [1 2; 3 4])] - for plt in plots - display(plt) + @testset "Plot" begin + plots = [histogram([1, 0, 0, 0, 0, 0]), + plot([missing]), + plot([missing; 1:4]), + plot([fill(missing, 10); 1:4]), + plot([1 1; 1 missing]), + plot(["a" "b"; missing "d"], [1 2; 3 4])] + for plt in plots + display(plt) + end + @test_nowarn plot(x -> x^2, 0, 2) + end + + @testset "Bar" begin + p = bar([3,2,1], [1,2,3]); + @test isa(p, Plots.Plot) + @test isa(display(p), Nothing) == true end - @test_nowarn plot(x->x^2,0,2) end + @testset "EmptyAnim" begin anim = @animate for i in [] end @@ -178,7 +187,7 @@ end @testset "NaN-separated Segments" begin segments(args...) = collect(iter_segments(args...)) - nan10 = fill(NaN,10) + nan10 = fill(NaN, 10) @test segments(11:20) == [1:10] @test segments([NaN]) == [] @test segments(nan10) == [] @@ -190,10 +199,10 @@ end end @testset "Utils" begin - zipped = ([(1,2)], [("a","b")], [(1,"a"),(2,"b")], - [(1,2),(3,4)], [(1,2,3),(3,4,5)], [(1,2,3,4),(3,4,5,6)], - [(1,2.0),(missing,missing)], [(1,missing),(missing,"a")], - [(missing,missing)], [(missing,missing,missing),("a","b","c")]) + zipped = ([(1, 2)], [("a", "b")], [(1, "a"),(2, "b")], + [(1, 2),(3, 4)], [(1, 2, 3),(3, 4, 5)], [(1, 2, 3, 4),(3, 4, 5, 6)], + [(1, 2.0),(missing, missing)], [(1, missing),(missing, "a")], + [(missing, missing)], [(missing, missing, missing),("a", "b", "c")]) for z in zipped @test isequal(collect(zip(Plots.unzip(z)...)), z) @test isequal(collect(zip(Plots.unzip(GeometryBasics.Point.(z))...)), z) From 52da386df1dfa86c9776f9414ecd1e5ef4c7c9d5 Mon Sep 17 00:00:00 2001 From: Oleg Shchelykalnov Date: Sat, 27 Mar 2021 14:00:18 +0300 Subject: [PATCH 199/518] Use PlotlyJS's integration with WebIO --- src/backends/plotlyjs.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/backends/plotlyjs.jl b/src/backends/plotlyjs.jl index f6f07e80..a75feb60 100644 --- a/src/backends/plotlyjs.jl +++ b/src/backends/plotlyjs.jl @@ -39,8 +39,7 @@ _show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = write(io, standal _display(plt::Plot{PlotlyJSBackend}) = display(plotlyjs_syncplot(plt)) function PlotlyJS.WebIO.render(plt::Plot{PlotlyJSBackend}) - plt_html = sprint(show, MIME("text/html"), plt) - return PlotlyJS.WebIO.render(PlotlyJS.WebIO.dom"div"(innerHTML=plt_html)) + return PlotlyJS.WebIO.render(plotlyjs_syncplot(plt)) end function closeall(::PlotlyJSBackend) From d46f59e4bed63860051dc38744bed664849621d2 Mon Sep 17 00:00:00 2001 From: Oleg Shchelykalnov Date: Sat, 27 Mar 2021 14:45:38 +0300 Subject: [PATCH 200/518] Add tests for PlotlyJS backend --- Project.toml | 3 ++- test/runtests.jl | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 234ef8aa..a30170e5 100644 --- a/Project.toml +++ b/Project.toml @@ -63,6 +63,7 @@ Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0" LibGit2 = "76f85450-5226-5b5a-8eaa-529ad045b433" OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" PGFPlotsX = "8314cec4-20b6-5062-9cdb-752b83310925" +PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a" RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" @@ -73,4 +74,4 @@ UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" [targets] -test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] +test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "PlotlyJS", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] diff --git a/test/runtests.jl b/test/runtests.jl index 26797405..50c6b043 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -139,6 +139,15 @@ const IMG_TOL = VERSION < v"1.4" && Sys.iswindows() ? 1e-1 : is_ci() ? 1e-2 : 1e @test isa(display(p), Nothing) == true end + @testset "PlotlyJS" begin + @test plotlyjs() == Plots.PlotlyJSBackend() + @test backend() == Plots.PlotlyJSBackend() + + p = plot(rand(10)) + @test isa(p, Plots.Plot) == true + @test_broken isa(display(p), Nothing) == true + end + end @testset "Axes" begin @@ -156,6 +165,10 @@ end end @testset "NoFail" begin + #ensure backend with tested display + @test unicodeplots() == Plots.UnicodePlotsBackend() + @test backend() == Plots.UnicodePlotsBackend() + plots = [histogram([1, 0, 0, 0, 0, 0]), plot([missing]), plot([missing; 1:4]), From bea1378ff18fb01d5fac09bb71944e28c58f8ab8 Mon Sep 17 00:00:00 2001 From: Ronan Pigott Date: Sat, 27 Mar 2021 13:28:00 -0700 Subject: [PATCH 201/518] fix PyPlot spines iteration --- src/backends/pyplot.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index aca6bb64..f2b25604 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -840,8 +840,8 @@ function py_set_scale(ax, sp::Subplot, axis::Axis) end function py_set_axis_colors(sp, ax, a::Axis) - for (loc, spine) in ax.spines - spine."set_color"(py_color(a[:foreground_color_border])) + for loc in ax.spines + ax.spines[loc]."set_color"(py_color(a[:foreground_color_border])) end axissym = Symbol(a[:letter], :axis) if PyPlot.PyCall.hasproperty(ax, axissym) From 711a8448dc8c152d9d62efecdc2a8f0d5dfc81a0 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 28 Mar 2021 23:09:52 +0200 Subject: [PATCH 202/518] fix guidepostitions in GR --- src/backends/gr.jl | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index c5dd04b3..161ac190 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1504,39 +1504,35 @@ end function gr_label_axis(sp, letter, viewport_plotarea) axis = sp[Symbol(letter, :axis)] + mirror = axis[:mirror] # guide if axis[:guide] != "" GR.savestate() gr_set_font(guidefont(axis), sp) guide_position = axis[:guide_position] if letter === :y - w = 0.03 + gr_axis_width(sp, axis) GR.setcharup(-1, 0) - # - yposition = gr_view_yposition(viewport_plotarea, position(axis[:guidefontvalign])) + ypos = gr_view_yposition(viewport_plotarea, position(axis[:guidefontvalign])) yalign = alignment(axis[:guidefontvalign]) - # - if guide_position == :right || (guide_position == :auto && axis[:mirror]) + if guide_position === :right || (guide_position == :auto && mirror) GR.settextalign(yalign, GR.TEXT_VALIGN_BOTTOM) - gr_text(viewport_plotarea[2] + w, yposition, axis[:guide]) + xpos = viewport_plotarea[2] + 0.03 + mirror * gr_axis_width(sp, axis) else GR.settextalign(yalign, GR.TEXT_VALIGN_TOP) - gr_text(viewport_plotarea[1] - w, yposition, axis[:guide]) + xpos = viewport_plotarea[1] - 0.03 - !mirror * gr_axis_width(sp, axis) end else - h = 0.015 + gr_axis_height(sp, axis) - # - xposition = gr_view_xposition(viewport_plotarea, position(axis[:guidefonthalign])) + xpos = gr_view_xposition(viewport_plotarea, position(axis[:guidefonthalign])) xalign = alignment(axis[:guidefonthalign]) - # - if guide_position == :top || (guide_position == :auto && axis[:mirror]) + if guide_position === :top || (guide_position == :auto && mirror) GR.settextalign(xalign, GR.TEXT_VALIGN_TOP) - gr_text(xposition, viewport_plotarea[4] + h, axis[:guide]) + ypos = viewport_plotarea[4] + 0.015 + (mirror ? gr_axis_height(sp, axis) : 0.015) else GR.settextalign(xalign, GR.TEXT_VALIGN_BOTTOM) - gr_text(xposition, viewport_plotarea[3] - h, axis[:guide]) + ypos = viewport_plotarea[3] - 0.015 - (mirror ? 0.015 : gr_axis_height(sp, axis)) end end + gr_text(xpos, ypos, axis[:guide]) GR.restorestate() end end From ce778ff7be178b542d3604e58ee2aa26fc1738e8 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 28 Mar 2021 23:20:09 +0200 Subject: [PATCH 203/518] add test image --- src/examples.jl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/examples.jl b/src/examples.jl index c834be44..cfc76074 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1138,6 +1138,30 @@ const _examples = PlotExample[ ), ], ), + PlotExample( # 54 + "Guide positions and alignment", + "", + [ + :( + begin + plot( + rand(10, 4), + layout=4, + xguide="x guide", + yguide="y guide", + xguidefonthalign=[:left :right :right :left], + yguidefontvalign=[:top :bottom :bottom :top], + xguideposition=:top, + yguideposition=[:right :left :right :left], + ymirror=[false true true false], + xmirror=[false false true true], + legend=false, + seriestype=[:bar :scatter :path :stepmid] + ) + end + ), + ], + ), ] # Some constants for PlotDocs and PlotReferenceImages From 7d22d84595c2bc4cd7735b8d2f7cc7403eb53889 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 29 Mar 2021 00:21:15 +0200 Subject: [PATCH 204/518] support both MPL 3.3 and 3.4 --- src/backends/pyplot.jl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index f2b25604..a2c18b69 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -839,10 +839,20 @@ function py_set_scale(ax, sp::Subplot, axis::Axis) py_set_scale(ax, sp, scale, letter) end -function py_set_axis_colors(sp, ax, a::Axis) - for loc in ax.spines - ax.spines[loc]."set_color"(py_color(a[:foreground_color_border])) +function py_set_spine_color(spines, color) + for loc in spines + spines[loc]."set_color"(color) end +end + +function py_set_spine_color(spines::Dict, color) + for (loc, spine) in spines + spine."set_color"(color) + end +end + +function py_set_axis_colors(sp, ax, a::Axis) + py_set_spine_color(ax.spines, py_color(a[:foreground_color_border])) axissym = Symbol(a[:letter], :axis) if PyPlot.PyCall.hasproperty(ax, axissym) tickcolor = sp[:framestyle] in (:zerolines, :grid) ? py_color(plot_color(a[:foreground_color_grid], a[:gridalpha])) : py_color(a[:foreground_color_axis]) From a0b104f563e3208c2ebce90b3ee5973a2d7fc3cd Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 29 Mar 2021 00:31:41 +0200 Subject: [PATCH 205/518] run CompileBot on 1.6 --- .github/workflows/SnoopCompile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SnoopCompile.yml b/.github/workflows/SnoopCompile.yml index e4d7560a..3825cf11 100644 --- a/.github/workflows/SnoopCompile.yml +++ b/.github/workflows/SnoopCompile.yml @@ -21,7 +21,7 @@ jobs: fail-fast: false matrix: version: # NOTE: the versions below should match those in your botconfig - - '1.5' + - '1' os: # NOTE: should match the os setting of your botconfig - ubuntu-latest arch: From 53272b8a9dba4fc39f71301408964e93341cbdd2 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 29 Mar 2021 00:32:25 +0200 Subject: [PATCH 206/518] test on 1.5 --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 797cc072..d26e684a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,6 +22,7 @@ jobs: fail-fast: false matrix: version: + - '1.5' - '1' - 'nightly' os: From 29604fd7f2514142b3219bb1f28d8edac92393ca Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 29 Mar 2021 00:47:41 +0200 Subject: [PATCH 207/518] don't test on 1.5 --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d26e684a..797cc072 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,6 @@ jobs: fail-fast: false matrix: version: - - '1.5' - '1' - 'nightly' os: From 014b86a44ccc98147374197075c3e63910076164 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 29 Mar 2021 00:50:05 +0200 Subject: [PATCH 208/518] bugfix release --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index a30170e5..0b2b3460 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.11.0" +version = "1.11.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 23f8ba1db8aa797f8ee2aa46fe5970e517e3f90a Mon Sep 17 00:00:00 2001 From: daschw Date: Sun, 28 Mar 2021 23:02:09 +0000 Subject: [PATCH 209/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 487 ++++++++---------- 1 file changed, 208 insertions(+), 279 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index c4c4f19b..43369691 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -66,289 +66,238 @@ end function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank),Tuple{Symbol,Bool}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height),Tuple{Symbol,Symbol,Length{:pct,Float64}}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,),Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Array{Int64,1}}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1},Array{Float64,1}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights),Tuple{Bool,Nothing}},typeof(_make_hist),Tuple{Array{Float64,1}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,),Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{Symbol}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,),Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims),Tuple{Bool,Tuple{Float64,Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip),Tuple{Bool,Tuple{Float64,Float64},Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,),Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid),Tuple{Int64,Bool,Float64,Symbol,RGBA{Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,),Tuple{String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide),Tuple{Tuple{Int64,Int64},Bool,StepRange{Int64,Int64},String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Float64,Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,),Tuple{Tuple{Int64,Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,),Tuple{Int64}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide),Tuple{Symbol,String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,),Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid),Tuple{Tuple{Int64,String},Int64,Tuple{Int64,Symbol},Tuple{Int64,Symbol},String,Symbol,Bool}},typeof(default)}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),StepRange{Int64,Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),UnitRange{Int64},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle),Tuple{Symbol,Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(heatmap)),Any,typeof(heatmap),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) + Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRange{Int64, Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) - Base.precompile(Tuple{Core.kwftype(typeof(lens!)),Any,typeof(lens!),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype),Tuple{Float64,Symbol}},typeof(plot!),Plot{GRBackend},Array{GeometryBasics.Point{2,Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,),Tuple{Array{Tuple{Int64,Float64,PlotText},1}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype),Tuple{Tuple{Int64,Symbol,Float64,Array{Symbol,2}},Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Function,Float64,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color),Tuple{Int64,Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype),Tuple{Tuple{Int64,Float64,Symbol},Array{Any,1},Symbol}},typeof(plot!),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype),Tuple{Int64,Symbol,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Array{Int64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{GRBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset),Tuple{Symbol,Tuple{Int64,BoundingBox{Tuple{Length{:w,Float64},Length{:h,Float64}},Tuple{Length{:w,Float64},Length{:h,Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot!),Array{Int64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,),Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot!),Plot{GRBackend},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,),Tuple{Tuple{Symbol,Symbol,Int64,Symbol,Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,),Tuple{Tuple{String,Symbol}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{GRBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype),Tuple{Array{Float64,1},Tuple{Symbol,Float64,Stroke},Array{Float64,1},String,Symbol}},typeof(plot!),Plot{PlotlyBackend},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg),Tuple{Tuple{Int64,Float64,PlotText},Bool}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,),Tuple{Int64}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{String,1},Array{String,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype),Tuple{Symbol,Array{Int64,1},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker),Tuple{Array{Symbol,2},Tuple{Symbol,Int64},Tuple{Array{Symbol,2},Int64,Float64,Stroke}}},typeof(plot),Array{Array{T,1} where T,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :seriestype),Tuple{Tuple{Array{Int64,1},Array{Int64,1},Array{Int64,1}},Symbol}},typeof(plot),Array{Int64,1},Array{Int64,1},Vararg{Array{Int64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:fill, :seriestype),Tuple{Bool,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype),Tuple{Array{Symbol,2},Array{String,2},Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64,String,Int64,UnitRange{Int64},Symbol}},typeof(plot),Array{Array{Float64,1},1},Array{Array{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:grid, :title),Tuple{Tuple{Symbol,Symbol,Symbol,Int64,Float64},String}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α),Tuple{String,Int64,PlotUtils.ContinuousColorGradient,Int64,Float64}},typeof(plot),StepRange{Int64,Int64},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend),Tuple{Array{String,2},String,String,Int64,Symbol}},typeof(plot),Array{Function,1},Float64,Vararg{Float64,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,),Tuple{Array{String,2}}},typeof(plot),Array{AbstractArray{Float64,1},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor),Tuple{GridLayout,Array{String,1},Array{Symbol,2},Symbol}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha),Tuple{Tuple{Int64,Int64},String,Int64,Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link),Tuple{Int64,Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :palette, :bg_inside),Tuple{Int64,Array{PlotUtils.ContinuousColorGradient,2},Array{Symbol,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border),Tuple{GridLayout,Array{Symbol,2},Bool,Nothing,Symbol}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation),Tuple{GridLayout,Array{String,2},Symbol,Array{Length{:mm,Float64},2},Length{:mm,Float64},Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xlims),Tuple{GridLayout,Tuple{Int64,Float64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Bool}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Array{Tuple{Int64,Real},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,),Tuple{Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :lab, :ms),Tuple{Tuple{Array{Symbol,2},Int64},Array{String,2},Int64}},typeof(plot),Array{Array{T,1} where T,1},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :label, :legendtitle),Tuple{Tuple{Int64,Array{Symbol,2}},Array{String,2},String}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill),Tuple{Int64,Bool,Tuple{Int64,Symbol}}},typeof(plot),Function,Function,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg),Tuple{Tuple{Int64,Symbol,Symbol},Tuple{Shape,Int64,RGBA{Float64}},Symbol,Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Bool}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Int64,Bool}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype),Tuple{Tuple{Int64,Symbol},Array{String,2},Symbol,Tuple{Int64,Int64},Tuple{Int64,Int64},Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,),Tuple{Bool}},typeof(plot),Array{Union{Missing, Int64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype),Tuple{typeof(+),Symbol,Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:markershape, :markersize, :marker_z, :line_z, :linewidth),Tuple{Array{Symbol,2},Array{Int64,2},Array{Int64,2},Array{Int64,2},Array{Int64,2}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype),Tuple{Int64,Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype),Tuple{Tuple{Int64,Int64},Bool,Bool,Int64,Symbol}},typeof(plot),Array{Complex{Float64},1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:proj, :m),Tuple{Symbol,Int64}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype),Tuple{Symbol,Symbol}},typeof(plot),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype),Tuple{Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}},Symbol}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill),Tuple{Bool,Tuple{Int64,Symbol}}},typeof(plot),Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{Tuple{LinRange{Float64},LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,),Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color),Tuple{Array{Symbol,2},Array{Symbol,1},Int64,Array{Symbol,1}}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{DateTime,1},UnitRange{Int64},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,),Tuple{Symbol}},typeof(plot),Array{OHLC,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel),Tuple{Symbol,String,String,String}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Array{Float64,1},N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype),Tuple{String,Float64,Symbol}},typeof(plot),Array{String,1},Array{Float64,1}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{Array{String,2}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,),Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,),Tuple{Int64}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg),Tuple{Tuple{String,Tuple{Int64,Int64},StepRange{Int64,Int64},Symbol},RGB{Float64},Bool}},typeof(plot),Array{Float64,2}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:yflip, :aspect_ratio),Tuple{Bool,Symbol}},typeof(plot),Array{Float64,1},Array{Int64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w),Tuple{StepRange{Int64,Int64},Tuple{Int64,Float64,Symbol,Stroke},Bool,Bool,Int64}},typeof(plot),Array{Float64,1},Array{Float64,1},Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any,Vararg{Any,N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Vector{GeometryBasics.Point2{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Plot{GRBackend},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Plot{PlotlyBackend},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color), Tuple{Int64, Symbol}},typeof(plot!),Function,Float64,Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color), Tuple{Int64, Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :seriestype), Tuple{Tuple{Vector{Int64}, Vector{Int64}, Vector{Int64}}, Symbol}},typeof(plot),Vector{Int64},Vector{Int64},Vararg{Vector{Int64}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:fill, :seriestype), Tuple{Bool, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype), Tuple{Matrix{Symbol}, Matrix{String}, Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}}, Int64, String, Int64, UnitRange{Int64}, Symbol}},typeof(plot),Vector{Vector{Float64}},Vector{Vector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:grid, :title), Tuple{Tuple{Symbol, Symbol, Symbol, Int64, Float64}, String}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link), Tuple{Int64, Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link), Tuple{Int64, Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :palette, :bg_inside), Tuple{Int64, Matrix{PlotUtils.ContinuousColorGradient}, Matrix{Symbol}}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border), Tuple{GridLayout, Matrix{Symbol}, Bool, Nothing, Symbol}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation), Tuple{GridLayout, Matrix{String}, Symbol, Matrix{AbsoluteLength}, AbsoluteLength, Int64}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xguide, :yguide, :xguidefonthalign, :yguidefontvalign, :xguideposition, :yguideposition, :ymirror, :xmirror, :legend, :seriestype), Tuple{Int64, String, String, Matrix{Symbol}, Matrix{Symbol}, Symbol, Matrix{Symbol}, Matrix{Bool}, Matrix{Bool}, Bool, Matrix{Symbol}}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xlims), Tuple{GridLayout, Tuple{Int64, Float64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Vector{Tuple{Int64, Real}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :lab, :ms), Tuple{Tuple{Matrix{Symbol}, Int64}, Matrix{String}, Int64}},typeof(plot),Vector{Vector{T} where T},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :label, :legendtitle), Tuple{Tuple{Int64, Matrix{Symbol}}, Matrix{String}, String}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill), Tuple{Int64, Bool, Tuple{Int64, Symbol}}},typeof(plot),Function,Function,Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg), Tuple{Tuple{Int64, Symbol, Symbol}, Tuple{Shape, Int64, RGBA{Float64}}, Symbol, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Bool}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}, Int64, Bool}},typeof(plot),Vector{Float64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype), Tuple{Tuple{Int64, Symbol}, Matrix{String}, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,), Tuple{Bool}},typeof(plot),Vector{Union{Missing, Int64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype), Tuple{typeof(+), Symbol, Bool, Symbol}},typeof(plot),Vector{Float64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:markershape, :markersize, :marker_z, :line_z, :linewidth), Tuple{Matrix{Symbol}, Matrix{Int64}, Matrix{Int64}, Matrix{Int64}, Matrix{Int64}}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:markershape, :seriestype, :label), Tuple{Symbol, Symbol, String}},typeof(plot),UnitRange{Int64},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{Float64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype), Tuple{Tuple{Int64, Int64}, Bool, Bool, Int64, Symbol}},typeof(plot),Vector{ComplexF64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:proj, :m), Tuple{Symbol, Int64}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{OHLC}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype), Tuple{String, Float64, Symbol}},typeof(plot),Vector{String},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:yflip, :aspect_ratio), Tuple{Bool, Symbol}},typeof(plot),Vector{Float64},Vector{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) - Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp),Tuple{Array{Int64,1},Bool}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,),Tuple{Array{Int64,1}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{Type{Shape},Array{Tuple{Float64,Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},AbstractArray{OHLC,1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Array{Complex{Float64},1}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:barhist}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:bar}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:histogram2d}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:hline}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:pie}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:spy}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:sticks}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol,Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:histogram2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:hline}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Vector{ComplexF64}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) - Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol,Any},Array{Dict{Symbol,Any},1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) + Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Array{Dict{Symbol,Any},1},Dict{Symbol,Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol,Any},Symbol,Any}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol, Any},Symbol,Any}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,Any}) - Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol,Any},Symbol,Any}) - Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}) - Base.precompile(Tuple{typeof(_cbar_unique),Array{Int64,1},String}) - Base.precompile(Tuple{typeof(_cbar_unique),Array{Nothing,1},String}) - Base.precompile(Tuple{typeof(_cbar_unique),Array{PlotUtils.ContinuousColorGradient,1},String}) - Base.precompile(Tuple{typeof(_cbar_unique),Array{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},1},String}) - Base.precompile(Tuple{typeof(_cbar_unique),Array{Symbol,1},String}) - Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},Array{Int64,1}}) - Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(_cycle),Array{Float64,1},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Array{Int64,1}}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64,Int64},Array{Int64,1}}) + Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol,Any}) + Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) + Base.precompile(Tuple{typeof(_cbar_unique),Vector{Int64},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Vector{Nothing},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) + Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) - Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) - Base.precompile(Tuple{typeof(_heatmap_edges),Array{Float64,1},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) - Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(_replace_markershape),Array{Symbol,1}}) + Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) + Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) - Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol,Any},Int64,Bool}) - Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol,Any},Int64,Bool}) + Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) + Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) + Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) + Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{PlotlyBackend},Vector{Any}}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) + Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bbox),Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64},Length{:mm,Float64}}) - Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) - Base.precompile(Tuple{typeof(contour),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Int64,Float64}}) + Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(error_coords),Array{Float64,1},Array{Float64,1},Array{Float64,1}}) - Base.precompile(Tuple{typeof(error_zipit),Tuple{Array{Float64,1},Array{Float64,1},Array{Float64,1}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64,N} where N}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) - Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Array{Int64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Array{Symbol,1},Subplot{PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_xy),Array{OHLC,1}}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) - Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}},Array{Float64,1}}) - Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},Length{:mm,Float64},Length{:mm,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64,Float64},Array{Float64,1}}) - Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_grid),Subplot{GRBackend},Axis,Segments{Tuple{Float64,Float64}}}) - Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Array{Int64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Float64,1},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Array{Int64,1},Array{Int64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Array{Float64,1},Array{Float64,1}},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64,Int64},Array{Float64,1},Int64,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,UnitRange{Int64},Array{Float64,1},Nothing,Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,1},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_draw_surface),Series,Array{Float64,1},Array{Float64,1},Array{Float64,2},Tuple{Float64,Float64}}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{Any,1}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Float64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Array{Int64,1},Array{String,1}},Int64}) - Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) - Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Array{Float64,1},Array{String,1}}}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) + Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) + Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},AbsoluteLength,AbsoluteLength,Vector{Float64}}) + Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) + Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) + Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Array{Float64,1},Array{Float64,1},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) - Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Array{Float64,1},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),NTuple{9,Float64}}}) - Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Array{Float64,1},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor),Tuple{Int64,Float64,Float64,Float64,Int64,Float64,Float64,Float64,Float64}}}) - Base.precompile(Tuple{typeof(heatmap_edges),Array{Float64,1},Symbol}) + Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) + Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) + Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{AbsoluteLength, AbsoluteLength}, Tuple{AbsoluteLength, AbsoluteLength}},AbsoluteLength,AbsoluteLength,Vector{Float64}}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) - Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}},Symbol}) + Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Symbol,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Symbol,Tuple{Int64, Int64},Bool}) + Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_minimum),Array{Int64,1}}) + Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) + Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) + Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,StepRange{Int64,Int64}}) - Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Subplot{GRBackend},Axis,UnitRange{Int64}}) - Base.precompile(Tuple{typeof(plot!),Any}) - Base.precompile(Tuple{typeof(plot),Any,Any}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Int64},Symbol,Symbol}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),StepRange{Int64, Int64},Tuple{Int64, Int64},Symbol,Symbol}) + Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) + Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) - Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) - Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Int64}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol,Any},Symbol}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Array{Symbol,2}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Shape}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Stroke}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol,Any},Symbol}) + Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) - Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},StepRange{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol,Any},Tuple{Int64,Int64},Symbol}) - Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Array{Float64,1}}) - Base.precompile(Tuple{typeof(quiver_using_arrows),DefaultsDict}) - Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) - Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) - Base.precompile(Tuple{typeof(slice_arg),Array{Int64,2},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Array{Length{:mm,Float64},2},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Array{PlotUtils.ContinuousColorGradient,2},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Array{RGBA{Float64},2},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Array{String,2},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Array{Symbol,2},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}},Int64}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Tuple{Int64, Int64},Symbol}) + Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) - Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64,Float64},Tuple{Float64,Float64},Array{Float64,1},Array{Float64,1},Int64}) - Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol,N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) + Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(title!),AbstractString}) - Base.precompile(Tuple{typeof(unzip),Array{GeometryBasics.Point{2,Float64},1}}) + Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) - Base.precompile(Tuple{typeof(wireframe),Any,Vararg{Any,N} where N}) - Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any,N} where N}) + Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Array{Float64,1},Array{Float64,1},typeof(GR.fillarea),)) - end - end - let fbody = try __lookup_kwbody__(which(plot!, ())) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot!),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) end end - let fbody = try __lookup_kwbody__(which(plot!, (Any,Vararg{Any,N} where N,))) catch missing end + let fbody = try __lookup_kwbody__(which(plot!, (Any,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot!),Any,Vararg{Any,N} where N,)) + precompile(fbody, (Any,typeof(plot!),Any,Vararg{Any, N} where N,)) end end let fbody = try __lookup_kwbody__(which(plot, (Any,))) catch missing end @@ -356,34 +305,24 @@ function _precompile_() precompile(fbody, (Any,typeof(plot),Any,)) end end - let fbody = try __lookup_kwbody__(which(plot, (Any,Vararg{Any,N} where N,))) catch missing end + let fbody = try __lookup_kwbody__(which(plot, (Any,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Any,Vararg{Any,N} where N,)) + precompile(fbody, (Any,typeof(plot),Any,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(plot, (Plot,))) catch missing end + let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,Vararg{Plot, N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Plot,)) + precompile(fbody, (Any,typeof(plot),Plot,Plot,Vararg{Plot, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,))) catch missing end + let fbody = try __lookup_kwbody__(which(text, (String,Int64,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Plot,Plot,)) + precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(text),String,Int64,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,Vararg{Plot,N} where N,))) catch missing end + let fbody = try __lookup_kwbody__(which(text, (String,Symbol,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Plot,Plot,Vararg{Plot,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(text, (String,Int64,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Int64,Vararg{Any,N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(text, (String,Symbol,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},typeof(text),String,Symbol,Vararg{Any,N} where N,)) + precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(text),String,Symbol,Vararg{Any, N} where N,)) end end let fbody = try __lookup_kwbody__(which(title!, (AbstractString,))) catch missing end @@ -391,14 +330,4 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end - let fbody = try __lookup_kwbody__(which(vline!, (Any,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(vline!),Any,)) - end - end - let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any,N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any,N} where N,)) - end - end end From f4fb0862eaba161ae49478427c4bc544310af0c3 Mon Sep 17 00:00:00 2001 From: daschw Date: Sun, 28 Mar 2021 23:23:17 +0000 Subject: [PATCH 210/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 43369691..ec3c2e08 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,22 +68,39 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRange{Int64, Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -97,17 +114,26 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -151,6 +177,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -170,8 +198,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -202,10 +232,14 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -214,14 +248,18 @@ function _precompile_() Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) + Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -234,6 +272,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -242,6 +281,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -256,7 +296,9 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -265,6 +307,7 @@ function _precompile_() Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) + Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) @@ -276,8 +319,14 @@ function _precompile_() Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Tuple{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) From 727ced25f1c39b8169086d2e83300ec2e8682a4c Mon Sep 17 00:00:00 2001 From: hustf Date: Mon, 29 Mar 2021 12:29:47 +0200 Subject: [PATCH 211/518] modified: src/axes.jl #3397 fix varname modified: test/test_recipes.jl #3397 test all framestyles effect --- src/axes.jl | 2 +- test/test_recipes.jl | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index e2f031ad..2f6c4beb 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -756,7 +756,7 @@ function axis_drawing_info_3d(sp, letter) # don't show the 0 tick label for the origin framestyle if sp[:framestyle] == :origin && !(ticks in (:none, nothing, false)) && length(ticks) > 1 i0 = findfirst(==(0), ticks[1]) - if ind !== nothing + if i0 !== nothing deleteat!(ticks[1], i0) deleteat!(ticks[2], i0) end diff --git a/test/test_recipes.jl b/test/test_recipes.jl index d2dcfdf4..a228d2a6 100644 --- a/test/test_recipes.jl +++ b/test/test_recipes.jl @@ -31,3 +31,19 @@ end # testset sticks = plot(tri, seriestype = :sticks) @test length(sticks) == 1 end + +@testset "framestyle axes" begin + pl = plot(-1:1, -1:1, -1:1) + sp = pl.subplots[1] + defaultret = Plots.axis_drawing_info_3d(sp, :x) + for letter in [:x, :y, :z] + for fr in [:box :semi :origin :zerolines :grid :none] + prevha = UInt64(0) + push!(sp.attr, :framestyle => fr) + ret = Plots.axis_drawing_info_3d(sp, letter) + ha = hash(string(ret)) + @test ha != prevha + prevha = ha + end + end +end \ No newline at end of file From 78f078ccc291c1bfd4b677cde402f4dc25663656 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Wed, 31 Mar 2021 11:42:35 +0200 Subject: [PATCH 212/518] Update Project.toml --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 0b2b3460..4b07cd4f 100644 --- a/Project.toml +++ b/Project.toml @@ -36,7 +36,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" -GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55" +GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.57" GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" Latexify = "0.14" From b63e41904bd6cc5476508eab3f248a6fd4e96629 Mon Sep 17 00:00:00 2001 From: jheinen Date: Wed, 31 Mar 2021 10:00:08 +0000 Subject: [PATCH 213/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index ec3c2e08..1df63c36 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -81,6 +81,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -100,6 +101,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -115,7 +117,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) @@ -232,14 +233,15 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -299,6 +301,7 @@ function _precompile_() Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(ohlc),Any}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -320,14 +323,11 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -339,6 +339,11 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 9ad3654d4f94630d2ea72f8c62e70ec5b53bd74e Mon Sep 17 00:00:00 2001 From: daschw Date: Wed, 31 Mar 2021 12:29:51 +0000 Subject: [PATCH 214/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 1df63c36..be516e92 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -233,11 +233,13 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) @@ -254,6 +256,8 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(default),Symbol,String}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) @@ -261,12 +265,12 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -287,6 +291,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -301,7 +306,6 @@ function _precompile_() Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(ohlc),Any}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -312,17 +316,21 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Float64}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) @@ -333,6 +341,7 @@ function _precompile_() Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol, N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) @@ -384,4 +393,9 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end + let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any, N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any, N} where N,)) + end + end end From 22f1dd72c9869a5b524387c055ca13b423056d42 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 31 Mar 2021 15:43:05 +0200 Subject: [PATCH 215/518] new release [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 4b07cd4f..1d5389ba 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.11.1" +version = "1.11.2" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From dbe9a2c52b18bddb6f3ad1289ceb3d50a1cd7019 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 1 Apr 2021 00:46:50 +0000 Subject: [PATCH 216/518] CompatHelper: bump compat for "Latexify" to "0.15" --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 1d5389ba..53825c49 100644 --- a/Project.toml +++ b/Project.toml @@ -39,7 +39,7 @@ FixedPointNumbers = "0.6, 0.7, 0.8" GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.57" GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" -Latexify = "0.14" +Latexify = "0.14, 0.15" Measures = "0.3" NaNMath = "0.3" PlotThemes = "2" From 09e90c0ca6bbf18c0664e83787ca1410aed674a6 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 1 Apr 2021 01:04:15 +0000 Subject: [PATCH 217/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 1df63c36..ad2c60a2 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -70,14 +70,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) @@ -89,7 +87,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) @@ -101,8 +98,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -124,7 +119,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) @@ -178,7 +172,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -233,10 +226,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) @@ -254,9 +244,10 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) + Base.precompile(Tuple{typeof(default),Symbol,String}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) @@ -274,7 +265,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -283,7 +273,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -298,10 +287,10 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_extrema),Matrix{Float64}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(ohlc),Any}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -324,10 +313,10 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -339,11 +328,6 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 90255913a4dcbe23b799ca204825e4833563db34 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 1 Apr 2021 15:09:56 +0000 Subject: [PATCH 218/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 33 +++---------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index be516e92..3b01d73b 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -101,8 +101,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -124,7 +122,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) @@ -211,6 +208,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:stepmid}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -233,17 +231,13 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) - Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -256,8 +250,6 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(default),Symbol,String}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) @@ -265,12 +257,12 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -291,7 +283,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -306,6 +297,7 @@ function _precompile_() Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -316,43 +308,31 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Any}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Float64}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(quiver_using_hack),DefaultsDict}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol, N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) @@ -393,9 +373,4 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end - let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any, N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any, N} where N,)) - end - end end From c56654c6cfe752838f4c4c56e81b06f0144f7106 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Thu, 1 Apr 2021 17:21:29 +0200 Subject: [PATCH 219/518] fix multiple legend in pgfplotsx bar plots --- src/backends/pgfplotsx.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index ebe445a8..8967c855 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -341,7 +341,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o # treat segments segments = collect(series_segments(series, series[:seriestype])) sf = opt[:fillrange] - for segment in segments + for (k, segment) in enumerate(segments) i, rng = segment.attr_index, segment.range segment_opt = PGFPlotsX.Options() segment_opt = merge(segment_opt, pgfx_linestyle(opt, i)) @@ -397,7 +397,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o ) end end - if i == 1 && + if k == 1 && series[:subplot][:legend] != :none && pgfx_should_add_to_legend(series) pgfx_filllegend!(series_opt, opt) end From 7d7212ba3e68e282a6d82237f7523755d1679b83 Mon Sep 17 00:00:00 2001 From: daschw Date: Thu, 1 Apr 2021 17:56:06 +0000 Subject: [PATCH 220/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 45502d3d..3e53b352 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -70,12 +70,14 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) @@ -87,6 +89,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) @@ -98,6 +101,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -112,6 +117,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) @@ -119,6 +125,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) @@ -172,6 +179,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -204,7 +212,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:stepmid}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -227,13 +234,15 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -246,10 +255,10 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{Union{Missing, Float64}}}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) @@ -267,6 +276,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -275,9 +285,11 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -289,7 +301,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_extrema),Matrix{Float64}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) @@ -309,16 +320,21 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(setindex!),Axis,Dict{Any, Any},Symbol}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From 1ceb3a561f5e9f20471636865180d603d09753ed Mon Sep 17 00:00:00 2001 From: Zhanibek Date: Mon, 5 Apr 2021 13:56:00 +0900 Subject: [PATCH 221/518] pyplot, rawticklabels extra_kwarg added --- src/backends/pyplot.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index be59be40..5eea0757 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -759,7 +759,7 @@ function py_surround_latextext(latexstring, env) end -function py_set_ticks(ax, ticks, letter, env) +function py_set_ticks(sp, ax, ticks, letter, env) ticks == :auto && return axis = getproperty(ax, Symbol(letter,"axis")) if ticks == :none || ticks === nothing || ticks == false @@ -777,7 +777,7 @@ function py_set_ticks(ax, ticks, letter, env) elseif ttype == :ticks_and_labels axis."set_ticks"(ticks[1]) - if pyrcparams["text.usetex"] + if get(sp[:extra_kwargs], :rawticklabels, false) tick_labels = ticks[2] else tick_labels = [py_surround_latextext(ticklabel, env) for ticklabel in ticks[2]] @@ -1009,7 +1009,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) ticks_letter=:y end py_set_scale(cb.ax, sp, sp[:colorbar_scale], ticks_letter) - sp[:colorbar_ticks] == :native ? nothing : py_set_ticks(cb.ax, ticks, ticks_letter, env) + sp[:colorbar_ticks] == :native ? nothing : py_set_ticks(sp, cb.ax, ticks, ticks_letter, env) for lab in cbar_axis."get_ticklabels"() lab."set_fontsize"(py_thickness_scale(plt, sp[:colorbar_tickfontsize])) @@ -1131,7 +1131,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) # workaround to set mathtext.fontspec per Text element env = "\\mathregular" # matches the outer fonts https://matplotlib.org/tutorials/text/mathtext.html - axis[:ticks] == :native ? nothing : py_set_ticks(ax, ticks, letter, env) + axis[:ticks] == :native ? nothing : py_set_ticks(sp, ax, ticks, letter, env) # Tick marks intensity = 0.5 # This value corresponds to scaling of other grid elements pyaxis."set_tick_params"( From 07b05e075e3dc8bb44d9dde2f20f72ebb164122c Mon Sep 17 00:00:00 2001 From: isentropic Date: Mon, 5 Apr 2021 05:16:17 +0000 Subject: [PATCH 222/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 53 ++++--------------- 1 file changed, 10 insertions(+), 43 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 3e53b352..b1f20e6a 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,32 +68,20 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) @@ -101,8 +89,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -117,15 +103,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) @@ -135,7 +118,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -146,6 +128,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -179,8 +162,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -203,7 +184,6 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -234,10 +214,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) @@ -255,15 +231,11 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{Union{Missing, Float64}}}) - Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -276,20 +248,18 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,UnitRange{Int64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -302,9 +272,9 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(iter_segments),StepRange{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) + Base.precompile(Tuple{typeof(ohlc),Any}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -313,28 +283,20 @@ function _precompile_() Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) - Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(setindex!),Axis,Dict{Any, Any},Symbol}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Int64, Float64, Int64},Tuple{Int64, Float64, Int64}}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -346,6 +308,11 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(bar, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(bar),Any,)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 64f3d589b68cb1e227f28940375045ee3dfaf481 Mon Sep 17 00:00:00 2001 From: matthieugomez Date: Wed, 7 Apr 2021 14:39:41 -0700 Subject: [PATCH 223/518] correct scatterpath + add linearfit correct scatterpath so that color does not change (see https://github.com/JuliaPlots/Plots.jl/issues/1495). Add linearfit. --- src/recipes.jl | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/recipes.jl b/src/recipes.jl index d0fbf136..5b25936a 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -161,20 +161,51 @@ end # path and scatter # create a path from steps +# see https://github.com/JuliaPlots/Plots.jl/issues/1495 @recipe function f(::Type{Val{:scatterpath}}, x, y, z) x := x y := y seriestype := :scatter + @series begin + () + end @series begin seriestype := :path label := "" primary := false () end + primary := false () end @deps scatterpath path scatter + +# --------------------------------------------------------------------------- +# regression line and scatter + +# plots line corresponding to linear regression of y on a constant and x +@recipe function f(::Type{Val{:linearfit}}, x, y, z) + seriestype := :scatter + x := x + y := y + @series begin + () + end + X = hcat(ones(length(x)), x) + yhat = X * (X'X \ X'y) + @series begin + y := yhat + seriestype := :path + label := "" + primary := false + () + end + primary := false + () +end + + @specialize From 50adb6cd9cd2d2fccea8f579cc160bb45e4f2e7c Mon Sep 17 00:00:00 2001 From: matthieugomez Date: Wed, 7 Apr 2021 14:42:12 -0700 Subject: [PATCH 224/518] Update recipes.jl --- src/recipes.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index 5b25936a..c804c745 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -161,7 +161,6 @@ end # path and scatter # create a path from steps -# see https://github.com/JuliaPlots/Plots.jl/issues/1495 @recipe function f(::Type{Val{:scatterpath}}, x, y, z) x := x y := y @@ -186,9 +185,9 @@ end # plots line corresponding to linear regression of y on a constant and x @recipe function f(::Type{Val{:linearfit}}, x, y, z) - seriestype := :scatter x := x y := y + seriestype := :scatter @series begin () end From 67f4d79c4a2fc9842f051ae827be5819e07d97a1 Mon Sep 17 00:00:00 2001 From: matthieugomez Date: Thu, 8 Apr 2021 10:11:09 -0700 Subject: [PATCH 225/518] simpler formula for yhat --- src/recipes.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index c804c745..952bf0aa 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -191,10 +191,8 @@ end @series begin () end - X = hcat(ones(length(x)), x) - yhat = X * (X'X \ X'y) @series begin - y := yhat + y := mean(y) .+ cov(x, y) / var(x) .* (x .- mean(x)) seriestype := :path label := "" primary := false From 9da550ba3b2cf6947b6f8e0500691f0839536d1f Mon Sep 17 00:00:00 2001 From: MA Laforge Date: Sat, 10 Apr 2021 14:57:39 -0400 Subject: [PATCH 226/518] Update plot areas for the given font sizes. Also: Layout changes are made to defaults instead of user-overwrites. --- src/backends/inspectdr.jl | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/backends/inspectdr.jl b/src/backends/inspectdr.jl index 09f576b9..ac362838 100644 --- a/src/backends/inspectdr.jl +++ b/src/backends/inspectdr.jl @@ -363,37 +363,37 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) a.title = sp[:title] a.xlabel = xaxis[:guide]; a.ylabels = [yaxis[:guide]] - l = plot.layout - #IMPORTANT: Don't forget to actually register changes - #(TODO: need to find a better way to set layout properties) - l[:frame_canvas].fillcolor = _inspectdr_mapcolor(sp[:background_color_subplot]) - l[:frame_canvas] = l[:frame_canvas] #register changes - l[:frame_data].fillcolor = _inspectdr_mapcolor(sp[:background_color_inside]) - l[:frame_data] = l[:frame_data] #register changes - - l[:frame_data].line.color = _inspectdr_mapcolor(xaxis[:foreground_color_axis]) - l[:frame_data] = l[:frame_data] #register changes - l[:font_title] = InspectDR.Font(sp[:titlefontfamily], + #Modify base layout of new object: + l = plot.layout.defaults = deepcopy(InspectDR.defaults.plotlayout) + #IMPORTANT: Must deepcopy to ensure we don't change layouts of other plots. + #Works because plot uses defaults (not user-overwritten `layout.values`) + l.frame_canvas.fillcolor = _inspectdr_mapcolor(sp[:background_color_subplot]) + l.frame_data.fillcolor = _inspectdr_mapcolor(sp[:background_color_inside]) + l.frame_data.line.color = _inspectdr_mapcolor(xaxis[:foreground_color_axis]) + l.font_title = InspectDR.Font(sp[:titlefontfamily], _inspectdr_mapptsize(sp[:titlefontsize]), color = _inspectdr_mapcolor(sp[:titlefontcolor]) ) #Cannot independently control fonts of axes with InspectDR: - l[:font_axislabel] = InspectDR.Font(xaxis[:guidefontfamily], + l.font_axislabel = InspectDR.Font(xaxis[:guidefontfamily], _inspectdr_mapptsize(xaxis[:guidefontsize]), color = _inspectdr_mapcolor(xaxis[:guidefontcolor]) ) - l[:font_ticklabel] = InspectDR.Font(xaxis[:tickfontfamily], + l.font_ticklabel = InspectDR.Font(xaxis[:tickfontfamily], _inspectdr_mapptsize(xaxis[:tickfontsize]), color = _inspectdr_mapcolor(xaxis[:tickfontcolor]) ) - l[:enable_legend] = (sp[:legend] != :none) - #l[:halloc_legend] = 150 #TODO: compute??? - l[:font_legend] = InspectDR.Font(sp[:legendfontfamily], + l.enable_legend = (sp[:legend] != :none) + #l.halloc_legend = 150 #TODO: compute??? + l.font_legend = InspectDR.Font(sp[:legendfontfamily], _inspectdr_mapptsize(sp[:legendfontsize]), color = _inspectdr_mapcolor(sp[:legendfontcolor]) ) - l[:frame_legend].fillcolor = _inspectdr_mapcolor(sp[:background_color_legend]) - l[:frame_legend] = l[:frame_legend] #register changes + l.frame_legend.fillcolor = _inspectdr_mapcolor(sp[:background_color_legend]) + + #_round!() ensures values use integer spacings (looks better on screen): + InspectDR._round!(InspectDR.autofit2font!(l, legend_width=10.0)) #10 "em"s wide + return end # called just before updating layout bounding boxes... in case you need to prep From a359f21325a18d448b3b0731d74ee07b21c95ea5 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Wed, 14 Apr 2021 09:34:06 +0200 Subject: [PATCH 227/518] Generalize Shape --- src/components.jl | 17 ++++++++++------- test/test_components.jl | 5 +++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/components.jl b/src/components.jl index b0a76167..d7a6c98b 100644 --- a/src/components.jl +++ b/src/components.jl @@ -9,9 +9,9 @@ compute_angle(v::P2) = (angle = atan(v[2], v[1]); angle < 0 ? 2π - angle : angl # ------------------------------------------------------------- -struct Shape - x::Vector{Float64} - y::Vector{Float64} +struct Shape{X<:Number, Y<:Number} + x::Vector{X} + y::Vector{Y} # function Shape(x::AVec, y::AVec) # # if x[1] != x[end] || y[1] != y[end] # # new(vcat(x, x[1]), vcat(y, y[1])) @@ -52,7 +52,7 @@ end "get an array of tuples of points on a circle with radius `r`" function partialcircle(start_θ, end_θ, n = 20, r=1) - Tuple{Float64,Float64}[(r*cos(u),r*sin(u)) for u in range(start_θ, stop=end_θ, length=n)] + [(r*cos(u), r*sin(u)) for u in range(start_θ, stop=end_θ, length=n)] end "interleave 2 vectors into each other (like a zipper's teeth)" @@ -205,9 +205,12 @@ function rotate!(shape::Shape, Θ::Real, c = center(shape)) end "rotate an object in space" -function rotate(shape::Shape, Θ::Real, c = center(shape)) - shapecopy = deepcopy(shape) - rotate!(shapecopy, Θ, c) +function rotate(shape::Shape, θ::Real, c = center(shape)) + x, y = coords(shape) + cx, cy = c + x_new = rotate_x.(x, y, θ, cx, cy) + y_new = rotate_y.(x, y, θ, cx, cy) + Shape(x_new, y_new) end # ----------------------------------------------------------------------- diff --git a/test/test_components.jl b/test/test_components.jl index 1ade43d5..2fb7355b 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -1,6 +1,11 @@ using Plots, Test @testset "Shapes" begin + @testset "Type" begin + square = Shape([(0,0.0),(1,0.0),(1,1.0),(0,1.0)]) + @test isa(square, Shape{Int64, Float64}) + end + @testset "Copy" begin square = Shape([(0,0),(1,0),(1,1),(0,1)]) square2 = Shape(square) From e449d3221cfec5a514d5abf811ead882d2ee89c8 Mon Sep 17 00:00:00 2001 From: yha Date: Sun, 18 Apr 2021 13:41:10 +0300 Subject: [PATCH 228/518] Fix shapes series on plotly --- src/backends/plotly.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 9ff603da..0d4f734b 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -662,7 +662,7 @@ function plotly_series(plt::Plot, series::Series) end function plotly_series_shapes(plt::Plot, series::Series, clims) - segments = collect(series_segments(series)) + segments = series_segments(series) plotattributes_outs = Vector{KW}(undef, length(segments)) # TODO: create a plotattributes_out for each polygon @@ -681,7 +681,7 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) for (letter, data) in zip((:x, :y), shape_data(series, 100)) ) - for segment in segments + for (k, segment) in enumerate(segments) i, rng = segment.attr_index, segment.range length(rng) < 2 && continue @@ -701,10 +701,10 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) :dash => string(get_linestyle(series, i)), ) end - plotattributes_out[:showlegend] = i==1 ? should_add_to_legend(series) : false + plotattributes_out[:showlegend] = k==1 ? should_add_to_legend(series) : false plotly_polar!(plotattributes_out, series) plotly_hover!(plotattributes_out, _cycle(series[:hover], i)) - plotattributes_outs[i] = plotattributes_out + plotattributes_outs[k] = plotattributes_out end if series[:fill_z] !== nothing push!(plotattributes_outs, plotly_colorbar_hack(series, plotattributes_base, :fill)) From fbf3878ca5e0c2d8ba831b633241ae3b55de0592 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 20 Apr 2021 11:21:54 +0200 Subject: [PATCH 229/518] 1.12.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 53825c49..c0f49d23 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.11.2" +version = "1.12.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 8cf268a3903f847ef3071019b3e77b99240ba9c4 Mon Sep 17 00:00:00 2001 From: Benoit Pasquier <4486578+briochemc@users.noreply.github.com> Date: Fri, 23 Apr 2021 16:52:17 +1000 Subject: [PATCH 230/518] Add ticks getter functions (#3435) * Add ticks getter functions * Add tick-getter functions for Plot objects * Fix boiler-plate code in get_ticks * Bump minor version + add tests * Remove kwargs and add subplot test * Add docstrings * bump minor version --- Project.toml | 2 +- src/axes.jl | 60 +++++++++++++++++++++++++++++++++++++++++++++++ test/test_axes.jl | 10 ++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index c0f49d23..b5e5a626 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.12.0" +version = "1.13.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" diff --git a/src/axes.jl b/src/axes.jl index 2f6c4beb..038616e2 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -235,6 +235,66 @@ function get_ticks(sp::Subplot, axis::Axis; update = true) return axis.plotattributes[:optimized_ticks] end +# Ticks getter functions +for l in (:x, :y, :z) + axis = string(l, "-axis") # "x-axis" + ticks = string(l, "ticks") # "xticks" + f = Symbol(ticks) # :xticks + @eval begin + """ + $($f)(p::Plot) + + returns a vector of the $($axis) ticks of the subplots of `p`. + + Example use: + + ```jldoctest + julia> p = plot(1:5, $($ticks)=[1,2]) + + julia> $($f)(p) + 1-element Vector{Tuple{Vector{Float64}, Vector{String}}}: + ([1.0, 2.0], ["1", "2"]) + ``` + + If `p` consists of a single subplot, you might want to grab + only the first element, via + + ```jldoctest + julia> $($f)(p)[1] + ([1.0, 2.0], ["1", "2"]) + ``` + + or you can call $($f) on the first (only) subplot of `p` via + + ```jldoctest + julia> $($f)(p[1]) + ([1.0, 2.0], ["1", "2"]) + ``` + """ + $f(p::Plot) = get_ticks(p, $(Meta.quot(l))) + """ + $($f)(sp::Subplot) + + returns the $($axis) ticks of the subplot `sp`. + + Note that the ticks are returned as tuples of values and labels: + + ```jldoctest + julia> sp = plot(1:5, $($ticks)=[1,2]).subplots[1] + Subplot{1} + + julia> $($f)(sp) + ([1.0, 2.0], ["1", "2"]) + ``` + """ + $f(sp::Subplot) = get_ticks(sp, $(Meta.quot(l))) + export $f + end +end +# get_ticks from axis symbol :x, :y, or :z +get_ticks(sp::Subplot, s::Symbol) = get_ticks(sp, sp[Symbol(s, :axis)]) +get_ticks(p::Plot, s::Symbol) = [get_ticks(sp, s) for sp in p.subplots] + function get_ticks(ticks::Symbol, cvals::T, dvals, args...) where T if ticks === :none return T[], String[] diff --git a/test/test_axes.jl b/test/test_axes.jl index db2cb8cd..d981d21a 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -21,3 +21,13 @@ end # testset @test Plots.get_ticks(p2[1], p2[1][:xaxis])[2] == string.('C':3:'Z') @test Plots.get_ticks(p3[1], p3[1][:xaxis])[2] == string.('A':'Z') end + +@testset "Ticks getter functions" begin + ticks1 = ([1,2,3], ("a","b","c")) + ticks2 = ([4,5], ("e","f")) + p1 = plot(1:5, 1:5, 1:5, xticks=ticks1, yticks=ticks1, zticks=ticks1) + p2 = plot(1:5, 1:5, 1:5, xticks=ticks2, yticks=ticks2, zticks=ticks2) + p = plot(p1, p2) + @test xticks(p) == yticks(p) == zticks(p) == [ticks1, ticks2] + @test xticks(p[1]) == yticks(p[1]) == zticks(p[1]) == ticks1 +end From 02437562a76c6f9d6e5d1464f5a811cdd5c4e411 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 27 Apr 2021 09:50:49 +0200 Subject: [PATCH 231/518] colorbar improvements for pgfplotsx (#3441) * incorporate colorbar ticks and ticklabel styles * fix colorbar showing --- .gitignore | 1 + src/backends/pgfplotsx.jl | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 544fc7cb..48ae0045 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ dev/ test/tmpplotsave.hdf5 /.benchmarkci /benchmark/*.json +.vscode/ diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 8967c855..6273108c 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -225,16 +225,22 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) @label colorbar_end if hascolorbar(sp) + cticks = get_colorbar_ticks(sp)[2] colorbar_style = PGFPlotsX.Options( "title" => sp[:colorbar_title], - "xticklabel style" => pgfx_get_ticklabel_style(sp, sp[:xaxis]), - "yticklabel style" => pgfx_get_ticklabel_style(sp, sp[:yaxis]), ) if sp[:colorbar] === :top push!(colorbar_style, "at" => string((0.5, 1.05)), "anchor" => "south", + "xtick" => string("{", join(cticks, ","), "}"), "xticklabel pos" => "upper", + "xticklabel style" => pgfx_get_colorbar_ticklabel_style(sp), + ) + else + push!(colorbar_style, + "ytick" => string("{", join(cticks, ","), "}"), + "yticklabel style" => pgfx_get_colorbar_ticklabel_style(sp), ) end push!( @@ -242,6 +248,8 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) string("colorbar", pgfx_get_colorbar_pos(sp[:colorbar])) => nothing, "colorbar style" => colorbar_style, ) + else + push!(axis_opt, "colorbar" => "false") end if RecipesPipeline.is3d(sp) azim, elev = sp[:camera] @@ -809,15 +817,23 @@ function pgfx_get_ticklabel_style(sp, axis) return PGFPlotsX.Options( "font" => pgfx_font( axis[:tickfontsize], pgfx_thickness_scaling(sp) - ), - "color" => cstr, + ), "color" => cstr, "draw opacity" => alpha(cstr), "rotate" => axis[:tickfontrotation], ) end +function pgfx_get_colorbar_ticklabel_style(sp) + cstr = plot_color(sp[:colorbar_tickfontcolor]) + return PGFPlotsX.Options( + "font" => pgfx_font( + sp[:colorbar_tickfontsize], pgfx_thickness_scaling(sp) + ), "color" => cstr, + "draw opacity" => alpha(cstr), + "rotate" => sp[:colorbar_tickfontrotation], + ) +end ## -------------------------------------------------------------------------------------- -# Generates a colormap for pgfplots based on a ColorGradient pgfx_arrow(::Nothing) = "every arrow/.append style={-}" function pgfx_arrow(arr::Arrow, side = arr.side) components = String[] @@ -848,6 +864,7 @@ function pgfx_filllegend!(series_opt, opt) }""") end +# Generates a colormap for pgfplots based on a ColorGradient pgfx_colormap(cl::PlotUtils.AbstractColorList) = pgfx_colormap(color_list(cl)) function pgfx_colormap(v::Vector{<:Colorant}) join(map(v) do c From d4298bf1cc00436db536a9f86ede1ccc8375bebe Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 27 Apr 2021 10:35:12 +0200 Subject: [PATCH 232/518] 1.13.1 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index b5e5a626..71a453ae 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.13.0" +version = "1.13.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From dfd8fada9de11438d8ce53c194a944a0551225d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 27 Apr 2021 10:35:28 +0200 Subject: [PATCH 233/518] [AUTO] Update precompiles (#3455) * incorporate colorbar ticks and ticklabel styles * fix colorbar showing * Update precompile_*.jl file Co-authored-by: Simon Christ Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index b1f20e6a..2389207f 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,10 +68,15 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) @@ -80,8 +85,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) @@ -89,6 +97,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -108,7 +118,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) @@ -118,6 +130,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -128,7 +141,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -162,6 +174,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -184,6 +198,7 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -202,6 +217,8 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{GRBackend},Dict{Symbol, Any},Symbol}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -215,6 +232,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) @@ -231,11 +249,13 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -248,15 +268,20 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,UnitRange{Int64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -272,9 +297,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(iter_segments),StepRange{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(ohlc),Any}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -283,6 +307,7 @@ function _precompile_() Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) + Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) @@ -295,8 +320,7 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Int64, Float64, Int64},Tuple{Int64, Float64, Int64}}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -308,11 +332,6 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(bar, (Any,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(bar),Any,)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 476de3d2a2d5c5816feb26a2122e777f7fee9907 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 28 Apr 2021 09:52:54 +0200 Subject: [PATCH 234/518] 1.13.2 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 71a453ae..3d6f9748 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.13.1" +version = "1.13.2" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 7bb2132b18056e27d78398c66eb925f86386ae22 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 28 Apr 2021 20:27:50 +0200 Subject: [PATCH 235/518] add `tick_direction=:none` option to hide tick labels --- src/arg_desc.jl | 2 +- src/axes.jl | 38 +++++++++++++++++++++----------------- src/backends/pgfplotsx.jl | 17 ++++++++++++----- src/backends/plotly.jl | 3 ++- src/backends/pyplot.jl | 10 ++++++---- src/recipes.jl | 24 +++++++++++++++++------- 6 files changed, 59 insertions(+), 35 deletions(-) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index 2a5b9d0c..a8decf79 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -165,7 +165,7 @@ const _arg_desc = KW( :minorgridalpha => "Number in [0,1]. The alpha/opacity override for the minorgrid lines.", :minorgridstyle => "Symbol. Style of the minor grid lines. Choose from $(_allStyles)", :minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", -:tick_direction => "Symbol. Direction of the ticks. `:in` or `:out`", +:tick_direction => "Symbol. Direction of the ticks. `:in`, `:out` or `:none`", :showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", :widen => "Bool. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. Defaults to `true`.", :draw_arrow => "Bool. Draw arrow at the end of the axis.", diff --git a/src/axes.jl b/src/axes.jl index 038616e2..3d6236fb 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -697,17 +697,19 @@ function axis_drawing_info(sp, letter) if !(ax[:ticks] in (:none, nothing, false)) f = RecipesPipeline.scale_func(oax[:scale]) invf = RecipesPipeline.inverse_scale_func(oax[:scale]) - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(oamax) - f(oamin))) - (-t, t) - else - ticks_in = ax[:tick_direction] == :out ? -1 : 1 - t = invf(f(oa1) + 0.012 * (f(oa2) - f(oa1)) * ticks_in) - (oa1, t) + if ax[:tick_direction] !== :none + tick_start, tick_stop = if sp[:framestyle] == :origin + t = invf(f(0) + 0.012 * (f(oamax) - f(oamin))) + (-t, t) + else + ticks_in = ax[:tick_direction] == :out ? -1 : 1 + t = invf(f(oa1) + 0.012 * (f(oa2) - f(oa1)) * ticks_in) + (oa1, t) + end end for tick in ticks[1] - if ax[:showaxis] + if ax[:showaxis] && ax[:tick_direction] !== :none push!( tick_segments, reverse_if((tick, tick_start), isy), @@ -834,18 +836,20 @@ function axis_drawing_info_3d(sp, letter) if !(ax[:ticks] in (:none, nothing, false)) f = RecipesPipeline.scale_func(nax[:scale]) invf = RecipesPipeline.inverse_scale_func(nax[:scale]) - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(namax) - f(namin))) - (-t, t) - else - ticks_in = ax[:tick_direction] == :out ? -1 : 1 - t = invf(f(na0) + 0.012 * (f(na1) - f(na0)) * ticks_in) - (na0, t) + if ax[:tick_direction] !== :none + tick_start, tick_stop = if sp[:framestyle] == :origin + t = invf(f(0) + 0.012 * (f(namax) - f(namin))) + (-t, t) + else + ticks_in = ax[:tick_direction] == :out ? -1 : 1 + t = invf(f(na0) + 0.012 * (f(na1) - f(na0)) * ticks_in) + (na0, t) + end end ga0, ga1 = sp[:framestyle] in (:origin, :zerolines) ? (namin, namax) : (na0, na1) for tick in ticks[1] - if ax[:showaxis] + if ax[:showaxis] && ax[:tick_direction] !== :none push!( tick_segments, sort_3d_axes(tick, tick_start, fa0, letter), @@ -875,7 +879,7 @@ function axis_drawing_info_3d(sp, letter) (na0, t) end for tick in minor_ticks - if ax[:showaxis] + if ax[:showaxis] && ax[:tick_direction] !== :none push!( tick_segments, sort_3d_axes(tick, tick_start, fa0, letter), diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 6273108c..98dfdfc1 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -1278,11 +1278,18 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) else push!(opt, string(letter, "ticklabels") => "{}") end - push!( - opt, - string(letter, "tick align") => - (axis[:tick_direction] == :out ? "outside" : "inside"), - ) + if axis[:tick_direction] === :none + push!( + opt, + string(letter, "tick style") => "draw=none", + ) + else + push!( + opt, + string(letter, "tick align") => + (axis[:tick_direction] == :out ? "outside" : "inside"), + ) + end push!( opt, string(letter, "ticklabel style") => pgfx_get_ticklabel_style(sp, axis) ) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 0d4f734b..f7402473 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -143,7 +143,8 @@ function plotly_axis(axis, sp, anchor = nothing, domain = nothing) :zerolinecolor => rgba_string(axis[:foreground_color_axis]), :showline => framestyle in (:box, :axes) && axis[:showaxis], :linecolor => rgba_string(plot_color(axis[:foreground_color_axis])), - :ticks => axis[:tick_direction] == :out ? "outside" : "inside", + :ticks => axis[:tick_direction] === :out ? "outside" : + axis[:tick_direction] === :in ? "inside" : "", :mirror => framestyle == :box, :showticklabels => axis[:showaxis], ) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 5eea0757..e1392d05 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -1022,7 +1022,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) cbar_axis."set_tick_params"( direction = axis[:tick_direction] == :out ? "out" : "in", width=py_thickness_scale(plt, intensity), - length= 5 * py_thickness_scale(plt, intensity) + length = axis[:tick_direction] == :none ? 0 : 5 * py_thickness_scale(plt, intensity) ) @@ -1137,7 +1137,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) pyaxis."set_tick_params"( direction = axis[:tick_direction] == :out ? "out" : "in", width=py_thickness_scale(plt, intensity), - length= 5 * py_thickness_scale(plt, intensity) + length = axis[:tick_direction] == :none ? 0 : 5 * py_thickness_scale(plt, intensity) ) getproperty(ax, Symbol("set_", letter, "label"))(axis[:guide]) @@ -1176,7 +1176,8 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) pyaxis."set_tick_params"( which = "minor", direction = axis[:tick_direction] == :out ? "out" : "in", - width=py_thickness_scale(plt, intensity)) + length = axis[:tick_direction] == :none ? 0 : py_thickness_scale(plt, intensity), + ) end if axis[:minorgrid] @@ -1186,7 +1187,8 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) pyaxis."set_tick_params"( which = "minor", direction = axis[:tick_direction] == :out ? "out" : "in", - width=py_thickness_scale(plt, intensity)) + length = axis[:tick_direction] == :none ? 0 : py_thickness_scale(plt, intensity) + ) pyaxis."grid"(true, which = "minor", diff --git a/src/recipes.jl b/src/recipes.jl index 952bf0aa..b357968a 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -472,13 +472,23 @@ end fillto = map(x -> _is_positive(x) ? typeof(baseline)(x) : baseline, fillto) end - if !isnothing(plotattributes[:series_annotations]) - if isvertical(plotattributes) - annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) - else - annotations := (y,x,plotattributes[:series_annotations].strs,:left) + annotations = pop_kw!(plotattributes, :series_annotations, nothing) + isvert = isvertical(plotattributes) + if !isnothing(annotations) + @series begin + primary := false + seriestype := :scatter + markersize := 0 + series_annotations := annotations + orientation := default(:orientation) + isvert ? (x, y) : (y, x) end - series_annotations := nothing + # if isvertical(plotattributes) + # annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) + # else + # annotations := (y,x,plotattributes[:series_annotations].strs,:left) + # end + # series_annotations := nothing end # create the bar shapes by adding x/y segments @@ -505,7 +515,7 @@ end expand_extrema!(axis, widen(ignorenan_extrema(xseg.pts)...)) # switch back - if !isvertical(plotattributes) + if !isvert xseg, yseg = yseg, xseg end From 5a4651a0ecbaf9ab9794b8dfae44395b44e88b7d Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 28 Apr 2021 20:35:00 +0200 Subject: [PATCH 236/518] clean changes in recipes.jl --- src/recipes.jl | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index b357968a..952bf0aa 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -472,23 +472,13 @@ end fillto = map(x -> _is_positive(x) ? typeof(baseline)(x) : baseline, fillto) end - annotations = pop_kw!(plotattributes, :series_annotations, nothing) - isvert = isvertical(plotattributes) - if !isnothing(annotations) - @series begin - primary := false - seriestype := :scatter - markersize := 0 - series_annotations := annotations - orientation := default(:orientation) - isvert ? (x, y) : (y, x) + if !isnothing(plotattributes[:series_annotations]) + if isvertical(plotattributes) + annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) + else + annotations := (y,x,plotattributes[:series_annotations].strs,:left) end - # if isvertical(plotattributes) - # annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) - # else - # annotations := (y,x,plotattributes[:series_annotations].strs,:left) - # end - # series_annotations := nothing + series_annotations := nothing end # create the bar shapes by adding x/y segments @@ -515,7 +505,7 @@ end expand_extrema!(axis, widen(ignorenan_extrema(xseg.pts)...)) # switch back - if !isvert + if !isvertical(plotattributes) xseg, yseg = yseg, xseg end From 3c472f24b5d1b8005d6f74c9e4e7bc1b428c8b02 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 28 Apr 2021 22:20:34 +0200 Subject: [PATCH 237/518] add DOI badge --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 17fcdd99..88d989e5 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,9 @@ [![][docs-img]][docs-url] [![Codecov](https://codecov.io/gh/JuliaPlots/Plots.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/JuliaPlots/Plots.jl) +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4725318.svg)](https://doi.org/10.5281/zenodo.4725318) + + #### Created by Tom Breloff (@tbreloff) #### Maintained by the [JuliaPlots members](https://github.com/orgs/JuliaPlots/people) From 473147792019aaa1d045c34c5d3f6e4bfc46103e Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Sat, 1 May 2021 20:39:55 +0200 Subject: [PATCH 238/518] Add annotation font defaults --- src/arg_desc.jl | 6 ++++++ src/args.jl | 9 +++++++++ src/components.jl | 28 ++++++++++++++++++++++++---- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index a8decf79..67411988 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -116,6 +116,12 @@ const _arg_desc = KW( :legendfont => "Font. Font of legend items.", :legendtitlefont => "Font. Font of the legend title.", :annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.", +:annotationfontfamily => "String or Symbol. Font family of annotations.", +:annotationfontsize => "Integer. Font pointsize of annotations.", +:annotationhalign => "Symbol. horizontal alignment of annotations, :hcenter, :left, :right or :center.", +:annotationvalign => "Symbol. Vertical alignment of annotations, :vcenter, :top, :bottom or :center.", +:annotationrotation => "Float. Rotation of annotations in degrees.", +:annotationcolor => "Colorant or :match. Color of annotations.", :projection => "Symbol or String. '3d' or 'polar'", :aspect_ratio => "Symbol (:equal or :none) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units. With `:none`, images inherit aspect ratio of the plot area.", :margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.", diff --git a/src/args.jl b/src/args.jl index 12e75cdd..d00cf8b9 100644 --- a/src/args.jl +++ b/src/args.jl @@ -408,6 +408,12 @@ const _subplot_defaults = KW( :legendtitlefontrotation => 0.0, :legendtitlefontcolor => :match, :annotations => [], # annotation tuples... list of (x,y,annotation) + :annotationfontfamily => :match, + :annotationfontsize => 14, + :annotationhalign => :hcenter, + :annotationvalign => :vcenter, + :annotationrotation => 0.0, + :annotationcolor => :match, :projection => :none, # can also be :polar or :3d :aspect_ratio => :auto, # choose from :none or :equal :margin => 1mm, @@ -519,6 +525,7 @@ const _initial_axis_defaults = deepcopy(_axis_defaults) const _initial_fontsizes = Dict(:titlefontsize => _subplot_defaults[:titlefontsize], :legendfontsize => _subplot_defaults[:legendfontsize], :legendtitlefontsize => _subplot_defaults[:legendtitlefontsize], + :annotationfontsize => _subplot_defaults[:annotationfontsize], :tickfontsize => _axis_defaults[:tickfontsize], :guidefontsize => _axis_defaults[:guidefontsize]) @@ -1359,6 +1366,8 @@ const _match_map = KW( :plot_titlefontcolor => :foreground_color, :tickfontcolor => :foreground_color_text, :guidefontcolor => :foreground_color_guide, + :annotationfontfamily => :fontfamily_subplot, + :annotationcolor => :foreground_color_subplot, ) # these can match values from the parent container (axis --> subplot --> plot) diff --git a/src/components.jl b/src/components.jl index d7a6c98b..34cafdc4 100644 --- a/src/components.jl +++ b/src/components.jl @@ -575,11 +575,21 @@ annotations(sa::SeriesAnnotations) = sa # Expand arrays of coordinates, positions and labels into induvidual annotations # and make sure labels are of type PlotText -function process_annotation(sp::Subplot, xs, ys, labs, font = font()) +function process_annotation(sp::Subplot, xs, ys, labs, font = nothing) anns = [] labs = makevec(labs) xlength = length(methods(length, (typeof(xs),))) == 0 ? 1 : length(xs) ylength = length(methods(length, (typeof(ys),))) == 0 ? 1 : length(ys) + if isnothing(font) + font = Plots.font(; + family=sp[:annotationfontfamily], + pointsize=sp[:annotationfontsize], + halign=sp[:annotationhalign], + valign=sp[:annotationvalign], + rotation=sp[:annotationrotation], + color=sp[:annotationcolor], + ) + end for i in 1:max(xlength, ylength, length(labs)) x, y, lab = _cycle(xs, i), _cycle(ys, i), _cycle(labs, i) x = typeof(x) <: TimeType ? Dates.value(x) : x @@ -588,14 +598,24 @@ function process_annotation(sp::Subplot, xs, ys, labs, font = font()) alphabet = "abcdefghijklmnopqrstuvwxyz" push!(anns, (x, y, text(string("(", alphabet[sp[:subplot_index]], ")"), font))) else - push!(anns, (x, y, isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab...) : text(lab, font))) + push!(anns, (x, y, isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab[1], font, lab[2:end]...) : text(lab, font))) end end anns end -function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol}, labs, font = font()) +function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol}, labs, font = nothing) anns = [] positions, labs = makevec(positions), makevec(labs) + if isnothing(font) + font = Plots.font(; + family=sp[:annotationfontfamily], + pointsize=sp[:annotationfontsize], + halign=sp[:annotationhalign], + valign=sp[:annotationvalign], + rotation=sp[:annotationrotation], + color=sp[:annotationcolor], + ) + end for i in 1:max(length(positions), length(labs)) pos, lab = _cycle(positions, i), _cycle(labs, i) pos = get(_positionAliases, pos, pos) @@ -603,7 +623,7 @@ function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol}, alphabet = "abcdefghijklmnopqrstuvwxyz" push!(anns, (pos, text(string("(", alphabet[sp[:subplot_index]], ")"), font))) else - push!(anns, (pos, isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab...) : text(lab, font))) + push!(anns, (pos, isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab[1], font, lab[2:end]...) : text(lab, font))) end end anns From 0c7f7ba0116547fe937456a801b06e09d005af17 Mon Sep 17 00:00:00 2001 From: yha Date: Mon, 3 May 2021 19:44:11 +0300 Subject: [PATCH 239/518] Fix for plotting a vector of (at least two) NaNs --- src/utils.jl | 22 +++++++++------------- test/runtests.jl | 2 ++ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/utils.jl b/src/utils.jl index 0bfd61ff..8c69a029 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -82,7 +82,7 @@ function series_segments(series::Series, seriestype::Symbol = :path) args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) nan_segments = collect(iter_segments(args...)) - result = if has_attribute_segments(series) + segments = if has_attribute_segments(series) Iterators.flatten(map(nan_segments) do r if seriestype in (:scatter, :scatter3d) (SeriesSegment(i:i, i) for i in r) @@ -94,8 +94,14 @@ function series_segments(series::Series, seriestype::Symbol = :path) (SeriesSegment(r, 1) for r in nan_segments) end - seg_range = UnitRange(minimum(first(seg.range) for seg in result), - maximum(last(seg.range) for seg in result)) + warn_on_attr_dim_mismatch(series, x, y, z, segments) + return segments +end + +function warn_on_attr_dim_mismatch(series, x, y, z, segments) + isempty(segments) && return + seg_range = UnitRange(minimum(first(seg.range) for seg in segments), + maximum(last(seg.range) for seg in segments)) for attr in _segmenting_vector_attributes v = get(series, attr, nothing) if v isa AVec && eachindex(v) != seg_range @@ -111,8 +117,6 @@ function series_segments(series::Series, seriestype::Symbol = :path) end end end - - return result end # helpers to figure out if there are NaN values in a list of array types @@ -174,14 +178,6 @@ makevec(v::T) where {T} = T[v] maketuple(x::Real) = (x,x) maketuple(x::Tuple{T,S}) where {T,S} = x -for i in 2:4 - @eval begin - RecipesPipeline.unzip( - v::Union{AVec{<:Tuple{Vararg{T,$i} where T}}, AVec{<:GeometryBasics.Point{$i}}}, - ) = $(Expr(:tuple, (:([t[$j] for t in v]) for j=1:i)...)) - end -end - RecipesPipeline.unzip( ::Union{AVec{<:GeometryBasics.Point{N}}, AVec{<:Tuple{Vararg{T,N} where T}}} ) where N = error("$N-dimensional unzip not implemented.") diff --git a/test/runtests.jl b/test/runtests.jl index 4548ee47..d13ad4bb 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -172,6 +172,8 @@ end @testset "Plot" begin plots = [histogram([1, 0, 0, 0, 0, 0]), plot([missing]), + plot([missing, missing]), + plot(fill(missing, 10)), plot([missing; 1:4]), plot([fill(missing, 10); 1:4]), plot([1 1; 1 missing]), From 23567964e7ef9caec4a1cf76492d5c089a4fe697 Mon Sep 17 00:00:00 2001 From: yha Date: Mon, 3 May 2021 19:45:48 +0300 Subject: [PATCH 240/518] undo accidental change --- src/utils.jl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/utils.jl b/src/utils.jl index 8c69a029..7b4a093c 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -178,6 +178,14 @@ makevec(v::T) where {T} = T[v] maketuple(x::Real) = (x,x) maketuple(x::Tuple{T,S}) where {T,S} = x +for i in 2:4 + @eval begin + RecipesPipeline.unzip( + v::Union{AVec{<:Tuple{Vararg{T,$i} where T}}, AVec{<:GeometryBasics.Point{$i}}}, + ) = $(Expr(:tuple, (:([t[$j] for t in v]) for j=1:i)...)) + end +end + RecipesPipeline.unzip( ::Union{AVec{<:GeometryBasics.Point{N}}, AVec{<:Tuple{Vararg{T,N} where T}}} ) where N = error("$N-dimensional unzip not implemented.") From 78f7db138fdbe2b423beb1276c72b759f4b93816 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 4 May 2021 20:54:11 +0200 Subject: [PATCH 241/518] add legend stylings (#3470) * add legend stylings * fix center and default case --- src/backends/pgfplotsx.jl | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 98dfdfc1..b6cb96c1 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -183,8 +183,11 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) nothing sp_height > 0 * mm ? push!(axis_opt, "height" => string(axis_height)) : nothing - # legend position - push!(axis_opt["legend style"], pgfx_get_legend_pos(sp[:legend])...) + # legend position / formatting + push!(axis_opt["legend style"], + pgfx_get_legend_pos(sp[:legend])... + ) + merge!(axis_opt["legend style"], pgfx_get_legend_style(sp)) for letter in (:x, :y, :z) if letter != :z || RecipesPipeline.is3d(sp) pgfx_axis!(axis_opt, sp, letter) @@ -799,6 +802,14 @@ function pgfx_get_legend_pos(v::Tuple{S,Symbol}) where S <: Real return ("at"=>"$(string(legend_pos_from_angle(v[1],rect...)))", "anchor"=>anchor) end +function pgfx_get_legend_style(sp) + legfont = legendfont(sp) + PGFPlotsX.Options( + "cells" => PGFPlotsX.Options("anchor" => get((left = "west", right = "east", hcenter = "center"), legfont.halign, "west")), + "font" => pgfx_font(legfont.pointsize, pgfx_thickness_scaling(sp)) + ) +end + pgfx_get_colorbar_pos(s) = get((left = " left", bottom = " horizontal", top = " horizontal"), s, "") pgfx_get_colorbar_pos(b::Bool) = "" From 8893782b13a2500663786e87d49d36c85a88e2ed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 May 2021 20:54:43 +0200 Subject: [PATCH 242/518] [AUTO] Update precompiles (#3471) * add legend stylings * fix center and default case * Update precompile_*.jl file Co-authored-by: Simon Christ Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 2389207f..f341aa5f 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -77,6 +77,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) @@ -88,6 +89,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) @@ -97,8 +99,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -113,6 +113,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) @@ -161,7 +162,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :lab, :ms), Tuple{Tuple{Matrix{Symbol}, Int64}, Matrix{String}, Int64}},typeof(plot),Vector{Vector{T} where T},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :label, :legendtitle), Tuple{Tuple{Int64, Matrix{Symbol}}, Matrix{String}, String}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill), Tuple{Int64, Bool, Tuple{Int64, Symbol}}},typeof(plot),Function,Function,Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg), Tuple{Tuple{Int64, Symbol, Symbol}, Tuple{Shape, Int64, RGBA{Float64}}, Symbol, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Bool}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg), Tuple{Tuple{Int64, Symbol, Symbol}, Tuple{Shape{Float64, Float64}, Int64, RGBA{Float64}}, Symbol, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Bool}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}, Int64, Bool}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype), Tuple{Tuple{Int64, Symbol}, Matrix{String}, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,), Tuple{Bool}},typeof(plot),Vector{Union{Missing, Int64}}}) @@ -217,8 +218,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{GRBackend},Dict{Symbol, Any},Symbol}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -231,8 +230,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) - Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) @@ -268,15 +268,17 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Vector{Float64},Vector{Float64},UnitRange{Int64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) @@ -285,6 +287,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -299,28 +302,37 @@ function _precompile_() Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_steps),Vector{Float64},Symbol,Bool}) + Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Int64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),StepRange{Int64, Int64},Tuple{Int64, Int64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) + Base.precompile(Tuple{typeof(partialcircle),Int64,Float64,Int64}) Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) + Base.precompile(Tuple{typeof(processFontArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(setindex!),GridLayout,EmptyLayout,Int64,Int64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From f355ff9904611fc672cebe4c2b3575328d87d0e5 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 6 May 2021 21:27:24 +0200 Subject: [PATCH 243/518] clean up pgfx-legends duplications --- src/backends/pgfplotsx.jl | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index b6cb96c1..6583006b 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -142,7 +142,6 @@ 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", "title" => sp[:title], "title style" => PGFPlotsX.Options( pgfx_get_title_pos(title_loc)..., @@ -154,22 +153,7 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) "draw opacity" => title_a, "rotate" => sp[:titlefontrotation], ), - "legend style" => PGFPlotsX.Options( - pgfx_linestyle( - pgfx_thickness_scaling(sp), - sp[:foreground_color_legend], - fg_alpha, - "solid", - ) => nothing, - "fill" => cstr, - "fill opacity" => a, - "text opacity" => alpha(plot_color(sp[:legendfontcolor])), - "font" => pgfx_font( - sp[:legendfontsize], - pgfx_thickness_scaling(sp), - ), - "text" => plot_color(sp[:legendfontcolor]), - ), + "legend style" => pgfx_get_legend_style(sp), "axis background/.style" => PGFPlotsX.Options( "fill" => bgc_inside, "opacity" => bgc_inside_a, @@ -183,11 +167,6 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) nothing sp_height > 0 * mm ? push!(axis_opt, "height" => string(axis_height)) : nothing - # legend position / formatting - push!(axis_opt["legend style"], - pgfx_get_legend_pos(sp[:legend])... - ) - merge!(axis_opt["legend style"], pgfx_get_legend_style(sp)) for letter in (:x, :y, :z) if letter != :z || RecipesPipeline.is3d(sp) pgfx_axis!(axis_opt, sp, letter) @@ -805,8 +784,22 @@ end function pgfx_get_legend_style(sp) legfont = legendfont(sp) PGFPlotsX.Options( + pgfx_linestyle( + pgfx_thickness_scaling(sp), + sp[:foreground_color_legend], + fg_alpha, + "solid", + ) => nothing, + "fill" => cstr, + "fill opacity" => a, + "text opacity" => alpha(plot_color(sp[:legendfontcolor])), + "font" => pgfx_font( + sp[:legendfontsize], + pgfx_thickness_scaling(sp), + ), + "text" => plot_color(sp[:legendfontcolor]), "cells" => PGFPlotsX.Options("anchor" => get((left = "west", right = "east", hcenter = "center"), legfont.halign, "west")), - "font" => pgfx_font(legfont.pointsize, pgfx_thickness_scaling(sp)) + pgfx_get_legend_pos(sp[:legend])..., ) end From 35658bf4fe4c00c71ef2c5d2bbeaf0a9f16dbfed Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 7 May 2021 08:14:37 +0200 Subject: [PATCH 244/518] fix tests --- src/backends/pgfplotsx.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 6583006b..50b5e474 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -131,9 +131,6 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) axis_height = sp_height - (tpad + bpad) axis_width = sp_width - (rpad + lpad) - cstr = plot_color(sp[:background_color_legend]) - a = alpha(cstr) - fg_alpha = alpha(plot_color(sp[:foreground_color_legend])) title_cstr = plot_color(sp[:titlefontcolor]) title_a = alpha(title_cstr) title_loc = sp[:titlelocation] @@ -782,6 +779,9 @@ function pgfx_get_legend_pos(v::Tuple{S,Symbol}) where S <: Real end function pgfx_get_legend_style(sp) + cstr = plot_color(sp[:background_color_legend]) + a = alpha(cstr) + fg_alpha = alpha(plot_color(sp[:foreground_color_legend])) legfont = legendfont(sp) PGFPlotsX.Options( pgfx_linestyle( From 7e997da6bd10345d1e0639e7565e3ae33f2fecb7 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 10 May 2021 19:53:10 +0200 Subject: [PATCH 245/518] 1.14.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 3d6f9748..0b323aac 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.13.2" +version = "1.14.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 3cb81d6d04f564155d28af432b92311978afcbb5 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 12 May 2021 18:35:19 +0200 Subject: [PATCH 246/518] fix alpha for surface (#3489) --- src/backends/pgfplotsx.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 50b5e474..d3ad78f1 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -479,13 +479,14 @@ function pgfx_add_series!(::Val{:scatter3d}, axis, series_opt, series, series_fu end function pgfx_add_series!(::Val{:surface}, axis, series_opt, series, series_func, opt) + alpha = get_fillalpha(series) push!( series_opt, "surf" => nothing, "mesh/rows" => length(opt[:x]), "mesh/cols" => length(opt[:y]), "z buffer" => "sort", - "opacity" => get_fillalpha(series), + "opacity" => alpha === nothing ? 1.0 : alpha, ) pgfx_add_series!(axis, series_opt, series, series_func, opt) end From d544647b1b164959b6b77486f005c6e256c963a7 Mon Sep 17 00:00:00 2001 From: Asim H Dar <31346583+AsimHDar@users.noreply.github.com> Date: Wed, 12 May 2021 18:36:14 +0200 Subject: [PATCH 247/518] Update plotly.jl (#3491) Tiny typo --- src/backends/plotly.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index f7402473..a5381ee9 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -7,7 +7,7 @@ function _plotly_framestyle(style::Symbol) return style else default_style = get((semi = :box, origin = :zerolines), style, :axes) - @warn("Framestyle :$style is not supported by Plotly and PlotlyJS. :$default_style was cosen instead.") + @warn("Framestyle :$style is not supported by Plotly and PlotlyJS. :$default_style was chosen instead.") default_style end end From 788e28d18ac15bcd958420d213052a7d04303fdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Thu, 13 May 2021 10:14:03 +0100 Subject: [PATCH 248/518] Allow `while`-block in at-animate macro --- src/animation.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/animation.jl b/src/animation.jl index 3c55967c..cb09e527 100644 --- a/src/animation.jl +++ b/src/animation.jl @@ -137,8 +137,8 @@ end # ----------------------------------------------- function _animate(forloop::Expr, args...; callgif = false) - if forloop.head != :for - error("@animate macro expects a for-block. got: $(forloop.head)") + if forloop.head ∉ (:for, :while) + error("@animate macro expects a for- or while-block. got: $(forloop.head)") end # add the call to frame to the end of each iteration From 15bd9c537d2d141da48b37b3abfb7df41e482efc Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 14 May 2021 22:00:09 +0200 Subject: [PATCH 249/518] Create docs on pushing to master (#3494) * Create docs.yml * Update docs.yml * Update docs.yml * Create docs.yml * Update docs.yml * [skip ci] * [skip ci] * [skip ci] * [skip ci] * Update docs.yml * Update docs.yml * Update docs.yml * Update docs.yml * fix pgfplotsx * fix pyplot * remove push workflow (should work without) * conditionally fix pyplot * change env-vars * fix * fix ref * clean up and cache artifacts * add Documenter_key to environment * fix parentheses * "one last fix" * dev => add * fix marker example * exclude 50 for plotly * install ms fonts * only trigger on master * remove REF pretending --- .github/workflows/docs.yml | 50 ++++++++++++++++++++++++++++++++++++++ src/backends/pgfplotsx.jl | 5 ++-- src/backends/pyplot.jl | 10 ++++++-- src/examples.jl | 9 ++++--- 4 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..e1dbcf1a --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,50 @@ +name: docs + +on: + push: + branches: + - master + tags: '*' + +jobs: + Build_docs: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + with: + repository: JuliaPlots/PlotDocs.jl + - uses: julia-actions/setup-julia@v1 + - name: Cache artifacts + uses: actions/cache@v1 + env: + cache-name: cache-artifacts + with: + path: ~/.julia/artifacts + key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} + restore-keys: | + ${{ runner.os }}-test-${{ env.cache-name }}- + ${{ runner.os }}-test- + ${{ runner.os }}- + - name: Install dependencies + run: | + sudo apt-get update -y + sudo apt-get install -y qt5-default \ + ttf-mscorefonts-installer \ + poppler-utils \ + pdf2svg \ + texlive-latex-base \ + texlive-binaries \ + texlive-pictures \ + texlive-latex-extra \ + texlive-luatex \ + ghostscript-x \ + libgconf2-4 + sudo fc-cache -vr + + - name: build documentation + env: + PYTHON: "" + DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} + run: | + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' + xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index d3ad78f1..eb995880 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -82,6 +82,7 @@ function surface_to_vecs(x::AVec, y::AVec, s::Union{AMat,Surface}) end return xn, yn, zn end +surface_to_vecs(x::AVec, y::AVec, z::AVec) = x, y, z function Base.push!(pgfx_plot::PGFPlotsXPlot, item) push!(pgfx_plot.the_plot, item) @@ -483,8 +484,8 @@ function pgfx_add_series!(::Val{:surface}, axis, series_opt, series, series_func push!( series_opt, "surf" => nothing, - "mesh/rows" => length(opt[:x]), - "mesh/cols" => length(opt[:y]), + "mesh/rows" => length(unique(opt[:x])), # unique if its all vectors + "mesh/cols" => length(unique(opt[:y])), "z buffer" => "sort", "opacity" => alpha === nothing ? 1.0 : alpha, ) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index e1392d05..5e9da1e4 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -1063,8 +1063,14 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) ax.spines["left"]."set_position"("zero") end elseif sp[:framestyle] in (:grid, :none, :zerolines) - for (loc, spine) in ax.spines - spine."set_visible"(false) + if PyPlot.version >= v"3.4.1" # that is one where it worked, the API change may have some other value + for spine in ax.spines + ax.spines[string(spine)]."set_visible"(false) + end + else + for (loc, spine) in ax.spines + spine."set_visible"(false) + end end if sp[:framestyle] == :zerolines ax."axhline"(y = 0, color = py_color(sp[:xaxis][:foreground_color_axis]), lw = py_thickness_scale(plt, 0.75)) diff --git a/src/examples.jl b/src/examples.jl index cfc76074..6d4e631d 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -7,7 +7,7 @@ mutable struct PlotExample exprs::Vector{Expr} end -# the _examples we'll run for each +# the _examples we'll run for each backend const _examples = PlotExample[ PlotExample( # 1 "Lines", @@ -241,14 +241,15 @@ const _examples = PlotExample[ m -> m in Plots.supported_markers(), Plots._shape_keys, ) - markers = reshape(markers, 1, length(markers)) + markers = permutedims(markers) n = length(markers) x = range(0, stop = 10, length = n + 2)[2:(end - 1)] y = repeat(reshape(reverse(x), 1, :), n, 1) scatter( x, y, - m = (8, :auto), + m = markers, + markersize = 8, lab = map(string, markers), bg = :linen, xlim = (0, 10), @@ -1170,7 +1171,7 @@ _backend_skips = Dict( :gr => [25, 30, 47], :pyplot => [2, 25, 30, 31, 47, 49], :plotlyjs => [2, 21, 24, 25, 30, 31, 49, 51], - :plotly => [2, 21, 24, 25, 30, 31, 49, 51], + :plotly => [2, 21, 24, 25, 30, 31, 49, 50, 51], :pgfplotsx => [ 2, # animation 6, # images From d3589db8401a3573aac8b165ea66b14a11da37c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 May 2021 22:03:29 +0200 Subject: [PATCH 250/518] Update precompile_*.jl file (#3484) Co-authored-by: daschw --- .../precompile/precompile_Plots.jl | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index f341aa5f..2fe0132d 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -81,6 +81,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -91,14 +92,18 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) + Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRange{Int64, Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -142,6 +147,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -230,13 +236,19 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -249,6 +261,7 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) @@ -256,6 +269,7 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -277,8 +291,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Vector{Float64},Vector{Float64},UnitRange{Int64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) @@ -302,8 +314,6 @@ function _precompile_() Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(make_steps),Vector{Float64},Symbol,Bool}) - Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -313,7 +323,6 @@ function _precompile_() Base.precompile(Tuple{typeof(partialcircle),Int64,Float64,Int64}) Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) - Base.precompile(Tuple{typeof(processFontArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) @@ -321,18 +330,22 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(setindex!),GridLayout,EmptyLayout,Int64,Int64}) + Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -344,6 +357,11 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) @@ -384,4 +402,9 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end + let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any, N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any, N} where N,)) + end + end end From 97036e689e9e7a53a89779b4cc5d70fd10231342 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 17 May 2021 09:43:23 +0200 Subject: [PATCH 251/518] Create .zenodo.json (#3482) * Create .zenodo.json * Update .zenodo.json Co-authored-by: Daniel Schwabeneder * add members, classify contributors * Apply suggestions from code review Co-authored-by: Daniel Schwabeneder * add all names Co-authored-by: Daniel Schwabeneder --- .zenodo.json | 428 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 428 insertions(+) create mode 100644 .zenodo.json diff --git a/.zenodo.json b/.zenodo.json new file mode 100644 index 00000000..5f7fd3be --- /dev/null +++ b/.zenodo.json @@ -0,0 +1,428 @@ +{ + "title": "Plots.jl", + "license": "MIT", + "creators": [ + { + "affiliation": "Elemental Cognition", + "name": "Tom Breloff" + } + ], + "contributors":[ + { + "affiliation": "TU Wien", + "name": "Daniel Schwabeneder", + "orcid": "0000-0002-0412-0777", + "type": "ProjectLeader" + }, + { + "affiliation": "GLOBE Institute", + "name": "Michael Krabbe Borregaard", + "type": "ProjectLeader" + }, + { + "affiliation": "Leibniz Universit\u00e4t Hannover", + "name": "Simon Christ", + "orcid": "0000-0002-5866-1472", + "type": "ProjectLeader" + }, + { + "affiliation": "Forschungszentrum J\u00fclich", + "name": "Josef Heinen", + "orcid": "0000-0001-6509-1925", + "type": "ProjectMember" + }, + { + "name": "Yuval", + "type": "Other" + }, + { + "name": "Andrew Palugniok", + "type": "ProjectMember" + }, + { + "affiliation": "@beacon-biosignals", + "name": "Simon Danisch", + "type": "Other" + }, + { + "affiliation": "Veos Digital (https://veos.digital/)", + "name": "Pietro Vertechi", + "type": "ProjectMember" + }, + { + "affiliation": "Korea Advanced Inst. of Science and Technology (KAIST)", + "name": "Zhanibek Omarov", + "type": "ProjectMember", + "orcid": "0000-0002-8783-8791" + }, + { + "name": "Thatcher Chamberlin", + "type": "Other" + }, + { + "name": "@ma-laforge", + "type": "ProjectMember" + }, + { + "affiliation": "Massachusetts Institute of Technology", + "name": "Christopher Rackauckas", + "orcid": "0000-0001-5850-0663", + "type": "Other" + }, + { + "affiliation": "Max Planck Institute for Physics", + "name": "Oliver Schulz", + "type": "Other" + }, + { + "affiliation": "@JuliaComputing", + "name": "Sebastian Pfitzner", + "type": "Other" + }, + { + "name": "Takafumi Arakaki", + "type": "Other" + }, + { + "affiliation": "University of Manitoba", + "name": "Amin Yahyaabadi", + "type": "Other" + }, + { + "name": "Jack Devine", + "type": "Other" + }, + { + "name": "Sebastian Pech", + "type": "Other" + }, + { + "affiliation": "@JuliaComputing", + "name": "Patrick Kofod Mogensen", + "type": "Other", + "orcid": "0000-0002-4910-1932" + }, + { + "name": "Samuel S. Watson", + "type": "Other" + }, + { + "affiliation": "UC Davis", + "name": "Naoki Saito", + "orcid": "0000-0001-5234-4719", + "type": "Other" + }, + { + "affiliation": "University of Southern California (USC)", + "name": "Benoit Pasquier", + "orcid": "0000-0002-3838-5976", + "type": "Other" + }, + { + "affiliation": "NTNU Trondheim", + "name": "Ronny Bergmann", + "orcid": "0000-0001-8342-7218", + "type": "Other" + }, + { + "name": "Andy Nowacki", + "affiliation": "University of Leeds", + "orcid": "0000-0001-7669-7383", + "type": "Other" + }, + { + "name": "Ian Butterworth", + "type": "Other" + }, + { + "affiliation": "Lund University", + "name": "David Gustavsson", + "type": "Other" + }, + { + "name": "Anshul Singhvi", + "type": "Other" + }, + { + "name": "david-macmahon", + "type": "Other" + }, + { + "name": "Fredrik Ekre", + "type": "Other" + }, + { + "name": "Maaz Bin Tahir Saeed", + "type": "Other" + }, + { + "name": "Kristoffer Carlsson", + "type": "Other" + }, + { + "name": "Will Kearney", + "type": "Other" + }, + { + "name": "Niklas Korsbo", + "type": "Other" + }, + { + "name": "Miles Lucas", + "type": "Other" + }, + { + "name": "@Godisemo", + "type": "Other" + }, + { + "name": "Florian Oswald", + "type": "Other" + }, + { + "name": "Diego Javier Zea", + "type": "Other" + }, + { + "name": "@WillRam", + "type": "Other" + }, + { + "name": "Fedor Bezrukov", + "type": "Other" + }, + { + "name": "Spencer Lyon", + "type": "Other" + }, + { + "name": "Darwin Darakananda", + "type": "Other" + }, + { + "name": "Lukas Hauertmann", + "type": "Other" + }, + { + "name": "Huckleberry Febbo", + "type": "Other" + }, + { + "name": "@H-M-H", + "type": "Other" + }, + { + "name": "Josh Day", + "type": "Other" + }, + { + "name": "@wfgra", + "type": "Other" + }, + { + "name": "Sheehan Olver", + "type": "Other" + }, + { + "name": "Jerry Ling", + "type": "Other" + }, + { + "name": "Jks Liu", + "type": "Other" + }, + { + "name": "Seth Axen", + "type": "Other" + }, + { + "name": "@o01eg", + "type": "Other" + }, + { + "name": "Sebastian Micluța-Câmpeanu", + "type": "Other" + }, + { + "name": "Tim Holy", + "type": "Other" + }, + { + "name": "Tony Kelman", + "type": "Other" + }, + { + "name": "Antoine Levitt", + "type": "Other" + }, + { + "name": "Iblis Lin", + "type": "Other" + }, + { + "name": "Harry Scholes", + "type": "Other" + }, + { + "name": "@djsegal", + "type": "Other" + }, + { + "name": "Goran Nakerst", + "type": "Other" + }, + { + "name": "Felix Hagemann", + "type": "Other" + }, + { + "name": "Matthieu Gomez", + "type": "Other" + }, + { + "name": "@biggsbiggsby", + "type": "Other" + }, + { + "name": "Jonathan Anderson", + "type": "Other" + }, + { + "name": "Michael Kraus", + "type": "Other" + }, + { + "name": "Carlo Lucibello", + "type": "Other" + }, + { + "name": "Robin Deits", + "type": "Other" + }, + { + "name": "Misha Mkhasenko", + "type": "Other" + }, + { + "name": "Benoît Legat", + "type": "Other" + }, + { + "name": "Steven G. Johnson", + "type": "Other" + }, + { + "name": "John Verzani", + "type": "Other" + }, + { + "name": "Mattias Fält", + "type": "Other" + }, + { + "name": "Rashika Karki", + "type": "Other" + }, + { + "name": "Morten Piibeleht", + "type": "Other" + }, + { + "name": "Filippo Vicentini", + "type": "Other" + }, + { + "name": "David Anthoff", + "type": "Other" + }, + { + "name": "Leon Wabeke", + "type": "Other" + }, + { + "name": "Yusuke Kominami", + "type": "Other" + }, + { + "name": "Oscar Dowson", + "type": "Other" + }, + { + "name": "Max G", + "type": "Other" + }, + { + "name": "Fabian Greimel", + "type": "Other" + }, + { + "name": "Jérémy", + "type": "Other" + }, + { + "name": "Pearl Li", + "type": "Other" + }, + { + "name": "David P. Sanders", + "type": "Other" + }, + { + "name": "Asbjørn Nilsen Riseth", + "type": "Other" + }, + { + "name": "Jan Weidner", + "type": "Other" + }, + { + "name": "@jakkor2", + "type": "Other" + }, + { + "name": "Pablo Zubieta", + "type": "Other" + }, + { + "name": "Hamza Yusuf Çakır", + "type": "Other" + }, + { + "name": "John Rinehart", + "type": "Other" + }, + { + "name": "Martin Biel", + "type": "Other" + }, + { + "name": "Moritz Schauer", + "type": "Other" + }, + { + "name": "Moesè Giodano", + "type": "Other" + }, + { + "name": "@olegshtch", + "type": "Other" + }, + { + "name": "Leon Shen", + "type": "Other" + }, + { + "name": "Jeff Fessler", + "type": "Other" + }, + { + "name": "@hustf", + "type": "Other" + }, + { + "name": "Asim H Dar", + "type": "Other" + } + ], + "resource_type": "software" +} From 058983165e22befbdb86886b15d1c6e8d1316614 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 17 May 2021 09:55:47 +0200 Subject: [PATCH 252/518] change DOI [skip ci] --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 88d989e5..a097683e 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,8 @@ [![][docs-img]][docs-url] [![Codecov](https://codecov.io/gh/JuliaPlots/Plots.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/JuliaPlots/Plots.jl) -[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4725318.svg)](https://doi.org/10.5281/zenodo.4725318) +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4725317.svg)](https://doi.org/10.5281/zenodo.4725317) +This is the DOI for all Versions, please follow the link to get the DOI for a specific version. #### Created by Tom Breloff (@tbreloff) From a7d6e93af395ecab601b442f5bd5a30462343a06 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 17 May 2021 09:57:18 +0200 Subject: [PATCH 253/518] 1.15.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 0b323aac..5f5afd46 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.14.0" +version = "1.15.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 4069b735636fd79835249781d9883eaba36616a7 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 17 May 2021 17:58:12 +0200 Subject: [PATCH 254/518] Update .zenodo.json --- .zenodo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.zenodo.json b/.zenodo.json index 5f7fd3be..e23f10bc 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -424,5 +424,5 @@ "type": "Other" } ], - "resource_type": "software" + "upload_type": "software" } From a1311e5c60efce3afab1115f37f0e7d8834fdd4b Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 18 May 2021 18:21:45 +0200 Subject: [PATCH 255/518] all the names [skip ci] --- .zenodo.json | 323 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 291 insertions(+), 32 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index e23f10bc..e6cd78b4 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,107 +1,107 @@ { "title": "Plots.jl", - "license": "MIT", + "license": "MIT", "creators": [ { - "affiliation": "Elemental Cognition", + "affiliation": "Elemental Cognition", "name": "Tom Breloff" } ], "contributors":[ { - "affiliation": "TU Wien", + "affiliation": "TU Wien", "name": "Daniel Schwabeneder", "orcid": "0000-0002-0412-0777", "type": "ProjectLeader" - }, + }, { - "affiliation": "GLOBE Institute", + "affiliation": "GLOBE Institute", "name": "Michael Krabbe Borregaard", "type": "ProjectLeader" - }, + }, { - "affiliation": "Leibniz Universit\u00e4t Hannover", + "affiliation": "Leibniz Universit\u00e4t Hannover", "name": "Simon Christ", "orcid": "0000-0002-5866-1472", "type": "ProjectLeader" - }, + }, { - "affiliation": "Forschungszentrum J\u00fclich", + "affiliation": "Forschungszentrum J\u00fclich", "name": "Josef Heinen", "orcid": "0000-0001-6509-1925", "type": "ProjectMember" - }, + }, { "name": "Yuval", "type": "Other" - }, + }, { "name": "Andrew Palugniok", "type": "ProjectMember" - }, + }, { - "affiliation": "@beacon-biosignals", + "affiliation": "@beacon-biosignals", "name": "Simon Danisch", "type": "Other" - }, + }, { - "affiliation": "Veos Digital (https://veos.digital/)", + "affiliation": "Veos Digital (https://veos.digital/)", "name": "Pietro Vertechi", "type": "ProjectMember" - }, + }, { "affiliation": "Korea Advanced Inst. of Science and Technology (KAIST)", "name": "Zhanibek Omarov", "type": "ProjectMember", "orcid": "0000-0002-8783-8791" - }, + }, { "name": "Thatcher Chamberlin", "type": "Other" - }, + }, { "name": "@ma-laforge", "type": "ProjectMember" - }, + }, { - "affiliation": "Massachusetts Institute of Technology", + "affiliation": "Massachusetts Institute of Technology", "name": "Christopher Rackauckas", "orcid": "0000-0001-5850-0663", "type": "Other" - }, + }, { - "affiliation": "Max Planck Institute for Physics", + "affiliation": "Max Planck Institute for Physics", "name": "Oliver Schulz", "type": "Other" - }, + }, { - "affiliation": "@JuliaComputing", + "affiliation": "@JuliaComputing", "name": "Sebastian Pfitzner", "type": "Other" - }, + }, { "name": "Takafumi Arakaki", "type": "Other" - }, + }, { - "affiliation": "University of Manitoba", + "affiliation": "University of Manitoba", "name": "Amin Yahyaabadi", "type": "Other" - }, + }, { "name": "Jack Devine", "type": "Other" - }, + }, { "name": "Sebastian Pech", "type": "Other" - }, + }, { - "affiliation": "@JuliaComputing", + "affiliation": "@JuliaComputing", "name": "Patrick Kofod Mogensen", "type": "Other", "orcid": "0000-0002-4910-1932" - }, + }, { "name": "Samuel S. Watson", "type": "Other" @@ -422,6 +422,265 @@ { "name": "Asim H Dar", "type": "Other" + }, + { + "name": "@8uurg", + "type": "Other" + }, + { + "name": "Abel Siqueira", + "type": "Other" + }, + { + "name": "Adrian Dawid", + "type": "Other" + }, + { + "name": "Alberto Lusiani", + "type": "Other" + }, + { + "name": "Balázs Mezei", + "type": "Other" + }, + { + "name": "Ben Ide", + "type": "Other" + }, + { + "name": "Benjamin Lungwitz", + "type": "Other" + }, + { + "name": "Bernd Riederer", + "type": "Other" + }, + { + "name": "Christina Lee", + "type": "Other" + }, + { + "name": "Christof Stocker", + "type": "Other" + }, + { + "name": "Christoph Finkensiep", + "type": "Other" + }, + { + "name": "@Cornelius-G", + "type": "Other" + }, + { + "name": "Daniel Høegh", + "type": "Other" + }, + { + "name": "Denny Biasiolli", + "type": "Other" + }, + { + "name": "Dieter Castel", + "type": "Other" + }, + { + "name": "Elliot Saba", + "type": "Other" + }, + { + "name": "Fengyang Wang", + "type": "Other" + }, + { + "name": "Fons van der Plas", + "type": "Other" + }, + { + "name": "Fredrik Bagge Carlson", + "type": "Other" + }, + { + "name": "Graham Smith", + "type": "Other" + }, + { + "name": "Hayato Ikoma", + "type": "Other" + }, + { + "name": "Hessam Mehr", + "type": "Other" + }, + { + "name": "@InfiniteChai", + "type": "Other" + }, + { + "name": "Jack Dunn", + "type": "Other" + }, + { + "name": "Jeff Bezanson", + "type": "Other" + }, + { + "name": "Jeff Eldredge", + "type": "Other" + }, + { + "name": "Jinay Jain", + "type": "Other" + }, + { + "name": "Johan Blåbäck", + "type": "Other" + }, + { + "name": "@jmert", + "type": "Other" + }, + { + "name": "Lakshya Khatri", + "type": "Other" + }, + { + "name": "Lia Siegelmann", + "type": "Other" + }, + { + "name": "@marekkukan-tw", + "type": "Other" + }, + { + "affiliation": "ETH Zurich", + "name": "Mauro Werder", + "type": "Other", + "orcid": "0000-0003-0137-9377" + }, + { + "name": "Maxim Grechkin", + "type": "Other" + }, + { + "name": "Michael Cawte", + "type": "Other" + }, + { + "name": "@milesfrain", + "type": "Other" + }, + { + "name": "Nicholas Bauer", + "type": "Other" + }, + { + "name": "Nicolau Leal Werneck", + "type": "Other" + }, + { + "name": "@nilshg", + "type": "Other" + }, + { + "name": "Oliver Evans", + "type": "Other" + }, + { + "name": "Peter Gagarinov", + "type": "Other" + }, + { + "name": "Páll Haraldsson", + "type": "Other" + }, + { + "name": "Rik Huijzer", + "type": "Other" + }, + { + "name": "Romain Franconville", + "type": "Other" + }, + { + "name": "Ronan Pigott", + "type": "Other" + }, + { + "name": "Roshan Shariff", + "type": "Other" + }, + { + "name": "Scott Thomas", + "type": "Other" + }, + { + "name": "Sebastian Rollén", + "type": "Other" + }, + { + "name": "Seth Bromberger", + "type": "Other" + }, + { + "name": "Siva Swaminathan", + "type": "Other" + }, + { + "name": "Tim DuBois", + "type": "Other" + }, + { + "name": "Travis DePrato", + "type": "Other" + }, + { + "name": "Will Thompson", + "type": "Other" + }, + { + "name": "Yakir Luc Gagnon", + "type": "Other" + }, + { + "name": "Benjamin Chislett", + "type": "Other" + }, + { + "name": "@hhaensel", + "type": "Other" + }, + { + "name": "@improbable22", + "type": "Other" + }, + { + "name": "Johannes Fleck", + "type": "Other" + }, + { + "name": "Peter Czaban", + "type": "Other" + }, + { + "name": "@innerlee", + "type": "Other" + }, + { + "name": "Mats Cronqvist", + "type": "Other" + }, + { + "name": "Shi Pengcheng", + "type": "Other" + }, + { + "name": "@wg030", + "type": "Other" + }, + { + "affiliation": "University of Cambridge", + "name": "Will Tebbutt", + "type": "Other" } ], "upload_type": "software" From de7717b85f25d53516b43dd816412bdced137ef1 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 19 May 2021 08:27:41 +0200 Subject: [PATCH 256/518] Fix too many legend entries (#3511) * add test * fix legend entries --- src/backends/pgfplotsx.jl | 4 ++-- test/test_pgfplotsx.jl | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index eb995880..d32a8779 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -229,7 +229,7 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) "colorbar style" => colorbar_style, ) else - push!(axis_opt, "colorbar" => "false") + push!(axis_opt, "colorbar" => "false") end if RecipesPipeline.is3d(sp) azim, elev = sp[:camera] @@ -452,7 +452,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o ), ) end - pgfx_add_legend!(axis, series, opt, i) + pgfx_add_legend!(axis, series, opt, k) end # for segments # get that last marker if !isnothing(opt[:y]) && !any(isnan, opt[:y]) && opt[:markershape] isa AVec diff --git a/test/test_pgfplotsx.jl b/test/test_pgfplotsx.jl index b105de42..18fd68e5 100644 --- a/test/test_pgfplotsx.jl +++ b/test/test_pgfplotsx.jl @@ -338,6 +338,16 @@ end plots = filter(x -> x isa PGFPlotsX.Plot, axis.contents) @test length(plots) == 9 end # testset + @testset "Groups and Subplots" begin + group = rand(map((i->begin + "group $(i)" + end), 1:4), 100) + pl = plot(rand(100), layout = @layout([a b; c]), group = group, linetype = [:bar :scatter :steppre], linecolor = :match) + Plots._update_plot_object(pl) + axis = Plots.pgfx_axes(pl.o)[1] + legend_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis.contents) + @test length(legend_entries) == 2 + end end # testset @testset "Extra kwargs" begin From c0e50588d301ea6cc87beb5b2a35a89e0b07784a Mon Sep 17 00:00:00 2001 From: Fons van der Plas Date: Wed, 19 May 2021 08:28:03 +0200 Subject: [PATCH 257/518] Minor cleanup plotlyjs (#3510) --- src/backends/plotly.jl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index a5381ee9..ab40f7a8 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -953,8 +953,7 @@ function plotly_html_body(plt, style = nothing)
""" @@ -963,7 +962,7 @@ end function js_body(plt::Plot, uuid) js = """ - PLOT = document.getElementById('$(uuid)'); + var PLOT = document.getElementById('$(uuid)'); Plotly.plot(PLOT, $(plotly_series_json(plt)), $(plotly_layout_json(plt))); """ end From ca8e775b8392a257a151e59942fd44f6798ee6a1 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 19 May 2021 08:29:08 +0200 Subject: [PATCH 258/518] 1.15.1[skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 5f5afd46..e5f94a99 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.15.0" +version = "1.15.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 1ecec912a16b581f01d71c8848f6309d4ffd82fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 May 2021 08:53:17 +0200 Subject: [PATCH 259/518] Update precompile_*.jl file (#3508) [skip ci] Co-authored-by: BeastyBlacksmith --- .../SnoopCompile/precompile/precompile_Plots.jl | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 2fe0132d..a4107f59 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -170,7 +170,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill), Tuple{Int64, Bool, Tuple{Int64, Symbol}}},typeof(plot),Function,Function,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg), Tuple{Tuple{Int64, Symbol, Symbol}, Tuple{Shape{Float64, Float64}, Int64, RGBA{Float64}}, Symbol, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Bool}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}, Int64, Bool}},typeof(plot),Vector{Float64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :lab, :bg, :xlim, :ylim, :seriestype), Tuple{Tuple{Int64, Symbol}, Matrix{String}, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :markersize, :lab, :bg, :xlim, :ylim, :seriestype), Tuple{Matrix{Symbol}, Int64, Matrix{String}, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker,), Tuple{Bool}},typeof(plot),Vector{Union{Missing, Int64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:marker_z, :color, :legend, :seriestype), Tuple{typeof(+), Symbol, Bool, Symbol}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:markershape, :markersize, :marker_z, :line_z, :linewidth), Tuple{Matrix{Symbol}, Matrix{Int64}, Matrix{Int64}, Matrix{Int64}, Matrix{Int64}}},typeof(plot),Matrix{Float64}}) @@ -237,18 +237,14 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -261,7 +257,6 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) @@ -312,6 +307,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(is_marker_supported),GRBackend,Vector{Symbol}}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) @@ -337,15 +333,13 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Float64, Int64}}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -402,6 +396,11 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end + let fbody = try __lookup_kwbody__(which(vline!, (Any,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(vline!),Any,)) + end + end let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any, N} where N,)) From 827462dc215128269e3fe520b14fe3aadabdc3a5 Mon Sep 17 00:00:00 2001 From: BerndR <20151553+bernd1995@users.noreply.github.com> Date: Wed, 19 May 2021 20:33:33 +0200 Subject: [PATCH 260/518] NaN checking in backends/gr.jl (#3514) * Updated .zenodo.json infos * resolved NaN-checking --- .zenodo.json | 4 +++- src/backends/gr.jl | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index e6cd78b4..91bd3d82 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -452,8 +452,10 @@ "type": "Other" }, { + "affiliation": "University of Graz", "name": "Bernd Riederer", - "type": "Other" + "type": "Other", + "orcid": "0000-0001-8390-0087" }, { "name": "Christina Lee", diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 161ac190..4083444e 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -401,7 +401,7 @@ end function gr_nans_to_infs!(z) for (i,zi) in enumerate(z) - if zi == NaN + if isnan(zi) z[i] = Inf end end From ce530ef518a78a4e17e73d25c61b6e1e116448d4 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 20 May 2021 20:42:31 +0200 Subject: [PATCH 261/518] fix vector of shapes (#3517) --- src/components.jl | 2 +- src/recipes.jl | 6 +++--- test/test_components.jl | 11 +++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/components.jl b/src/components.jl index 34cafdc4..7520ae77 100644 --- a/src/components.jl +++ b/src/components.jl @@ -43,7 +43,7 @@ function coords(shape::Shape) end #coords(shapes::AVec{Shape}) = unzip(map(coords, shapes)) -function coords(shapes::AVec{Shape}) +function coords(shapes::AVec{<:Shape}) c = map(coords, shapes) x = [q[1] for q in c] y = [q[2] for q in c] diff --git a/src/recipes.jl b/src/recipes.jl index 952bf0aa..c2911db9 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -1428,9 +1428,9 @@ end coords(shape) end -@recipe function f(shapes::AVec{Shape}) +@recipe function f(shapes::AVec{<:Shape}) seriestype --> :shape - # For backwards compatibility, column vectors of segmenting attributes are + # For backwards compatibility, column vectors of segmenting attributes are # interpreted as having one element per shape for attr in union(_segmenting_array_attributes, _segmenting_vector_attributes) v = get(plotattributes, attr, nothing) @@ -1443,7 +1443,7 @@ end coords(shapes) end -@recipe function f(shapes::AMat{Shape}) +@recipe function f(shapes::AMat{<:Shape}) seriestype --> :shape for j in axes(shapes, 2) @series coords(vec(shapes[:, j])) diff --git a/test/test_components.jl b/test/test_components.jl index 2fb7355b..77510181 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -4,6 +4,7 @@ using Plots, Test @testset "Type" begin square = Shape([(0,0.0),(1,0.0),(1,1.0),(0,1.0)]) @test isa(square, Shape{Int64, Float64}) + @test coords(square) isa Tuple{Vector{S}, Vector{T}} where {T,S} end @testset "Copy" begin @@ -47,6 +48,16 @@ using Plots, Test @test square2.x ≈ coords[1,:] @test square2.y ≈ coords[2,:] end + + @testset "Plot" begin + ang = range(0, 2π, length = 60) + ellipse(x, y, w, h) = Shape(w*sin.(ang).+x, h*cos.(ang).+y) + myshapes = [ellipse(x,rand(),rand(),rand()) for x = 1:4] + @test coords(myshapes) isa Tuple{Vector{Vector{S}}, Vector{Vector{T}}} where {T,S} + local p + @test_nowarn p = plot(myshapes) + @test p[1][1][:seriestype] == :shape + end end @testset "Brush" begin From 8f055fef3d25892a307007ac9962b97147e7a0f2 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 20 May 2021 20:43:29 +0200 Subject: [PATCH 262/518] 1.15.2 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index e5f94a99..2c0b4909 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.15.1" +version = "1.15.2" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From e43f3ee373447062861e6c0d45077eec17f58ed1 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 2 Jun 2021 08:24:42 +0200 Subject: [PATCH 263/518] Drop compat for older GR versions (#3526) --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 2c0b4909..072d01c2 100644 --- a/Project.toml +++ b/Project.toml @@ -36,7 +36,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" -GR = "0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.57" +GR = "0.53, 0.54, 0.55, 0.57" GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" Latexify = "0.14, 0.15" From 77ba81de19f59288d82e4d5136136a88013bc50a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Jun 2021 16:14:02 +0200 Subject: [PATCH 264/518] Update precompile_*.jl file (#3530) [skip ci] Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index a4107f59..36352b16 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -102,8 +102,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -118,7 +116,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) @@ -147,7 +144,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -219,11 +215,13 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:xerror}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Vector{ComplexF64}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol, Any},Type{Val{:contour}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -236,9 +234,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -261,6 +259,7 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) @@ -277,7 +276,10 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Float64,Float64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) + Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) @@ -289,12 +291,13 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) + Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -307,7 +310,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(is_marker_supported),GRBackend,Vector{Symbol}}) + Base.precompile(Tuple{typeof(intersection_point),Float64,Float64,Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(layout_args),Int64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) @@ -333,7 +336,6 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Float64, Int64}}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) @@ -396,14 +398,4 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end - let fbody = try __lookup_kwbody__(which(vline!, (Any,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(vline!),Any,)) - end - end - let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any, N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any, N} where N,)) - end - end end From 697e5a87cf637a7afa761aae69a56f4c3719c7e4 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 2 Jun 2021 16:29:59 +0200 Subject: [PATCH 265/518] 1.15.3 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 072d01c2..37ae831c 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.15.2" +version = "1.15.3" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 5fafddb9955acb0a283457f35cf3470870095fed Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 2 Jun 2021 22:12:30 +0200 Subject: [PATCH 266/518] fix fontrotation being interpreted as fontsize (#3533) * fix convenience font functions * correct size argument --- src/utils.jl | 108 +++++++++++++++++++++++++-------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/src/utils.jl b/src/utils.jl index 7b4a093c..4356e6ed 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -57,7 +57,7 @@ struct SeriesSegment # indexes of this segement in series data vectors range::UnitRange # index into vector-valued attributes corresponding to this segment - attr_index::Int + attr_index::Int end # ----------------------------------------------------- @@ -88,11 +88,11 @@ function series_segments(series::Series, seriestype::Symbol = :path) (SeriesSegment(i:i, i) for i in r) else (SeriesSegment(i:i+1, i) for i in first(r):last(r)-1) - end + end end) else (SeriesSegment(r, 1) for r in nan_segments) - end + end warn_on_attr_dim_mismatch(series, x, y, z, segments) return segments @@ -109,7 +109,7 @@ function warn_on_attr_dim_mismatch(series, x, y, z, segments) if any(v -> !isnothing(v) && any(isnan, v), (x,y,z)) @info """Data contains NaNs or missing values, and indices of `$attr` vector do not match data indices. If you intend elements of `$attr` to apply to individual NaN-separated segements in the data, - pass each segment in a separate vector instead, and use a row vector for `$attr`. Legend entries + pass each segment in a separate vector instead, and use a row vector for `$attr`. Legend entries may be suppressed by passing an empty label. For example, plot([1:2,1:3], [[4,5],[3,4,5]], label=["y" ""], $attr=[1 2]) @@ -270,7 +270,7 @@ function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size: or `size(z) == (length(y)+1, length(x)+1))` (x & y define edges).""") end x, y = heatmap_edges(x, xscale, isedges), - heatmap_edges(y, yscale, isedges, ispolar) # special handle for `r` in polar plots + heatmap_edges(y, yscale, isedges, ispolar) # special handle for `r` in polar plots return x, y end @@ -939,67 +939,67 @@ ignorenan_extrema(plt::Plot) = (xmin(plt), xmax(plt)) # --------------------------------------------------------------- # get fonts from objects: -plottitlefont(p::Plot) = font( - p[:plot_titlefontfamily], - p[:plot_titlefontsize], - p[:plot_titlefontvalign], - p[:plot_titlefonthalign], - p[:plot_titlefontrotation], - p[:plot_titlefontcolor], +plottitlefont(p::Plot) = font(; + family = p[:plot_titlefontfamily], + pointsize = p[:plot_titlefontsize], + valign = p[:plot_titlefontvalign], + halign = p[:plot_titlefonthalign], + rotation = p[:plot_titlefontrotation], + color = p[:plot_titlefontcolor], ) -colorbartitlefont(sp::Subplot) = font( - sp[:colorbar_titlefontfamily], - sp[:colorbar_titlefontsize], - sp[:colorbar_titlefontvalign], - sp[:colorbar_titlefonthalign], - sp[:colorbar_titlefontrotation], - sp[:colorbar_titlefontcolor], +colorbartitlefont(sp::Subplot) = font(; + family = sp[:colorbar_titlefontfamily], + pointsize = sp[:colorbar_titlefontsize], + valign = sp[:colorbar_titlefontvalign], + halign = sp[:colorbar_titlefonthalign], + rotation = sp[:colorbar_titlefontrotation], + color = sp[:colorbar_titlefontcolor], ) -titlefont(sp::Subplot) = font( - sp[:titlefontfamily], - sp[:titlefontsize], - sp[:titlefontvalign], - sp[:titlefonthalign], - sp[:titlefontrotation], - sp[:titlefontcolor], +titlefont(sp::Subplot) = font(; + family = sp[:titlefontfamily], + pointsize = sp[:titlefontsize], + valign = sp[:titlefontvalign], + halign = sp[:titlefonthalign], + rotation = sp[:titlefontrotation], + color = sp[:titlefontcolor], ) -legendfont(sp::Subplot) = font( - sp[:legendfontfamily], - sp[:legendfontsize], - sp[:legendfontvalign], - sp[:legendfonthalign], - sp[:legendfontrotation], - sp[:legendfontcolor], +legendfont(sp::Subplot) = font(; + family = sp[:legendfontfamily], + pointsize = sp[:legendfontsize], + valign = sp[:legendfontvalign], + halign = sp[:legendfonthalign], + rotation = sp[:legendfontrotation], + color = sp[:legendfontcolor], ) -legendtitlefont(sp::Subplot) = font( - sp[:legendtitlefontfamily], - sp[:legendtitlefontsize], - sp[:legendtitlefontvalign], - sp[:legendtitlefonthalign], - sp[:legendtitlefontrotation], - sp[:legendtitlefontcolor], +legendtitlefont(sp::Subplot) = font(; + family = sp[:legendtitlefontfamily], + pointsize = sp[:legendtitlefontsize], + valign = sp[:legendtitlefontvalign], + halign = sp[:legendtitlefonthalign], + rotation = sp[:legendtitlefontrotation], + color = sp[:legendtitlefontcolor], ) -tickfont(ax::Axis) = font( - ax[:tickfontfamily], - ax[:tickfontsize], - ax[:tickfontvalign], - ax[:tickfonthalign], - ax[:tickfontrotation], - ax[:tickfontcolor], +tickfont(ax::Axis) = font(; + family = ax[:tickfontfamily], + pointsize = ax[:tickfontsize], + valign = ax[:tickfontvalign], + halign = ax[:tickfonthalign], + rotation = ax[:tickfontrotation], + color = ax[:tickfontcolor], ) -guidefont(ax::Axis) = font( - ax[:guidefontfamily], - ax[:guidefontsize], - ax[:guidefontvalign], - ax[:guidefonthalign], - ax[:guidefontrotation], - ax[:guidefontcolor], +guidefont(ax::Axis) = font(; + family = ax[:guidefontfamily], + pointsize = ax[:guidefontsize], + valign = ax[:guidefontvalign], + halign = ax[:guidefonthalign], + rotation = ax[:guidefontrotation], + color = ax[:guidefontcolor], ) # --------------------------------------------------------------- From fb390d187283990819e500312ffeb220c761b5f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Jun 2021 10:58:38 +0200 Subject: [PATCH 267/518] Update precompile_*.jl file (#3535) Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 49 +++---------------- 1 file changed, 7 insertions(+), 42 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 36352b16..a87b4e65 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -69,19 +69,14 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -90,18 +85,17 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) + Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :valign, :halign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),StepRange{Int64, Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -115,7 +109,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) @@ -133,7 +126,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -144,6 +136,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -177,8 +170,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -201,7 +192,6 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -215,13 +205,11 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:xerror}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Vector{ComplexF64}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol, Any},Type{Val{:contour}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -229,16 +217,14 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,Any}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol,Any}) Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) + Base.precompile(Tuple{typeof(_bin_centers),Vector{Float64}}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Int64},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Nothing},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Tuple{Float64, Float64, Float64}},Int64}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) - Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) @@ -258,12 +244,8 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(font),String,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_clims),Subplot{GRBackend},Series,Function}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -281,9 +263,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -293,9 +273,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) - Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) @@ -310,9 +288,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(intersection_point),Float64,Float64,Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -329,19 +306,12 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -353,11 +323,6 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 25b57cfb55b773bc3aac5509c49a9dd7e027c66d Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 3 Jun 2021 11:08:37 +0200 Subject: [PATCH 268/518] Run tests of GraphRecipes and StatsPlots (#3519) * run tests of StatsPlots and GraphRecipes * one environment each * correct paths --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 797cc072..45a723a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,10 @@ jobs: # Run tests - name: Run Graphical test - run: $TESTCMD --project -e 'using Pkg; Pkg.test(coverage=true);' + run: | + $TESTCMD --project -e 'using Pkg; Pkg.test(coverage=true);' + $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots");' + $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes");' - name: Codecov uses: julia-actions/julia-uploadcodecov@latest From 6a62d967519e1621ce7b07a84f7ac3d866c8d8bd Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 3 Jun 2021 17:35:42 +0200 Subject: [PATCH 269/518] axis limits = :symmetric (#2600) * allow axis-lims = :symmetric * remove show * add test --- src/axes.jl | 11 +++++++++-- test/test_axes.jl | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 3d6236fb..c7a844ef 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -533,13 +533,20 @@ function axis_limits(sp, letter, should_widen = default_should_widen(sp[Symbol(l has_user_lims = (isa(lims, Tuple) || isa(lims, AVec)) && length(lims) == 2 if has_user_lims lmin, lmax = lims - if lmin != :auto && isfinite(lmin) + if lmin == :auto + elseif isfinite(lmin) amin = lmin end - if lmax != :auto && isfinite(lmax) + if lmax == :auto + elseif isfinite(lmax) amax = lmax end end + if lims == :symmetric + aval = max(abs(amin), abs(amax)) + amin = -aval + amax = aval + end if amax <= amin && isfinite(amin) amax = amin + 1.0 end diff --git a/test/test_axes.jl b/test/test_axes.jl index d981d21a..3f2170cb 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -31,3 +31,8 @@ end @test xticks(p) == yticks(p) == zticks(p) == [ticks1, ticks2] @test xticks(p[1]) == yticks(p[1]) == zticks(p[1]) == ticks1 end + +@testset "Axis limits" begin + pl = plot(1:5, xlims=:symmetric, widen = false) + @test Plots.xlims(pl) == (-5, 5) +end From 700b5782ec108baae389bcda68f88eacf98bd745 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Jun 2021 17:36:51 +0200 Subject: [PATCH 270/518] Update precompile_*.jl file (#3536) Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index a87b4e65..658b454a 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -69,14 +69,19 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -85,7 +90,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -97,6 +105,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(pie)),Any,typeof(pie),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Vector{GeometryBasics.Point2{Float64}}}) @@ -109,6 +118,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) @@ -126,6 +136,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -136,7 +147,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -170,6 +180,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -192,6 +204,7 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -200,6 +213,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -217,13 +231,15 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,Any}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol,Any}) Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) - Base.precompile(Tuple{typeof(_bin_centers),Vector{Float64}}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Int64},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Nothing},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Vector{Tuple{Float64, Float64, Float64}},Int64}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) @@ -239,18 +255,22 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(convertLegendValue),Symbol}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,Base.OneTo{Int64}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -263,7 +283,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -273,9 +293,11 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -289,7 +311,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -299,6 +321,7 @@ function _precompile_() Base.precompile(Tuple{typeof(partialcircle),Int64,Float64,Int64}) Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) + Base.precompile(Tuple{typeof(processFillArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) @@ -306,12 +329,19 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -323,6 +353,11 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 601df0c9a970aa8377289d269777e6a93b827242 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 3 Jun 2021 19:00:06 +0200 Subject: [PATCH 271/518] GR: allow explicit guidefontrotation (#3529) Co-authored-by: t-bltg --- .zenodo.json | 4 ++++ src/backends/gr.jl | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.zenodo.json b/.zenodo.json index 91bd3d82..bd0e18f1 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -683,6 +683,10 @@ "affiliation": "University of Cambridge", "name": "Will Tebbutt", "type": "Other" + }, + { + "name": "@t-bltg", + "type": "Other" } ], "upload_type": "software" diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 4083444e..acfc1829 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1510,8 +1510,10 @@ function gr_label_axis(sp, letter, viewport_plotarea) GR.savestate() gr_set_font(guidefont(axis), sp) guide_position = axis[:guide_position] + angle = float(axis[:guidefontrotation]) # github.com/JuliaPlots/Plots.jl/issues/3089 if letter === :y - GR.setcharup(-1, 0) + angle += 180. # default angle = 0. should yield GR.setcharup(-1, 0) i.e. 180° + GR.setcharup(cosd(angle), sind(angle)) ypos = gr_view_yposition(viewport_plotarea, position(axis[:guidefontvalign])) yalign = alignment(axis[:guidefontvalign]) if guide_position === :right || (guide_position == :auto && mirror) @@ -1522,6 +1524,8 @@ function gr_label_axis(sp, letter, viewport_plotarea) xpos = viewport_plotarea[1] - 0.03 - !mirror * gr_axis_width(sp, axis) end else + angle += 90. # default angle = 0. should yield GR.setcharup(0, 1) i.e. 90° + GR.setcharup(cosd(angle), sind(angle)) xpos = gr_view_xposition(viewport_plotarea, position(axis[:guidefonthalign])) xalign = alignment(axis[:guidefonthalign]) if guide_position === :top || (guide_position == :auto && mirror) From 9f51b962690e4d881c6b58529c20482e36ec01ee Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 3 Jun 2021 19:00:39 +0200 Subject: [PATCH 272/518] 1.16.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 37ae831c..e377230e 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.15.3" +version = "1.16.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From d1373d8b89fb434c796376d3af04d2fdeb1491b3 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 4 Jun 2021 15:36:40 +0200 Subject: [PATCH 273/518] fix fontfamily (#3542) * fix fontfamily * Update test_defaults.jl --- src/components.jl | 2 +- test/runtests.jl | 1 + test/test_defaults.jl | 6 ++++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components.jl b/src/components.jl index 7520ae77..51914ffa 100644 --- a/src/components.jl +++ b/src/components.jl @@ -288,7 +288,7 @@ function font(args...;kw...) for symbol in keys(kw) if symbol == :family - family = kw[:family] + family = string(kw[:family]) elseif symbol == :pointsize pointsize = kw[:pointsize] elseif symbol == :halign diff --git a/test/runtests.jl b/test/runtests.jl index d13ad4bb..2383a931 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,3 +1,4 @@ +using Plots: guidefont import ImageMagick using VisualRegressionTests using Plots diff --git a/test/test_defaults.jl b/test/test_defaults.jl index 96c0ac44..9ce50738 100644 --- a/test/test_defaults.jl +++ b/test/test_defaults.jl @@ -1,10 +1,12 @@ using Plots, Test -const PLOTS_DEFAULTS = Dict(:theme => :wong2) +const PLOTS_DEFAULTS = Dict(:theme => :wong2, :fontfamily => :palantino) Plots.__init__() @testset "Loading theme" begin - @test plot(1:5)[1][1][:seriescolor] == RGBA(colorant"black") + pl = plot(1:5) + @test pl[1][1][:seriescolor] == RGBA(colorant"black") + @test guidefont(pl[1][:xaxis]).family == "palantino" end empty!(PLOTS_DEFAULTS) From 4723c513be603888e2673dd23bb3360ce22b77be Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 4 Jun 2021 15:39:51 +0200 Subject: [PATCH 274/518] 1.16.1 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index e377230e..4d36500a 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.0" +version = "1.16.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From d51059f0e93ecc8f767f07298d47a6ad7b51ba63 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 4 Jun 2021 17:08:33 +0200 Subject: [PATCH 275/518] set projection for 3dquivers (#3544) * set projection for 3dquivers * fix test --- src/pipeline.jl | 4 ++-- test/test_axes.jl | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index c360649b..d87c5836 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -313,7 +313,7 @@ function _prepare_subplot(plt::Plot{T}, plotattributes::AKW) where {T} st = _override_seriestype_check(plotattributes, st) # change to a 3d projection for this subplot? - if RecipesPipeline.needs_3d_axes(st) + if RecipesPipeline.needs_3d_axes(st) || (st == :quiver && plotattributes[:z] !== nothing) sp.attr[:projection] = "3d" end @@ -329,7 +329,7 @@ function _override_seriestype_check(plotattributes::AKW, st::Symbol) # do we want to override the series type? if !RecipesPipeline.is3d(st) && !(st in (:contour, :contour3d, :quiver)) z = plotattributes[:z] - if !isa(z, Nothing) && + if z !== nothing && (size(plotattributes[:x]) == size(plotattributes[:y]) == size(z)) st = (st == :scatter ? :scatter3d : :path3d) plotattributes[:seriestype] = st diff --git a/test/test_axes.jl b/test/test_axes.jl index 3f2170cb..78ca09ac 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -36,3 +36,8 @@ end pl = plot(1:5, xlims=:symmetric, widen = false) @test Plots.xlims(pl) == (-5, 5) end + +@testset "3D Axis" begin + ql = quiver([1, 2], [2, 1], [3, 4], quiver = ([1, -1], [0, 0], [1, -0.5]), arrow=true) + @test ql[1][:projection] == "3d" +end From d0d95c6cc78455bd48c5a0ae4c4d41f8cd8a68c1 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 4 Jun 2021 17:09:25 +0200 Subject: [PATCH 276/518] 1.16.2 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 4d36500a..cfdeea5a 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.1" +version = "1.16.2" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 387f9180804d868ca76d96786d0a900415082e66 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 4 Jun 2021 17:29:13 +0200 Subject: [PATCH 277/518] [skip ci] --- .github/ISSUE_TEMPLATE/bug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index 4d25a266..236bcb9a 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -28,5 +28,5 @@ inspectdr | | | ### Versions Plots.jl version: -Backend version (`]st -m`): +Backend version (`]st -m `): Output of `versioninfo()`: From 14b3852060155122db6252aadb65cd65929bcf6d Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 4 Jun 2021 22:09:51 +0200 Subject: [PATCH 278/518] add :symmetric docs --- src/arg_desc.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index 67411988..3bf2da5f 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -137,7 +137,11 @@ const _arg_desc = KW( # axis args :guide => "String. Axis guide (label).", :guide_position => "Symbol. Position of axis guides: :top, :bottom, :left or :right", -:lims => "NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0]", +:lims => """ + NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). + `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0] + `:symmetric` sets the limits to be symmetric around zero. + """, :ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", :scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", :rotation => "Number. Degrees rotation of tick labels.", From cc290818d72c759855f5ec4c575a12deeeee05ad Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 7 Jun 2021 15:55:43 +0200 Subject: [PATCH 279/518] fix setting marker = :none without seriestype (#3550) --- src/args.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/args.jl b/src/args.jl index d00cf8b9..06f38943 100644 --- a/src/args.jl +++ b/src/args.jl @@ -1139,7 +1139,7 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) RecipesPipeline.reset_kw!(plotattributes, :marker) if haskey(plotattributes, :markershape) plotattributes[:markershape] = _replace_markershape(plotattributes[:markershape]) - if plotattributes[:markershape] == :none && plotattributes[:seriestype] in (:scatter, :scatterbins, :scatterhist, :scatter3d) #the default should be :auto, not :none, so that :none can be set explicitly and would be respected + if plotattributes[:markershape] == :none && get(plotattributes, :seriestype, :path) in (:scatter, :scatterbins, :scatterhist, :scatter3d) #the default should be :auto, not :none, so that :none can be set explicitly and would be respected plotattributes[:markershape] = :circle end elseif anymarker From fcdb3c1c0da2bf0da9ca93634a50974102435b89 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 7 Jun 2021 18:29:36 +0200 Subject: [PATCH 280/518] remove markers from fillranges (#3553) --- src/backends/pgfplotsx.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index d32a8779..8ac657f0 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -1081,7 +1081,6 @@ end function pgfx_fillrange_series!(axis, series, series_func, i, fillrange, rng) fillrange_opt = PGFPlotsX.Options("line width" => "0", "draw opacity" => "0") fillrange_opt = merge(fillrange_opt, pgfx_fillstyle(series, i)) - fillrange_opt = merge(fillrange_opt, pgfx_marker(series, i)) push!(fillrange_opt, "forget plot" => nothing) opt = series.plotattributes args = RecipesPipeline.is3d(series) ? (opt[:x][rng], opt[:y][rng], opt[:z][rng]) : From 5330776040a750292864cff2d189654f8180cf21 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 7 Jun 2021 19:56:24 +0200 Subject: [PATCH 281/518] 1.16.3 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index cfdeea5a..0fbee301 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.2" +version = "1.16.3" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 019a742c848708b0c0b8c5bfdb939bfaf6131aa4 Mon Sep 17 00:00:00 2001 From: Fred Callaway Date: Mon, 7 Jun 2021 11:46:49 -0700 Subject: [PATCH 282/518] Respect :widen when passing :lims (#3552) * Respect :widen when passing :lims Previously, the limits were not widened when passing a tuple or :round to lims (ignoring the widen argument). Fixes #3339 * Add default widen=:auto, which matches default before 43e9a342 * If widen is a Bool, it always determines whether widening occurs. * If widen is :auto (the defualt), widening occurs for appropriate seriestypes, unless lims were set manually * Update test/test_axes.jl Co-authored-by: Simon Christ * fix docs for lims and widen interaction * Update .zenodo.json * Update test/test_axes.jl xlims != ylims Co-authored-by: Simon Christ Co-authored-by: Simon Christ --- .zenodo.json | 4 ++++ src/arg_desc.jl | 6 +++++- src/args.jl | 2 +- src/axes.jl | 20 +++++++++++--------- test/test_axes.jl | 12 ++++++++++++ 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index bd0e18f1..1870811d 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -688,6 +688,10 @@ "name": "@t-bltg", "type": "Other" } + { + "name": "Fred Callaway", + "type": "Other" + } ], "upload_type": "software" } diff --git a/src/arg_desc.jl b/src/arg_desc.jl index 3bf2da5f..9ea4f463 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -141,6 +141,7 @@ const _arg_desc = KW( NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0] `:symmetric` sets the limits to be symmetric around zero. + Set widen=true to widen the specified limits (as occurs when lims are not specified). """, :ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", :scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", @@ -177,6 +178,9 @@ const _arg_desc = KW( :minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", :tick_direction => "Symbol. Direction of the ticks. `:in`, `:out` or `:none`", :showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", -:widen => "Bool. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. Defaults to `true`.", +:widen => """ + Bool or :auto. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. + Defaults to `:auto`, which widens unless limits were manually set. + """, :draw_arrow => "Bool. Draw arrow at the end of the axis.", ) diff --git a/src/args.jl b/src/args.jl index 06f38943..965f3fc2 100644 --- a/src/args.jl +++ b/src/args.jl @@ -476,7 +476,7 @@ const _axis_defaults = KW( :minorticks => false, :minorgrid => false, :showaxis => true, - :widen => true, + :widen => :auto, :draw_arrow => false, ) diff --git a/src/axes.jl b/src/axes.jl index c7a844ef..647c4b2c 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -504,17 +504,19 @@ end const _widen_seriestypes = (:line, :path, :steppre, :stepmid, :steppost, :sticks, :scatter, :barbins, :barhist, :histogram, :scatterbins, :scatterhist, :stepbins, :stephist, :bins2d, :histogram2d, :bar, :shape, :path3d, :scatter3d) function default_should_widen(axis::Axis) - should_widen = false - if !(is_2tuple(axis[:lims]) || axis[:lims] == :round) - for sp in axis.sps - for series in series_list(sp) - if series.plotattributes[:seriestype] in _widen_seriestypes - should_widen = true - end + if axis[:widen] isa Bool + return axis[:widen] + end + # automatic behavior: widen if limits aren't specified and series type is appropriate + (is_2tuple(axis[:lims]) || axis[:lims] == :round) && return false + for sp in axis.sps + for series in series_list(sp) + if series.plotattributes[:seriestype] in _widen_seriestypes + return true end end end - should_widen + false end function round_limits(amin,amax) @@ -562,7 +564,7 @@ function axis_limits(sp, letter, should_widen = default_should_widen(sp[Symbol(l else amin, amax end - elseif should_widen && axis[:widen] + elseif should_widen widen(amin, amax, axis[:scale]) elseif lims == :round round_limits(amin,amax) diff --git a/test/test_axes.jl b/test/test_axes.jl index 78ca09ac..0c6bc0cd 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -35,6 +35,18 @@ end @testset "Axis limits" begin pl = plot(1:5, xlims=:symmetric, widen = false) @test Plots.xlims(pl) == (-5, 5) + + pl = plot(1:3) + @test Plots.xlims(pl) == Plots.widen(1,3) + + pl = plot([1.05,2.0,2.95], ylims=:round) + @test Plots.ylims(pl) == (1, 3) + + pl = plot(1:3, xlims=(1,5)) + @test Plots.xlims(pl) == (1, 5) + + pl = plot(1:3, xlims=(1,5), widen=true) + @test Plots.xlims(pl) == Plots.widen(1, 5) end @testset "3D Axis" begin From 203af856cd71ea6cd7211cfa018f01b0d0605e8b Mon Sep 17 00:00:00 2001 From: Fons van der Plas Date: Wed, 9 Jun 2021 09:01:40 +0200 Subject: [PATCH 283/518] embeddable_html (#3559) --- src/backends/plotly.jl | 2 +- src/backends/plotlyjs.jl | 2 +- src/backends/web.jl | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index ab40f7a8..457db10b 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -986,7 +986,7 @@ end function _show(io::IO, ::MIME"text/html", plt::Plot{PlotlyBackend}) - write(io, standalone_html(plt)) + write(io, embeddable_html(plt)) end diff --git a/src/backends/plotlyjs.jl b/src/backends/plotlyjs.jl index a75feb60..374bc58f 100644 --- a/src/backends/plotlyjs.jl +++ b/src/backends/plotlyjs.jl @@ -34,7 +34,7 @@ _show(io::IO, mime::MIME"application/vnd.plotly.v1+json", plt::Plot{PlotlyJSBack html_head(plt::Plot{PlotlyJSBackend}) = plotly_html_head(plt) html_body(plt::Plot{PlotlyJSBackend}) = plotly_html_body(plt) -_show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = write(io, standalone_html(plt)) +_show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = write(io, embeddable_html(plt)) _display(plt::Plot{PlotlyJSBackend}) = display(plotlyjs_syncplot(plt)) diff --git a/src/backends/web.jl b/src/backends/web.jl index 4f827529..876858cf 100644 --- a/src/backends/web.jl +++ b/src/backends/web.jl @@ -19,6 +19,10 @@ function standalone_html(plt::AbstractPlot; title::AbstractString = get(plt.attr """ end +function embeddable_html(plt::AbstractPlot) + html_head(plt) * html_body(plt) +end + function open_browser_window(filename::AbstractString) @static if Sys.isapple() return run(`open $(filename)`) From be1c263df926923f7377e69b54e61de7c422e835 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 9 Jun 2021 15:53:52 +0200 Subject: [PATCH 284/518] no markers on fillranges (#3563) --- src/backends/pgfplotsx.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 8ac657f0..576057c6 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -1081,6 +1081,7 @@ end function pgfx_fillrange_series!(axis, series, series_func, i, fillrange, rng) fillrange_opt = PGFPlotsX.Options("line width" => "0", "draw opacity" => "0") fillrange_opt = merge(fillrange_opt, pgfx_fillstyle(series, i)) + push!(fillrange_opt, "markers" => "none") # no markers on fillranges push!(fillrange_opt, "forget plot" => nothing) opt = series.plotattributes args = RecipesPipeline.is3d(series) ? (opt[:x][rng], opt[:y][rng], opt[:z][rng]) : From cfe5ba24a624efd20efde308a8d24a80e1f822d2 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 9 Jun 2021 15:54:34 +0200 Subject: [PATCH 285/518] 1.16.4 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 0fbee301..26f2423b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.3" +version = "1.16.4" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 849d31d57ffd65642aac25c84469daed8c37ff1f Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 9 Jun 2021 16:54:55 +0200 Subject: [PATCH 286/518] markers -> mark for older pgfplots version --- src/backends/pgfplotsx.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 576057c6..438c007e 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -1081,7 +1081,7 @@ end function pgfx_fillrange_series!(axis, series, series_func, i, fillrange, rng) fillrange_opt = PGFPlotsX.Options("line width" => "0", "draw opacity" => "0") fillrange_opt = merge(fillrange_opt, pgfx_fillstyle(series, i)) - push!(fillrange_opt, "markers" => "none") # no markers on fillranges + push!(fillrange_opt, "mark" => "none") # no markers on fillranges push!(fillrange_opt, "forget plot" => nothing) opt = series.plotattributes args = RecipesPipeline.is3d(series) ? (opt[:x][rng], opt[:y][rng], opt[:z][rng]) : From 990e0f3f7f61706fedbaba09f65b670714d04d6a Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 10 Jun 2021 15:00:19 +0200 Subject: [PATCH 287/518] Better twinx (#3564) * improve twinx * add tests, disable gridlines of twinx --- src/layouts.jl | 12 ++++++++++-- test/test_axes.jl | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/layouts.jl b/src/layouts.jl index ff4d0041..ee984b35 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -775,9 +775,17 @@ end "Adds a new, empty subplot overlayed on top of `sp`, with a mirrored y-axis and linked x-axis." function twinx(sp::Subplot) - sp[:right_margin] = max(sp[:right_margin], 30px) - plot!(sp.plt, inset = (sp[:subplot_index], bbox(0,0,1,1))) + plot!(sp.plt, + inset = (sp[:subplot_index], bbox(0,0,1,1)), + right_margin = sp[:right_margin], + left_margin = sp[:left_margin], + top_margin = sp[:top_margin], + bottom_margin = sp[:bottom_margin], + ) twinsp = sp.plt.subplots[end] + twinsp[:xaxis][:grid] = false + twinsp[:yaxis][:grid] = false + twinsp[:xaxis][:showaxis] = false twinsp[:yaxis][:mirror] = true twinsp[:background_color_inside] = RGBA{Float64}(0,0,0,0) link_axes!(sp[:xaxis], twinsp[:xaxis]) diff --git a/test/test_axes.jl b/test/test_axes.jl index 0c6bc0cd..f65cd745 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -35,13 +35,13 @@ end @testset "Axis limits" begin pl = plot(1:5, xlims=:symmetric, widen = false) @test Plots.xlims(pl) == (-5, 5) - + pl = plot(1:3) @test Plots.xlims(pl) == Plots.widen(1,3) - + pl = plot([1.05,2.0,2.95], ylims=:round) @test Plots.ylims(pl) == (1, 3) - + pl = plot(1:3, xlims=(1,5)) @test Plots.xlims(pl) == (1, 5) @@ -53,3 +53,13 @@ end ql = quiver([1, 2], [2, 1], [3, 4], quiver = ([1, -1], [0, 0], [1, -0.5]), arrow=true) @test ql[1][:projection] == "3d" end + +@testset "twinx" begin + pl = plot(1:10, margin = 2Plots.cm) + twpl = twinx(pl) + pl! = plot!(twinx(), -(1:10)) + @test twpl[:right_margin] == 2Plots.cm + @test twpl[:left_margin] == 2Plots.cm + @test twpl[:top_margin] == 2Plots.cm + @test twpl[:bottom_margin] == 2Plots.cm +end From 3f5a1287be35c7b39b34aebb3634a86ef39fea4f Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 10 Jun 2021 15:48:03 +0200 Subject: [PATCH 288/518] 1.16.5[skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 26f2423b..ba785200 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.4" +version = "1.16.5" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 7ca32b5edd8dd5cfbde4eadfc16e029fd28a1dc1 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Sat, 12 Jun 2021 09:38:10 +0200 Subject: [PATCH 289/518] show ekwargs on `show` (#3567) --- src/plot.jl | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/plot.jl b/src/plot.jl index ae48d907..914dbc9d 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -23,7 +23,38 @@ current(plot::AbstractPlot) = (CURRENT_PLOT.nullableplot = plot) Base.string(plt::Plot) = "Plot{$(plt.backend) n=$(plt.n)}" Base.print(io::IO, plt::Plot) = print(io, string(plt)) -Base.show(io::IO, plt::Plot) = print(io, string(plt)) +function Base.show(io::IO, plt::Plot) + print(io, string(plt)) + sp_ekwargs = getindex.(plt.subplots, :extra_kwargs) + s_ekwargs = getindex.(plt.series_list, :extra_kwargs) + if isempty(plt[:extra_plot_kwargs]) && all(isempty, sp_ekwargs) && all(isempty, s_ekwargs) + return + end + print(io,"\nCaptured extra kwargs:\n") + do_show = true + for (key, value) in plt[:extra_plot_kwargs] + do_show && println(io, " Plot:") + println(io, " "^4, key, ": ", value) + do_show = false + end + do_show = true + for (i, ekwargs) in enumerate(sp_ekwargs) + for (key, value) in ekwargs + do_show && println(io, " SubplotPlot{$i}:") + println(io, " "^4, key, ": ", value) + do_show = false + end + do_show = true + end + for (i, ekwargs) in enumerate(s_ekwargs) + for (key, value) in ekwargs + do_show && println(io, " Series{$i}:") + println(io, " "^4, key, ": ", value) + do_show = false + end + do_show = true + end +end getplot(plt::Plot) = plt getattr(plt::Plot, idx::Int = 1) = plt.attr From 2b22dae75747c959fb171fcf83cc31239e580dde Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 17 Jun 2021 09:29:39 +0200 Subject: [PATCH 290/518] Handle matrices of annotations and copy for `plot(plots)` (#3572) * add tests for series_annotations in layouts * add methods for matrices of annotations * defensive copy on plot(plots) * seperate in plot(plots) and plot!(plots) --- src/components.jl | 6 +++ src/plot.jl | 3 +- test/runtests.jl | 2 +- test/test_components.jl | 106 ++++++++++++++++++++++++---------------- 4 files changed, 74 insertions(+), 43 deletions(-) diff --git a/src/components.jl b/src/components.jl index 51914ffa..63be7b15 100644 --- a/src/components.jl +++ b/src/components.jl @@ -474,6 +474,11 @@ mutable struct SeriesAnnotations baseshape::Union{Shape, AbstractVector{Shape}, Nothing} scalefactor::Tuple end + +series_annotations(scalar) = series_annotations([scalar]) +function series_annotations(anns::AMat) + map(series_annotations, anns) +end function series_annotations(strs::AbstractVector, args...) fnt = font() shp = nothing @@ -570,6 +575,7 @@ end annotations(::Nothing) = [] annotations(anns::AVec) = anns +annotations(anns::AMat) = map(annotations, anns) annotations(anns) = Any[anns] annotations(sa::SeriesAnnotations) = sa diff --git a/src/plot.jl b/src/plot.jl index 914dbc9d..fb802774 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -91,7 +91,8 @@ end # build a new plot from existing plots # note: we split into plt1 and plts_tail so we can dispatch correctly -function plot(plt1::Plot, plts_tail::Plot...; kw...) +plot(plt1::Plot, plts_tail::Plot...; kw...) = plot!(deepcopy(plt1), deepcopy.(plts_tail)...; kw...) +function plot!(plt1::Plot, plts_tail::Plot...; kw...) @nospecialize plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) diff --git a/test/runtests.jl b/test/runtests.jl index 2383a931..997e1258 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,4 +1,4 @@ -using Plots: guidefont +using Plots: guidefont, series_annotations import ImageMagick using VisualRegressionTests using Plots diff --git a/test/test_components.jl b/test/test_components.jl index 77510181..ce616075 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -2,58 +2,58 @@ using Plots, Test @testset "Shapes" begin @testset "Type" begin - square = Shape([(0,0.0),(1,0.0),(1,1.0),(0,1.0)]) - @test isa(square, Shape{Int64, Float64}) - @test coords(square) isa Tuple{Vector{S}, Vector{T}} where {T,S} + square = Shape([(0, 0.0), (1, 0.0), (1, 1.0), (0, 1.0)]) + @test isa(square, Shape{Int64,Float64}) + @test coords(square) isa Tuple{Vector{S},Vector{T}} where {T,S} end @testset "Copy" begin - square = Shape([(0,0),(1,0),(1,1),(0,1)]) + square = Shape([(0, 0), (1, 0), (1, 1), (0, 1)]) square2 = Shape(square) @test square2.x == square.x @test square2.y == square.y end @testset "Center" begin - square = Shape([(0,0),(1,0),(1,1),(0,1)]) - @test Plots.center(square) == (0.5,0.5) + square = Shape([(0, 0), (1, 0), (1, 1), (0, 1)]) + @test Plots.center(square) == (0.5, 0.5) end @testset "Translate" begin - square = Shape([(0,0),(1,0),(1,1),(0,1)]) - squareUp = Shape([(0,1),(1,1),(1,2),(0,2)]) - squareUpRight = Shape([(1,1),(2,1),(2,2),(1,2)]) + square = Shape([(0, 0), (1, 0), (1, 1), (0, 1)]) + squareUp = Shape([(0, 1), (1, 1), (1, 2), (0, 2)]) + squareUpRight = Shape([(1, 1), (2, 1), (2, 2), (1, 2)]) - @test Plots.translate(square,0,1).x == squareUp.x - @test Plots.translate(square,0,1).y == squareUp.y + @test Plots.translate(square, 0, 1).x == squareUp.x + @test Plots.translate(square, 0, 1).y == squareUp.y - @test Plots.center(translate!(square,1)) == (1.5,1.5) + @test Plots.center(translate!(square, 1)) == (1.5, 1.5) end @testset "Rotate" begin # 2 radians rotation matrix R2 = [cos(2) sin(2); -sin(2) cos(2)] coords = [0 0; 1 0; 1 1; 0 1]' - coordsRotated2 = R2*(coords.-0.5).+0.5 + coordsRotated2 = R2 * (coords .- 0.5) .+ 0.5 - square = Shape([(0,0),(1,0),(1,1),(0,1)]) + square = Shape([(0, 0), (1, 0), (1, 1), (0, 1)]) # make a new, rotated square square2 = Plots.rotate(square, -2) - @test square2.x ≈ coordsRotated2[1,:] - @test square2.y ≈ coordsRotated2[2,:] + @test square2.x ≈ coordsRotated2[1, :] + @test square2.y ≈ coordsRotated2[2, :] # unrotate the new square in place rotate!(square2, 2) - @test square2.x ≈ coords[1,:] - @test square2.y ≈ coords[2,:] + @test square2.x ≈ coords[1, :] + @test square2.y ≈ coords[2, :] end @testset "Plot" begin ang = range(0, 2π, length = 60) - ellipse(x, y, w, h) = Shape(w*sin.(ang).+x, h*cos.(ang).+y) - myshapes = [ellipse(x,rand(),rand(),rand()) for x = 1:4] - @test coords(myshapes) isa Tuple{Vector{Vector{S}}, Vector{Vector{T}}} where {T,S} + ellipse(x, y, w, h) = Shape(w * sin.(ang) .+ x, h * cos.(ang) .+ y) + myshapes = [ellipse(x, rand(), rand(), rand()) for x = 1:4] + @test coords(myshapes) isa Tuple{Vector{Vector{S}},Vector{Vector{T}}} where {T,S} local p @test_nowarn p = plot(myshapes) @test p[1][1][:seriestype] == :shape @@ -62,7 +62,7 @@ end @testset "Brush" begin @testset "Colors" begin - baseline = brush(1, RGB(0,0,0)) + baseline = brush(1, RGB(0, 0, 0)) @test brush(:black) == baseline @test brush("black") == baseline end @@ -76,7 +76,7 @@ end end @testset "Bad Argument" begin # using test_logs because test_warn seems to not work anymore - @test_logs (:warn,"Unused brush arg: nothing (Nothing)") begin + @test_logs (:warn, "Unused brush arg: nothing (Nothing)") begin brush(nothing) end end @@ -84,44 +84,68 @@ end @testset "Fonts" begin @testset "Scaling" begin - sizesToCheck = [:titlefontsize, :legendfontsize, :legendtitlefontsize, - :xtickfontsize, :ytickfontsize, :ztickfontsize, - :xguidefontsize, :yguidefontsize, :zguidefontsize,] + sizesToCheck = [ + :titlefontsize, + :legendfontsize, + :legendtitlefontsize, + :xtickfontsize, + :ytickfontsize, + :ztickfontsize, + :xguidefontsize, + :yguidefontsize, + :zguidefontsize, + ] # get inital font sizes - initialSizes = [Plots.default(s) for s in sizesToCheck ] + initialSizes = [Plots.default(s) for s in sizesToCheck] #scale up font sizes scalefontsizes(2) # get inital font sizes - doubledSizes = [Plots.default(s) for s in sizesToCheck ] + doubledSizes = [Plots.default(s) for s in sizesToCheck] - @test doubledSizes == initialSizes*2 + @test doubledSizes == initialSizes * 2 # reset font sizes resetfontsizes() - finalSizes = [Plots.default(s) for s in sizesToCheck ] + finalSizes = [Plots.default(s) for s in sizesToCheck] @test finalSizes == initialSizes end end @testset "Series Annotations" begin - square = Shape([(0,0),(1,0),(1,1),(0,1)]) - @test_logs (:warn,"Unused SeriesAnnotations arg: triangle (Symbol)") begin - p = plot([1,2,3], - series_annotations=(["a"], - 2, # pass a scale factor - (1,4), # pass two scale factors (overwrites first one) - square, # pass a shape - font(:courier), # pass an annotation font - :triangle # pass an incorrect argument - )) + square = Shape([(0, 0), (1, 0), (1, 1), (0, 1)]) + @test_logs (:warn, "Unused SeriesAnnotations arg: triangle (Symbol)") begin + p = plot( + [1, 2, 3], + series_annotations = ( + ["a"], + 2, # pass a scale factor + (1, 4), # pass two scale factors (overwrites first one) + square, # pass a shape + font(:courier), # pass an annotation font + :triangle, # pass an incorrect argument + ), + ) sa = p.series_list[1].plotattributes[:series_annotations] @test sa.strs == ["a"] @test sa.font.family == "courier" @test sa.baseshape == square - @test sa.scalefactor == (1,4) + @test sa.scalefactor == (1, 4) end + spl = scatter( + 4.53 .* [1/1 1/2 1/3 1/4 1/5], + [0 0 0 0 0], + layout = (5, 1), + ylims = (-1.1, 1.1), + xlims = (0, 5), + series_annotations = permutedims([["1/1"],["1/2"],["1/3"],["1/4"],["1/5"]]), + ) + @test spl.series_list[1].plotattributes[:series_annotations].strs == ["1/1"] + @test spl.series_list[2].plotattributes[:series_annotations].strs == ["1/2"] + @test spl.series_list[3].plotattributes[:series_annotations].strs == ["1/3"] + @test spl.series_list[4].plotattributes[:series_annotations].strs == ["1/4"] + @test spl.series_list[5].plotattributes[:series_annotations].strs == ["1/5"] end From 50f63cf1eb4dfc0246cfba43ded7c08af81f897b Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 25 Jun 2021 15:40:49 +0200 Subject: [PATCH 291/518] Ignore :blank plots (#3585) --- src/layouts.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts.jl b/src/layouts.jl index ee984b35..a34c94a8 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -406,7 +406,7 @@ end # ---------------------------------------------------------------------- -calc_num_subplots(layout::AbstractLayout) = 1 +calc_num_subplots(layout::AbstractLayout) = get(layout.attr, :blank, false) ? 0 : 1 function calc_num_subplots(layout::GridLayout) tot = 0 for l in layout.grid From d657c0cb336037edf4f0fb8f18c92debdbc4b1d1 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 25 Jun 2021 16:57:10 +0200 Subject: [PATCH 292/518] 1.16.6 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index ba785200..68e4e5bf 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.5" +version = "1.16.6" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 7b0066c433fa528f77b7533d7f5d9e0eb12f009b Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 25 Jun 2021 21:10:35 +0200 Subject: [PATCH 293/518] simplify major / minor grid segments (#3586) Co-authored-by: t-bltg --- src/axes.jl | 133 +++++++++++++++++++--------------------------------- 1 file changed, 49 insertions(+), 84 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 647c4b2c..c7837d8c 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -703,62 +703,47 @@ function axis_drawing_info(sp, letter) ) end end - if !(ax[:ticks] in (:none, nothing, false)) + if ax[:ticks] ∉ (:none, nothing, false) f = RecipesPipeline.scale_func(oax[:scale]) invf = RecipesPipeline.inverse_scale_func(oax[:scale]) - if ax[:tick_direction] !== :none - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(oamax) - f(oamin))) - (-t, t) - else - ticks_in = ax[:tick_direction] == :out ? -1 : 1 - t = invf(f(oa1) + 0.012 * (f(oa2) - f(oa1)) * ticks_in) - (oa1, t) - end - end - for tick in ticks[1] - if ax[:showaxis] && ax[:tick_direction] !== :none - push!( - tick_segments, - reverse_if((tick, tick_start), isy), - reverse_if((tick, tick_stop), isy), - ) + add_major_or_minor_segments(ticks, grid, segments, factor, cond) = begin + if cond + tick_start, tick_stop = if sp[:framestyle] == :origin + t = invf(f(0) + factor * (f(oamax) - f(oamin))) + (-t, t) + else + ticks_in = ax[:tick_direction] == :out ? -1 : 1 + t = invf(f(oa1) + factor * (f(oa2) - f(oa1)) * ticks_in) + (oa1, t) + end end - if ax[:grid] - push!( - grid_segments, - reverse_if((tick, oamin), isy), - reverse_if((tick, oamax), isy), - ) - end - end - if !(ax[:minorticks] in (:none, nothing, false)) || ax[:minorgrid] - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.006 * (f(oamax) - f(oamin))) - (-t, t) - else - t = invf(f(oa1) + 0.006 * (f(oa2) - f(oa1)) * ticks_in) - (oa1, t) - end - for tick in minor_ticks - if ax[:showaxis] + for tick in ticks + if ax[:showaxis] && cond push!( tick_segments, reverse_if((tick, tick_start), isy), reverse_if((tick, tick_stop), isy), ) end - if ax[:minorgrid] + if grid push!( - minorgrid_segments, + segments, reverse_if((tick, oamin), isy), reverse_if((tick, oamax), isy), ) end end end + + # add major grid segments + add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 0.012, ax[:tick_direction] !== :none) + + # add minor grid segments + if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] + add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.006, true) + end end end @@ -841,74 +826,54 @@ function axis_drawing_info_3d(sp, letter) ) end end - # TODO this can be simplified, we do almost the same thing twice for grid and minorgrid - if !(ax[:ticks] in (:none, nothing, false)) + + if ax[:ticks] ∉ (:none, nothing, false) f = RecipesPipeline.scale_func(nax[:scale]) invf = RecipesPipeline.inverse_scale_func(nax[:scale]) - if ax[:tick_direction] !== :none - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.012 * (f(namax) - f(namin))) - (-t, t) - else - ticks_in = ax[:tick_direction] == :out ? -1 : 1 - t = invf(f(na0) + 0.012 * (f(na1) - f(na0)) * ticks_in) - (na0, t) - end - end - ga0, ga1 = sp[:framestyle] in (:origin, :zerolines) ? (namin, namax) : (na0, na1) - for tick in ticks[1] - if ax[:showaxis] && ax[:tick_direction] !== :none - push!( - tick_segments, - sort_3d_axes(tick, tick_start, fa0, letter), - sort_3d_axes(tick, tick_stop, fa0, letter), - ) - end - if ax[:grid] - push!( - grid_segments, - sort_3d_axes(tick, ga0, fa0, letter), - sort_3d_axes(tick, ga1, fa0, letter), - ) - push!( - grid_segments, - sort_3d_axes(tick, ga1, fa0, letter), - sort_3d_axes(tick, ga1, fa1, letter), - ) - end - end - if !(ax[:minorticks] in (:none, nothing, false)) || ax[:minorgrid] - tick_start, tick_stop = if sp[:framestyle] == :origin - t = invf(f(0) + 0.006 * (f(namax) - f(namin))) - (-t, t) - else - t = invf(f(na0) + 0.006 * (f(na1) - f(na0)) * ticks_in) - (na0, t) + add_major_or_minor_segments(ticks, grid, segments, factor, cond) = begin + if cond + tick_start, tick_stop = if sp[:framestyle] == :origin + t = invf(f(0) + factor * (f(namax) - f(namin))) + (-t, t) + else + ticks_in = ax[:tick_direction] == :out ? -1 : 1 + t = invf(f(na0) + factor * (f(na1) - f(na0)) * ticks_in) + (na0, t) + end end - for tick in minor_ticks - if ax[:showaxis] && ax[:tick_direction] !== :none + + for tick in ticks + if ax[:showaxis] && cond push!( tick_segments, sort_3d_axes(tick, tick_start, fa0, letter), sort_3d_axes(tick, tick_stop, fa0, letter), ) end - if ax[:minorgrid] + if grid push!( - minorgrid_segments, + segments, sort_3d_axes(tick, ga0, fa0, letter), sort_3d_axes(tick, ga1, fa0, letter), ) push!( - minorgrid_segments, + segments, sort_3d_axes(tick, ga1, fa0, letter), sort_3d_axes(tick, ga1, fa1, letter), ) end end end + + # add major grid segments + add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 0.012, ax[:tick_direction] !== :none) + + # add minor grid segments + if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] + add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.006, true) + end end end From a64ae3d13c50d190e89220738eed05dad67ff287 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 30 Jun 2021 09:30:55 +0200 Subject: [PATCH 294/518] GR: fix alignment of ticks label when rotating (#3587) Co-authored-by: t-bltg --- src/backends/gr.jl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index acfc1829..1386da4f 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -651,12 +651,17 @@ end function gr_set_tickfont(sp, letter) axis = sp[Symbol(letter, :axis)] + + # invalidate alignment changes for small rotations (|θ| < 45°) + trigger(rot) = abs(sind(rot)) < abs(cosd(rot)) ? 0 : sign(rot) + + rot = axis[:rotation] if letter === :x || (RecipesPipeline.is3d(sp) && letter === :y) - halign = (:left, :hcenter, :right)[sign(axis[:rotation]) + 2] - valign = (axis[:mirror] ? :bottom : :top) + halign = (:left, :hcenter, :right)[trigger(rot) + 2] + valign = (axis[:mirror] ? :bottom : :top, :vcenter)[trigger(abs(rot)) + 1] else - halign = (axis[:mirror] ? :left : :right) - valign = (:top, :vcenter, :bottom)[sign(axis[:rotation]) + 2] + halign = (axis[:mirror] ? :left : :right, :hcenter)[trigger(abs(rot)) + 1] + valign = (:top, :vcenter, :bottom)[trigger(rot) + 2] end gr_set_font( tickfont(axis), From 3f9105054c77b07af03d3c29b6c21a3e7d49cb3a Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 30 Jun 2021 11:30:37 +0200 Subject: [PATCH 295/518] 1.16.7 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 68e4e5bf..9985a31a 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.6" +version = "1.16.7" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From bba971f7eae407e36c6fb67f859f349cb49d1406 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 30 Jun 2021 22:50:09 +0200 Subject: [PATCH 296/518] GR: fix axis flip / mirror in 3D plots (#3584) * fix axis flip in 3D plots * add mwe as example - fix needs_3d_axes * fix major / minor grids when mirroring Co-authored-by: t-bltg --- src/axes.jl | 10 +++++---- src/backends/gr.jl | 51 ++++++++++++++++++++++++++++++---------------- src/examples.jl | 50 +++++++++++++++++++++++++++++++++++++++++++++ src/pipeline.jl | 8 ++++++++ 4 files changed, 98 insertions(+), 21 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index c7837d8c..91be5ba0 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -853,15 +853,17 @@ function axis_drawing_info_3d(sp, letter) ) end if grid + fa0_, fa1_ = reverse_if((fa0, fa1), ax[:mirror]) + ga0_, ga1_ = reverse_if((ga0, ga1), ax[:mirror]) push!( segments, - sort_3d_axes(tick, ga0, fa0, letter), - sort_3d_axes(tick, ga1, fa0, letter), + sort_3d_axes(tick, ga0_, fa0_, letter), + sort_3d_axes(tick, ga1_, fa0_, letter), ) push!( segments, - sort_3d_axes(tick, ga1, fa0, letter), - sort_3d_axes(tick, ga1, fa1, letter), + sort_3d_axes(tick, ga1_, fa0_, letter), + sort_3d_axes(tick, ga1_, fa1_, letter), ) end end diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 1386da4f..ca31f3d3 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1287,12 +1287,22 @@ function gr_set_window(sp, viewport_plotarea) gr_set_viewport_polar(viewport_plotarea) else xmin, xmax, ymin, ymax = gr_xy_axislims(sp) + needs_3d = needs_any_3d_axes(sp) + if needs_3d + zmin, zmax = gr_z_axislims(sp) + zok = zmax > zmin + else + zok = true + end + scaleop = 0 - if xmax > xmin && ymax > ymin - sp[:xaxis][:scale] == :log10 && (scaleop |= GR.OPTION_X_LOG) - sp[:yaxis][:scale] == :log10 && (scaleop |= GR.OPTION_Y_LOG) - sp[:xaxis][:flip] && (scaleop |= GR.OPTION_FLIP_X) - sp[:yaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Y) + if xmax > xmin && ymax > ymin && zok + sp[:xaxis][:scale] == :log10 && (scaleop |= GR.OPTION_X_LOG) + sp[:yaxis][:scale] == :log10 && (scaleop |= GR.OPTION_Y_LOG) + needs_3d && sp[:zaxis][:scale] == :log10 && (scaleop |= GR.OPTION_Z_LOG) + sp[:xaxis][:flip] && (scaleop |= GR.OPTION_FLIP_X) + sp[:yaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Y) + needs_3d && sp[:zaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Z) # NOTE: setwindow sets the "data coordinate" limits of the current "viewport" GR.setwindow(xmin, xmax, ymin, ymax) GR.setscale(scaleop) @@ -1315,7 +1325,7 @@ function gr_draw_axes(sp, viewport_plotarea) if RecipesPipeline.is3d(sp) # set space xmin, xmax, ymin, ymax = gr_xy_axislims(sp) - zmin, zmax = axis_limits(sp, :z) + zmin, zmax = gr_z_axislims(sp) GR.setspace(zmin, zmax, round.(Int, sp[:camera])...) # fill the plot area @@ -1327,7 +1337,7 @@ function gr_draw_axes(sp, viewport_plotarea) GR.fillarea(x_bg, y_bg) for letter in (:x, :y, :z) - gr_draw_axis_3d(sp, letter) + gr_draw_axis_3d(sp, letter, viewport_plotarea) end elseif ispolar(sp) r = gr_set_viewport_polar(viewport_plotarea) @@ -1357,7 +1367,7 @@ function gr_draw_axis(sp, letter, viewport_plotarea) gr_label_axis(sp, letter, viewport_plotarea) end -function gr_draw_axis_3d(sp, letter) +function gr_draw_axis_3d(sp, letter, viewport_plotarea) ax = axis_drawing_info_3d(sp, letter) axis = sp[Symbol(letter, :axis)] @@ -1369,8 +1379,10 @@ function gr_draw_axis_3d(sp, letter) gr_draw_ticks(sp, axis, ax.tick_segments, gr_polyline3d) # labels + GR.setscale(0) gr_label_ticks_3d(sp, letter, ax.ticks) gr_label_axis_3d(sp, letter) + gr_set_window(sp, viewport_plotarea) end function gr_draw_grid(sp, axis, segments, func = gr_polyline) @@ -1445,13 +1457,14 @@ function gr_label_ticks(sp, letter, ticks) oamin, oamax = axis_limits(sp, oletter) gr_set_tickfont(sp, letter) out_factor = ifelse(axis[:tick_direction] === :out, 1.5, 1) - x_offset = isy ? (axis[:mirror] ? 1 : -1) * 1.5e-2 * out_factor : 0 - y_offset = isy ? 0 : (axis[:mirror] ? 1 : -1) * 8e-3 * out_factor + x_offset = isy ? -1.5e-2 * out_factor : 0 + y_offset = isy ? 0 : -8e-3 * out_factor ov = sp[:framestyle] == :origin ? 0 : xor(oaxis[:flip], axis[:mirror]) ? oamax : oamin + sgn = axis[:mirror] ? -1 : 1 for (cv, dv) in zip(ticks...) x, y = GR.wctondc(reverse_if((cv, ov), isy)...) - gr_text(x + x_offset, y + y_offset, dv) + gr_text(x + sgn * x_offset, y + sgn * y_offset, dv) end end @@ -1483,8 +1496,8 @@ function gr_label_ticks_3d(sp, letter, ticks) xax, yax, zax = getindex.(Ref(sp), asyms) gr_set_tickfont(sp, letter) - nt = sp[:framestyle] == :origin ? 0 : xor(ax[:mirror], nax[:flip]) ? n1 : n0 - ft = sp[:framestyle] == :origin ? 0 : xor(ax[:mirror], fax[:flip]) ? famax : famin + nt = sp[:framestyle] == :origin ? 0 : ax[:mirror] ? n1 : n0 + ft = sp[:framestyle] == :origin ? 0 : ax[:mirror] ? famax : famin xoffset = if letter === :x (sp[:yaxis][:mirror] ? 1 : -1) * 1e-2 * (sp[:xaxis][:tick_direction] == :out ? 1.5 : 1) @@ -1501,7 +1514,10 @@ function gr_label_ticks_3d(sp, letter, ticks) 0 end - for (cv, dv) in zip(ticks...) + cvs, dvs = ticks + ax[:flip] && reverse!(cvs) + + for (cv, dv) in zip((cvs, dvs)...) xi, yi = gr_w3tondc(sort_3d_axes(cv, nt, ft, letter)...) gr_text(xi + xoffset, yi + yoffset, dv) end @@ -1570,8 +1586,8 @@ function gr_label_axis_3d(sp, letter) # color = ax[:guidefontcolor], ) ag = (amin + amax) / 2 - ng = xor(ax[:mirror], nax[:flip]) ? n1 : n0 - fg = xor(ax[:mirror], fax[:flip]) ? famax : famin + ng = ax[:mirror] ? n1 : n0 + fg = ax[:mirror] ? famax : famin x, y = gr_w3tondc(sort_3d_axes(ag, ng, fg, letter)...) if letter in (:x, :y) h = gr_axis_height(sp, ax) @@ -1582,7 +1598,8 @@ function gr_label_axis_3d(sp, letter) y_offset = 0 end letter === :z && GR.setcharup(-1, 0) - gr_text(x + x_offset, y + y_offset, ax[:guide]) + sgn = ax[:mirror] ? -1 : 1 + gr_text(x + sgn * x_offset, y + sgn * y_offset, ax[:guide]) GR.restorestate() end end diff --git a/src/examples.jl b/src/examples.jl index 6d4e631d..ea1d233f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1163,6 +1163,56 @@ const _examples = PlotExample[ ), ], ), + PlotExample( # 55 + "3D axis flip / mirror", + "", + [ + :( + begin + meshgrid(x, y) = (ones(eltype(y), length(y)) * x', y * ones(eltype(x), length(x))') + scalefontsizes(.5) + + x, y = meshgrid(-6:0.5:10, -8:0.5:8) + r = sqrt.(x .^ 2 + y .^ 2) .+ eps() + z = sin.(r) ./ r + + args = x[1, :], y[:, 1], z[:] + kwargs = Dict( + :xlabel => "x", :ylabel => "y", :zlabel => "z", + :grid => true, :minorgrid => true, :dpi => 200 + ) + + plots = [wireframe(args..., title = "wire"; kwargs...)] + + for ax ∈ (:x, :y, :z) + push!(plots, wireframe( + args..., + title = "wire-flip-$ax", + xflip = ax == :x, + yflip = ax == :y, + zflip = ax == :z; + kwargs..., + )) + end + + for ax ∈ (:x, :y, :z) + push!(plots, wireframe( + args..., + title = "wire-mirror-$ax", + xmirror = ax == :x, + ymirror = ax == :y, + zmirror = ax == :z; + kwargs..., + )) + end + + plot(plots..., layout=(@layout [_ ° _; ° ° °; ° ° °]), margin=2Plots.mm) + + scalefontsizes() + end + ), + ], + ), ] # Some constants for PlotDocs and PlotReferenceImages diff --git a/src/pipeline.jl b/src/pipeline.jl index d87c5836..94fce068 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -338,6 +338,14 @@ function _override_seriestype_check(plotattributes::AKW, st::Symbol) st end +function needs_any_3d_axes(sp::Subplot) + any( + RecipesPipeline.needs_3d_axes( + _override_seriestype_check(s.plotattributes, s.plotattributes[:seriestype]) + ) for s in series_list(sp) + ) +end + function _expand_subplot_extrema(sp::Subplot, plotattributes::AKW, st::Symbol) # adjust extrema and discrete info if st == :image From 1ddc6732012429a32f9a7fa0795b96389f96ce9f Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 1 Jul 2021 14:02:30 +0200 Subject: [PATCH 297/518] GR: 3D, warn on invalid rotation or tilt --- src/backends/gr.jl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index ca31f3d3..b3da0cb4 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1326,7 +1326,13 @@ function gr_draw_axes(sp, viewport_plotarea) # set space xmin, xmax, ymin, ymax = gr_xy_axislims(sp) zmin, zmax = gr_z_axislims(sp) - GR.setspace(zmin, zmax, round.(Int, sp[:camera])...) + + camera = round.(Int, sp[:camera]) + + warn_invalid(val) = if val < 0 || val > 90 @warn "camera: $(val)° ∉ [0°, 90°]" end + warn_invalid.(camera) + + GR.setspace(zmin, zmax, camera...) # fill the plot area gr_set_fill(plot_color(sp[:background_color_inside])) From a7c629f775fb28edfc9d53c4fb3e950c36ae2bb5 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 1 Jul 2021 15:08:36 +0200 Subject: [PATCH 298/518] GR: expose surface(...) display options --- src/backends/gr.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index ca31f3d3..d879c006 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1841,22 +1841,23 @@ function gr_draw_contour(series, x, y, z, clims) end function gr_draw_surface(series, x, y, z, clims) - + e_kwargs = series[:extra_kwargs] if series[:seriestype] === :surface fillalpha = get_fillalpha(series) fillcolor = get_fillcolor(series) if length(x) == length(y) == length(z) x, y, z = GR.gridit(x, y, z, 200, 200) end + d_opt = get(e_kwargs, :display_option, GR.OPTION_COLORED_MESH) if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 gr_set_transparency(fillcolor, fillalpha) - GR.surface(x, y, z, GR.OPTION_COLORED_MESH) + GR.surface(x, y, z, d_opt) else - GR.gr3.surface(x, y, z, GR.OPTION_COLORED_MESH) + GR.gr3.surface(x, y, z, d_opt) end - else # wireframe + else # wireframe GR.setfillcolorind(0) - GR.surface(x, y, z, GR.OPTION_FILLED_MESH) + GR.surface(x, y, z, get(e_kwargs, :display_option, GR.OPTION_FILLED_MESH)) end end From e42b4ad34da6384f056ca4d08febf280f8ea1766 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 1 Jul 2021 16:54:07 +0200 Subject: [PATCH 299/518] GR: surface, add the possibility to override the hardcoded nx and ny in GR.gridit(...) --- src/backends/gr.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index d879c006..94591552 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1845,8 +1845,10 @@ function gr_draw_surface(series, x, y, z, clims) if series[:seriestype] === :surface fillalpha = get_fillalpha(series) fillcolor = get_fillcolor(series) - if length(x) == length(y) == length(z) - x, y, z = GR.gridit(x, y, z, 200, 200) + # NOTE: setting nx = 0 or ny = 0 disables GR.gridit interpolation + nx, ny = get(e_kwargs, :nx, 200), get(e_kwargs, :ny, 200) + if length(x) == length(y) == length(z) && nx > 0 && ny > 0 + x, y, z = GR.gridit(x, y, z, nx, ny) end d_opt = get(e_kwargs, :display_option, GR.OPTION_COLORED_MESH) if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 From f78899a1efcbad3eab13bdcd728f51eeee3e892c Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 1 Jul 2021 18:28:50 +0200 Subject: [PATCH 300/518] return plot object --- src/examples.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index ea1d233f..839c2a1e 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1170,6 +1170,7 @@ const _examples = PlotExample[ :( begin meshgrid(x, y) = (ones(eltype(y), length(y)) * x', y * ones(eltype(x), length(x))') + scalefontsizes() scalefontsizes(.5) x, y = meshgrid(-6:0.5:10, -8:0.5:8) @@ -1207,8 +1208,6 @@ const _examples = PlotExample[ end plot(plots..., layout=(@layout [_ ° _; ° ° °; ° ° °]), margin=2Plots.mm) - - scalefontsizes() end ), ], From e049b082f3b313df9996a902541304d31c4b4420 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 1 Jul 2021 18:40:58 +0200 Subject: [PATCH 301/518] [AUTO] Update precompiles (#3573) * add tests for series_annotations in layouts * add methods for matrices of annotations * defensive copy on plot(plots) * seperate in plot(plots) and plot!(plots) * Update precompile_*.jl file Co-authored-by: Simon Christ Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 86 ++++++------------- 1 file changed, 27 insertions(+), 59 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 658b454a..874354f6 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,32 +68,18 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) - Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -103,13 +89,23 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(heatmap)),Any,typeof(heatmap),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) - Base.precompile(Tuple{Core.kwftype(typeof(pie)),Any,typeof(pie),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Vector{GeometryBasics.Point2{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :xlims), Tuple{GridLayout, Tuple{Int64, Float64}}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Plot{GRBackend},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Plot{PlotlyBackend},Matrix{Float64}}) @@ -118,25 +114,23 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -180,31 +174,27 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{OHLC}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype), Tuple{String, Float64, Symbol}},typeof(plot),Vector{String},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:yflip, :aspect_ratio), Tuple{Bool, Symbol}},typeof(plot),Vector{Float64},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) + Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -213,7 +203,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -236,10 +225,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) @@ -250,18 +235,17 @@ function _precompile_() Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{PlotlyBackend},Vector{Any}}) + Base.precompile(Tuple{typeof(axis_limits),Subplot{GRBackend},Symbol,Bool,Bool}) + Base.precompile(Tuple{typeof(axis_limits),Subplot{PlotlyBackend},Symbol,Bool,Bool}) Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(convertLegendValue),Symbol}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,Base.OneTo{Int64}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) @@ -270,7 +254,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -284,6 +267,8 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -293,11 +278,9 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -309,9 +292,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -321,27 +302,23 @@ function _precompile_() Base.precompile(Tuple{typeof(partialcircle),Int64,Float64,Int64}) Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(plot),Any}) - Base.precompile(Tuple{typeof(processFillArg),Dict{Symbol, Any},Symbol}) - Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) + Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{typeof(plot),Plot{GRBackend}}) + Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -351,13 +328,9 @@ function _precompile_() Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(xgrid!),Plot{PlotlyBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) @@ -378,11 +351,6 @@ function _precompile_() precompile(fbody, (Any,typeof(plot),Any,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(plot, (Plot,Plot,Vararg{Plot, N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(plot),Plot,Plot,Vararg{Plot, N} where N,)) - end - end let fbody = try __lookup_kwbody__(which(text, (String,Int64,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(text),String,Int64,Vararg{Any, N} where N,)) From 1523ef67d5c0367a42fb9589e8857833cb639ca4 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 1 Jul 2021 21:41:35 +0200 Subject: [PATCH 302/518] simplify example 55 --- src/examples.jl | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index 839c2a1e..45e12e57 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1169,15 +1169,17 @@ const _examples = PlotExample[ [ :( begin - meshgrid(x, y) = (ones(eltype(y), length(y)) * x', y * ones(eltype(x), length(x))') + using LinearAlgebra scalefontsizes() scalefontsizes(.5) - x, y = meshgrid(-6:0.5:10, -8:0.5:8) - r = sqrt.(x .^ 2 + y .^ 2) .+ eps() - z = sin.(r) ./ r + x, y = -6:0.5:10, -8:0.5:8 + function f(x,y) + r = norm([x,y]) + sin(r) / (r + eps()) + end - args = x[1, :], y[:, 1], z[:] + args = (x, y, f) kwargs = Dict( :xlabel => "x", :ylabel => "y", :zlabel => "z", :grid => true, :minorgrid => true, :dpi => 200 From 829860fa2d0924763236d568071d895c10797d56 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 2 Jul 2021 09:17:56 +0200 Subject: [PATCH 303/518] use sinc in example 55 --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index 45e12e57..5d2e4d80 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1176,7 +1176,7 @@ const _examples = PlotExample[ x, y = -6:0.5:10, -8:0.5:8 function f(x,y) r = norm([x,y]) - sin(r) / (r + eps()) + sinc(r / pi) end args = (x, y, f) From b3f698c46091454b60405fa90684a9a9aca23062 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 2 Jul 2021 09:42:25 +0200 Subject: [PATCH 304/518] Update precompile_*.jl file (#3592) Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 70 +++++++++++++++++-- 1 file changed, 66 insertions(+), 4 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 874354f6..1dcbccd1 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,18 +68,35 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) + Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -89,6 +106,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(heatmap)),Any,typeof(heatmap),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -99,6 +117,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :xlims), Tuple{GridLayout, Tuple{Int64, Float64}}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -114,14 +134,19 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!),Plot{GRBackend}}) @@ -131,6 +156,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -141,11 +167,14 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link), Tuple{Int64, Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link), Tuple{Int64, Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :palette, :bg_inside), Tuple{Int64, Matrix{PlotUtils.ContinuousColorGradient}, Matrix{Symbol}}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border), Tuple{GridLayout, Matrix{Symbol}, Bool, Nothing, Symbol}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation), Tuple{GridLayout, Matrix{String}, Symbol, Matrix{AbsoluteLength}, AbsoluteLength, Int64}},typeof(plot),Matrix{Float64}}) @@ -174,15 +203,18 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{OHLC}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype), Tuple{String, Float64, Symbol}},typeof(plot),Vector{String},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :xflip, :yflip, :zflip, :zlabel, :dpi, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, Bool, Bool, Bool, String, Int64, Bool, String, Bool, String, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :xmirror, :ymirror, :zmirror, :zlabel, :dpi, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, Bool, Bool, Bool, String, Int64, Bool, String, Bool, String, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :dpi, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Int64, Bool, String, Bool, String, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) @@ -193,16 +225,20 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:histogram2d}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:histogram}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppost}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -225,7 +261,13 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) @@ -244,7 +286,10 @@ function _precompile_() Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) + Base.precompile(Tuple{typeof(error_style!),DefaultsDict}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) @@ -266,21 +311,21 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_surface),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -292,7 +337,9 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -307,23 +354,36 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(scalefontsizes),Float64}) + Base.precompile(Tuple{typeof(scalefontsizes)}) + Base.precompile(Tuple{typeof(series_annotations),Vector{Any}}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol, N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) @@ -331,6 +391,8 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{PlotlyBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) + isdefined(Plots, Symbol("#add_major_or_minor_segments#125")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#125")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) + isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From f63ee6d79efe81720604dc17d7a14b28853f2280 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 2 Jul 2021 15:06:36 +0200 Subject: [PATCH 305/518] enhance example 55 (#3596) Co-authored-by: t-bltg --- src/examples.jl | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index 5d2e4d80..3fa3f1d7 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1169,21 +1169,13 @@ const _examples = PlotExample[ [ :( begin - using LinearAlgebra - scalefontsizes() - scalefontsizes(.5) + using LinearAlgebra + scalefontsizes(.4) - x, y = -6:0.5:10, -8:0.5:8 - function f(x,y) - r = norm([x,y]) - sinc(r / pi) - end + x, y = collect(-6:0.5:10), collect(-8:0.5:8) - args = (x, y, f) - kwargs = Dict( - :xlabel => "x", :ylabel => "y", :zlabel => "z", - :grid => true, :minorgrid => true, :dpi => 200 - ) + args = x, y, (x, y) -> sinc(norm([x, y]) / π) + kwargs = Dict(:xlabel=>"x", :ylabel=>"y", :zlabel=>"z", :grid=>true, :minorgrid=>true) plots = [wireframe(args..., title = "wire"; kwargs...)] @@ -1209,7 +1201,10 @@ const _examples = PlotExample[ )) end - plot(plots..., layout=(@layout [_ ° _; ° ° °; ° ° °]), margin=2Plots.mm) + plt = plot(plots..., layout=(@layout [_ ° _; ° ° °; ° ° °]), margin=0Plots.px) + + resetfontsizes() + plt end ), ], From 06c551ba51ed4cccbb90ee62ff5202082ffc5659 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 2 Jul 2021 16:57:35 +0200 Subject: [PATCH 306/518] Skip example 55 for PyPlot, Plotlyjs and Plotly PgfPlotsX looks ok --- src/examples.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index 3fa3f1d7..eb99e5fe 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1215,9 +1215,9 @@ const _examples = PlotExample[ _animation_examples = [2, 31] _backend_skips = Dict( :gr => [25, 30, 47], - :pyplot => [2, 25, 30, 31, 47, 49], - :plotlyjs => [2, 21, 24, 25, 30, 31, 49, 51], - :plotly => [2, 21, 24, 25, 30, 31, 49, 50, 51], + :pyplot => [2, 25, 30, 31, 47, 49, 55], + :plotlyjs => [2, 21, 24, 25, 30, 31, 49, 51, 55], + :plotly => [2, 21, 24, 25, 30, 31, 49, 50, 51, 55], :pgfplotsx => [ 2, # animation 6, # images From 14b38354da41f241d3404d48b555db2693e4a37d Mon Sep 17 00:00:00 2001 From: t-bltg Date: Fri, 2 Jul 2021 20:26:24 +0200 Subject: [PATCH 307/518] 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 0ca5bc91243b77bcf5294e983b445141d995fd50 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 2 Jul 2021 21:27:21 +0200 Subject: [PATCH 308/518] 1.16.8 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 9985a31a..8a90b5fd 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.7" +version = "1.16.8" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 3536acbcc830ee0d7187f676baaf3c7ea839aeaf Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 3 Jul 2021 14:44:53 +0200 Subject: [PATCH 309/518] warn on invalid value for log scale based series --- src/utils.jl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/utils.jl b/src/utils.jl index 4356e6ed..ffbe5468 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -82,6 +82,20 @@ function series_segments(series::Series, seriestype::Symbol = :path) args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) nan_segments = collect(iter_segments(args...)) + scales = :xscale, :yscale, :zscale + for (n, s) ∈ enumerate(args) + scale = get(series, scales[n], :identity) + if scale ∈ _logScales + for (i, v) ∈ enumerate(s) + if v <= 0 + msg = "Invalid negative or zero value $v found at serie index $i for $(scale) based $(scales[n])" + @warn msg + @debug msg exception=(DomainError(v), stacktrace()) + end + end + end + end + segments = if has_attribute_segments(series) Iterators.flatten(map(nan_segments) do r if seriestype in (:scatter, :scatter3d) From 293b43013bd0fd9ac022c706025b877c86a9ca5a Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 3 Jul 2021 20:05:53 +0200 Subject: [PATCH 310/518] 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 ( From 5eb62abb259ea721ca9a15d3dc2d99f1f493b5ca Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 4 Jul 2021 15:07:09 +0200 Subject: [PATCH 311/518] simplify build_layout logic --- src/layouts.jl | 79 +++++++++++++++----------------------------------- 1 file changed, 24 insertions(+), 55 deletions(-) diff --git a/src/layouts.jl b/src/layouts.jl index a34c94a8..5b79b8f6 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -494,34 +494,42 @@ layout_args(huh) = error("unhandled layout type $(typeof(huh)): $huh") function build_layout(args...) layout, n = layout_args(args...) - build_layout(layout, n) + build_layout(layout, n, Array{Plot}(undef, 0)) end -# # just a single subplot -# function build_layout(sp::Subplot, n::Integer) -# sp, Subplot[sp], SubplotMap(gensym() => sp) -# end -# n is the number of subplots... build a grid and initialize the inner subplots recursively -function build_layout(layout::GridLayout, n::Integer) +# n is the number of subplots... +function build_layout(layout::GridLayout, n::Integer, plts::AVec{Plot}) nr, nc = size(layout) subplots = Subplot[] spmap = SubplotMap() + empty = isempty(plts) i = 0 - for r=1:nr, c=1:nc - l = layout[r,c] + for r = 1:nr, c = 1:nc + l = layout[r, c] if isa(l, EmptyLayout) && !get(l.attr, :blank, false) - sp = Subplot(backend(), parent=layout) - layout[r,c] = sp - push!(subplots, sp) - spmap[attr(l,:label,gensym())] = sp + if empty + # initialize the inner subplots recursively + sp = Subplot(backend(), parent=layout) + layout[r, c] = sp + push!(subplots, sp) + spmap[attr(l,:label,gensym())] = sp + inc = 1 + else + # build a layout from a list of existing Plot objects + plt = popfirst!(plts) # grab the first plot out of the list + layout[r, c] = plt.layout + append!(subplots, plt.subplots) + merge!(spmap, plt.spmap) + inc = length(plt.subplots) + end if get(l.attr, :width, :auto) != :auto layout.widths[c] = attr(l,:width) end if get(l.attr, :height, :auto) != :auto layout.heights[r] = attr(l,:height) end - i += 1 + i += inc elseif isa(l, GridLayout) # sub-grid if get(l.attr, :width, :auto) != :auto @@ -530,11 +538,11 @@ function build_layout(layout::GridLayout, n::Integer) if get(l.attr, :height, :auto) != :auto layout.heights[r] = attr(l,:height) end - l, sps, m = build_layout(l, n-i) + l, sps, m = build_layout(l, n - i, plts) append!(subplots, sps) merge!(spmap, m) i += length(sps) - elseif isa(l, Subplot) + elseif isa(l, Subplot) && empty error("Subplot exists. Cannot re-use existing layout. Please make a new one.") end i >= n && break # only add n subplots @@ -543,45 +551,6 @@ function build_layout(layout::GridLayout, n::Integer) layout, subplots, spmap end -# build a layout from a list of existing Plot objects -# TODO... much of the logic overlaps with the method above... can we merge? -function build_layout(layout::GridLayout, numsp::Integer, plts::AVec{Plot}) - nr, nc = size(layout) - subplots = Subplot[] - spmap = SubplotMap() - i = 0 - for r=1:nr, c=1:nc - l = layout[r,c] - if isa(l, EmptyLayout) && !get(l.attr, :blank, false) - plt = popfirst!(plts) # grab the first plot out of the list - layout[r,c] = plt.layout - append!(subplots, plt.subplots) - merge!(spmap, plt.spmap) - if get(l.attr, :width, :auto) != :auto - layout.widths[c] = attr(l,:width) - end - if get(l.attr, :height, :auto) != :auto - layout.heights[r] = attr(l,:height) - end - i += length(plt.subplots) - elseif isa(l, GridLayout) - # sub-grid - if get(l.attr, :width, :auto) != :auto - layout.widths[c] = attr(l,:width) - end - if get(l.attr, :height, :auto) != :auto - layout.heights[r] = attr(l,:height) - end - l, sps, m = build_layout(l, numsp-i, plts) - append!(subplots, sps) - merge!(spmap, m) - i += length(sps) - end - i >= numsp && break # only add n subplots - end - layout, subplots, spmap -end - # ---------------------------------------------------------------------- # @layout macro From 124d2d6aa31536636362d1e0ae962e28c9571064 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 4 Jul 2021 15:48:16 +0200 Subject: [PATCH 312/518] issue warning only once - apply to other backends --- src/backends/gr.jl | 10 +++++----- src/backends/pgfplotsx.jl | 2 +- src/backends/plotly.jl | 2 +- src/backends/pyplot.jl | 2 +- src/utils.jl | 21 +++++++++++---------- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index ca31f3d3..d287d88e 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -355,9 +355,9 @@ end # draw ONE symbol marker 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.setborderwidth(strokewidth) + gr_set_bordercolor(get_markerstrokecolor(series, i)) + gr_set_markercolor(get_markercolor(series, clims, i)) gr_set_transparency(get_markeralpha(series, i)) GR.setmarkertype(gr_markertype(shape)) GR.setmarkersize(0.3msize / gr_nominal_size(series)) @@ -1717,7 +1717,7 @@ end function gr_draw_segments(series, x, y, fillrange, clims) st = series[:seriestype] if x !== nothing && length(x) > 1 - segments = series_segments(series, st) + segments = series_segments(series, st; check=true) # do area fill if fillrange !== nothing GR.setfillintstyle(GR.INTSTYLE_SOLID) @@ -1754,7 +1754,7 @@ end function gr_draw_segments_3d(series, x, y, z, clims) if series[:seriestype] === :path3d && length(x) > 1 lz = series[:line_z] - segments = series_segments(series, :path3d) + segments = series_segments(series, :path3d; check=true) for segment in segments i, rng = segment.attr_index, segment.range lc = get_linecolor(series, clims, i) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 438c007e..504f96e0 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -327,7 +327,7 @@ end function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, opt) # treat segments - segments = collect(series_segments(series, series[:seriestype])) + segments = collect(series_segments(series, series[:seriestype]; check=true)) sf = opt[:fillrange] for (k, segment) in enumerate(segments) i, rng = segment.attr_index, segment.range diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index 457db10b..edc9ced9 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -663,7 +663,7 @@ function plotly_series(plt::Plot, series::Series) end function plotly_series_shapes(plt::Plot, series::Series, clims) - segments = series_segments(series) + segments = series_segments(series; check=true) plotattributes_outs = Vector{KW}(undef, length(segments)) # TODO: create a plotattributes_out for each polygon diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 5e9da1e4..f46de620 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -442,7 +442,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # end # push!(handles, handle) # else - for (k, segment) in enumerate(series_segments(series, st)) + for (k, segment) in enumerate(series_segments(series, st; check=true)) i, rng = segment.attr_index, segment.range handle = ax."plot"((arg[rng] for arg in xyargs)...; label = k == 1 ? series[:label] : "", diff --git a/src/utils.jl b/src/utils.jl index ffbe5468..e8daeada 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -75,22 +75,23 @@ function iter_segments(args...) NaNSegmentsIterator(tup, n1, n2) end -function series_segments(series::Series, seriestype::Symbol = :path) +function series_segments(series::Series, seriestype::Symbol=:path; check=false) x, y, z = series[:x], series[:y], series[:z] (x === nothing || isempty(x)) && return UnitRange{Int}[] args = RecipesPipeline.is3d(series) ? (x, y, z) : (x, y) nan_segments = collect(iter_segments(args...)) - scales = :xscale, :yscale, :zscale - for (n, s) ∈ enumerate(args) - scale = get(series, scales[n], :identity) - if scale ∈ _logScales - for (i, v) ∈ enumerate(s) - if v <= 0 - msg = "Invalid negative or zero value $v found at serie index $i for $(scale) based $(scales[n])" - @warn msg - @debug msg exception=(DomainError(v), stacktrace()) + if check + scales = :xscale, :yscale, :zscale + for (n, s) ∈ enumerate(args) + scale = get(series, scales[n], :identity) + if scale ∈ _logScales + for (i, v) ∈ enumerate(s) + if v <= 0 + @warn "Invalid negative or zero value $v found at series index $i for $(scale) based $(scales[n])" + @debug "" exception=(DomainError(v), stacktrace()) + end end end end From 88ebb8152d714685d5b7d26a2feda06127da0057 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 4 Jul 2021 19:00:28 +0200 Subject: [PATCH 313/518] bypass JuliaStats/Distributions.jl/issues/1358 --- .github/workflows/ci.yml | 2 +- Project.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45a723a9..5a723a92 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,7 +73,7 @@ jobs: - name: Run Graphical test run: | $TESTCMD --project -e 'using Pkg; Pkg.test(coverage=true);' - $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots");' + # $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots");' $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes");' - name: Codecov diff --git a/Project.toml b/Project.toml index 8a90b5fd..c5b7655d 100644 --- a/Project.toml +++ b/Project.toml @@ -51,6 +51,7 @@ Requires = "1" Scratch = "1" Showoff = "0.3.1, 1.0" StatsBase = "0.32, 0.33" +Distributions = "< 0.25.7, ≥ 0.25.9" julia = "1.5" [extras] From ee316e2913c8afb44129ea177508a1442859899f Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 4 Jul 2021 21:58:13 +0200 Subject: [PATCH 314/518] GR: rework automatic major/minor ticks for log scales --- src/axes.jl | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index c7837d8c..0a39576f 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -172,8 +172,9 @@ function optimal_ticks_and_labels(ticks, alims, scale, formatter) scaled_ticks = optimize_ticks( sf(amin), sf(amax); - k_min = 4, # minimum number of ticks + k_min = scale in _logScales ? 2 : 4, # minimum number of ticks k_max = 8, # maximum number of ticks + scale = scale, )[1] elseif typeof(ticks) <: Int scaled_ticks, viewmin, viewmax = optimize_ticks( @@ -185,6 +186,7 @@ function optimal_ticks_and_labels(ticks, alims, scale, formatter) # `strict_span = false` rewards cases where the span of the # chosen ticks is not too much bigger than amin - amax: strict_span = false, + scale = scale, ) # axis[:lims] = map(RecipesPipeline.inverse_scale_func(scale), (viewmin, viewmax)) else @@ -336,10 +338,11 @@ function get_minor_ticks(sp, axis, ticks) length(ticks) < 2 && return nothing amin, amax = axis_limits(sp, axis[:letter]) - #Add one phantom tick either side of the ticks to ensure minor ticks extend to the axis limits + scale = axis[:scale] + # Add one phantom tick either side of the ticks to ensure minor ticks extend to the axis limits if length(ticks) > 2 ratio = (ticks[3] - ticks[2])/(ticks[2] - ticks[1]) - elseif axis[:scale] in (:none, :identity) + elseif scale ∈ (:none, :identity) ratio = 1 else return nothing @@ -348,13 +351,30 @@ function get_minor_ticks(sp, axis, ticks) last_step = ticks[end] - ticks[end-1] ticks = [ticks[1] - first_step/ratio; ticks; ticks[end] + last_step*ratio] - #Default to 5 intervals between major ticks - n = typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 ? axis[:minorticks] : 5 + # Default to 9 intervals between major ticks for log10 scale and 5 intervals otherwise. + n_default = (scale === :log10) ? 9 : 5 + n = typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 ? axis[:minorticks] : n_default + is_log_scale = scale in _logScales + base = is_log_scale ? _logScaleBases[scale] : nothing + sub = is_log_scale ? round(Int, log(ratio) / log(base)) : nothing + minorticks = typeof(ticks[1])[] - for (i,hi) in enumerate(ticks[2:end]) + for (i, hi) in enumerate(ticks[2:end]) lo = ticks[i] if isfinite(lo) && isfinite(hi) && hi > lo - append!(minorticks,collect(lo + (hi-lo)/n :(hi-lo)/n: hi - (hi-lo)/2n)) + if is_log_scale + for j in 1:sub + lo_ = lo * base^(j - 1) + hi_ = lo_ * base + step = (hi_ - lo_) / n + append!(minorticks, collect( + lo_ + (j > 1 ? 0 : step) : step : hi_ - (j < sub ? 0 : step / 2) + )) + end + else + step = (hi - lo) / n + append!(minorticks, collect(lo + step : step : hi - step / 2)) + end end end minorticks[amin .<= minorticks .<= amax] From 81170b434273e844922f9e43c275d01f8a22f195 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 5 Jul 2021 02:15:51 +0200 Subject: [PATCH 315/518] GR: add support for mesh3d --- src/backends.jl | 1 + src/backends/gr.jl | 38 +++++++++++++++++++++++++++++++++++--- src/examples.jl | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index 85ebfe98..1387ae18 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -352,6 +352,7 @@ const _gr_seriestype = [ :scatter3d, :surface, :wireframe, + :mesh3d, :volume, :shape, ] diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 41b98e96..74f11e66 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1676,7 +1676,7 @@ function gr_add_series(sp, series) end elseif st === :contour gr_draw_contour(series, x, y, z, clims) - elseif st in (:surface, :wireframe) + elseif st in (:surface, :wireframe, :mesh3d) gr_draw_surface(series, x, y, z, clims) elseif st === :volume sp[:legend] = :none @@ -1843,7 +1843,8 @@ end function gr_draw_surface(series, x, y, z, clims) e_kwargs = series[:extra_kwargs] - if series[:seriestype] === :surface + st = series[:seriestype] + if st === :surface fillalpha = get_fillalpha(series) fillcolor = get_fillcolor(series) # NOTE: setting nx = 0 or ny = 0 disables GR.gridit interpolation @@ -1858,9 +1859,40 @@ function gr_draw_surface(series, x, y, z, clims) else GR.gr3.surface(x, y, z, d_opt) end - else # wireframe + elseif st === :wireframe GR.setfillcolorind(0) GR.surface(x, y, z, get(e_kwargs, :display_option, GR.OPTION_FILLED_MESH)) + elseif st === :mesh3d + conn = series[:connections] + if typeof(conn) <: Tuple{Array, Array, Array} + ci, cj, ck = conn + if !(length(ci) == length(cj) == length(ck)) + throw(ArgumentError("Argument connections must consist of equally sized arrays.")) + end + else + throw(ArgumentError("Argument connections has to be a tuple of three arrays.")) + end + xx = zeros(eltype(x), 4length(ci)) + yy = zeros(eltype(y), 4length(cj)) + zz = zeros(eltype(z), 4length(ck)) + @inbounds for I ∈ 1:length(ci) + i = ci[I] + 1 # connections are 0-based + j = cj[I] + 1 + k = ck[I] + 1 + m = 4(I - 1) + 1; n = m + 1; o = m + 2; p = m + 3 + xx[m] = xx[p] = x[i] + yy[m] = yy[p] = y[i] + zz[m] = zz[p] = z[i] + xx[n] = x[j] + yy[n] = y[j] + zz[n] = z[j] + xx[o] = x[k] + yy[o] = y[k] + zz[o] = z[k] + end + GR.polyline3d(xx, yy, zz) + else + throw(ArgumentError("Not handled !")) end end diff --git a/src/examples.jl b/src/examples.jl index eb99e5fe..dd4eb8c4 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1214,7 +1214,7 @@ const _examples = PlotExample[ # Some constants for PlotDocs and PlotReferenceImages _animation_examples = [2, 31] _backend_skips = Dict( - :gr => [25, 30, 47], + :gr => [25, 30], :pyplot => [2, 25, 30, 31, 47, 49, 55], :plotlyjs => [2, 21, 24, 25, 30, 31, 49, 51, 55], :plotly => [2, 21, 24, 25, 30, 31, 49, 50, 51, 55], From 5974d0ac3164eca48b9b946f7fc43c8728ead523 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 5 Jul 2021 11:24:22 +0200 Subject: [PATCH 316/518] revert fix for failing CI (#3611) Co-authored-by: t-bltg --- .github/workflows/ci.yml | 2 +- Project.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a723a92..45a723a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,7 +73,7 @@ jobs: - name: Run Graphical test run: | $TESTCMD --project -e 'using Pkg; Pkg.test(coverage=true);' - # $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots");' + $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots");' $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes");' - name: Codecov diff --git a/Project.toml b/Project.toml index c5b7655d..8a90b5fd 100644 --- a/Project.toml +++ b/Project.toml @@ -51,7 +51,6 @@ Requires = "1" Scratch = "1" Showoff = "0.3.1, 1.0" StatsBase = "0.32, 0.33" -Distributions = "< 0.25.7, ≥ 0.25.9" julia = "1.5" [extras] From db7420fd5ffe5492d621b4c7feb9de5532320aa2 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 5 Jul 2021 13:25:20 +0200 Subject: [PATCH 317/518] fix dispatches for `plot` and `plot!` (#3602) * fix dispatches * fix tests --- src/plot.jl | 12 +++++++----- test/runtests.jl | 1 + test/test_pipeline.jl | 10 ++++++++++ 3 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 test/test_pipeline.jl diff --git a/src/plot.jl b/src/plot.jl index fb802774..a3373917 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -90,19 +90,20 @@ function plot(args...; kw...) end # build a new plot from existing plots -# note: we split into plt1 and plts_tail so we can dispatch correctly -plot(plt1::Plot, plts_tail::Plot...; kw...) = plot!(deepcopy(plt1), deepcopy.(plts_tail)...; kw...) -function plot!(plt1::Plot, plts_tail::Plot...; kw...) +# note: we split into plt1, plt2 and plts_tail so we can dispatch correctly +plot(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) = plot!(deepcopy(plt1), deepcopy(plt2), deepcopy.(plts_tail)...; kw...) +function plot!(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) @nospecialize plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) # build our plot vector from the args - n = length(plts_tail) + 1 + n = length(plts_tail) + 2 plts = Array{Plot}(undef, n) plts[1] = plt1 + plts[2] = plt2 for (i,plt) in enumerate(plts_tail) - plts[i+1] = plt + plts[i+2] = plt end # compute the layout @@ -186,6 +187,7 @@ function plot!(args...; kw...) end # this adds to a specific plot... most plot commands will flow through here +plot(plt::Plot, args...; kw...) = plot!(deepcopy(plt), args...; kw...) function plot!(plt::Plot, args...; kw...) @nospecialize plotattributes = KW(kw) diff --git a/test/runtests.jl b/test/runtests.jl index 997e1258..5221f6b1 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -30,6 +30,7 @@ end end # testset include("test_defaults.jl") +include("test_pipeline.jl") include("test_axes.jl") include("test_axis_letter.jl") include("test_components.jl") diff --git a/test/test_pipeline.jl b/test/test_pipeline.jl new file mode 100644 index 00000000..2c81dfeb --- /dev/null +++ b/test/test_pipeline.jl @@ -0,0 +1,10 @@ +using Plots, Test + +@testset "plot" begin + pl = plot(1:5) + pl2 = plot(pl, tex_output_standalone = true) + @test pl[:tex_output_standalone] == false + @test pl2[:tex_output_standalone] == true + plot!(pl, tex_output_standalone = true) + @test pl[:tex_output_standalone] == true +end From 1b881619e3ac5763b02db528f819a32a8165c1e3 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 5 Jul 2021 15:16:19 +0200 Subject: [PATCH 318/518] 1.17.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 8a90b5fd..b23a404e 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.16.8" +version = "1.17.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From c97900f7ee641ce754577b731a8f13e373a8ae73 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 5 Jul 2021 15:19:03 +0200 Subject: [PATCH 319/518] Update precompile_*.jl file (#3616) Co-authored-by: t-bltg --- .../precompile/precompile_Plots.jl | 168 +++++------------- 1 file changed, 49 insertions(+), 119 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 1dcbccd1..c8eba5d5 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,35 +68,20 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -106,90 +91,67 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(heatmap)),Any,typeof(heatmap),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Vector{GeometryBasics.Point2{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :xlims), Tuple{GridLayout, Tuple{Int64, Float64}}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Plot{GRBackend},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:line, :seriestype), Tuple{Tuple{Int64, Symbol, Float64, Matrix{Symbol}}, Symbol}},typeof(plot!),Plot{PlotlyBackend},Matrix{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color), Tuple{Int64, Symbol}},typeof(plot!),Function,Float64,Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color), Tuple{Int64, Symbol}},typeof(plot!),Plot{GRBackend},Function,Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color), Tuple{Int64, Symbol}},typeof(plot!),Function,Float64,Irrational{:π}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:lw, :color), Tuple{Int64, Symbol}},typeof(plot!),Plot{GRBackend},Function,Float64,Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :seriestype), Tuple{Tuple{Vector{Int64}, Vector{Int64}, Vector{Int64}}, Symbol}},typeof(plot),Vector{Int64},Vector{Int64},Vararg{Vector{Int64}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:fill, :seriestype), Tuple{Bool, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :seriestype), Tuple{Tuple{Vector{Int64}, Vector{Int64}, Vector{Int64}}, Symbol}},typeof(plot),Vector{Int64},Vector{Int64},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:fill, :seriestype), Tuple{Bool, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype), Tuple{Matrix{Symbol}, Matrix{String}, Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}}, Int64, String, Int64, UnitRange{Int64}, Symbol}},typeof(plot),Vector{Vector{Float64}},Vector{Vector{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:grid, :title), Tuple{Tuple{Symbol, Symbol, Symbol, Int64, Float64}, String}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Vararg{Float64, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Float64}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link), Tuple{Int64, Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :link), Tuple{Int64, Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :palette, :bg_inside), Tuple{Int64, Matrix{PlotUtils.ContinuousColorGradient}, Matrix{Symbol}}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :t, :leg, :ticks, :border), Tuple{GridLayout, Matrix{Symbol}, Bool, Nothing, Symbol}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :title, :titlelocation, :left_margin, :bottom_margin, :xrotation), Tuple{GridLayout, Matrix{String}, Symbol, Matrix{AbsoluteLength}, AbsoluteLength, Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xguide, :yguide, :xguidefonthalign, :yguidefontvalign, :xguideposition, :yguideposition, :ymirror, :xmirror, :legend, :seriestype), Tuple{Int64, String, String, Matrix{Symbol}, Matrix{Symbol}, Symbol, Matrix{Symbol}, Matrix{Bool}, Matrix{Bool}, Bool, Matrix{Symbol}}},typeof(plot),Matrix{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xlims), Tuple{GridLayout, Tuple{Int64, Float64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :xlims), Tuple{GridLayout, Tuple{Int64, Float64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout,), Tuple{Tuple{Int64, Int64}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:legend,), Tuple{Symbol}},typeof(plot),Vector{Tuple{Int64, Real}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :lab, :ms), Tuple{Tuple{Matrix{Symbol}, Int64}, Matrix{String}, Int64}},typeof(plot),Vector{Vector{T} where T},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :label, :legendtitle), Tuple{Tuple{Int64, Matrix{Symbol}}, Matrix{String}, String}},typeof(plot),Matrix{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill), Tuple{Int64, Bool, Tuple{Int64, Symbol}}},typeof(plot),Function,Function,Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :leg, :fill), Tuple{Int64, Bool, Tuple{Int64, Symbol}}},typeof(plot),Function,Function,Int64,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line, :marker, :bg, :fg, :xlim, :ylim, :leg), Tuple{Tuple{Int64, Symbol, Symbol}, Tuple{Shape{Float64, Float64}, Int64, RGBA{Float64}}, Symbol, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Bool}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:line_z, :linewidth, :legend), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}, Int64, Bool}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:m, :markersize, :lab, :bg, :xlim, :ylim, :seriestype), Tuple{Matrix{Symbol}, Int64, Matrix{String}, Symbol, Tuple{Int64, Int64}, Tuple{Int64, Int64}, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) @@ -200,45 +162,39 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:nbins, :show_empty_bins, :normed, :aspect_ratio, :seriestype), Tuple{Tuple{Int64, Int64}, Bool, Bool, Int64, Symbol}},typeof(plot),Vector{ComplexF64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:proj, :m), Tuple{Symbol, Int64}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{OHLC}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype), Tuple{String, Float64, Symbol}},typeof(plot),Vector{String},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :xflip, :yflip, :zflip, :zlabel, :dpi, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, Bool, Bool, Bool, String, Int64, Bool, String, Bool, String, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :xmirror, :ymirror, :zmirror, :zlabel, :dpi, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, Bool, Bool, Bool, String, Int64, Bool, String, Bool, String, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :dpi, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Int64, Bool, String, Bool, String, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :xflip, :yflip, :zflip, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, Bool, Bool, Bool, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :xmirror, :ymirror, :zmirror, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, Bool, Bool, Bool, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:yflip, :aspect_ratio), Tuple{Bool, Symbol}},typeof(plot),Vector{Float64},Vector{Int64},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(portfoliocomposition)),Any,typeof(portfoliocomposition),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:histogram2d}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:histogram}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:hline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppost}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -261,14 +217,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) - Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) - Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) @@ -282,26 +231,23 @@ function _precompile_() Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64}) - Base.precompile(Tuple{typeof(contour),Any,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(bottompad),EmptyLayout}) + Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) - Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) - Base.precompile(Tuple{typeof(error_style!),DefaultsDict}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},AbsoluteLength,AbsoluteLength,Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) @@ -310,25 +256,22 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_surface),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) - Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Float64, Float64, Float64, Int64, Float64, Float64, Float64, Float64}}}) + Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) Base.precompile(Tuple{typeof(gr_viewport_from_bbox),Subplot{GRBackend},BoundingBox{Tuple{AbsoluteLength, AbsoluteLength}, Tuple{AbsoluteLength, AbsoluteLength}},AbsoluteLength,AbsoluteLength,Vector{Float64}}) Base.precompile(Tuple{typeof(heatmap_edges),Base.OneTo{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Symbol,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Symbol,Tuple{Int64, Int64},Bool}) @@ -339,7 +282,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -347,52 +290,39 @@ function _precompile_() Base.precompile(Tuple{typeof(optimal_ticks_and_labels),StepRange{Int64, Int64},Tuple{Int64, Int64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(partialcircle),Int64,Float64,Int64}) - Base.precompile(Tuple{typeof(plot),Any,Any,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) - Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) + Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plot{GRBackend}}) - Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) + Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},String,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(scalefontsizes)}) - Base.precompile(Tuple{typeof(series_annotations),Vector{Any}}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) + Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol, N} where N}) Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(xgrid!),Plot{PlotlyBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) Base.precompile(Tuple{typeof(yaxis!),Any,Any}) - isdefined(Plots, Symbol("#add_major_or_minor_segments#125")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#125")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) - isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) + isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) + isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From e58fdf970f21d0730a32ca3dce5b37e7283997f8 Mon Sep 17 00:00:00 2001 From: Zhanibek Date: Tue, 6 Jul 2021 00:52:59 +0900 Subject: [PATCH 320/518] Gnuplot (GASTON) backend testing (#3177) * gnuplot * minimal working gnuplot * more params * new series and axis params * saving figures * gnuplot version 0.1 --- src/backends.jl | 87 +++++++++++ src/backends/gaston.jl | 331 +++++++++++++++++++++++++++++++++++++++++ src/init.jl | 5 + 3 files changed, 423 insertions(+) create mode 100644 src/backends/gaston.jl diff --git a/src/backends.jl b/src/backends.jl index 85ebfe98..c81e0645 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -256,6 +256,7 @@ end @init_backend PGFPlotsX @init_backend InspectDR @init_backend HDF5 +@init_backend Gaston # --------------------------------------------------------- @@ -574,6 +575,92 @@ const _pyplot_style = [:auto, :solid, :dash, :dot, :dashdot] const _pyplot_marker = vcat(_allMarkers, :pixel) const _pyplot_scale = [:identity, :ln, :log2, :log10] +# ------------------------------------------------------------------------------ +# Gaston + +function _initialize_backend(::GastonBackend) + @eval Main begin + import Gaston + export Gaston + end +end + +const _gaston_attr = merge_with_base_supported([ + # :annotations, + # :background_color_legend, + # :background_color_inside, + # :background_color_outside, + # :foreground_color_legend, + # :foreground_color_grid, :foreground_color_axis, + # :foreground_color_text, :foreground_color_border, + :label, + # :seriescolor, :seriesalpha, + :linecolor, :linestyle, :linewidth, :linealpha, + :markershape, :markercolor, :markersize, :markeralpha, + # :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, :markerstrokestyle, + # :fillrange, :fillcolor, :fillalpha, + # :bins, + # :bar_width, :bar_edges, + # :title, + # :window_title, + :guide, + # :guide_position, + :lims, :ticks, :scale, # :flip, :rotation, + :tickfont, :guidefont, + # :legendfont, + # :grid, :legend, + # :colorbar, :colorbar_title, + # :fill_z, :line_z, :marker_z, :levels, + # :ribbon, :quiver, :arrow, + # :orientation, + # :overwrite_figure, + # :polar, + # :normalize, :weights, :contours, + # :aspect_ratio, + :tick_direction, + # :framestyle, + # :camera, + # :contour_labels, + ]) +const _gaston_seriestype = [:path, + # :path3d, + :scatter, + :steppre, + # :stepmid, + :steppost, + # :histogram2d, + # :ysticks, :xsticks, + # :contour, + :shape, + # :straightline, + ] + +const _gaston_style = [:auto, + :solid, + :dash, + :dot, + :dashdot, + :dashdotdot + ] + +const _gaston_marker = [:none, + # :auto, + :circle, + :rect, + :diamond, + :utriangle, + :dtriangle, + :pentagon, + :x, + :+ + ] #vcat(_allMarkers, Shape) + +const _gaston_scale = [:identity, + # :ln, + # :log2, + :log10, + ] + # ------------------------------------------------------------------------------ # unicodeplots diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl new file mode 100644 index 00000000..4b8cc384 --- /dev/null +++ b/src/backends/gaston.jl @@ -0,0 +1,331 @@ +# https://github.com/mbaz/Gaston. +const G = Gaston +const GastonSubplot = G.Plot +const GASTON_MARKER_SCALING = 1.3 / 5.0 +const GNUPLOT_DPI = 72 # Compensate for DPI with increased resolution + +# +# -------------------------------------------- +# These functions are called by Plots +# -------------------------------------------- +# +# Create the window/figure for this backend. +function _create_backend_figure(plt::Plot{GastonBackend}) + xsize = plt.attr[:size][1] + ysize = plt.attr[:size][2] + G.set(termopts="""size $xsize,$ysize""") + + state_handle = G.nexthandle() # for now all the figures will be kept + plt.o = G.newfigure(state_handle) +end + + +function _before_layout_calcs(plt::Plot{GastonBackend}) + # Initialize all the subplots first + plt.o.subplots = G.SubPlot[] + grid = size(plt.layout) + plt.o.layout = grid + + + for sp in plt.subplots + gaston_init_subplot(plt, sp) + end + + # Then add the series (curves in gaston) + for series in plt.series_list + gaston_add_series(plt, series) + end +end + +function _update_min_padding!(sp::Subplot{GastonBackend}) + sp.minpad = (20mm, 5mm, 2mm, 10mm) +end + +function _update_plot_object(plt::Plot{GastonBackend}) +end + +for (mime, term) in ( + "application/eps" => "epscairo", # NEED fixing TODO + "image/eps" => "epslatex", # NEED fixing TODO + "application/pdf" => "pdfcairo", # NEED fixing TODO + "application/postscript" => "postscript", # NEED fixing TODO + "image/svg+xml" => "svg", + "text/latex" => "tikz", # NEED fixing TODO + "application/x-tex" => "epslatex", # NEED fixing TODO + "text/plain" => "dumb", # NEED fixing TODO +) + @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) + xsize = plt.attr[:size][1] + ysize = plt.attr[:size][2] + termopts="""size $xsize,$ysize""" + + tmpfile = G.tempname() * "." * $term + + G.save( + term = $term, + output = tmpfile, + handle = plt.o.handle, + saveopts = termopts + ) + while !isfile(tmpfile) end # avoid race condition with read in next line + write(io, read(tmpfile)) + rm(tmpfile, force=true) + nothing + + end +end + +function _show(io::IO, mime::MIME{Symbol("image/png")}, + plt::Plot{GastonBackend},) + scaling = plt.attr[:dpi] / GNUPLOT_DPI + xsize = plt.attr[:size][1] * scaling + ysize = plt.attr[:size][2] * scaling + + # Scale all plot elements to match Plots.jl DPI standard + termopts="""size $xsize,$ysize fontscale $scaling lw $scaling dl $scaling ps $scaling""" + + tmpfile = G.tempname() + + G.save( + term = "pngcairo", + output = tmpfile, + handle = plt.o.handle, + saveopts = termopts + ) + while !isfile(tmpfile) end # avoid race condition with read in next line + write(io, read(tmpfile)) + rm(tmpfile, force=true) + nothing +end + + +function _display(plt::Plot{GastonBackend}) + display(plt.o) +end +# +# -------------------------------------------- +# These functions are gaston specific +# -------------------------------------------- +# +function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}) + dims = RecipesPipeline.is3d(sp) ? 3 : 2 + + axesconf = gaston_parse_axes_args(plt, sp) # Gnuplot string + sp.o = GastonSubplot(dims=dims, axesconf = axesconf, curves = []) + push!(plt.o.subplots, sp.o) + +end + +function gaston_add_series(plt::Plot{GastonBackend}, series::Series) + # Gaston.Curve = Plots.Series + sp = series[:subplot] + g_sp = sp.o # Gaston subplot object + + seriesconf = gaston_parse_series_args(series) # Gnuplot string + c = G.Curve(series[:x], series[:y], nothing, nothing, seriesconf ) + + isfirst = length(g_sp.curves) == 0 ? true : false + push!(g_sp.curves, c) + G.write_data(c, g_sp.dims, g_sp.datafile, append = isfirst ? false : true) +end + +function gaston_parse_series_args(series::Series) + curveconf = String[] + st = series[:seriestype] + + if st == :scatter + pt = gaston_marker(series[:markershape]) + ps = series[:markersize] * GASTON_MARKER_SCALING + lc = gaston_color(series[:markercolor]) + # alpha = series[:markeralpha] # TODO merge alpha with rgb color + push!(curveconf, """with points pt $pt ps $ps lc $lc""") + elseif st == :path + lc = gaston_color(series[:linecolor]) + dt = gaston_linestyle(series[:linestyle]) + lw = series[:linewidth] + # alpha = series[:linealpha] # TODO merge alpha with rgb color + if series[:markershape] == :none # simplepath + push!(curveconf, """with lines lc $lc dt $dt lw $lw""") + else + pt = gaston_marker(series[:markershape]) + ps = series[:markersize] * GASTON_MARKER_SCALING + push!(curveconf, """with lp lc $lc dt $dt lw $lw pt $pt ps $ps""") + end + elseif st == :shape + fc = gaston_color(series[:fillcolor]) + fs = "solid" + lc = gaston_color(series[:linecolor]) + push!(curveconf, """with filledcurves fc $fc fs $fs border lc $lc""") + elseif st == :steppre + push!(curveconf, """with steps""") + elseif st == :steppost + push!(curveconf, """with fsteps""") # Not sure if not the other way + end + + # label + push!(curveconf, """title "$(series[:label])" """) + + return join(curveconf, " ") +end + +function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}) + axesconf = String[] + # Standard 2d axis + if !ispolar(sp) && !RecipesPipeline.is3d(sp) + # TODO + # configure grid, axis spines, thickness + end + + for letter in (:x, :y, :z) + axis_attr = sp.attr[Symbol(letter, :axis)] + # label names + push!(axesconf, """set $(letter)label "$(axis_attr[:guide])" """) + push!(axesconf, """set $(letter)label font "$(axis_attr[:guidefontfamily]), $(axis_attr[:guidefontsize])" """) + + # Handle ticks + # ticksyle + push!(axesconf, """set $(letter)tics font "$(axis_attr[:tickfontfamily]), $(axis_attr[:tickfontsize])" """) + push!(axesconf, """set $(letter)tics textcolor rgb "#$(hex(axis_attr[:tickfontcolor], :rrggbb))" """) + push!(axesconf, """set $(letter)tics $(axis_attr[:tick_direction])""") + + mirror = axis_attr[:mirror] ? "mirror" : "nomirror" + push!(axesconf, """set $(letter)tics $(mirror) """) + + logscale = if axis_attr[:scale] == :identity + "nologscale" + elseif axis_attr[:scale] == :log10 + "logscale" + end + push!(axesconf, """set $logscale $(letter)""") + + # tick locations + if axis_attr[:ticks] != :native + # axis limits + from, to = axis_limits(sp, letter) + push!(axesconf, """set $(letter)range [$from:$to]""") + + ticks = get_ticks(sp, axis_attr) + gaston_set_ticks!(axesconf, ticks, letter) + end + # set title {""} {offset } {font "{,}"}{{textcolor | tc} { | default}} {{no}enhanced}1 + end + gaston_set_legend!(axesconf, sp) # Set legend params + + if sp[:title] != nothing + push!(axesconf, """set title '$(sp[:title])' """) + push!(axesconf, """set title font '$(sp[:titlefontfamily]), $(sp[:titlefontsize])' """) + end + + return join(axesconf, "\n") +end + +function gaston_set_ticks!(axesconf, ticks, letter) + + ticks == :auto && return + if ticks == :none || ticks === nothing || ticks == false + push!(axesconf, """unset $(letter)tics """) + return + end + + ttype = ticksType(ticks) + if ttype == :ticks + tick_locations = @view ticks[:] + gaston_tick_string = [] + for i in eachindex(tick_locations) + lac = tick_locations[i] + push!(gaston_tick_string, "$loc") + end + push!( + axesconf, + "set $(letter)tics (" * join(gaston_tick_string, ", ") * ")" + ) + + elseif ttype == :ticks_and_labels + tick_locations = @view ticks[1][:] + tick_labels = @view ticks[2][:] + gaston_tick_string = [] + for i in eachindex(tick_locations) + loc = tick_locations[i] + lab = gaston_enclose_tick_string(tick_labels[i]) + push!(gaston_tick_string, "'$lab' $loc") + end + push!( + axesconf, + "set $(letter)tics (" * join(gaston_tick_string, ", ") * ")" + ) + + else + error("Invalid input for $(letter)ticks: $ticks") + end +end + +function gaston_set_legend!(axesconf, sp) + leg = sp[:legend] + if !(sp[:legend] in(:none, :inline)) + if leg == :best + leg = :topright + end + + if occursin("outer", string(leg)) + push!(axesconf, "set key outside") + else + push!(axesconf, "set key inside") + end + positions = ["top", "bottom", "left", "right"] + for position in positions + if occursin(position, string(leg)) + push!(axesconf, "set key $position") + end + end + if sp[:legendtitle] != nothing + push!(axesconf, "set key title '$(sp[:legendtitle])'") + end + push!(axesconf, "set key box linewidth 1") + push!(axesconf, "set key opaque") + + push!(axesconf, "set border back") + push!(axesconf, """set key font "$(sp[:legendfontfamily]), $(sp[:legendfontsize])" """) + else + push!(axesconf, "set key off") + + end + +end + +function gaston_marker(marker) + marker == :none && return -1 + marker == :circle && return 7 + marker == :rect && return 5 + marker == :diamond && return 28 + marker == :utriangle && return 9 + marker == :dtriangle && return 11 + marker == :+ && return 1 + marker == :x && return 2 + marker == :star5 && return 3 + marker == :pentagon && return 15 + marker == :pixel && return 0 + + @warn("Unsupported marker $marker") + return 1 +end + +gaston_color(color) = """rgb "#$(hex(color, :rrggbb))" """ + +function gaston_linestyle(style) + style == :solid && return "1" + style == :dash && return "2" + style == :dot && return "3" + style == :dashdot && return "4" + style == :dashdotdot && return "5" +end + +function gaston_enclose_tick_string(tick_string) + if findfirst("^", tick_string) == nothing + return tick_string + end + + + base, power = split(tick_string, "^") + power = string("{", power, "}") + return string(base, "^", power) +end diff --git a/src/init.jl b/src/init.jl index 22bb4b51..8b17f5b9 100644 --- a/src/init.jl +++ b/src/init.jl @@ -70,6 +70,11 @@ function __init__() include(fn) end + @require Gaston = "4b11ee91-296f-5714-9832-002c20994614" begin + fn = joinpath(@__DIR__, "backends", "gaston.jl") + include(fn) + end + @require IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" begin if IJulia.inited _init_ijulia_plotting() From c9f7c6b45da423740a4599894287d8e35a32c6cf Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Mon, 5 Jul 2021 17:53:42 +0200 Subject: [PATCH 321/518] 1.18.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index b23a404e..81576ef5 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.17.0" +version = "1.18.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 434e189f1e8c307c41b60b6a7ca2e013d1d426f1 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 5 Jul 2021 22:12:09 +0200 Subject: [PATCH 322/518] fix JuliaPlots/Plots.jl/issues/3451 --- src/pipeline.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index 94fce068..61f52cd1 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -141,7 +141,7 @@ function _add_smooth_kw(kw_list::Vector{KW}, kw::AKW) end -RecipesPipeline.get_axis_limits(plt::Plot, letter) = axis_limits(plt[1], letter) +RecipesPipeline.get_axis_limits(plt::Plot, letter) = axis_limits(plt[1], letter, false) ## Plot recipes From 9f4e32aa4db2d534534634cddb3995e8626c0454 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 5 Jul 2021 22:29:38 +0200 Subject: [PATCH 323/518] add regression test --- test/test_pipeline.jl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/test_pipeline.jl b/test/test_pipeline.jl index 2c81dfeb..027ff040 100644 --- a/test/test_pipeline.jl +++ b/test/test_pipeline.jl @@ -8,3 +8,11 @@ using Plots, Test plot!(pl, tex_output_standalone = true) @test pl[:tex_output_standalone] == true end + +@testset "get_axis_limits" begin + x = [.1, 5] + p1 = plot(x, [5, .1], yscale=:log10) + p2 = plot!(identity) + @test all(RecipesPipeline.get_axis_limits(p1, :x) .== x) + @test all(RecipesPipeline.get_axis_limits(p2, :x) .== x) +end From 68a56fee9184b4eb56d3864e7210737e9f9c05d8 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 5 Jul 2021 22:47:21 +0200 Subject: [PATCH 324/518] fix when ticks is nothing - format - minor updates --- src/axes.jl | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 0a39576f..8b2836dc 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -172,7 +172,7 @@ function optimal_ticks_and_labels(ticks, alims, scale, formatter) scaled_ticks = optimize_ticks( sf(amin), sf(amax); - k_min = scale in _logScales ? 2 : 4, # minimum number of ticks + k_min = scale ∈ _logScales ? 2 : 4, # minimum number of ticks k_max = 8, # maximum number of ticks scale = scale, )[1] @@ -352,23 +352,23 @@ function get_minor_ticks(sp, axis, ticks) ticks = [ticks[1] - first_step/ratio; ticks; ticks[end] + last_step*ratio] # Default to 9 intervals between major ticks for log10 scale and 5 intervals otherwise. - n_default = (scale === :log10) ? 9 : 5 + n_default = (scale == :log10) ? 9 : 5 n = typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 ? axis[:minorticks] : n_default - is_log_scale = scale in _logScales - base = is_log_scale ? _logScaleBases[scale] : nothing - sub = is_log_scale ? round(Int, log(ratio) / log(base)) : nothing + is_log_scale = scale ∈ _logScales + base = get(_logScaleBases, scale, nothing) + exp = is_log_scale ? round(Int, log(base, ratio)) : nothing minorticks = typeof(ticks[1])[] for (i, hi) in enumerate(ticks[2:end]) lo = ticks[i] if isfinite(lo) && isfinite(hi) && hi > lo if is_log_scale - for j in 1:sub - lo_ = lo * base^(j - 1) + for e in 1:exp + lo_ = lo * base^(e - 1) hi_ = lo_ * base step = (hi_ - lo_) / n append!(minorticks, collect( - lo_ + (j > 1 ? 0 : step) : step : hi_ - (j < sub ? 0 : step / 2) + lo_ + (e > 1 ? 0 : step) : step : hi_ - (e < exp ? 0 : step / 2) )) end else @@ -512,12 +512,12 @@ end # ------------------------------------------------------------------------- # push the limits out slightly -function widen(lmin, lmax, scale = :identity) +function widen(lmin, lmax, scale=:identity) f, invf = RecipesPipeline.scale_func(scale), RecipesPipeline.inverse_scale_func(scale) span = f(lmax) - f(lmin) # eps = NaNMath.max(1e-16, min(1e-2span, 1e-10)) eps = NaNMath.max(1e-16, 0.03span) - invf(f(lmin)-eps), invf(f(lmax)+eps) + invf(f(lmin) - eps), invf(f(lmax) + eps) end # figure out if widening is a good idea. @@ -539,10 +539,11 @@ function default_should_widen(axis::Axis) false end -function round_limits(amin,amax) - scale = 10^(1-round(log10(amax - amin))) - amin = floor(amin*scale)/scale - amax = ceil(amax*scale)/scale +function round_limits(amin, amax, scale) + base = get(_logScaleBases, scale, 10.) + factor = base^(1 - round(log(base, amax - amin))) + amin = floor(amin * factor) / factor + amax = ceil(amax * factor) / factor amin, amax end @@ -579,7 +580,7 @@ function axis_limits(sp, letter, should_widen = default_should_widen(sp[Symbol(l if axis[:letter] == :x amin, amax = 0, 2pi elseif lims == :auto - #widen max radius so ticks dont overlap with theta axis + # widen max radius so ticks dont overlap with theta axis 0, amax + 0.1 * abs(amax - amin) else amin, amax @@ -587,12 +588,15 @@ function axis_limits(sp, letter, should_widen = default_should_widen(sp[Symbol(l elseif should_widen widen(amin, amax, axis[:scale]) elseif lims == :round - round_limits(amin,amax) + round_limits(amin, amax, axis[:scale]) else amin, amax end - if !has_user_lims && consider_aspect && letter in (:x, :y) && !(sp[:aspect_ratio] in (:none, :auto) || RecipesPipeline.is3d(:sp)) + if ( + !has_user_lims && consider_aspect && letter in (:x, :y) && + !(sp[:aspect_ratio] in (:none, :auto) || RecipesPipeline.is3d(:sp)) + ) aspect_ratio = isa(sp[:aspect_ratio], Number) ? sp[:aspect_ratio] : 1 plot_ratio = height(plotarea(sp)) / width(plotarea(sp)) dist = amax - amin @@ -728,6 +732,7 @@ function axis_drawing_info(sp, letter) invf = RecipesPipeline.inverse_scale_func(oax[:scale]) add_major_or_minor_segments(ticks, grid, segments, factor, cond) = begin + ticks === nothing && return if cond tick_start, tick_stop = if sp[:framestyle] == :origin t = invf(f(0) + factor * (f(oamax) - f(oamin))) @@ -853,6 +858,7 @@ function axis_drawing_info_3d(sp, letter) ga0, ga1 = sp[:framestyle] in (:origin, :zerolines) ? (namin, namax) : (na0, na1) add_major_or_minor_segments(ticks, grid, segments, factor, cond) = begin + ticks === nothing && return if cond tick_start, tick_stop = if sp[:framestyle] == :origin t = invf(f(0) + factor * (f(namax) - f(namin))) From 909ad3314a98977bf26f7f210063bf7f55931803 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 5 Jul 2021 22:59:22 +0200 Subject: [PATCH 325/518] fix test --- test/test_pipeline.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_pipeline.jl b/test/test_pipeline.jl index 027ff040..cf6c38e2 100644 --- a/test/test_pipeline.jl +++ b/test/test_pipeline.jl @@ -1,4 +1,5 @@ using Plots, Test +using RecipesPipeline @testset "plot" begin pl = plot(1:5) From 1bba6afde5df5590e0970819cebfe8c0905fb952 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Jul 2021 13:53:03 +0200 Subject: [PATCH 326/518] Update precompile_*.jl file (#3617) Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index c8eba5d5..6f058be7 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,19 +68,28 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -91,6 +100,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -113,8 +123,13 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) @@ -165,6 +180,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -185,8 +202,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -217,9 +236,12 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) + Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) @@ -231,7 +253,6 @@ function _precompile_() Base.precompile(Tuple{typeof(backend),PlotlyBackend}) Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) - Base.precompile(Tuple{typeof(bottompad),EmptyLayout}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) @@ -239,12 +260,12 @@ function _precompile_() Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -256,7 +277,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -282,7 +303,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -296,7 +316,9 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) @@ -306,10 +328,10 @@ function _precompile_() Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) - Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},String,Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) + Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From 16e41f0690557362f43801ae094d0985037e121e Mon Sep 17 00:00:00 2001 From: t-bltg Date: Tue, 6 Jul 2021 19:15:34 +0200 Subject: [PATCH 327/518] rework phantom ticks for log scales - add minorgrid to ex5 --- src/axes.jl | 40 ++++++++++++++++++++-------------------- src/examples.jl | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 8b2836dc..c558d69b 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -333,42 +333,42 @@ _transform_ticks(ticks::AbstractArray{T}) where T <: Dates.TimeType = Dates.valu _transform_ticks(ticks::NTuple{2, Any}) = (_transform_ticks(ticks[1]), ticks[2]) function get_minor_ticks(sp, axis, ticks) - axis[:minorticks] in (:none, nothing, false) && !axis[:minorgrid] && return nothing + axis[:minorticks] ∈ (:none, nothing, false) && !axis[:minorgrid] && return nothing ticks = ticks[1] length(ticks) < 2 && return nothing amin, amax = axis_limits(sp, axis[:letter]) scale = axis[:scale] - # Add one phantom tick either side of the ticks to ensure minor ticks extend to the axis limits - if length(ticks) > 2 - ratio = (ticks[3] - ticks[2])/(ticks[2] - ticks[1]) - elseif scale ∈ (:none, :identity) - ratio = 1 - else - return nothing - end - first_step = ticks[2] - ticks[1] - last_step = ticks[end] - ticks[end-1] - ticks = [ticks[1] - first_step/ratio; ticks; ticks[end] + last_step*ratio] + log_scaled = scale ∈ _logScales + base = get(_logScaleBases, scale, nothing) - # Default to 9 intervals between major ticks for log10 scale and 5 intervals otherwise. + # add one phantom tick either side of the ticks to ensure minor ticks extend to the axis limits + if log_scaled + sub = round(Int, log(base, ticks[2] / ticks[1])) + ticks = [ticks[1] / base; ticks; ticks[end] * base] + else + sub = 1 # unused + ratio = length(ticks) > 2 ? (ticks[3] - ticks[2]) / (ticks[2] - ticks[1]) : 1 + first_step = ticks[2] - ticks[1] + last_step = ticks[end] - ticks[end-1] + ticks = [ticks[1] - first_step / ratio; ticks; ticks[end] + last_step * ratio] + end + + # default to 9 intervals between major ticks for log10 scale and 5 intervals otherwise n_default = (scale == :log10) ? 9 : 5 n = typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 ? axis[:minorticks] : n_default - is_log_scale = scale ∈ _logScales - base = get(_logScaleBases, scale, nothing) - exp = is_log_scale ? round(Int, log(base, ratio)) : nothing minorticks = typeof(ticks[1])[] - for (i, hi) in enumerate(ticks[2:end]) + for (i, hi) ∈ enumerate(ticks[2:end]) lo = ticks[i] if isfinite(lo) && isfinite(hi) && hi > lo - if is_log_scale - for e in 1:exp + if log_scaled + for e ∈ 1:sub lo_ = lo * base^(e - 1) hi_ = lo_ * base step = (hi_ - lo_) / n append!(minorticks, collect( - lo_ + (e > 1 ? 0 : step) : step : hi_ - (e < exp ? 0 : step / 2) + lo_ + (e > 1 ? 0 : step) : step : hi_ - (e < sub ? 0 : step / 2) )) end else diff --git a/src/examples.jl b/src/examples.jl index 6d4e631d..84692a30 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -115,7 +115,7 @@ const _examples = PlotExample[ ) vline!([5, 10]) title!("TITLE") - yaxis!("YLABEL", :log10) + yaxis!("YLABEL", :log10, minorgrid = true) end ), ], From 91e91ac82199dd513f71857e7c1706a5677a72ad Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 7 Jul 2021 00:45:53 +0200 Subject: [PATCH 328/518] Reduce number of warnings on invalid log values --- src/utils.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils.jl b/src/utils.jl index e8daeada..4ebdc01e 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -91,6 +91,7 @@ function series_segments(series::Series, seriestype::Symbol=:path; check=false) if v <= 0 @warn "Invalid negative or zero value $v found at series index $i for $(scale) based $(scales[n])" @debug "" exception=(DomainError(v), stacktrace()) + break end end end From 39d52a5c57d6b6afa31e03835b6ba4ddd44b1ed0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Jul 2021 13:03:49 +0200 Subject: [PATCH 329/518] Update precompile_*.jl file (#3622) Co-authored-by: t-bltg --- .../precompile/precompile_Plots.jl | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 6f058be7..e0c7c1fc 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,6 +68,7 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) @@ -75,7 +76,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) @@ -90,7 +91,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:scale, :guide), Tuple{Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -100,7 +104,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -119,23 +122,27 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis,), Tuple{Tuple{String, Symbol}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -236,12 +243,13 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) + Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) - Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) @@ -256,16 +264,19 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -287,7 +298,9 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) + Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) @@ -302,7 +315,9 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(isvertical),Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(layout_args),Int64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -316,15 +331,15 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(processGridArg!),DefaultsDict,Bool,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) + Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) @@ -332,6 +347,12 @@ function _precompile_() Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -342,7 +363,6 @@ function _precompile_() Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(yaxis!),Any,Any}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end From 3994e47d3ca8234ee71e95ffadeab13cd217765a Mon Sep 17 00:00:00 2001 From: Michael Krabbe Borregaard Date: Wed, 7 Jul 2021 14:26:20 +0200 Subject: [PATCH 330/518] add mkborregaard orcid --- .zenodo.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.zenodo.json b/.zenodo.json index 1870811d..799a31f8 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -15,8 +15,9 @@ "type": "ProjectLeader" }, { - "affiliation": "GLOBE Institute", + "affiliation": "GLOBE Institute, University of Copenhagen", "name": "Michael Krabbe Borregaard", + "orcid": "0000-0002-8146-8435", "type": "ProjectLeader" }, { From 4a180989447d7a4e5961ae8b0bdd5bcea02d7f91 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 7 Jul 2021 15:58:45 +0200 Subject: [PATCH 331/518] 1.18.1 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 81576ef5..a8842240 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.18.0" +version = "1.18.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From f5e6ae9f98df6c6d6896fac99e2414ef7f1eca41 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 5 Jul 2021 11:48:48 +0200 Subject: [PATCH 332/518] add warning - enhance example --- src/backends/gr.jl | 31 +++++++++++++------------- src/examples.jl | 54 +++++++++++++++++++++++++--------------------- 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 74f11e66..1f2fbd9d 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -524,7 +524,7 @@ function gr_draw_colorbar(cbar::GRColorbar, sp::Subplot, clims, viewport_plotare levels = _cbar_unique(contour_levels.(series, Ref(clims)), "levels") # GR implicitly uses the maximal z value as the highest level if levels[end] < clims[2] - @warn("GR: highest contour level less than maximal z value is not supported.") + @warn "GR: highest contour level less than maximal z value is not supported." # replace levels, rather than assign to levels[end], to ensure type # promotion in case levels is an integer array levels = [levels[1:end-1]; clims[2]] @@ -1832,7 +1832,7 @@ function gr_draw_contour(series, x, y, z, clims) h = gr_contour_levels(series, clims) if series[:fillrange] !== nothing if series[:fillcolor] != series[:linecolor] && !is_lc_black - @warn("GR: filled contour only supported with black contour lines") + @warn "GR: filled contour only supported with black contour lines" end GR.contourf(x, y, h, z, series[:contour_labels] == true ? 1 : 0) else @@ -1863,6 +1863,7 @@ function gr_draw_surface(series, x, y, z, clims) GR.setfillcolorind(0) GR.surface(x, y, z, get(e_kwargs, :display_option, GR.OPTION_FILLED_MESH)) elseif st === :mesh3d + @warn "GR: mesh3d is experimental (no face colors)" conn = series[:connections] if typeof(conn) <: Tuple{Array, Array, Array} ci, cj, ck = conn @@ -1872,25 +1873,25 @@ function gr_draw_surface(series, x, y, z, clims) else throw(ArgumentError("Argument connections has to be a tuple of three arrays.")) end - xx = zeros(eltype(x), 4length(ci)) - yy = zeros(eltype(y), 4length(cj)) - zz = zeros(eltype(z), 4length(ck)) + X = zeros(eltype(x), 4length(ci)) + Y = zeros(eltype(y), 4length(cj)) + Z = zeros(eltype(z), 4length(ck)) @inbounds for I ∈ 1:length(ci) i = ci[I] + 1 # connections are 0-based j = cj[I] + 1 k = ck[I] + 1 m = 4(I - 1) + 1; n = m + 1; o = m + 2; p = m + 3 - xx[m] = xx[p] = x[i] - yy[m] = yy[p] = y[i] - zz[m] = zz[p] = z[i] - xx[n] = x[j] - yy[n] = y[j] - zz[n] = z[j] - xx[o] = x[k] - yy[o] = y[k] - zz[o] = z[k] + X[m] = X[p] = x[i] + Y[m] = Y[p] = y[i] + Z[m] = Z[p] = z[i] + X[n] = x[j] + Y[n] = y[j] + Z[n] = z[j] + X[o] = x[k] + Y[o] = y[k] + Z[o] = z[k] end - GR.polyline3d(xx, yy, zz) + GR.polyline3d(X, Y, Z) else throw(ArgumentError("Not handled !")) end diff --git a/src/examples.jl b/src/examples.jl index dd4eb8c4..af91f05e 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -998,33 +998,37 @@ const _examples = PlotExample[ end] ), PlotExample( # 47 - "Mesh3d", - """ - Allows to plot arbitrary 3d meshes. If only x,y,z are given the mesh is generated automatically. - You can also specify the connections using the connections keyword. - The connections are specified using a tuple of vectors. Each vector contains the 0-based indices of one point of a triangle, - such that elements at the same position of these vectors form a triangle. - """, - [ - :( - begin - # specify the vertices - x=[0, 1, 2, 0] - y=[0, 0, 1, 2] - z=[0, 2, 0, 1] + "Mesh3d", + """ + Allows to plot arbitrary 3d meshes. If only x,y,z are given the mesh is generated automatically. + You can also specify the connections using the connections keyword. + The connections are specified using a tuple of vectors. Each vector contains the 0-based indices of one point of a triangle, + such that elements at the same position of these vectors form a triangle. + """, + [ + :( + begin + # specify the vertices + x=[0, 1, 2, 0] + y=[0, 0, 1, 2] + z=[0, 2, 0, 1] - # specify the triangles - # every column is one triangle, - # where the values denote the indices of the vertices of the triangle - i=[0, 0, 0, 1] - j=[1, 2, 3, 2] - k=[2, 3, 1, 3] + # specify the triangles + # every column is one triangle, + # where the values denote the indices of the vertices of the triangle + i=[0, 0, 0, 1] + j=[1, 2, 3, 2] + k=[2, 3, 1, 3] - # the four triangles gives above give a tetrahedron - mesh3d(x,y,z;connections=(i,j,k)) - end - ), - ], + # the four triangles gives above give a tetrahedron + mesh3d( + x, y, z; connections=(i, j, k), + title="triangles", xlabel="x", ylabel="y", zlabel="z", + legend=:none, margin=2Plots.mm + ) + end + ), + ], ), PlotExample( # 48 "Vectors of markershapes and segments", From 5d935d29c5cb23b65884b214daa58842cc86f4af Mon Sep 17 00:00:00 2001 From: Andy Nowacki Date: Wed, 7 Jul 2021 13:18:52 +0100 Subject: [PATCH 333/518] Document use of tuples in annotations attribute The `annotations` attribute (and `annotate!` function) has supported the use of plain tuples containing arguments which are passed to `text` since v0.22.2. Document this option in the list of SubPlot attributes and in example 20. Closes (mostly) https://github.com/JuliaPlots/RecipesBase.jl/issues/72 but note that `series_annotations` does not yet support passing tuples of arguments for `Plots.text`. --- src/arg_desc.jl | 2 +- src/examples.jl | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index 9ea4f463..d490d8c9 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -115,7 +115,7 @@ const _arg_desc = KW( :colorbar_formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", :legendfont => "Font. Font of legend items.", :legendtitlefont => "Font. Font of the legend title.", -:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String or PlotText (created with `text(args...)`) Add one-off text annotations at the x,y coordinates.", +:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String, PlotText (created with `text(args...)`), or a tuple of arguments to `text` (e.g., `(\"Label\", 8, :red, :top)`). Add one-off text annotations at the x,y coordinates.", :annotationfontfamily => "String or Symbol. Font family of annotations.", :annotationfontsize => "Integer. Font pointsize of annotations.", :annotationhalign => "Symbol. horizontal alignment of annotations, :hcenter, :left, :right or :center.", diff --git a/src/examples.jl b/src/examples.jl index 191080bb..46742fbd 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -370,10 +370,19 @@ const _examples = PlotExample[ "Annotations", """ The `annotations` keyword is used for text annotations in data-coordinates. Pass in a - tuple (x,y,text) or a vector of annotations. `annotate!(ann)` is shorthand for `plot!(; - annotation=ann)`. Series annotations are used for annotating individual data points. - They require only the annotation... x/y values are computed. A `PlotText` object can be - build with the method `text(string, attr...)`, which wraps font and color attributes. + tuple `(x, y, text)`, or a vector of annotations, each of which is a tuple of `x`, `y` + and `text`. + `text` may be a simple `String`, or a `PlotText` object, which can be + built with the method `text(string, attrs...)`. + This wraps font and color attributes and allows you to set text styling. + `text` may also be a tuple `(string, attrs...)` of arguments which are passed + to `Plots.text`. + + `annotate!(ann)` is shorthand for `plot!(; annotation=ann)`. + + Series annotations are used for annotating individual data points. + They require only the annotation; x/y values are computed. Series annotations + require either plain `String`s or `PlotText` objects. """, [ :( @@ -385,11 +394,11 @@ const _examples = PlotExample[ leg = false, ) annotate!([ - (5, y[5], Plots.text("this is #5", 16, :red, :center)), + (5, y[5], ("this is #5", 16, :red, :center)), ( 10, y[10], - Plots.text("this is #10", :right, 20, "courier"), + ("this is #10", :right, 20, "courier"), ), ]) scatter!( From 0e25767cd34856a9a6b26131273363ddd6d5cd3d Mon Sep 17 00:00:00 2001 From: Andy Nowacki Date: Thu, 8 Jul 2021 11:22:44 +0100 Subject: [PATCH 334/518] Document use of tuples in annotate! shorthand Include a description of the use of vectors of plain tuples in the docstring for `annotate!`. --- src/shorthands.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/shorthands.jl b/src/shorthands.jl index dfcc2302..74a7b26c 100644 --- a/src/shorthands.jl +++ b/src/shorthands.jl @@ -453,12 +453,14 @@ Add annotations to an existing plot. # Arguments - `anns`: An `AbstractVector` of tuples of the form `(x,y,text)`. The `text` object - can be a `String` or `PlotText`. + can be a `String`, `PlotText` PlotText (created with `text(args...)`), + or a tuple of arguments to `text` (e.g., `("Label", 8, :red, :top)`). # Example ```julia-repl julia> plot(1:10) julia> annotate!([(7,3,"(7,3)"),(3,7,text("hey", 14, :left, :top, :green))]) +julia> annotate!([(4, 4, ("More text", 8, 45.0, :bottom, :red))]) ``` """ annotate!(anns...; kw...) = plot!(; annotation = anns, kw...) From bb493a872accc40e5452dd620985aa7e8fc722dd Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 8 Jul 2021 18:50:46 +0200 Subject: [PATCH 335/518] allow relative positioning of annotations --- src/components.jl | 75 +++++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/src/components.jl b/src/components.jl index 63be7b15..d07bcce0 100644 --- a/src/components.jl +++ b/src/components.jl @@ -588,13 +588,13 @@ function process_annotation(sp::Subplot, xs, ys, labs, font = nothing) ylength = length(methods(length, (typeof(ys),))) == 0 ? 1 : length(ys) if isnothing(font) font = Plots.font(; - family=sp[:annotationfontfamily], - pointsize=sp[:annotationfontsize], - halign=sp[:annotationhalign], - valign=sp[:annotationvalign], - rotation=sp[:annotationrotation], - color=sp[:annotationcolor], - ) + family=sp[:annotationfontfamily], + pointsize=sp[:annotationfontsize], + halign=sp[:annotationhalign], + valign=sp[:annotationvalign], + rotation=sp[:annotationrotation], + color=sp[:annotationcolor], + ) end for i in 1:max(xlength, ylength, length(labs)) x, y, lab = _cycle(xs, i), _cycle(ys, i), _cycle(labs, i) @@ -614,13 +614,13 @@ function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol}, positions, labs = makevec(positions), makevec(labs) if isnothing(font) font = Plots.font(; - family=sp[:annotationfontfamily], - pointsize=sp[:annotationfontsize], - halign=sp[:annotationhalign], - valign=sp[:annotationvalign], - rotation=sp[:annotationrotation], - color=sp[:annotationcolor], - ) + family=sp[:annotationfontfamily], + pointsize=sp[:annotationfontsize], + halign=sp[:annotationhalign], + valign=sp[:annotationvalign], + rotation=sp[:annotationrotation], + color=sp[:annotationcolor], + ) end for i in 1:max(length(positions), length(labs)) pos, lab = _cycle(positions, i), _cycle(labs, i) @@ -635,26 +635,43 @@ function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol}, anns end -function process_any_label(lab, font=Font()) - lab isa Tuple ? text(lab...) : text( lab, font ) -end +process_any_label(lab, font=Font()) = lab isa Tuple ? text(lab...) : text(lab, font) + +_relative_position(xmin, xmax, pos::Length{:pct}) = xmin + pos.value * (xmax - xmin) + # Give each annotation coordinates based on specified position -function locate_annotation(sp::Subplot, pos::Symbol, lab::PlotText) - position_multiplier = Dict{Symbol, Tuple{Float64,Float64}}( - :topleft => (0.1, 0.9), - :topcenter => (0.5, 0.9), - :topright => (0.9, 0.9), - :bottomleft => (0.1, 0.1), - :bottomcenter => (0.5, 0.1), - :bottomright => (0.9, 0.1), +locate_annotation( + sp::Subplot, pos::Symbol, label::PlotText; + position_multiplier=Dict{Symbol, Tuple{Float64,Float64}}( + :topleft => (0.1pct, 0.9pct), + :topcenter => (0.5pct, 0.9pct), + :topright => (0.9pct, 0.9pct), + :bottomleft => (0.1pct, 0.1pct), + :bottomcenter => (0.5pct, 0.1pct), + :bottomright => (0.9pct, 0.1pct), + ) +) = begin + x, y = position_multiplier[pos] + ( + _relative_position(axis_limits(sp, :x)..., x), + _relative_position(axis_limits(sp, :y)..., y), + label ) - xmin, xmax = ignorenan_extrema(sp[:xaxis]) - ymin, ymax = ignorenan_extrema(sp[:yaxis]) - x, y = (xmin, ymin).+ position_multiplier[pos].* (xmax - xmin, ymax - ymin) - (x, y, lab) end locate_annotation(sp::Subplot, x, y, label::PlotText) = (x, y, label) locate_annotation(sp::Subplot, x, y, z, label::PlotText) = (x, y, z, label) + +locate_annotation(sp::Subplot, x::Length{:pct}, y::Length{:pct}, label::PlotText) = ( + _relative_position(axis_limits(sp, :x)..., x), + _relative_position(axis_limits(sp, :y)..., y), + label +) +locate_annotation(sp::Subplot, x::Length{:pct}, y::Length{:pct}, z::Length{:pct}, label::PlotText) = ( + _relative_position(axis_limits(sp, :x)..., x), + _relative_position(axis_limits(sp, :y)..., y), + _relative_position(axis_limits(sp, :z)..., z), + label +) # ----------------------------------------------------------------------- "type which represents z-values for colors and sizes (and anything else that might come up)" From 12d5accf0adcd848d7d8bd2cabb8e600db730070 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 9 Jul 2021 21:27:48 +0200 Subject: [PATCH 336/518] Update pgfplotsx.jl Typo --- src/backends/pgfplotsx.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 504f96e0..22cc9342 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -889,7 +889,7 @@ function pgfx_framestyle(style::Symbol) return style else default_style = get((semi = :box,), style, :axes) - @warn( "Framestyle :$style is not (yet) supported by the PGFPlotsX backend. :$default_style was cosen instead.",) + @warn "Framestyle :$style is not (yet) supported by the PGFPlotsX backend. :$default_style was chosen instead." default_style end end From 2d0191cd70ee034462c55a2c72d10028c35e1021 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Fri, 9 Jul 2021 21:40:21 +0200 Subject: [PATCH 337/518] autogen unicodeplots and inspectdr --- src/examples.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/examples.jl b/src/examples.jl index 46742fbd..af986ca5 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1237,6 +1237,8 @@ _backend_skips = Dict( 49, # polar heatmap 51, # image with custom axes ], + :inspectdr => [6, 10, 22, 28, 38, 43, 45, 47, 49, 50, 51, 55], + :unicodeplots => [6, 22, 28, 43, 45, 47, 49, 50, 51, 55], ) From 3e14a47e17cfd89792a14c9de4705526477e2c25 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 9 Jul 2021 23:40:17 +0200 Subject: [PATCH 338/518] Update examples.jl Update skipped examples for auto-gen in PlotDocs --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index bad4d1ec..f8c015b7 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1242,7 +1242,7 @@ _backend_skips = Dict( 51, # image with custom axes ], :inspectdr => [6, 10, 22, 28, 38, 43, 45, 47, 49, 50, 51, 55], - :unicodeplots => [6, 22, 28, 43, 45, 47, 49, 50, 51, 55], + :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], ) From 90e0074f4405e0e1a0546aa368eba3c0141c0fdb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 10 Jul 2021 00:55:01 +0200 Subject: [PATCH 339/518] 1.18.2 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index a8842240..5252d78f 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.18.1" +version = "1.18.2" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 5cca5e9148724832b405925d36125b909deb3efb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 11 Jul 2021 04:36:22 +0200 Subject: [PATCH 340/518] GR: mesh3d, take into account series line attributes --- src/backends/gr.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 52637738..50d63ba3 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1897,6 +1897,7 @@ function gr_draw_surface(series, x, y, z, clims) Y[o] = y[k] Z[o] = z[k] end + gr_set_line(get_linewidth(series), get_linestyle(series), get_linecolor(series), series) GR.polyline3d(X, Y, Z) else throw(ArgumentError("Not handled !")) From b0ff0e58b3fff8c97c4ef2d366ddeb5c796336de Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 11 Jul 2021 21:43:39 +0200 Subject: [PATCH 341/518] InspectDR: Skip more unsupported examples --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index f8c015b7..dc071e8b 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1241,7 +1241,7 @@ _backend_skips = Dict( 49, # polar heatmap 51, # image with custom axes ], - :inspectdr => [6, 10, 22, 28, 38, 43, 45, 47, 49, 50, 51, 55], + :inspectdr => [4, 6, 10, 22, 24, 28, 30, 38, 43, 45, 47, 48, 49, 50, 51, 55], :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], ) From 798de8b17cb4f9f2ad2cbcb01ac8e3f134b27a39 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 14 Jul 2021 15:45:53 +0200 Subject: [PATCH 342/518] add the plot_title (#2690) * add the plot_title * Update bbs/plot_title (#3604) * add the plot_title * update plot_title for multiple subplots, fix GR warning Co-authored-by: Simon Christ Co-authored-by: t-bltg * Update plot_title (#3608) * add the plot_title * update plot_title for multiple subplots, fix GR warning * update plot_title * consistency with _subplot_defaults Co-authored-by: Simon Christ Co-authored-by: t-bltg * custom implementation for pgfplotsx backend * remove `@show` * remove superfluous plot_titleindex Co-authored-by: t-bltg <13423344+t-bltg@users.noreply.github.com> Co-authored-by: t-bltg --- src/arg_desc.jl | 3 ++- src/args.jl | 4 +++- src/backends/pgfplotsx.jl | 43 +++++++++++++++++++++++++-------------- src/pipeline.jl | 24 ++++++++++++++++++++++ src/plot.jl | 11 ++++++++++ 5 files changed, 68 insertions(+), 17 deletions(-) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index d490d8c9..d6cbe564 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -53,7 +53,8 @@ const _arg_desc = KW( :colorbar_entry => "Bool. Include this series in the color bar? Set to `false` to exclude.", # plot args -:plot_title => "String. Title for the whole plot (not the subplots) (Note: Not currently implemented)", +:plot_title => "String. Title for the whole plot (not the subplots)", +:plot_titlevspan => "Number in [0,1]. Vertical span of the whole plot title (fraction of the plot height)", :background_color => "Color Type. Base color for all backgrounds.", :background_color_outside => "Color Type or `:match` (matches `:background_color`). Color outside the plot area(s)", :foreground_color => "Color Type. Base color for all foregrounds.", diff --git a/src/args.jl b/src/args.jl index 965f3fc2..96fbaed6 100644 --- a/src/args.jl +++ b/src/args.jl @@ -331,13 +331,15 @@ const _series_defaults = KW( const _plot_defaults = KW( :plot_title => "", + :plot_titleindex => 0, :plot_titlefontsize => 16, - :plot_title_location => :center, # also :left or :right + :plot_titlelocation => :center, # also :left or :right :plot_titlefontfamily => :match, :plot_titlefonthalign => :hcenter, :plot_titlefontvalign => :vcenter, :plot_titlefontrotation => 0.0, :plot_titlefontcolor => :match, + :plot_titlevspan => 0.05, # vertical span of the plot title, here 5% :background_color => colorant"white", # default for all backgrounds, :background_color_outside => :match, # background outside grid, :foreground_color => :auto, # default for all foregrounds, and title color, diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 22cc9342..030ddefa 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -118,11 +118,22 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) end for sp in plt.subplots - bb1 = sp.plotarea bb2 = bbox(sp) + dx, dy = bb2.x0 + sp_width = width(bb2) + sp_height = height(bb2) + if sp[:subplot_index] == plt[:plot_titleindex] + x = dx + sp_width / 2 - 10mm # FIXME: get rid of magic constant + y = dy + sp_height / 2 + pgfx_add_annotation!(the_plot, x, y, PlotText(plt[:plot_title], plottitlefont(plt)), pgfx_thickness_scaling(plt); + cs = "", + options = PGFPlotsX.Options("anchor" => "center") + ) + continue + end + sp_width = width(bb2) sp_height = height(bb2) - dx, dy = bb2.x0 lpad = leftpad(sp) + sp[:left_margin] rpad = rightpad(sp) + sp[:right_margin] tpad = toppad(sp) + sp[:top_margin] @@ -131,7 +142,6 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) dy += tpad axis_height = sp_height - (tpad + bpad) axis_width = sp_width - (rpad + lpad) - title_cstr = plot_color(sp[:titlefontcolor]) title_a = alpha(title_cstr) title_loc = sp[:titlelocation] @@ -999,24 +1009,27 @@ function pgfx_marker(plotattributes, i = 1) ) end -function pgfx_add_annotation!(o, x, y, val, thickness_scaling = 1) +function pgfx_add_annotation!(o, x, y, val, thickness_scaling = 1; cs = "axis cs:", options = PGFPlotsX.Options()) # Construct the style string. cstr = val.font.color a = alpha(cstr) push!( o, - [ + join([ "\\node", - PGFPlotsX.Options( - get((center = "", left = "right", right = "left"), val.font.halign, "") => - nothing, - "color" => cstr, - "draw opacity" => convert(Float16, a), - "rotate" => val.font.rotation, - "font" => pgfx_font(val.font.pointsize, thickness_scaling), - ), - " at (axis cs:$x, $y) {$(val.str)};", - ], + sprint(PGFPlotsX.print_tex, merge( + PGFPlotsX.Options( + get((hcenter = "", left = "right", right = "left"), val.font.halign, "") => + nothing, + "color" => cstr, + "draw opacity" => convert(Float16, a), + "rotate" => val.font.rotation, + "font" => pgfx_font(val.font.pointsize, thickness_scaling), + ), + options + )), + string(" at (", cs, x, ",", y, ") {", val.str, "};"), + ]), ) end diff --git a/src/pipeline.jl b/src/pipeline.jl index 61f52cd1..8d54b9cb 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -262,6 +262,7 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) sp_attrs[sp] = attr end + _add_plot_title!(plt) # override subplot/axis args. `sp_attrs` take precendence for (idx, sp) in enumerate(plt.subplots) attr = if !haskey(plotattributes, :subplot) || plotattributes[:subplot] == idx @@ -274,12 +275,35 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) # do we need to link any axes together? link_axes!(plt.layout, plt[:link]) + return nothing end function series_idx(kw_list::AVec{KW}, kw::AKW) Int(kw[:series_plotindex]) - Int(kw_list[1][:series_plotindex]) + 1 end +function _add_plot_title!(plt) + plot_title = plt[:plot_title] + if plot_title != "" + the_layout = plt.layout + vspan = plt[:plot_titlevspan] + plt.layout = grid(2, 1, heights=(vspan, 1 - vspan)) + plt.layout.grid[1, 1] = subplot = Subplot(plt.backend, parent=plt.layout[1, 1]) + plt.layout.grid[2, 1] = the_layout + subplot.plt = plt + # propagate arguments plt[:plot_titleXXX] --> subplot[:titleXXX] + for sym ∈ filter(x -> startswith(string(x), "plot_title"), keys(_plot_defaults)) + subplot[Symbol(string(sym)[length("plot_") + 1:end])] = plt[sym] + end + plt[:force_minpad] = nothing, 0px, nothing, 0px + subplot[:subplot_index] = last(plt.subplots)[:subplot_index] + 1 + plt[:plot_titleindex] = subplot[:subplot_index] + subplot[:framestyle] = :none + subplot[:margin] = 0px + push!(plt.subplots, subplot) + end + return nothing +end ## Series recipes diff --git a/src/plot.jl b/src/plot.jl index a3373917..a01e6451 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -160,6 +160,7 @@ function plot!(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) cmdidx += 1 end end + _add_plot_title!(plt) # first apply any args for the subplots for (idx,sp) in enumerate(plt.subplots) @@ -225,6 +226,16 @@ function prepare_output(plt::Plot) _update_min_padding!(sp) end + # spedific to :plot_title see _add_plot_title! + force_minpad = get(plt, :force_minpad, ()) + if !isempty(force_minpad) + for i ∈ eachindex(plt.layout.grid) + plt.layout.grid[i].minpad = Tuple( + i === nothing ? j : i for (i, j) ∈ zip(force_minpad, plt.layout.grid[i].minpad) + ) + end + end + # now another pass down, to update the bounding boxes update_child_bboxes!(plt.layout) From 4bc6412b46dc027b484cb8077b60eeb4b814f9b4 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Wed, 14 Jul 2021 15:51:23 +0200 Subject: [PATCH 343/518] 1.19.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 5252d78f..2adbfe20 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.18.2" +version = "1.19.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 411de6976560c2047bfd86b62d6f1e65dfb05669 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 14 Jul 2021 22:01:20 +0200 Subject: [PATCH 344/518] fix plot_title for pyplot (#3642) Co-authored-by: t-bltg --- src/pipeline.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index 8d54b9cb..2e2c1ae9 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -295,7 +295,9 @@ function _add_plot_title!(plt) for sym ∈ filter(x -> startswith(string(x), "plot_title"), keys(_plot_defaults)) subplot[Symbol(string(sym)[length("plot_") + 1:end])] = plt[sym] end - plt[:force_minpad] = nothing, 0px, nothing, 0px + top = plt.backend isa PyPlotBackend ? nothing : 0mm + bot = 0mm + plt[:force_minpad] = nothing, top, nothing, bot subplot[:subplot_index] = last(plt.subplots)[:subplot_index] + 1 plt[:plot_titleindex] = subplot[:subplot_index] subplot[:framestyle] = :none From c046e6461f0ea7b8499d18c28ccc98021f9e239a Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 15 Jul 2021 09:33:28 +0200 Subject: [PATCH 345/518] 1.19.1 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 2adbfe20..d870129b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.19.0" +version = "1.19.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 946f90d3e41e6f7cc6c6854ff9cde3cc86cf4ef5 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 15 Jul 2021 12:08:53 +0200 Subject: [PATCH 346/518] fix computing marker coordinates with log scales --- src/backends/gr.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 50d63ba3..fbae3b9c 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -326,13 +326,15 @@ end # draw ONE 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) + # convert to ndc coords (percentages of window) ... w, h = get_size(series) f = msize / (w + h) + xi, yi = GR.wctondc(xi, yi) - xs = xi .+ sx .* f - ys = yi .+ sy .* f + + # ... convert back to world coordinates + xs_ys = GR.ndctowc.(xi .+ sx .* f, yi .+ sy .* f) + xs, ys = getindex.(xs_ys, 1), getindex.(xs_ys, 2) # draw the interior mc = get_markercolor(series, clims, i) @@ -345,7 +347,6 @@ function gr_draw_marker(series, xi, yi, clims, i, msize, strokewidth, shape::Sha gr_set_line(strokewidth, :solid, msc, series) gr_set_transparency(msc, get_markerstrokealpha(series, i)) GR.polyline(xs, ys) - GR.selntran(1) end function gr_nominal_size(s) From 444939861404ebc2fbb63d49929ddf00a58c714b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Jul 2021 10:26:39 +0200 Subject: [PATCH 347/518] Update precompile_*.jl file (#3627) Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 79 ++++--------------- 1 file changed, 17 insertions(+), 62 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index e0c7c1fc..416ae40b 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,15 +68,11 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) @@ -87,14 +83,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -108,7 +96,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Vector{GeometryBasics.Point2{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, PlotText}}}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, Tuple{String, Any, Any, Any}}}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) @@ -122,31 +110,21 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :seriestype), Tuple{Tuple{Vector{Int64}, Vector{Int64}, Vector{Int64}}, Symbol}},typeof(plot),Vector{Int64},Vector{Int64},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:connections, :title, :xlabel, :ylabel, :zlabel, :legend, :margin, :seriestype), Tuple{Tuple{Vector{Int64}, Vector{Int64}, Vector{Int64}}, String, String, String, String, Symbol, AbsoluteLength, Symbol}},typeof(plot),Vector{Int64},Vector{Int64},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:fill, :seriestype), Tuple{Bool, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:framestyle, :title, :color, :layout, :label, :markerstrokewidth, :ticks, :seriestype), Tuple{Matrix{Symbol}, Matrix{String}, Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}}, Int64, String, Int64, UnitRange{Int64}, Symbol}},typeof(plot),Vector{Vector{Float64}},Vector{Vector{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:grid, :title), Tuple{Tuple{Symbol, Symbol, Symbol, Int64, Float64}, String}},typeof(plot),Vector{Float64}}) @@ -188,7 +166,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -209,10 +186,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -221,6 +196,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppost}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -231,6 +207,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_sliced_series_attributes!),Plot{GRBackend},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -243,8 +220,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -262,21 +237,18 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) + Base.precompile(Tuple{typeof(calc_num_subplots),EmptyLayout}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -288,7 +260,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -298,9 +269,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) - Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) @@ -314,10 +283,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(isvertical),Dict{Symbol, Any}}) - Base.precompile(Tuple{typeof(layout_args),Int64}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -331,33 +296,28 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Float64,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) - Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Int64, Symbol, Symbol}}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Symbol, Int64, String}}) Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,PlotText}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,Tuple{String, Int64, Symbol, Symbol}}) + Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,Tuple{String, Symbol, Int64, String}}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Float64, Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) - Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Int64,Symbol,Vararg{Symbol, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol,Int64,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) @@ -365,6 +325,11 @@ function _precompile_() Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) + let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) @@ -385,16 +350,6 @@ function _precompile_() precompile(fbody, (Any,typeof(plot),Any,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(text, (String,Int64,Vararg{Any, N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(text),String,Int64,Vararg{Any, N} where N,)) - end - end - let fbody = try __lookup_kwbody__(which(text, (String,Symbol,Vararg{Any, N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(text),String,Symbol,Vararg{Any, N} where N,)) - end - end let fbody = try __lookup_kwbody__(which(title!, (AbstractString,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(title!),AbstractString,)) From 2ec78be9a167df7e619fbfc63ec50172c80362b8 Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Fri, 16 Jul 2021 10:28:49 +0200 Subject: [PATCH 348/518] Update Project.toml bump GR version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index d870129b..af1494d6 100644 --- a/Project.toml +++ b/Project.toml @@ -36,7 +36,7 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" -GR = "0.53, 0.54, 0.55, 0.57" +GR = "0.53, 0.54, 0.55, 0.57, 0.58" GeometryBasics = "0.2, 0.3.1" JSON = "0.21, 1" Latexify = "0.14, 0.15" From fc0e9a1245532f71107b006fae3021057e7debd1 Mon Sep 17 00:00:00 2001 From: Jks Liu Date: Fri, 16 Jul 2021 16:29:50 +0800 Subject: [PATCH 349/518] Fix #3440 subplots attributes out of order (#3645) --- src/pipeline.jl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pipeline.jl b/src/pipeline.jl index 2e2c1ae9..88305e31 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -243,10 +243,17 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) attr = KW() for (k, v) in collect(kw) if is_subplot_attr(k) || is_axis_attr(k) - attr[k] = pop!(kw, k) + v = pop!(kw, k) + if sps isa AbstractArray && v isa AbstractArray && length(v) == length(sps) + v = v[series_idx(kw_list, kw)] + end + attr[k] = v end if is_axis_attr_noletter(k) v = pop!(kw, k) + if sps isa AbstractArray && v isa AbstractArray && length(v) == length(sps) + v = v[series_idx(kw_list, kw)] + end for letter in (:x, :y, :z) attr[Symbol(letter, k)] = v end From 6b22f45dd5b98668f768f636b8f95a420444a827 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 16 Jul 2021 10:30:41 +0200 Subject: [PATCH 350/518] fix dpi for GR (#3646) --- 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 50d63ba3..6421074c 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -612,7 +612,7 @@ end function gr_display(plt::Plot, fmt="") GR.clearws() - dpi_factor = plt[:dpi] / Plots.DPI + dpi_factor = fmt == "png" ? plt[:dpi] / Plots.DPI : 1 # collect some monitor/display sizes in meters and pixels display_width_meters, display_height_meters, display_width_px, display_height_px = GR.inqdspsize() From 0525ade990282da9cada760b769de6bb89ebff3d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Jul 2021 10:52:29 +0200 Subject: [PATCH 351/518] Update precompile_*.jl file (#3647) Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 47 +++++++++++++++++-- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 416ae40b..11a48b2a 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,11 +68,14 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) @@ -83,6 +86,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -96,6 +105,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Vector{GeometryBasics.Point2{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, Tuple{String, Any, Any, Any}}}}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, Tuple{String, Any, Any, Any}}}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) @@ -110,17 +120,27 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -166,6 +186,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -186,8 +207,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -196,7 +219,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppost}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -207,7 +229,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_sliced_series_attributes!),Plot{GRBackend},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -220,6 +241,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Vector{Any},Int64}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -227,6 +249,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) + Base.precompile(Tuple{typeof(_update_plot_args),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) @@ -237,13 +260,14 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) - Base.precompile(Tuple{typeof(calc_num_subplots),EmptyLayout}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -260,6 +284,10 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -269,9 +297,11 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -283,6 +313,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -304,6 +336,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) + Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Int64, Symbol, Symbol}}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Symbol, Int64, String}}) @@ -313,8 +346,12 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Float64, Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Float64, Int64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) + Base.precompile(Tuple{typeof(scalefontsizes),Float64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From f0afadf43a88ae7296fbe5f9cced087561ffef62 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Jul 2021 12:02:04 +0200 Subject: [PATCH 352/518] Update precompile_*.jl file (#3648) Co-authored-by: BeastyBlacksmith --- .../precompile/precompile_Plots.jl | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 11a48b2a..4fb0d418 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -76,12 +76,15 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -91,6 +94,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -101,11 +107,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Vector{GeometryBasics.Point2{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, Tuple{String, Any, Any, Any}}}}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:annotation,), Tuple{Vector{Tuple{Int64, Float64, Tuple{String, Any, Any, Any}}}}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:layout, :margin), Tuple{GridLayout, AbsoluteLength}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:legend,), Tuple{Bool}},typeof(plot!),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend},Vararg{Plot{GRBackend}, N} where N}) @@ -134,6 +140,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) @@ -151,6 +158,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Float64}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) @@ -192,6 +200,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{OHLC}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype), Tuple{String, Float64, Symbol}},typeof(plot),Vector{String},Vector{Float64}}) @@ -219,6 +228,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -241,15 +251,20 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Vector{Any},Int64}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) - Base.precompile(Tuple{typeof(_update_plot_args),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) @@ -262,17 +277,23 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{Union{Missing, Float64}}}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_thickness_scaling),Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -286,6 +307,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) @@ -321,6 +343,7 @@ function _precompile_() Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Int64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),StepRange{Int64, Int64},Tuple{Int64, Int64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) + Base.precompile(Tuple{typeof(partialcircle),Float64,Float64,Int64}) Base.precompile(Tuple{typeof(partialcircle),Int64,Float64,Int64}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) @@ -328,13 +351,14 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Float64,Symbol}) + Base.precompile(Tuple{typeof(processFillArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -346,15 +370,20 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Float64, Int64}}) + Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) @@ -367,6 +396,11 @@ function _precompile_() precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end + let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 7bb2a293565a6b8ab8af48f73c86b61bf72fc5db Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Fri, 16 Jul 2021 12:18:26 +0200 Subject: [PATCH 353/518] 1.19.2 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index af1494d6..51dd626d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.19.1" +version = "1.19.2" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From aa837bb027e3306af149ec80ffee4c30d11633a8 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 19 Jul 2021 14:04:01 +0200 Subject: [PATCH 354/518] Take series alpha into account when drawing contours --- src/backends/gr.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 6421074c..526f60ab 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1832,6 +1832,7 @@ end function gr_draw_contour(series, x, y, z, clims) GR.setspace(clims[1], clims[2], 0, 90) gr_set_line(get_linewidth(series), get_linestyle(series), get_linecolor(series), series) + gr_set_transparency(get_fillalpha(series)) is_lc_black = let black=plot_color(:black) plot_color(series[:linecolor]) in (black,[black]) end From 3195a67915bccfb54de1404e45f668aaac18989a Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 19 Jul 2021 12:22:01 +0000 Subject: [PATCH 355/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 74 +------------------ 1 file changed, 4 insertions(+), 70 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 4fb0d418..f1e91b4b 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,23 +68,16 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -92,12 +85,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -107,7 +95,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -126,28 +113,17 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -158,7 +134,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Float64}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) @@ -193,14 +168,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Matrix{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{OHLC}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype), Tuple{String, Float64, Symbol}},typeof(plot),Vector{String},Vector{Float64}}) @@ -219,7 +191,6 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -228,7 +199,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -252,18 +222,12 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -277,23 +241,16 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{Union{Missing, Float64}}}) - Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(fakedata),Int64,Vararg{Int64, N} where N}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_thickness_scaling),Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -305,11 +262,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -319,11 +271,9 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -335,8 +285,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -351,14 +299,13 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(processFillArg),Dict{Symbol, Any},Symbol}) + Base.precompile(Tuple{typeof(plotarea!),GridLayout,BoundingBox{Tuple{AbsoluteLength, AbsoluteLength}, Tuple{AbsoluteLength, AbsoluteLength}}}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -370,25 +317,17 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(resetfontsizes)}) - Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) + isdefined(Plots, Symbol("#179#180")) && Base.precompile(Tuple{getfield(Plots, Symbol("#179#180")),Tuple{Int64, Expr}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end @@ -396,11 +335,6 @@ function _precompile_() precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 05f585f8adcb1eccca74b71dae264a6d33d017dc Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 19 Jul 2021 19:25:33 +0000 Subject: [PATCH 356/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index f1e91b4b..5c7b5162 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,16 +68,22 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -86,6 +92,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -113,17 +121,26 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -168,6 +185,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -181,6 +200,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -191,6 +211,7 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -221,7 +242,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -241,11 +262,12 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -262,6 +284,10 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -271,6 +297,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -285,13 +312,14 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Int64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),StepRange{Int64, Int64},Tuple{Int64, Int64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),UnitRange{Int64},Tuple{Float64, Float64},Symbol,Symbol}) - Base.precompile(Tuple{typeof(partialcircle),Float64,Float64,Int64}) Base.precompile(Tuple{typeof(partialcircle),Int64,Float64,Int64}) Base.precompile(Tuple{typeof(plot),Any,Any}) Base.precompile(Tuple{typeof(plot),Any}) @@ -299,7 +327,7 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(plotarea!),GridLayout,BoundingBox{Tuple{AbsoluteLength, AbsoluteLength}, Tuple{AbsoluteLength, AbsoluteLength}}}) + Base.precompile(Tuple{typeof(processFontArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) @@ -318,7 +346,11 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) + Base.precompile(Tuple{typeof(scalefontsizes),Float64}) + Base.precompile(Tuple{typeof(setindex!),Axis,Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -327,7 +359,6 @@ function _precompile_() Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) - isdefined(Plots, Symbol("#179#180")) && Base.precompile(Tuple{getfield(Plots, Symbol("#179#180")),Tuple{Int64, Expr}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end From aecce08a0ffb723b99cdfee1275643f938ae5c6d Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 19 Jul 2021 21:37:24 +0000 Subject: [PATCH 357/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 5c7b5162..0dcf0d5f 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -69,21 +69,18 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -92,7 +89,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -103,6 +99,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -121,7 +118,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -134,13 +130,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -185,8 +179,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -200,7 +192,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -220,6 +211,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppost}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -242,7 +234,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -285,9 +277,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -297,7 +286,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -313,7 +301,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) + Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -327,7 +316,6 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(processFontArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) @@ -347,10 +335,7 @@ function _precompile_() Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(setindex!),Axis,Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Float64},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From 192eb6ffbbfc2d5271e154f6ba503a2969602482 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 20 Jul 2021 15:20:03 +0200 Subject: [PATCH 358/518] Debugging docs generation --- .github/workflows/docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e1dbcf1a..42fcd0cc 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -44,6 +44,7 @@ jobs: - name: build documentation env: PYTHON: "" + JULIA_DEBUG: "Documenter" DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' From 237fa4be7bfece0c76f9bff11dc8f11a99944239 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Jul 2021 00:05:47 +0000 Subject: [PATCH 359/518] CompatHelper: bump compat for "GeometryBasics" to "0.4" --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 51dd626d..ad87379e 100644 --- a/Project.toml +++ b/Project.toml @@ -37,7 +37,7 @@ Contour = "0.5" FFMPEG = "0.2, 0.3, 0.4" FixedPointNumbers = "0.6, 0.7, 0.8" GR = "0.53, 0.54, 0.55, 0.57, 0.58" -GeometryBasics = "0.2, 0.3.1" +GeometryBasics = "0.2, 0.3.1, 0.4" JSON = "0.21, 1" Latexify = "0.14, 0.15" Measures = "0.3" From 89db9025c58b86ca076b7e43395680db8b648b45 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 21 Jul 2021 12:10:19 +0200 Subject: [PATCH 360/518] 1.19.3 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 51dd626d..a2663edd 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.19.2" +version = "1.19.3" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 05500330657b30287d3fffaabb43b9e1a6115db4 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 21 Jul 2021 19:34:32 +0200 Subject: [PATCH 361/518] Prepare gaston (gnuplot) for PlotDocs.jl --- src/examples.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/examples.jl b/src/examples.jl index dc071e8b..7e2eff9c 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1243,6 +1243,7 @@ _backend_skips = Dict( ], :inspectdr => [4, 6, 10, 22, 24, 28, 30, 38, 43, 45, 47, 48, 49, 50, 51, 55], :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], + :gaston => [], ) From b85468162cc301c4bd33a0dcff08839de56540fb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 21 Jul 2021 21:38:33 +0200 Subject: [PATCH 362/518] Skip failing gaston examples --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index 7e2eff9c..838af274 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1243,7 +1243,7 @@ _backend_skips = Dict( ], :inspectdr => [4, 6, 10, 22, 24, 28, 30, 38, 43, 45, 47, 48, 49, 50, 51, 55], :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], - :gaston => [], + :gaston => [2, 4, 5, 6, 10, 22, 24, 28, 31, 32, 35, 38, 43, 45, 47, 48, 49, 50, 51, 55], ) From 5f31ab716946ba3294d3a2b0adfe0fd492a153af Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 21 Jul 2021 22:30:56 +0200 Subject: [PATCH 363/518] fix gr tickmarks lengths for 2D plots --- src/axes.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 57b13830..840d90fc 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -731,6 +731,10 @@ function axis_drawing_info(sp, letter) f = RecipesPipeline.scale_func(oax[:scale]) invf = RecipesPipeline.inverse_scale_func(oax[:scale]) + w = width(sp.plotarea).value + h = height(sp.plotarea).value + tick_factor = (letter === :x ? w : h) / min(w, h) + add_major_or_minor_segments(ticks, grid, segments, factor, cond) = begin ticks === nothing && return if cond @@ -763,11 +767,11 @@ function axis_drawing_info(sp, letter) end # add major grid segments - add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 0.012, ax[:tick_direction] !== :none) + add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 0.012 * tick_factor, ax[:tick_direction] !== :none) # add minor grid segments if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] - add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.006, true) + add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.06 * tick_factor, true) end end end From e58bd8b657afd43097a01a5651c3c6a3ba395d54 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Wed, 21 Jul 2021 22:39:48 +0200 Subject: [PATCH 364/518] fix minor tick length --- src/axes.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index 840d90fc..ead1d529 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -771,7 +771,7 @@ function axis_drawing_info(sp, letter) # add minor grid segments if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] - add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.06 * tick_factor, true) + add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.006 * tick_factor, true) end end end From 6594b93126e5a725eef1d7b9b2dac71194b4d499 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 21 Jul 2021 23:49:13 +0200 Subject: [PATCH 365/518] Add gnuplot to the system dependencies (docs) --- .github/workflows/docs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 42fcd0cc..de676c57 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -38,7 +38,8 @@ jobs: texlive-latex-extra \ texlive-luatex \ ghostscript-x \ - libgconf2-4 + libgconf2-4 \ + gnuplot sudo fc-cache -vr - name: build documentation From 6f49ec112c5401588478f4e0fcc37331e1783747 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 22 Jul 2021 01:31:59 +0200 Subject: [PATCH 366/518] avoid using global variables --- src/animation.jl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/animation.jl b/src/animation.jl index cb09e527..0d89be65 100644 --- a/src/animation.jl +++ b/src/animation.jl @@ -170,18 +170,19 @@ function _animate(forloop::Expr, args...; callgif = false) end push!(block.args, :(if $filterexpr; Plots.frame($animsym); end)) - push!(block.args, :(global $countersym += 1)) + push!(block.args, :($countersym += 1)) # add a final call to `gif(anim)`? retval = callgif ? :(Plots.gif($animsym)) : animsym # full expression: esc(quote - $freqassert # if filtering, check frequency is an Integer > 0 - $animsym = Plots.Animation() # init animation object - global $countersym = 1 # init iteration counter - $forloop # for loop, saving a frame after each iteration - $retval # return the animation object, or the gif + $freqassert # if filtering, check frequency is an Integer > 0 + $animsym = Plots.Animation() # init animation object + let $countersym = 1 # init iteration counter + $forloop # for loop, saving a frame after each iteration + end + $retval # return the animation object, or the gif end) end From a39582c06e1c5524f5321f6ef52725787320946a Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 22 Jul 2021 02:05:48 +0200 Subject: [PATCH 367/518] Preempt IMG_TOL with env variable --- test/runtests.jl | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 5221f6b1..5b280508 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -71,27 +71,32 @@ include("imgcomp.jl") Random.seed!(1234) default(show=false, reuse=true) is_ci() = get(ENV, "CI", "false") == "true" -const IMG_TOL = VERSION < v"1.4" && Sys.iswindows() ? 1e-1 : is_ci() ? 1e-2 : 1e-3 +const PLOTS_IMG_TOL = parse( + Float64, get( + ENV, "PLOTS_IMG_TOL", + VERSION < v"1.4" && Sys.iswindows() ? "1e-1" : is_ci() ? "1e-2" : "1e-3" + ) +) ## Uncomment the following lines to update reference images for different backends # @testset "GR" begin -# image_comparison_facts(:gr, tol=IMG_TOL, skip = Plots._backend_skips[:gr]) +# image_comparison_facts(:gr, tol=PLOTS_IMG_TOL, skip = Plots._backend_skips[:gr]) # end # # plotly() # @testset "Plotly" begin -# image_comparison_facts(:plotly, tol=IMG_TOL, skip = Plots._backend_skips[:plotlyjs]) +# image_comparison_facts(:plotly, tol=PLOTS_IMG_TOL, skip = Plots._backend_skips[:plotlyjs]) # end # # pyplot() # @testset "PyPlot" begin -# image_comparison_facts(:pyplot, tol=IMG_TOL, skip = Plots._backend_skips[:pyplot]) +# image_comparison_facts(:pyplot, tol=PLOTS_IMG_TOL, skip = Plots._backend_skips[:pyplot]) # end # # pgfplotsx() # @testset "PGFPlotsX" begin -# image_comparison_facts(:pgfplotsx, tol=IMG_TOL, skip = Plots._backend_skips[:pgfplotsx]) +# image_comparison_facts(:pgfplotsx, tol=PLOTS_IMG_TOL, skip = Plots._backend_skips[:pgfplotsx]) # end # 10 Histogram2D @@ -109,7 +114,7 @@ const IMG_TOL = VERSION < v"1.4" && Sys.iswindows() ? 1e-1 : is_ci() ? 1e-2 : 1e @static if haskey(ENV, "APPVEYOR") @info "Skipping GR image comparison tests on AppVeyor" else - image_comparison_facts(:gr, tol=IMG_TOL, skip=Plots._backend_skips[:gr]) + image_comparison_facts(:gr, tol=PLOTS_IMG_TOL, skip=Plots._backend_skips[:gr]) end end From fe7d957be371bb4a2ee3551edb2b87c64263d82c Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 22 Jul 2021 11:49:31 +0200 Subject: [PATCH 368/518] use a stable RNG in fakedata --- Project.toml | 4 ++-- src/Plots.jl | 3 ++- src/examples.jl | 3 +-- src/utils.jl | 4 ++-- test/imgcomp.jl | 2 +- test/runtests.jl | 7 +++---- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Project.toml b/Project.toml index cc5cf012..cc4e7afe 100644 --- a/Project.toml +++ b/Project.toml @@ -31,6 +31,7 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" [compat] Contour = "0.5" @@ -65,7 +66,6 @@ OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" PGFPlotsX = "8314cec4-20b6-5062-9cdb-752b83310925" PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a" RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" @@ -74,4 +74,4 @@ UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" [targets] -test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "PlotlyJS", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] +test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "PlotlyJS", "HDF5", "RDatasets", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] diff --git a/src/Plots.jl b/src/Plots.jl index e7a71878..e79a0752 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -11,6 +11,7 @@ using Reexport import GeometryBasics using Dates, Printf, Statistics, Base64, LinearAlgebra, Random using SparseArrays +using StableRNGs using FFMPEG @@ -118,7 +119,6 @@ export scalefontsizes, resetfontsizes - # --------------------------------------------------------- import NaNMath # define functions that ignores NaNs. To overcome the destructive effects of https://github.com/JuliaLang/julia/pull/12563 @@ -250,6 +250,7 @@ end # --------------------------------------------------------- const CURRENT_BACKEND = CurrentBackend(:none) +const PLOTS_SEED = 1234 include("precompile_includer.jl") diff --git a/src/examples.jl b/src/examples.jl index 838af274..03d4ae4f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -128,8 +128,7 @@ const _examples = PlotExample[ :( begin import FileIO - path = - download("http://juliaplots.org/PlotReferenceImages.jl/Plots/pyplot/0.7.0/ref1.png") + path = download("http://juliaplots.org/PlotReferenceImages.jl/Plots/pyplot/0.7.0/ref1.png") img = FileIO.load(path) plot(img) end diff --git a/src/utils.jl b/src/utils.jl index 4ebdc01e..68471a16 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -303,10 +303,10 @@ function convert_to_polar(theta, r, r_extrema = ignorenan_extrema(r)) x, y end -function fakedata(sz...) +function fakedata(sz...; rng=StableRNG(PLOTS_SEED)) y = zeros(sz...) for r in 2:size(y,1) - y[r,:] = 0.95 * vec(y[r-1,:]) + randn(size(y,2)) + y[r,:] = 0.95 * vec(y[r-1,:]) + randn(rng, size(y,2)) end y end diff --git a/test/imgcomp.jl b/test/imgcomp.jl index 3a0af3ca..f77c0b3a 100644 --- a/test/imgcomp.jl +++ b/test/imgcomp.jl @@ -13,7 +13,7 @@ function replace_rand!(ex::Expr) end function fix_rand!(ex) replace_rand!(ex) - pushfirst!(ex.args[1].args, :(rng = StableRNG(1234))) + pushfirst!(ex.args[1].args, :(rng = StableRNG(PLOTS_SEED))) end function image_comparison_tests( diff --git a/test/runtests.jl b/test/runtests.jl index 5b280508..5d8c3690 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,9 +1,8 @@ -using Plots: guidefont, series_annotations +using Plots: guidefont, series_annotations, PLOTS_SEED import ImageMagick using VisualRegressionTests using Plots using Random -using StableRNGs using Test using TestImages using FileIO @@ -12,7 +11,7 @@ using LibGit2 import GeometryBasics using Dates using RecipesBase - +using StableRNGs @testset "Plotly standalone" begin @test_nowarn Plots._init_ijulia_plotting() @@ -68,7 +67,7 @@ end include("imgcomp.jl") # don't actually show the plots -Random.seed!(1234) +Random.seed!(PLOTS_SEED) default(show=false, reuse=true) is_ci() = get(ENV, "CI", "false") == "true" const PLOTS_IMG_TOL = parse( From cd06648ec3d7470ac9d91a1f9a52425c999c4273 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 23 Jul 2021 11:02:22 +0200 Subject: [PATCH 369/518] Switch to Random.GLOBAL_RNG Co-authored-by: Simon Christ --- src/utils.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.jl b/src/utils.jl index 68471a16..36c6d340 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -303,7 +303,7 @@ function convert_to_polar(theta, r, r_extrema = ignorenan_extrema(r)) x, y end -function fakedata(sz...; rng=StableRNG(PLOTS_SEED)) +function fakedata(sz...; rng=Random.GLOBAL_RNG(PLOTS_SEED)) y = zeros(sz...) for r in 2:size(y,1) y[r,:] = 0.95 * vec(y[r-1,:]) + randn(rng, size(y,2)) From f3aa61293b44532cddc31d5e6812124afc0b939f Mon Sep 17 00:00:00 2001 From: t-bltg Date: Fri, 23 Jul 2021 11:31:30 +0200 Subject: [PATCH 370/518] change fakedata rng in tests --- Project.toml | 4 ++-- src/Plots.jl | 1 - src/utils.jl | 4 +++- test/imgcomp.jl | 3 ++- test/runtests.jl | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Project.toml b/Project.toml index cc4e7afe..cc5cf012 100644 --- a/Project.toml +++ b/Project.toml @@ -31,7 +31,6 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" [compat] Contour = "0.5" @@ -66,6 +65,7 @@ OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" PGFPlotsX = "8314cec4-20b6-5062-9cdb-752b83310925" PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a" RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" @@ -74,4 +74,4 @@ UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" [targets] -test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "PlotlyJS", "HDF5", "RDatasets", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] +test = ["Distributions", "FileIO", "Gtk", "ImageMagick", "Images", "LibGit2", "OffsetArrays", "PGFPlotsX", "PlotlyJS", "HDF5", "RDatasets", "StableRNGs", "StaticArrays", "StatsPlots", "Test", "TestImages", "UnicodePlots", "VisualRegressionTests"] diff --git a/src/Plots.jl b/src/Plots.jl index e79a0752..5b067f0a 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -11,7 +11,6 @@ using Reexport import GeometryBasics using Dates, Printf, Statistics, Base64, LinearAlgebra, Random using SparseArrays -using StableRNGs using FFMPEG diff --git a/src/utils.jl b/src/utils.jl index 36c6d340..f07945a2 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -303,7 +303,9 @@ function convert_to_polar(theta, r, r_extrema = ignorenan_extrema(r)) x, y end -function fakedata(sz...; rng=Random.GLOBAL_RNG(PLOTS_SEED)) +fakedata(sz::Int...) = fakedata(Random.seed!(PLOTS_SEED), sz...) + +function fakedata(rng::AbstractRNG, sz...) y = zeros(sz...) for r in 2:size(y,1) y[r,:] = 0.95 * vec(y[r-1,:]) + randn(rng, size(y,2)) diff --git a/test/imgcomp.jl b/test/imgcomp.jl index f77c0b3a..879a87ea 100644 --- a/test/imgcomp.jl +++ b/test/imgcomp.jl @@ -6,7 +6,7 @@ function replace_rand!(ex::Expr) for arg in ex.args replace_rand!(arg) end - if ex.head === :call && ex.args[1] ∈ (:rand, :randn) + if ex.head === :call && ex.args[1] ∈ (:rand, :randn, :(Plots.fakedata)) pushfirst!(ex.args, ex.args[1]) ex.args[2] = :rng end @@ -35,6 +35,7 @@ function image_comparison_tests( fn = "ref$idx.png" reffn = reference_file(pkg, idx, _current_plots_version) newfn = joinpath(reference_path(pkg, _current_plots_version), fn) + @debug example.exprs # test function func = (fn, idx) -> begin diff --git a/test/runtests.jl b/test/runtests.jl index 5d8c3690..4bea6dd0 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3,6 +3,7 @@ import ImageMagick using VisualRegressionTests using Plots using Random +using StableRNGs using Test using TestImages using FileIO @@ -11,7 +12,6 @@ using LibGit2 import GeometryBasics using Dates using RecipesBase -using StableRNGs @testset "Plotly standalone" begin @test_nowarn Plots._init_ijulia_plotting() From 4e5b490b6c60dc0dd6bc55645506ab84f4eb0a52 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Fri, 23 Jul 2021 19:38:04 +0200 Subject: [PATCH 371/518] make tick length independent of plot size --- src/axes.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index ead1d529..4e06b31b 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -731,10 +731,6 @@ function axis_drawing_info(sp, letter) f = RecipesPipeline.scale_func(oax[:scale]) invf = RecipesPipeline.inverse_scale_func(oax[:scale]) - w = width(sp.plotarea).value - h = height(sp.plotarea).value - tick_factor = (letter === :x ? w : h) / min(w, h) - add_major_or_minor_segments(ticks, grid, segments, factor, cond) = begin ticks === nothing && return if cond @@ -766,12 +762,14 @@ function axis_drawing_info(sp, letter) end end + ax_length = letter === :x ? height(sp.plotarea).value : width(sp.plotarea).value + # add major grid segments - add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 0.012 * tick_factor, ax[:tick_direction] !== :none) + add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 1.6 / ax_length, ax[:tick_direction] !== :none) # add minor grid segments if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] - add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.006 * tick_factor, true) + add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 1 / ax_length, true) end end end From 4aa9d74a28bc7d97d8b7995f042aa5813f050afc Mon Sep 17 00:00:00 2001 From: t-bltg Date: Fri, 23 Jul 2021 20:07:08 +0200 Subject: [PATCH 372/518] more strict on tolerance - drop tol for obsolete version --- test/runtests.jl | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 4bea6dd0..f29e1153 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -70,12 +70,7 @@ include("imgcomp.jl") Random.seed!(PLOTS_SEED) default(show=false, reuse=true) is_ci() = get(ENV, "CI", "false") == "true" -const PLOTS_IMG_TOL = parse( - Float64, get( - ENV, "PLOTS_IMG_TOL", - VERSION < v"1.4" && Sys.iswindows() ? "1e-1" : is_ci() ? "1e-2" : "1e-3" - ) -) +const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-4" : "1e-5")) ## Uncomment the following lines to update reference images for different backends From 458d72b36b73c39082aff12343cef58b552a400a Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sat, 24 Jul 2021 10:59:06 +0200 Subject: [PATCH 373/518] reduce tickmark length --- src/axes.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 4e06b31b..fc99e5b8 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -765,11 +765,11 @@ function axis_drawing_info(sp, letter) ax_length = letter === :x ? height(sp.plotarea).value : width(sp.plotarea).value # add major grid segments - add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 1.6 / ax_length, ax[:tick_direction] !== :none) + add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 1.2 / ax_length, ax[:tick_direction] !== :none) # add minor grid segments if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] - add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 1 / ax_length, true) + add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.6 / ax_length, true) end end end From 4c9fd4e4b7cc73483a0416b48cb0930c6f61ef59 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 25 Jul 2021 10:42:17 +0200 Subject: [PATCH 374/518] fix gaston layout --- src/backends/gaston.jl | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 4b8cc384..51a393ec 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -11,8 +11,7 @@ const GNUPLOT_DPI = 72 # Compensate for DPI with increased resolution # # Create the window/figure for this backend. function _create_backend_figure(plt::Plot{GastonBackend}) - xsize = plt.attr[:size][1] - ysize = plt.attr[:size][2] + xsize, ysize = plt.attr[:size] G.set(termopts="""size $xsize,$ysize""") state_handle = G.nexthandle() # for now all the figures will be kept @@ -23,12 +22,17 @@ end function _before_layout_calcs(plt::Plot{GastonBackend}) # Initialize all the subplots first plt.o.subplots = G.SubPlot[] - grid = size(plt.layout) - plt.o.layout = grid + nr, nc = plt.o.layout = size(plt.layout) + n = 0 + sps = Array{Any}(undef, nr, nc) + for r ∈ 1:nr, c ∈ 1:nc # NOTE: row major + l = plt.layout.grid[r, c] + sps[r, c] = get(l.attr, :blank, false) ? nothing : plt.subplots[n += 1] + end - for sp in plt.subplots - gaston_init_subplot(plt, sp) + for c ∈ 1:nc, r ∈ 1:nr # NOTE: col major + gaston_init_subplot(plt, sps[r, c]) end # Then add the series (curves in gaston) @@ -102,18 +106,22 @@ end function _display(plt::Plot{GastonBackend}) display(plt.o) end -# + # -------------------------------------------- # These functions are gaston specific # -------------------------------------------- -# + function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}) - dims = RecipesPipeline.is3d(sp) ? 3 : 2 + if sp === nothing + push!(plt.o.subplots, sp) + else + dims = RecipesPipeline.is3d(sp) ? 3 : 2 - axesconf = gaston_parse_axes_args(plt, sp) # Gnuplot string - sp.o = GastonSubplot(dims=dims, axesconf = axesconf, curves = []) - push!(plt.o.subplots, sp.o) + axesconf = gaston_parse_axes_args(plt, sp) # Gnuplot string + sp.o = GastonSubplot(dims=dims, axesconf=axesconf, curves=[]) + push!(plt.o.subplots, sp.o) + end end function gaston_add_series(plt::Plot{GastonBackend}, series::Series) @@ -261,7 +269,7 @@ end function gaston_set_legend!(axesconf, sp) leg = sp[:legend] - if !(sp[:legend] in(:none, :inline)) + if sp[:legend] ∉ (:none, :inline) if leg == :best leg = :topright end @@ -305,7 +313,7 @@ function gaston_marker(marker) marker == :pentagon && return 15 marker == :pixel && return 0 - @warn("Unsupported marker $marker") + @warn "Unsupported marker $marker" return 1 end @@ -324,7 +332,6 @@ function gaston_enclose_tick_string(tick_string) return tick_string end - base, power = split(tick_string, "^") power = string("{", power, "}") return string(base, "^", power) From 6c2d96931611528485af33dd43ab0416146a586f Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 25 Jul 2021 12:54:31 +0000 Subject: [PATCH 375/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 49 +++++++++++++++++-- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 0dcf0d5f..fad7fbe0 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -69,18 +69,22 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -88,7 +92,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -99,7 +107,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -118,6 +126,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -130,11 +140,13 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -179,6 +191,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -202,6 +216,7 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Spy}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) @@ -211,7 +226,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppost}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -234,13 +249,17 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -257,9 +276,12 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,Base.OneTo{Int64}}) + Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -277,6 +299,9 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -286,9 +311,11 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -300,9 +327,9 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_extrema),Matrix{Float64}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) - Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -316,12 +343,14 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Float64,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -335,7 +364,12 @@ function _precompile_() Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Float64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -351,6 +385,11 @@ function _precompile_() precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end + let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 1c68a13d2c0ea4bea25d7f50005a88f1dbf1610a Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 17:24:17 +0200 Subject: [PATCH 376/518] Update docs.yml --- .github/workflows/docs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index de676c57..0aeb0d4a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -48,5 +48,6 @@ jobs: JULIA_DEBUG: "Documenter" DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | - xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' + LD_LIBRARY_PATH="$(julia -e 'using FFMPEG; println(FFMPEG.FFMPEG_jll.LIBPATH[])')" \ xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From dbe6c8dc57c4e3d2ecba0b5425946739bffd4a43 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 17:47:15 +0200 Subject: [PATCH 377/518] Update docs.yml --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 0aeb0d4a..35ea9210 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,5 +49,5 @@ jobs: DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' - LD_LIBRARY_PATH="$(julia -e 'using FFMPEG; println(FFMPEG.FFMPEG_jll.LIBPATH[])')" \ + LD_LIBRARY_PATH="$(julia -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" \ xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From e79740d3bd0ed2896dd94baa8fa9179219ed10a6 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 25 Jul 2021 15:49:34 +0000 Subject: [PATCH 378/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 41 +++---------------- 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index fad7fbe0..147988d6 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -76,15 +76,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -92,11 +89,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -107,7 +100,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation), Tuple{Symbol, Symbol, Int64}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -126,7 +118,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) @@ -140,7 +131,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) @@ -191,7 +181,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -216,7 +205,6 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Spy}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) @@ -226,7 +214,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:lens}},AbstractPlot}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:pie}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:quiver}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:spy}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:steppre}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) @@ -249,17 +236,13 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) + Base.precompile(Tuple{typeof(_transform_ticks),Symbol}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -276,12 +259,10 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,Base.OneTo{Int64}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -302,8 +283,10 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Int64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) @@ -311,11 +294,9 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -327,9 +308,9 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_extrema),Matrix{Float64}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_steps),Vector{Float64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -343,14 +324,12 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Float64,Symbol}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -361,18 +340,15 @@ function _precompile_() Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,Tuple{String, Symbol, Int64, String}}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Tuple{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) @@ -385,11 +361,6 @@ function _precompile_() precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From c5ae99374a9646dd5661f73e79283b4db3f68911 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 17:54:52 +0200 Subject: [PATCH 379/518] Update runtests.jl --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index f29e1153..08d5a763 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -70,7 +70,7 @@ include("imgcomp.jl") Random.seed!(PLOTS_SEED) default(show=false, reuse=true) is_ci() = get(ENV, "CI", "false") == "true" -const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-4" : "1e-5")) +const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-3" : "1e-5")) ## Uncomment the following lines to update reference images for different backends From 4fa567aa5bee3e6840eb917eec515c4d61c21549 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 17:58:39 +0200 Subject: [PATCH 380/518] Update docs.yml --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 35ea9210..37ea13a0 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,5 +49,5 @@ jobs: DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' - LD_LIBRARY_PATH="$(julia -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" \ + LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" \ xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 07a786a946c7b48afcd1c6942fe4f31fd2fb0adc Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 18:05:54 +0200 Subject: [PATCH 381/518] Update runtests.jl --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 08d5a763..ff29ceaa 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -70,7 +70,7 @@ include("imgcomp.jl") Random.seed!(PLOTS_SEED) default(show=false, reuse=true) is_ci() = get(ENV, "CI", "false") == "true" -const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-3" : "1e-5")) +const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-3" : "1e-4")) ## Uncomment the following lines to update reference images for different backends From 27032a3e2189c81e0bb6dd16bbee5c585ff2cfa6 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 25 Jul 2021 16:33:31 +0000 Subject: [PATCH 382/518] Update precompile_*.jl file --- deps/SnoopCompile/precompile/precompile_Plots.jl | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 147988d6..fede2622 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -87,10 +87,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -118,7 +116,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -136,7 +134,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -242,7 +239,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_transform_ticks),Symbol}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -283,10 +279,8 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Int64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) @@ -294,6 +288,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -309,8 +304,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(is_marker_supported),PlotlyBackend,Vector{Symbol}}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(make_steps),Vector{Float64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -340,21 +335,22 @@ function _precompile_() Base.precompile(Tuple{typeof(process_annotation),Subplot{PlotlyBackend},Int64,Float64,Tuple{String, Symbol, Int64, String}}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Tuple{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(push!),Segments{Float64},Float64,Float64,Float64,Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) + isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Int64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) From 8cbfe748634ece65bb740ebb9579ebfc63d78bb5 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 18:51:46 +0200 Subject: [PATCH 383/518] Update docs.yml --- .github/workflows/docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 37ea13a0..efe05cf6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,5 +49,6 @@ jobs: DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" \ xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From c41e586385388fd8b6a1a559408f580286c63f6d Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 18:52:45 +0200 Subject: [PATCH 384/518] revert tol changes [skip ci] --- test/runtests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index ff29ceaa..f29e1153 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -70,7 +70,7 @@ include("imgcomp.jl") Random.seed!(PLOTS_SEED) default(show=false, reuse=true) is_ci() = get(ENV, "CI", "false") == "true" -const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-3" : "1e-4")) +const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-4" : "1e-5")) ## Uncomment the following lines to update reference images for different backends From 530768064e88940d27561346a6791ca50acf300c Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 19:33:20 +0200 Subject: [PATCH 385/518] Update docs.yml --- .github/workflows/docs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index efe05cf6..41c5d4bc 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,5 +50,6 @@ jobs: run: | xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' - LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" \ + exort LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" + export PLOTDOCS_ANSICOLOR=false xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 86a732e9c59ea90578dbe6f2c5d6eb772fc61422 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 19:42:38 +0200 Subject: [PATCH 386/518] Update docs.yml --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 41c5d4bc..dcfc10b4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,6 +50,6 @@ jobs: run: | xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' - exort LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" + export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" export PLOTDOCS_ANSICOLOR=false xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From d4d4d5732b97a267264b3afac1585bbcedd4add9 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 25 Jul 2021 20:45:59 +0200 Subject: [PATCH 387/518] Update docs.yml --- .github/workflows/docs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index dcfc10b4..22af6a7a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,6 +50,6 @@ jobs: run: | xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' - export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" - export PLOTDOCS_ANSICOLOR=false + # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" + export PLOTDOCS_ANSICOLOR=true xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 3ce4e23f1be24ab8ef936eed077480a12eae21d7 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 25 Jul 2021 19:05:52 +0000 Subject: [PATCH 388/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index fede2622..0196b8d5 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -76,19 +76,25 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -134,6 +140,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -178,6 +185,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -233,6 +241,8 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -252,6 +262,7 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(default),Symbol,Bool}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) @@ -276,9 +287,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -304,8 +312,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(is_marker_supported),PlotlyBackend,Vector{Symbol}}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -336,11 +342,10 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Float64},Float64,Float64,Float64,Float64,Vararg{Float64, N} where N}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -350,7 +355,6 @@ function _precompile_() Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) - isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Int64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) From c0e35f2358936d6545dd8cfc09baed7ca6134851 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 25 Jul 2021 15:21:23 +0200 Subject: [PATCH 389/518] add new gnuplot capabilities (surface, scatter3d, wireframe, ...) --- src/backends.jl | 81 ++++++++++++--------- src/backends/gaston.jl | 157 ++++++++++++++++++++++++++++++----------- src/examples.jl | 9 ++- 3 files changed, 171 insertions(+), 76 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index 6205f254..14ff3d6a 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -623,44 +623,55 @@ const _gaston_attr = merge_with_base_supported([ # :camera, # :contour_labels, ]) -const _gaston_seriestype = [:path, - # :path3d, - :scatter, - :steppre, - # :stepmid, - :steppost, - # :histogram2d, - # :ysticks, :xsticks, - # :contour, - :shape, - # :straightline, - ] -const _gaston_style = [:auto, - :solid, - :dash, - :dot, - :dashdot, - :dashdotdot - ] +const _gaston_seriestype = [ + :path, + :path3d, + :scatter, + :steppre, + :stepmid, + :steppost, + :histogram2d, + :ysticks, :xsticks, + :contour, + :shape, + :straightline, + :scatter3d, + :contour3d, + :wireframe, + :heatmap, + :surface, + :mesh3d, +] -const _gaston_marker = [:none, - # :auto, - :circle, - :rect, - :diamond, - :utriangle, - :dtriangle, - :pentagon, - :x, - :+ - ] #vcat(_allMarkers, Shape) +const _gaston_style = [ + :auto, + :solid, + :dash, + :dot, + :dashdot, + :dashdotdot +] -const _gaston_scale = [:identity, - # :ln, - # :log2, - :log10, - ] +const _gaston_marker = [ + :none, + # :auto, + :circle, + :rect, + :diamond, + :utriangle, + :dtriangle, + :pentagon, + :x, + :+ +] #vcat(_allMarkers, Shape) + +const _gaston_scale = [ + :identity, + # :ln, + # :log2, + :log10, +] # ------------------------------------------------------------------------------ # unicodeplots diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 51a393ec..c6a19480 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -22,18 +22,11 @@ end function _before_layout_calcs(plt::Plot{GastonBackend}) # Initialize all the subplots first plt.o.subplots = G.SubPlot[] - nr, nc = plt.o.layout = size(plt.layout) - n = 0 - sps = Array{Any}(undef, nr, nc) - for r ∈ 1:nr, c ∈ 1:nc # NOTE: row major - l = plt.layout.grid[r, c] - sps[r, c] = get(l.attr, :blank, false) ? nothing : plt.subplots[n += 1] - end + n, sps = gaston_get_subplots(plt, 0, plt.layout) + @assert n == length(plt.subplots) - for c ∈ 1:nc, r ∈ 1:nr # NOTE: col major - gaston_init_subplot(plt, sps[r, c]) - end + plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) for series in plt.series_list @@ -59,8 +52,7 @@ for (mime, term) in ( "text/plain" => "dumb", # NEED fixing TODO ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) - xsize = plt.attr[:size][1] - ysize = plt.attr[:size][2] + xsize, ysize = plt.attr[:size] termopts="""size $xsize,$ysize""" tmpfile = G.tempname() * "." * $term @@ -79,11 +71,9 @@ for (mime, term) in ( end end -function _show(io::IO, mime::MIME{Symbol("image/png")}, - plt::Plot{GastonBackend},) +function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend}) scaling = plt.attr[:dpi] / GNUPLOT_DPI - xsize = plt.attr[:size][1] * scaling - ysize = plt.attr[:size][2] * scaling + xsize, ysize = plt.attr[:size] .* scaling # Scale all plot elements to match Plots.jl DPI standard termopts="""size $xsize,$ysize fontscale $scaling lw $scaling dl $scaling ps $scaling""" @@ -111,14 +101,44 @@ end # These functions are gaston specific # -------------------------------------------- +gaston_get_subplots(plt, n, layout, level) = begin + nr, nc = size(layout) + sps = Array{Any}(undef, nr, nc) + for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major + l = layout[r, c] + if l isa GridLayout + n, sub = gaston_get_subplots(plt, n, l) + sps[r, c] = size(sub) == (1, 1) ? only(sub) : sub + else + sps[r, c] = get(l.attr, :blank, false) ? nothing : plt.subplots[n += 1] + end + end + n, sps +end + +gaston_init_subplots(plt, sps, level) = begin + sz = nr, nc = size(sps) + for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major + sp = sps[r, c] + if sp isa Subplot || sp === nothing + gaston_init_subplot(plt, sp) + else + gaston_init_subplots(plt, sp, level + 1) + sz = max.(sz, size(sp)) + end + end + sz +end + function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}) if sp === nothing push!(plt.o.subplots, sp) else - dims = RecipesPipeline.is3d(sp) ? 3 : 2 - - axesconf = gaston_parse_axes_args(plt, sp) # Gnuplot string - sp.o = GastonSubplot(dims=dims, axesconf=axesconf, curves=[]) + sp.o = GastonSubplot( + dims=RecipesPipeline.is3d(sp) ? 3 : 2, + axesconf=gaston_parse_axes_args(plt, sp), # Gnuplot string + curves=[] + ) push!(plt.o.subplots, sp.o) end @@ -129,45 +149,91 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) sp = series[:subplot] g_sp = sp.o # Gaston subplot object - seriesconf = gaston_parse_series_args(series) # Gnuplot string - c = G.Curve(series[:x], series[:y], nothing, nothing, seriesconf ) + if series[:seriestype] ∈ (:heatmap, :contour) && g_sp.dims == 2 + g_sp.dims = 3 # FIXME: this is ugly, we need heatmap to use splot, not plot + end + + x = series[:x] + y = series[:y] + z = g_sp.dims == 2 ? nothing : series[:z] + if z isa Surface + z = z.surf + end + + seriesconf = gaston_seriesconf!(sp, series) # Gnuplot string + c = G.Curve(x, y, z, nothing, seriesconf) isfirst = length(g_sp.curves) == 0 ? true : false push!(g_sp.curves, c) G.write_data(c, g_sp.dims, g_sp.datafile, append = isfirst ? false : true) end -function gaston_parse_series_args(series::Series) +gaston_lc_ls_lw(series::Series) = ( + gaston_color(series[:linecolor], series[:linealpha]), + gaston_linestyle(series[:linestyle]), + series[:linewidth], +) + +gaston_mk_ms_mc(series::Series) = ( + gaston_marker(series[:markershape]), + series[:markersize] * GASTON_MARKER_SCALING, + gaston_color(series[:markercolor], series[:markeralpha]), +) + +gaston_palette(gradient) = begin + palette = String[] + n = -1 + for rgba ∈ gradient # FIXME: naive conversion, inefficient ? + push!(palette, "$(n += 1) $(rgba.r) $(rgba.g) $(rgba.b)") + end + '(' * join(palette, ", ") * ')' +end + +function gaston_seriesconf!(sp, series::Series) + gsp = sp.o curveconf = String[] st = series[:seriestype] - if st == :scatter - pt = gaston_marker(series[:markershape]) - ps = series[:markersize] * GASTON_MARKER_SCALING - lc = gaston_color(series[:markercolor]) - # alpha = series[:markeralpha] # TODO merge alpha with rgb color + clims = get_clims(sp, series) + if st ∈ (:scatter, :scatter3d) + pt, ps, lc = gaston_mk_ms_mc(series) push!(curveconf, """with points pt $pt ps $ps lc $lc""") - elseif st == :path - lc = gaston_color(series[:linecolor]) - dt = gaston_linestyle(series[:linestyle]) - lw = series[:linewidth] - # alpha = series[:linealpha] # TODO merge alpha with rgb color + elseif st ∈ (:path, :straightline, :path3d) + lc, dt, lw = gaston_lc_ls_lw(series) if series[:markershape] == :none # simplepath push!(curveconf, """with lines lc $lc dt $dt lw $lw""") else - pt = gaston_marker(series[:markershape]) - ps = series[:markersize] * GASTON_MARKER_SCALING + pt, ps = gaston_mk_ms_mc(series) push!(curveconf, """with lp lc $lc dt $dt lw $lw pt $pt ps $ps""") end elseif st == :shape - fc = gaston_color(series[:fillcolor]) + fc = gaston_color(series[:fillcolor], series[:fillalpha]) fs = "solid" - lc = gaston_color(series[:linecolor]) + lc, _ = gaston_lc_ls_lw(series) push!(curveconf, """with filledcurves fc $fc fs $fs border lc $lc""") elseif st == :steppre push!(curveconf, """with steps""") elseif st == :steppost push!(curveconf, """with fsteps""") # Not sure if not the other way + elseif st ∈ (:contour, :contour3d) + push!(curveconf, """with lines""") + if st == :contour + gsp.axesconf *= """\nset view map\nunset surface""" + end + levels = join(map(string, collect(contour_levels(series, clims))), ", ") + gsp.axesconf *= """\nset contour base\nset cntrparam levels discrete $levels """ + elseif st ∈ (:surface, :heatmap) + palette = gaston_palette(series[:seriescolor]) + gsp.axesconf *= """\nset palette model RGB defined $palette""" + if st == :heatmap + gsp.axesconf *= """\nset view map""" + end + push!(curveconf, """with pm3d""") + elseif st == :wireframe + lc, dt, lw = gaston_lc_ls_lw(series) + push!(curveconf, """with lines lc $lc dt $dt lw $lw""") + else + @warn "Gaston: $st is not implemented yet" end # label @@ -197,7 +263,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack push!(axesconf, """set $(letter)tics $(axis_attr[:tick_direction])""") mirror = axis_attr[:mirror] ? "mirror" : "nomirror" - push!(axesconf, """set $(letter)tics $(mirror) """) + push!(axesconf, """set $(letter)tics $(mirror) """) logscale = if axis_attr[:scale] == :identity "nologscale" @@ -215,7 +281,14 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack ticks = get_ticks(sp, axis_attr) gaston_set_ticks!(axesconf, ticks, letter) end - # set title {""} {offset } {font "{,}"}{{textcolor | tc} { | default}} {{no}enhanced}1 + + ratio = get_aspect_ratio(sp) + if ratio != :none + if ratio == :equal + ratio = -1 + end + push!(axesconf, """set size ratio $ratio""") + end end gaston_set_legend!(axesconf, sp) # Set legend params @@ -317,7 +390,11 @@ function gaston_marker(marker) return 1 end -gaston_color(color) = """rgb "#$(hex(color, :rrggbb))" """ +gaston_color(color, alpha=0.) = begin + col = single_color(color) # in case of gradients + col = alphacolor(col, alpha == nothing ? 0. : alpha) # add a default alpha if non existent + """rgb "#$(hex(col, :aarrggbb))" """ +end function gaston_linestyle(style) style == :solid && return "1" diff --git a/src/examples.jl b/src/examples.jl index 03d4ae4f..f8c9324f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1242,7 +1242,14 @@ _backend_skips = Dict( ], :inspectdr => [4, 6, 10, 22, 24, 28, 30, 38, 43, 45, 47, 48, 49, 50, 51, 55], :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], - :gaston => [2, 4, 5, 6, 10, 22, 24, 28, 31, 32, 35, 38, 43, 45, 47, 48, 49, 50, 51, 55], + :gaston => [ + 2, 4, 6, + 16, # TODO: support nested layouts + 27, # TODO: support polar + 30, 31, 47, 48, + 49, # TODO: support polar + 50, 51, 55 + ], ) From 49f8e48399b8a01920134a409da4f0eeb59526cb Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 25 Jul 2021 22:25:42 +0000 Subject: [PATCH 390/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 0196b8d5..200b43f9 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -76,6 +76,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) @@ -93,7 +94,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -123,6 +126,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -135,6 +139,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) @@ -151,6 +157,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Float64}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) @@ -242,7 +249,8 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -262,10 +270,10 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(default),Symbol,Bool}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) @@ -287,8 +295,13 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Int64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) @@ -300,6 +313,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -312,6 +326,10 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(intersection_point),Float64,Float64,Float64,Float64,Float64,Float64}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) + Base.precompile(Tuple{typeof(make_steps),Vector{Float64},Symbol,Bool}) + Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -331,6 +349,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -345,10 +364,14 @@ function _precompile_() Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) @@ -361,6 +384,11 @@ function _precompile_() precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end + let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From b801b2b2728d37d2a86d007b662a9874588abb26 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 26 Jul 2021 11:20:05 +0200 Subject: [PATCH 391/518] explicit function return, decl - add comments - cleanup --- src/backends/gaston.jl | 112 ++++++++++++++++++++--------------------- src/examples.jl | 13 +++-- 2 files changed, 65 insertions(+), 60 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index c6a19480..0ac8a7b7 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -4,11 +4,11 @@ const GastonSubplot = G.Plot const GASTON_MARKER_SCALING = 1.3 / 5.0 const GNUPLOT_DPI = 72 # Compensate for DPI with increased resolution -# + # -------------------------------------------- # These functions are called by Plots # -------------------------------------------- -# + # Create the window/figure for this backend. function _create_backend_figure(plt::Plot{GastonBackend}) xsize, ysize = plt.attr[:size] @@ -26,20 +26,23 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) n, sps = gaston_get_subplots(plt, 0, plt.layout) @assert n == length(plt.subplots) + # FIXME: find a way to support nested layouts + # e.g. figures spanning multiple rows/cols plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) for series in plt.series_list gaston_add_series(plt, series) end + nothing end function _update_min_padding!(sp::Subplot{GastonBackend}) + # FIXME: make this more flexible sp.minpad = (20mm, 5mm, 2mm, 10mm) end -function _update_plot_object(plt::Plot{GastonBackend}) -end +_update_plot_object(plt::Plot{GastonBackend}) = nothing for (mime, term) in ( "application/eps" => "epscairo", # NEED fixing TODO @@ -53,21 +56,19 @@ for (mime, term) in ( ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) xsize, ysize = plt.attr[:size] - termopts="""size $xsize,$ysize""" + termopts = """size $xsize,$ysize""" tmpfile = G.tempname() * "." * $term - G.save( - term = $term, - output = tmpfile, - handle = plt.o.handle, - saveopts = termopts + term=$term, + output=tmpfile, + handle=plt.o.handle, + saveopts=termopts ) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) rm(tmpfile, force=true) nothing - end end @@ -76,15 +77,14 @@ function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend} xsize, ysize = plt.attr[:size] .* scaling # Scale all plot elements to match Plots.jl DPI standard - termopts="""size $xsize,$ysize fontscale $scaling lw $scaling dl $scaling ps $scaling""" + termopts = """size $xsize,$ysize fontscale $scaling lw $scaling dl $scaling ps $scaling""" tmpfile = G.tempname() - G.save( - term = "pngcairo", - output = tmpfile, - handle = plt.o.handle, - saveopts = termopts + term="pngcairo", + output=tmpfile, + handle=plt.o.handle, + saveopts=termopts ) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) @@ -92,16 +92,13 @@ function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend} nothing end - -function _display(plt::Plot{GastonBackend}) - display(plt.o) -end +_display(plt::Plot{GastonBackend}) = display(plt.o) # -------------------------------------------- # These functions are gaston specific # -------------------------------------------- -gaston_get_subplots(plt, n, layout, level) = begin +function gaston_get_subplots(plt, n, layout, level) nr, nc = size(layout) sps = Array{Any}(undef, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major @@ -113,10 +110,10 @@ gaston_get_subplots(plt, n, layout, level) = begin sps[r, c] = get(l.attr, :blank, false) ? nothing : plt.subplots[n += 1] end end - n, sps + return n, sps end -gaston_init_subplots(plt, sps, level) = begin +function gaston_init_subplots(plt, sps, level) sz = nr, nc = size(sps) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major sp = sps[r, c] @@ -127,7 +124,7 @@ gaston_init_subplots(plt, sps, level) = begin sz = max.(sz, size(sp)) end end - sz + return sz end function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}) @@ -139,9 +136,9 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend axesconf=gaston_parse_axes_args(plt, sp), # Gnuplot string curves=[] ) - push!(plt.o.subplots, sp.o) end + nothing end function gaston_add_series(plt::Plot{GastonBackend}, series::Series) @@ -150,7 +147,7 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) g_sp = sp.o # Gaston subplot object if series[:seriestype] ∈ (:heatmap, :contour) && g_sp.dims == 2 - g_sp.dims = 3 # FIXME: this is ugly, we need heatmap to use splot, not plot + g_sp.dims = 3 # FIXME: this is ugly, we need heatmap/contour to use splot, not plot end x = series[:x] @@ -166,27 +163,7 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) isfirst = length(g_sp.curves) == 0 ? true : false push!(g_sp.curves, c) G.write_data(c, g_sp.dims, g_sp.datafile, append = isfirst ? false : true) -end - -gaston_lc_ls_lw(series::Series) = ( - gaston_color(series[:linecolor], series[:linealpha]), - gaston_linestyle(series[:linestyle]), - series[:linewidth], -) - -gaston_mk_ms_mc(series::Series) = ( - gaston_marker(series[:markershape]), - series[:markersize] * GASTON_MARKER_SCALING, - gaston_color(series[:markercolor], series[:markeralpha]), -) - -gaston_palette(gradient) = begin - palette = String[] - n = -1 - for rgba ∈ gradient # FIXME: naive conversion, inefficient ? - push!(palette, "$(n += 1) $(rgba.r) $(rgba.g) $(rgba.b)") - end - '(' * join(palette, ", ") * ')' + nothing end function gaston_seriesconf!(sp, series::Series) @@ -238,7 +215,6 @@ function gaston_seriesconf!(sp, series::Series) # label push!(curveconf, """title "$(series[:label])" """) - return join(curveconf, " ") end @@ -246,8 +222,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack axesconf = String[] # Standard 2d axis if !ispolar(sp) && !RecipesPipeline.is3d(sp) - # TODO - # configure grid, axis spines, thickness + # TODO: configure grid, axis spines, thickness end for letter in (:x, :y, :z) @@ -301,9 +276,8 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack end function gaston_set_ticks!(axesconf, ticks, letter) - ticks == :auto && return - if ticks == :none || ticks === nothing || ticks == false + if ticks ∈ (:none, nothing, false) push!(axesconf, """unset $(letter)tics """) return end @@ -320,7 +294,6 @@ function gaston_set_ticks!(axesconf, ticks, letter) axesconf, "set $(letter)tics (" * join(gaston_tick_string, ", ") * ")" ) - elseif ttype == :ticks_and_labels tick_locations = @view ticks[1][:] tick_labels = @view ticks[2][:] @@ -334,10 +307,10 @@ function gaston_set_ticks!(axesconf, ticks, letter) axesconf, "set $(letter)tics (" * join(gaston_tick_string, ", ") * ")" ) - else error("Invalid input for $(letter)ticks: $ticks") end + nothing end function gaston_set_legend!(axesconf, sp) @@ -370,7 +343,32 @@ function gaston_set_legend!(axesconf, sp) push!(axesconf, "set key off") end + nothing +end +# -------------------------------------------- +# Helpers +# -------------------------------------------- + +gaston_lc_ls_lw(series::Series) = ( + gaston_color(series[:linecolor], series[:linealpha]), + gaston_linestyle(series[:linestyle]), + series[:linewidth], +) + +gaston_mk_ms_mc(series::Series) = ( + gaston_marker(series[:markershape]), + series[:markersize] * GASTON_MARKER_SCALING, + gaston_color(series[:markercolor], series[:markeralpha]), +) + +function gaston_palette(gradient) + palette = String[] + n = -1 + for rgba ∈ gradient # FIXME: naive conversion, inefficient ? + push!(palette, "$(n += 1) $(rgba.r) $(rgba.g) $(rgba.b)") + end + return '(' * join(palette, ", ") * ')' end function gaston_marker(marker) @@ -390,10 +388,10 @@ function gaston_marker(marker) return 1 end -gaston_color(color, alpha=0.) = begin +function gaston_color(color, alpha=0.) col = single_color(color) # in case of gradients col = alphacolor(col, alpha == nothing ? 0. : alpha) # add a default alpha if non existent - """rgb "#$(hex(col, :aarrggbb))" """ + return """rgb "#$(hex(col, :aarrggbb))" """ end function gaston_linestyle(style) diff --git a/src/examples.jl b/src/examples.jl index f8c9324f..15d87009 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1243,12 +1243,19 @@ _backend_skips = Dict( :inspectdr => [4, 6, 10, 22, 24, 28, 30, 38, 43, 45, 47, 48, 49, 50, 51, 55], :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], :gaston => [ - 2, 4, 6, + 2, # animations + 4, # colors/palette issues + 6, # TODO: support embedded images 16, # TODO: support nested layouts 27, # TODO: support polar - 30, 31, 47, 48, + 30, # uses StatsPlots, deprecated ? + 31, # animations + 47, # TODO: support mesh3d + 48, # TODO: vector of shapes, ... 49, # TODO: support polar - 50, 51, 55 + 50, # TODO: 1D data not supported for pm3d + 51, # TODO: support embedded images + 55, # TODO: scaling is ugly ], ) From bb29abb8a496c0e811b3b605c41a924f8465e22e Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 26 Jul 2021 09:52:21 +0000 Subject: [PATCH 392/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 200b43f9..e513301b 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -94,7 +94,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) @@ -140,7 +139,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) @@ -248,9 +246,10 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -273,16 +272,18 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) + Base.precompile(Tuple{typeof(fakedata),MersenneTwister,Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -297,11 +298,10 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Int64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) @@ -313,7 +313,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -326,10 +325,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(intersection_point),Float64,Float64,Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(make_steps),Vector{Float64},Symbol,Bool}) - Base.precompile(Tuple{typeof(make_steps),Vector{Int64},Symbol,Bool}) + Base.precompile(Tuple{typeof(ohlc),Any}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -344,12 +341,12 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Float64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -361,12 +358,14 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Float64, Float64, Float64},Tuple{Float64, Float64, Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) @@ -414,4 +413,9 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end + let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any, N} where N,))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any, N} where N,)) + end + end end From a9d11cb2befe504b930100e29e6f1180da4406cb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 26 Jul 2021 19:15:26 +0200 Subject: [PATCH 393/518] Update docs.yml --- .github/workflows/docs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 22af6a7a..b3338347 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -51,5 +51,7 @@ jobs: xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" + export JULIA_GR_PROVIDER=GR export PLOTDOCS_ANSICOLOR=true + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 99188f7a7e7ed7fec46b83e39c934c345662f052 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 26 Jul 2021 20:56:29 +0200 Subject: [PATCH 394/518] Update docs.yml --- .github/workflows/docs.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index b3338347..08a9191a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -48,10 +48,11 @@ jobs: JULIA_DEBUG: "Documenter" DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | + export PLOTDOCS_ANSICOLOR=true xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.3"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" - export JULIA_GR_PROVIDER=GR - export PLOTDOCS_ANSICOLOR=true - xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' + # export JULIA_GR_PROVIDER=GR + # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 92caf2e15fa7ca2dee5a6a79ce8d068568444dc4 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 26 Jul 2021 21:25:14 +0200 Subject: [PATCH 395/518] Update docs.yml --- .github/workflows/docs.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 08a9191a..3cd32aec 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -48,11 +48,10 @@ jobs: JULIA_DEBUG: "Documenter" DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | - export PLOTDOCS_ANSICOLOR=true + export PLOTDOCS_ANSICOLOR=true JULIA_GR_PROVIDER=GR xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.3"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" - # export JULIA_GR_PROVIDER=GR - # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 42c60a4fd6af4afafa5ece74bca81514e551acdc Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 26 Jul 2021 21:47:57 +0200 Subject: [PATCH 396/518] Update docs.yml --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3cd32aec..e66d90a6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -51,7 +51,7 @@ jobs: export PLOTDOCS_ANSICOLOR=true JULIA_GR_PROVIDER=GR xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' - xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.3"' + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 75bd9dbd01d19e2153aa18211e696cfd0c0dd2d1 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 26 Jul 2021 21:54:16 +0200 Subject: [PATCH 397/518] Update docs.yml --- .github/workflows/docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e66d90a6..7cbb8ab6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -54,4 +54,5 @@ jobs: xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"st -m"' xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 741684251c46391673b1320a98fd5d8fa841b33e Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 26 Jul 2021 22:11:21 +0200 Subject: [PATCH 398/518] Update docs.yml --- .github/workflows/docs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7cbb8ab6..39aa3141 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -48,7 +48,8 @@ jobs: JULIA_DEBUG: "Documenter" DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | - export PLOTDOCS_ANSICOLOR=true JULIA_GR_PROVIDER=GR + export PLOTDOCS_ANSICOLOR=true + # export JULIA_GR_PROVIDER=GR xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' From a7c4eef861b6b77fe7814086d8b0064da4159121 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 26 Jul 2021 22:28:25 +0200 Subject: [PATCH 399/518] Update docs.yml --- .github/workflows/docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 39aa3141..73769f3b 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -53,6 +53,7 @@ jobs: xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' + xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR_jll@0.57.3"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"st -m"' From f5764566176c42239f00e69d03f96cb1ccae774c Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 27 Jul 2021 11:21:02 +0200 Subject: [PATCH 400/518] Update docs.yml --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 73769f3b..a3b7d42b 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -52,7 +52,7 @@ jobs: # export JULIA_GR_PROVIDER=GR xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' - xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' + # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR_jll@0.57.3"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' From 6a459d4c2202ec6948104a6d828f15b92508724c Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 27 Jul 2021 11:27:19 +0200 Subject: [PATCH 401/518] Update docs.yml --- .github/workflows/docs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a3b7d42b..c30ba7c3 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,11 +49,12 @@ jobs: DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | export PLOTDOCS_ANSICOLOR=true + export GKSwstype=nul # export JULIA_GR_PROVIDER=GR xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' - xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR_jll@0.57.3"' + # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR_jll@0.57.3"' # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"st -m"' From f049f56e0b87112552516b0c48f9eec66123d8ed Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 27 Jul 2021 11:41:07 +0200 Subject: [PATCH 402/518] Fix building docs (JuliaPlots/Plots.jl/issues/3664) --- .github/workflows/docs.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c30ba7c3..fb4e97be 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,13 +49,8 @@ jobs: DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | export PLOTDOCS_ANSICOLOR=true - export GKSwstype=nul - # export JULIA_GR_PROVIDER=GR + export GKSwstype=nul # Plots.jl/issues/3664 xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' - xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' - # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR@0.57.5"' - # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add GR_jll@0.57.3"' - # export LD_LIBRARY_PATH="$(julia --project=docs/ -e 'using Plots; println(Plots.FFMPEG.FFMPEG_jll.LIBPATH[])')" - xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.build("Plots")' + # xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"add Documenter#master"' xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; pkg"st -m"' xvfb-run julia --color=yes --project=docs/ -e 'withenv("GITHUB_REPOSITORY" => "JuliaPlots/PlotDocs.jl") do; include("docs/make.jl"); end' From 50b0ae3b0f914b1bd08a9125048b55ba9dd40da5 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Tue, 27 Jul 2021 10:04:34 +0000 Subject: [PATCH 403/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index e513301b..2b05e50a 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -94,6 +94,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) @@ -106,6 +107,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -138,7 +140,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) @@ -205,6 +207,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -234,6 +237,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_sliced_series_attributes!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -246,16 +250,18 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),ColorPalette,Int64}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -273,7 +279,6 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) - Base.precompile(Tuple{typeof(fakedata),MersenneTwister,Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) @@ -283,7 +288,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -298,7 +302,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -313,6 +316,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) + Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -325,8 +329,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(leftpad),EmptyLayout}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) - Base.precompile(Tuple{typeof(ohlc),Any}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -341,12 +345,12 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Float64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -358,12 +362,13 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Float64, Float64, Float64},Tuple{Float64, Float64, Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) From f4ed35c3b6207b59166ee2cd3a3a8cea831f0cf3 Mon Sep 17 00:00:00 2001 From: BerndR <20151553+bernd1995@users.noreply.github.com> Date: Tue, 27 Jul 2021 13:03:46 +0200 Subject: [PATCH 404/518] Added colorbar font settings --- src/backends/gr.jl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index e179fef1..c7163f1b 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -559,11 +559,16 @@ function gr_draw_colorbar(cbar::GRColorbar, sp::Subplot, clims, viewport_plotare gr_set_line(1, :solid, plot_color(:black), sp) GR.axes(0, ztick, xmax, zmin, 0, 1, 0.005) - gr_set_font(guidefont(sp[:yaxis]), sp) + if isa(sp[:colorbar_title],PlotText) + title = sp[:colorbar_title] + else + title = text(sp[:colorbar_title], colorbartitlefont(sp)) + end + gr_set_font(title.font, sp) GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_TOP) GR.setcharup(-1, 0) gr_text( - viewport_plotarea[2] + 0.1, gr_view_ycenter(viewport_plotarea), sp[:colorbar_title] + viewport_plotarea[2] + 0.1, gr_view_ycenter(viewport_plotarea), title.str ) GR.restorestate() @@ -1902,7 +1907,7 @@ function gr_draw_surface(series, x, y, z, clims) gr_set_line(get_linewidth(series), get_linestyle(series), get_linecolor(series), series) GR.polyline3d(X, Y, Z) else - throw(ArgumentError("Not handled !")) + throw(ArgumentError("Not handled !")) end end From a0c939b7c7476d9aece463ab9bff89d7bbef288a Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 27 Jul 2021 20:42:29 +0200 Subject: [PATCH 405/518] Update gr.jl --- src/backends/gr.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index c7163f1b..fe28fc4f 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -559,10 +559,10 @@ function gr_draw_colorbar(cbar::GRColorbar, sp::Subplot, clims, viewport_plotare gr_set_line(1, :solid, plot_color(:black), sp) GR.axes(0, ztick, xmax, zmin, 0, 1, 0.005) - if isa(sp[:colorbar_title],PlotText) - title = sp[:colorbar_title] + title = if isa(sp[:colorbar_title], PlotText) + sp[:colorbar_title] else - title = text(sp[:colorbar_title], colorbartitlefont(sp)) + text(sp[:colorbar_title], colorbartitlefont(sp)) end gr_set_font(title.font, sp) GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_TOP) From 73208ac3bd6881945c0b0037f37500e66057a56b Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 09:24:48 +0000 Subject: [PATCH 406/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 46 ++----------------- 1 file changed, 3 insertions(+), 43 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 2b05e50a..fca02751 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -76,15 +76,12 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -92,11 +89,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -107,7 +100,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -127,7 +119,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -140,13 +131,11 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -157,7 +146,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Float64}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) @@ -192,7 +180,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -207,7 +194,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -237,7 +223,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_sliced_series_attributes!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -250,18 +235,12 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -282,7 +261,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -292,6 +270,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},AbsoluteLength,AbsoluteLength,Vector{Float64}}) + Base.precompile(Tuple{typeof(gr_draw_border),Subplot{GRBackend},Axis,Segments{Tuple{Float64, Float64}},Function}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) @@ -299,10 +278,8 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -316,7 +293,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) - Base.precompile(Tuple{typeof(gr_polyline),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{typeof(gr_set_gradient),PlotUtils.ContinuousColorGradient}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}}}) Base.precompile(Tuple{typeof(gr_update_viewport_legend!),Vector{Float64},Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}}}) @@ -328,9 +304,8 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_extrema),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(leftpad),EmptyLayout}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -350,7 +325,6 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -364,18 +338,9 @@ function _precompile_() Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) @@ -418,9 +383,4 @@ function _precompile_() precompile(fbody, (Any,typeof(title!),AbstractString,)) end end - let fbody = try __lookup_kwbody__(which(yaxis!, (Any,Vararg{Any, N} where N,))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Any,typeof(yaxis!),Any,Vararg{Any, N} where N,)) - end - end end From f470e6a590cefaaae0de5e48b518307dce32cacc Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 09:53:56 +0000 Subject: [PATCH 407/518] Update precompile_*.jl file --- deps/SnoopCompile/precompile/precompile_Plots.jl | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index fca02751..25ce68df 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -90,7 +90,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -229,6 +228,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol, Any},Symbol,Any}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,Any}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol,Any}) + Base.precompile(Tuple{typeof(_backend_instance),Symbol}) Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Int64},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Nothing},String}) @@ -257,6 +257,7 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,Vector{Float64}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) @@ -270,7 +271,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},AbsoluteLength,AbsoluteLength,Vector{Float64}}) - Base.precompile(Tuple{typeof(gr_draw_border),Subplot{GRBackend},Axis,Segments{Tuple{Float64, Float64}},Function}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_heatmap),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) @@ -278,8 +278,10 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Float64,Float64,Tuple{Float64, Float64},Int64,Int64,Int64,Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -289,7 +291,6 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -304,7 +305,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_extrema),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) @@ -353,11 +353,6 @@ function _precompile_() precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 4f352d8e7c955b4230544ec17bd8c3860b8dda25 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 28 Jul 2021 12:07:52 +0200 Subject: [PATCH 408/518] Update docs.yml --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index fb4e97be..23fcd9c2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -45,9 +45,9 @@ jobs: - name: build documentation env: PYTHON: "" - JULIA_DEBUG: "Documenter" DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | + # export JULIA_DEBUG=Documenter export PLOTDOCS_ANSICOLOR=true export GKSwstype=nul # Plots.jl/issues/3664 xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' From cac0c8d8d3c1da04552b8c1f7135c946e542c58e Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 28 Jul 2021 12:38:49 +0200 Subject: [PATCH 409/518] Gaston: Remove missing debug leftovers --- src/backends/gaston.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 0ac8a7b7..3db927a9 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -98,7 +98,7 @@ _display(plt::Plot{GastonBackend}) = display(plt.o) # These functions are gaston specific # -------------------------------------------- -function gaston_get_subplots(plt, n, layout, level) +function gaston_get_subplots(plt, n, layout) nr, nc = size(layout) sps = Array{Any}(undef, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major @@ -113,14 +113,14 @@ function gaston_get_subplots(plt, n, layout, level) return n, sps end -function gaston_init_subplots(plt, sps, level) +function gaston_init_subplots(plt, sps) sz = nr, nc = size(sps) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major sp = sps[r, c] if sp isa Subplot || sp === nothing gaston_init_subplot(plt, sp) else - gaston_init_subplots(plt, sp, level + 1) + gaston_init_subplots(plt, sp) sz = max.(sz, size(sp)) end end From e3cd14944c5c24d811d1ee56d75a231bce0b228d Mon Sep 17 00:00:00 2001 From: BerndR <20151553+bernd1995@users.noreply.github.com> Date: Wed, 28 Jul 2021 12:54:11 +0200 Subject: [PATCH 410/518] Also added supported args --- src/backends.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backends.jl b/src/backends.jl index 14ff3d6a..1b6989ed 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -327,6 +327,9 @@ const _gr_attr = merge_with_base_supported([ :guidefontrotation, :guidefontcolor, :grid, :gridalpha, :gridstyle, :gridlinewidth, :legend, :legendtitle, :colorbar, :colorbar_title, :colorbar_entry, + :colorbar_titlefontfamily, :colorbar_titlefontsize, + :colorbar_titlefontvalign, :colorbar_titlefonthalign, + :colorbar_titlefontrotation, :colorbar_titlefontcolor, :fill_z, :line_z, :marker_z, :levels, :ribbon, :quiver, :orientation, From b4632c8b48b7a5e83be5c059d5dbcabd99c83bcf Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 11:37:41 +0000 Subject: [PATCH 411/518] Update precompile_*.jl file --- deps/SnoopCompile/precompile/precompile_Plots.jl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 25ce68df..a270d7c2 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -90,6 +90,9 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(contour)),Any,typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -117,7 +120,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -179,7 +181,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -193,6 +194,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -228,7 +230,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},Dict{Symbol, Any},Symbol,Any}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},DefaultsDict,Symbol,Any}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{PlotlyBackend},Dict{Symbol, Any},Symbol,Any}) - Base.precompile(Tuple{typeof(_backend_instance),Symbol}) Base.precompile(Tuple{typeof(_bin_centers),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Int64},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Nothing},String}) @@ -242,6 +243,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) + Base.precompile(Tuple{typeof(_update_plot_args),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) @@ -257,11 +259,11 @@ function _precompile_() Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,Vector{Float64}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_thickness_scaling),Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -320,6 +322,7 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) + Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) @@ -338,6 +341,7 @@ function _precompile_() Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From aedb1fbb0bb2c022948d91d2b2163fa8a16e0dc3 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 13:12:51 +0000 Subject: [PATCH 412/518] Update precompile_*.jl file --- deps/SnoopCompile/precompile/precompile_Plots.jl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index a270d7c2..2ed9a7d8 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -90,9 +90,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(contour)),Any,typeof(contour),Any,Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -120,6 +117,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -194,7 +192,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -236,6 +234,7 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Vector{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -243,7 +242,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) - Base.precompile(Tuple{typeof(_update_plot_args),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) @@ -256,14 +254,15 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(default),Symbol,Bool}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) + Base.precompile(Tuple{typeof(expand_extrema!),Axis,Base.OneTo{Int64}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_thickness_scaling),Plot{GRBackend}}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -322,9 +321,9 @@ function _precompile_() Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend},Vararg{Plot{PlotlyBackend}, N} where N}) Base.precompile(Tuple{typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) - Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) @@ -339,9 +338,10 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Float64, Int64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Float64},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From 9e3ff15522804508e824136d968a0a005c5aa495 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 28 Jul 2021 17:01:05 +0200 Subject: [PATCH 413/518] Skip more Gaston unsupported examples --- src/examples.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/examples.jl b/src/examples.jl index 15d87009..4cc224f6 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1246,10 +1246,13 @@ _backend_skips = Dict( 2, # animations 4, # colors/palette issues 6, # TODO: support embedded images + 10, # TODO: support histogram2d 16, # TODO: support nested layouts 27, # TODO: support polar 30, # uses StatsPlots, deprecated ? 31, # animations + 38, # TODO: support histogram2d + 40, # layout issue 47, # TODO: support mesh3d 48, # TODO: vector of shapes, ... 49, # TODO: support polar From e2907b973fe2c38907b390ccbc2442e1105265a4 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 28 Jul 2021 17:17:44 +0200 Subject: [PATCH 414/518] Gaston: change @assert to @error --- src/backends/gaston.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 3db927a9..3ba3bbb6 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -24,7 +24,9 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) plt.o.subplots = G.SubPlot[] n, sps = gaston_get_subplots(plt, 0, plt.layout) - @assert n == length(plt.subplots) + if n != length(plt.subplots) + @error "Gaston: $n != $(length(plt.subplots))" + end # FIXME: find a way to support nested layouts # e.g. figures spanning multiple rows/cols From 734b301abca7dafbdcb6e02ed85b99ae8091f2fd Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 15:38:02 +0000 Subject: [PATCH 415/518] Update precompile_*.jl file --- .../precompile/precompile_Plots.jl | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 2ed9a7d8..21816845 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -76,6 +76,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) @@ -90,6 +91,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -117,7 +119,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -179,6 +180,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -192,7 +194,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -234,7 +235,6 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Vector{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -254,11 +254,9 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(default),Symbol,Bool}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) - Base.precompile(Tuple{typeof(expand_extrema!),Axis,Base.OneTo{Int64}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) @@ -268,6 +266,7 @@ function _precompile_() Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -280,18 +279,18 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_spine),Subplot{GRBackend},Axis,Segments{Tuple{Float64, Float64}}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -323,7 +322,6 @@ function _precompile_() Base.precompile(Tuple{typeof(processGridArg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processLineArg),Dict{Symbol, Any},Symbol}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Int64}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) @@ -338,10 +336,12 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Int64, Float64, Int64},Tuple{Int64, Float64, Int64}}) Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Float64, Int64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Float64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) @@ -350,6 +350,7 @@ function _precompile_() Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) + isdefined(Plots, Symbol("#181#182")) && Base.precompile(Tuple{getfield(Plots, Symbol("#181#182")),Tuple{Int64, Symbol}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end From 34c6c76cb8531ce466416559d97d450b579bf980 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 18:02:41 +0200 Subject: [PATCH 416/518] Gaston: fix lens example --- src/backends/gaston.jl | 7 ++++++- src/examples.jl | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 3ba3bbb6..815ad74d 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -23,7 +23,12 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) # Initialize all the subplots first plt.o.subplots = G.SubPlot[] - n, sps = gaston_get_subplots(plt, 0, plt.layout) + n1, sps = gaston_get_subplots(plt, 0, plt.layout, :inset_subplots) + gaston_init_subplots(plt, sps) + + n2, sps = gaston_get_subplots(plt, 0, plt.layout, :subplots) + + n = n1 + n2 if n != length(plt.subplots) @error "Gaston: $n != $(length(plt.subplots))" end diff --git a/src/examples.jl b/src/examples.jl index 4cc224f6..b273a3f3 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1252,7 +1252,6 @@ _backend_skips = Dict( 30, # uses StatsPlots, deprecated ? 31, # animations 38, # TODO: support histogram2d - 40, # layout issue 47, # TODO: support mesh3d 48, # TODO: vector of shapes, ... 49, # TODO: support polar From 0085706f6fb15fb67d29eb6a695c324c652d760d Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 18:17:41 +0200 Subject: [PATCH 417/518] Gaston: update inset_subplots --- src/backends/gaston.jl | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 815ad74d..1ad9248a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -23,10 +23,15 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) # Initialize all the subplots first plt.o.subplots = G.SubPlot[] - n1, sps = gaston_get_subplots(plt, 0, plt.layout, :inset_subplots) - gaston_init_subplots(plt, sps) + n1 = n2 = 0 + if length(plt.inset_subplots) > 0 + n1, sps = gaston_get_subplots(0, plt.inset_subplots, plt.layout) + gaston_init_subplots(plt, sps) + end - n2, sps = gaston_get_subplots(plt, 0, plt.layout, :subplots) + if length(plt.subplots) > 0 + n2, sps = gaston_get_subplots(0, plt.subplots, plt.layout) + end n = n1 + n2 if n != length(plt.subplots) @@ -105,16 +110,16 @@ _display(plt::Plot{GastonBackend}) = display(plt.o) # These functions are gaston specific # -------------------------------------------- -function gaston_get_subplots(plt, n, layout) +function gaston_get_subplots(n, plt_subplots, layout) nr, nc = size(layout) sps = Array{Any}(undef, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major l = layout[r, c] if l isa GridLayout - n, sub = gaston_get_subplots(plt, n, l) + n, sub = gaston_get_subplots(n, plt_subplots, l) sps[r, c] = size(sub) == (1, 1) ? only(sub) : sub else - sps[r, c] = get(l.attr, :blank, false) ? nothing : plt.subplots[n += 1] + sps[r, c] = get(l.attr, :blank, false) ? nothing : plt_subplots[n += 1] end end return n, sps From 83bce6e8952b97cd183e7c80384edd3689e245ec Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 28 Jul 2021 18:45:27 +0200 Subject: [PATCH 418/518] Update SnoopCompile.yml --- .github/workflows/SnoopCompile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SnoopCompile.yml b/.github/workflows/SnoopCompile.yml index 3825cf11..956f8f41 100644 --- a/.github/workflows/SnoopCompile.yml +++ b/.github/workflows/SnoopCompile.yml @@ -75,7 +75,7 @@ jobs: uses: peter-evans/create-pull-request@v3 with: token: ${{ secrets.GITHUB_TOKEN }} - commit-message: Update precompile_*.jl file + commit-message: Update precompile_*.jl file [skip ci] title: "[AUTO] Update precompiles" labels: SnoopCompile branch: "Test_SnoopCompile_AutoPR_${{ github.ref }}" From c82a3c35ee944a60ca8531ae96d4d4533ee1f7d3 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 28 Jul 2021 18:47:15 +0200 Subject: [PATCH 419/518] Update SnoopCompile.yml --- .github/workflows/SnoopCompile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SnoopCompile.yml b/.github/workflows/SnoopCompile.yml index 956f8f41..5c407a83 100644 --- a/.github/workflows/SnoopCompile.yml +++ b/.github/workflows/SnoopCompile.yml @@ -76,7 +76,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Update precompile_*.jl file [skip ci] - title: "[AUTO] Update precompiles" + title: "[AUTO] Update precompiles [skip ci]" labels: SnoopCompile branch: "Test_SnoopCompile_AutoPR_${{ github.ref }}" From 4755635fbdaffd88463f57629f5f8180409af183 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 28 Jul 2021 17:08:56 +0000 Subject: [PATCH 420/518] Update precompile_*.jl file [skip ci] --- .../precompile/precompile_Plots.jl | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 21816845..f6353073 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -77,12 +77,14 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) @@ -90,7 +92,10 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -119,6 +124,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -136,6 +142,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -180,6 +187,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) @@ -218,6 +226,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:xerror}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Vector{ComplexF64}}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol, Any},Type{Val{:bar}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) @@ -235,6 +244,8 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) @@ -266,7 +277,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),UnitRange{Int64},Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(get_xy),OHLC{Float64},Int64,Float64}) Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) @@ -279,13 +289,12 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Int64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_spine),Subplot{GRBackend},Axis,Segments{Tuple{Float64, Float64}}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) @@ -305,7 +314,10 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_extrema),Matrix{Float64}}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(is_marker_supported),PlotlyBackend,Vector{Symbol}}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -325,6 +337,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -336,11 +349,11 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Int64, Float64, Int64},Tuple{Int64, Float64, Int64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Float64, Int64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Float64, Int64, Int64},Tuple{Float64, Float64, Int64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) @@ -350,7 +363,6 @@ function _precompile_() Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) - isdefined(Plots, Symbol("#181#182")) && Base.precompile(Tuple{getfield(Plots, Symbol("#181#182")),Tuple{Int64, Symbol}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end From fd46fd4addd040c4e5b73b00e71109a46eea620e Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 28 Jul 2021 19:21:13 +0200 Subject: [PATCH 421/518] 1.19.4 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index cc5cf012..364ea80f 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.19.3" +version = "1.19.4" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From 5c02648cdd03a6a007586b495618cb53460dad94 Mon Sep 17 00:00:00 2001 From: Johnny Chen Date: Thu, 29 Jul 2021 13:57:04 +0800 Subject: [PATCH 422/518] add "no changelog" label for SnoopCompile CI This excludes PRs created by SnoopCompile CI from the release notes. --- .github/workflows/SnoopCompile.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SnoopCompile.yml b/.github/workflows/SnoopCompile.yml index 5c407a83..814d19eb 100644 --- a/.github/workflows/SnoopCompile.yml +++ b/.github/workflows/SnoopCompile.yml @@ -77,7 +77,9 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Update precompile_*.jl file [skip ci] title: "[AUTO] Update precompiles [skip ci]" - labels: SnoopCompile + labels: | + SnoopCompile + no changelog branch: "Test_SnoopCompile_AutoPR_${{ github.ref }}" From e16e46db47bad08b29590175ac8548001a5a801d Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 29 Jul 2021 18:40:55 +0200 Subject: [PATCH 423/518] Gaston: debug mplot --- .github/workflows/docs.yml | 2 +- src/backends/gaston.jl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 23fcd9c2..aba47de8 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -47,7 +47,7 @@ jobs: PYTHON: "" DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} run: | - # export JULIA_DEBUG=Documenter + export JULIA_DEBUG=Documenter export PLOTDOCS_ANSICOLOR=true export GKSwstype=nul # Plots.jl/issues/3664 xvfb-run julia --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.add(PackageSpec(name="Plots", rev=split(ENV["GITHUB_REF"], "/", limit=3)[3])); Pkg.instantiate()' diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 1ad9248a..063ddd8d 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -12,7 +12,7 @@ const GNUPLOT_DPI = 72 # Compensate for DPI with increased resolution # Create the window/figure for this backend. function _create_backend_figure(plt::Plot{GastonBackend}) xsize, ysize = plt.attr[:size] - G.set(termopts="""size $xsize,$ysize""") + # G.set(termopts="size $xsize,$ysize") state_handle = G.nexthandle() # for now all the figures will be kept plt.o = G.newfigure(state_handle) @@ -89,14 +89,14 @@ function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend} xsize, ysize = plt.attr[:size] .* scaling # Scale all plot elements to match Plots.jl DPI standard - termopts = """size $xsize,$ysize fontscale $scaling lw $scaling dl $scaling ps $scaling""" + termopts = "size $xsize,$ysize fontscale $scaling lw $scaling dl $scaling ps $scaling" tmpfile = G.tempname() G.save( term="pngcairo", output=tmpfile, handle=plt.o.handle, - saveopts=termopts + # saveopts=termopts ) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) From 914ea027d0d93d785d38cda8e10e999d1e63be6b Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 29 Jul 2021 19:13:00 +0200 Subject: [PATCH 424/518] Gaston: Unset set size for subplots - Follow Plots.DPI - Cleanup --- src/backends/gaston.jl | 71 +++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 063ddd8d..56f71ca7 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -2,8 +2,6 @@ const G = Gaston const GastonSubplot = G.Plot const GASTON_MARKER_SCALING = 1.3 / 5.0 -const GNUPLOT_DPI = 72 # Compensate for DPI with increased resolution - # -------------------------------------------- # These functions are called by Plots @@ -12,7 +10,7 @@ const GNUPLOT_DPI = 72 # Compensate for DPI with increased resolution # Create the window/figure for this backend. function _create_backend_figure(plt::Plot{GastonBackend}) xsize, ysize = plt.attr[:size] - # G.set(termopts="size $xsize,$ysize") + G.set(termopts="size $xsize,$ysize") state_handle = G.nexthandle() # for now all the figures will be kept plt.o = G.newfigure(state_handle) @@ -67,15 +65,11 @@ for (mime, term) in ( "text/plain" => "dumb", # NEED fixing TODO ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) - xsize, ysize = plt.attr[:size] - termopts = """size $xsize,$ysize""" - tmpfile = G.tempname() * "." * $term G.save( term=$term, output=tmpfile, handle=plt.o.handle, - saveopts=termopts ) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) @@ -85,18 +79,17 @@ for (mime, term) in ( end function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend}) - scaling = plt.attr[:dpi] / GNUPLOT_DPI - xsize, ysize = plt.attr[:size] .* scaling + scaling = plt.attr[:dpi] / Plots.DPI # Scale all plot elements to match Plots.jl DPI standard - termopts = "size $xsize,$ysize fontscale $scaling lw $scaling dl $scaling ps $scaling" + saveopts = "fontscale $scaling lw $scaling dl $scaling ps $scaling" tmpfile = G.tempname() G.save( term="pngcairo", output=tmpfile, handle=plt.o.handle, - # saveopts=termopts + saveopts=saveopts ) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) @@ -186,47 +179,47 @@ function gaston_seriesconf!(sp, series::Series) clims = get_clims(sp, series) if st ∈ (:scatter, :scatter3d) pt, ps, lc = gaston_mk_ms_mc(series) - push!(curveconf, """with points pt $pt ps $ps lc $lc""") + push!(curveconf, "with points pt $pt ps $ps lc $lc") elseif st ∈ (:path, :straightline, :path3d) lc, dt, lw = gaston_lc_ls_lw(series) if series[:markershape] == :none # simplepath - push!(curveconf, """with lines lc $lc dt $dt lw $lw""") + push!(curveconf, "with lines lc $lc dt $dt lw $lw") else pt, ps = gaston_mk_ms_mc(series) - push!(curveconf, """with lp lc $lc dt $dt lw $lw pt $pt ps $ps""") + push!(curveconf, "with lp lc $lc dt $dt lw $lw pt $pt ps $ps") end elseif st == :shape fc = gaston_color(series[:fillcolor], series[:fillalpha]) fs = "solid" lc, _ = gaston_lc_ls_lw(series) - push!(curveconf, """with filledcurves fc $fc fs $fs border lc $lc""") + push!(curveconf, "with filledcurves fc $fc fs $fs border lc $lc") elseif st == :steppre - push!(curveconf, """with steps""") + push!(curveconf, "with steps") elseif st == :steppost - push!(curveconf, """with fsteps""") # Not sure if not the other way + push!(curveconf, "with fsteps") # Not sure if not the other way elseif st ∈ (:contour, :contour3d) - push!(curveconf, """with lines""") + push!(curveconf, "with lines") if st == :contour - gsp.axesconf *= """\nset view map\nunset surface""" + gsp.axesconf *= "\nset view map\nunset surface" end levels = join(map(string, collect(contour_levels(series, clims))), ", ") - gsp.axesconf *= """\nset contour base\nset cntrparam levels discrete $levels """ + gsp.axesconf *= "\nset contour base\nset cntrparam levels discrete $levels" elseif st ∈ (:surface, :heatmap) palette = gaston_palette(series[:seriescolor]) - gsp.axesconf *= """\nset palette model RGB defined $palette""" + gsp.axesconf *= "\nset palette model RGB defined $palette" if st == :heatmap - gsp.axesconf *= """\nset view map""" + gsp.axesconf *= "\nset view map" end - push!(curveconf, """with pm3d""") + push!(curveconf, "with pm3d") elseif st == :wireframe lc, dt, lw = gaston_lc_ls_lw(series) - push!(curveconf, """with lines lc $lc dt $dt lw $lw""") + push!(curveconf, "with lines lc $lc dt $dt lw $lw") else @warn "Gaston: $st is not implemented yet" end # label - push!(curveconf, """title "$(series[:label])" """) + push!(curveconf, "title \"$(series[:label])\"") return join(curveconf, " ") end @@ -240,30 +233,30 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack for letter in (:x, :y, :z) axis_attr = sp.attr[Symbol(letter, :axis)] # label names - push!(axesconf, """set $(letter)label "$(axis_attr[:guide])" """) - push!(axesconf, """set $(letter)label font "$(axis_attr[:guidefontfamily]), $(axis_attr[:guidefontsize])" """) + push!(axesconf, "set $(letter)label \"$(axis_attr[:guide])\" ") + push!(axesconf, "set $(letter)label font \"$(axis_attr[:guidefontfamily]), $(axis_attr[:guidefontsize])\"") # Handle ticks # ticksyle - push!(axesconf, """set $(letter)tics font "$(axis_attr[:tickfontfamily]), $(axis_attr[:tickfontsize])" """) - push!(axesconf, """set $(letter)tics textcolor rgb "#$(hex(axis_attr[:tickfontcolor], :rrggbb))" """) - push!(axesconf, """set $(letter)tics $(axis_attr[:tick_direction])""") + push!(axesconf, "set $(letter)tics font \"$(axis_attr[:tickfontfamily]), $(axis_attr[:tickfontsize])\"") + push!(axesconf, "set $(letter)tics textcolor rgb \"#$(hex(axis_attr[:tickfontcolor], :rrggbb))\"") + push!(axesconf, "set $(letter)tics $(axis_attr[:tick_direction])") mirror = axis_attr[:mirror] ? "mirror" : "nomirror" - push!(axesconf, """set $(letter)tics $(mirror) """) + push!(axesconf, "set $(letter)tics $(mirror)") logscale = if axis_attr[:scale] == :identity "nologscale" elseif axis_attr[:scale] == :log10 "logscale" end - push!(axesconf, """set $logscale $(letter)""") + push!(axesconf, "set $logscale $(letter)") # tick locations if axis_attr[:ticks] != :native # axis limits from, to = axis_limits(sp, letter) - push!(axesconf, """set $(letter)range [$from:$to]""") + push!(axesconf, "set $(letter)range [$from:$to]") ticks = get_ticks(sp, axis_attr) gaston_set_ticks!(axesconf, ticks, letter) @@ -274,14 +267,14 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack if ratio == :equal ratio = -1 end - push!(axesconf, """set size ratio $ratio""") + push!(axesconf, "set size ratio $ratio") end end gaston_set_legend!(axesconf, sp) # Set legend params if sp[:title] != nothing - push!(axesconf, """set title '$(sp[:title])' """) - push!(axesconf, """set title font '$(sp[:titlefontfamily]), $(sp[:titlefontsize])' """) + push!(axesconf, "set title '$(sp[:title])'") + push!(axesconf, "set title font '$(sp[:titlefontfamily]), $(sp[:titlefontsize])'") end return join(axesconf, "\n") @@ -290,7 +283,7 @@ end function gaston_set_ticks!(axesconf, ticks, letter) ticks == :auto && return if ticks ∈ (:none, nothing, false) - push!(axesconf, """unset $(letter)tics """) + push!(axesconf, "unset $(letter)tics") return end @@ -350,7 +343,7 @@ function gaston_set_legend!(axesconf, sp) push!(axesconf, "set key opaque") push!(axesconf, "set border back") - push!(axesconf, """set key font "$(sp[:legendfontfamily]), $(sp[:legendfontsize])" """) + push!(axesconf, "set key font \"$(sp[:legendfontfamily]), $(sp[:legendfontsize])\"") else push!(axesconf, "set key off") @@ -403,7 +396,7 @@ end function gaston_color(color, alpha=0.) col = single_color(color) # in case of gradients col = alphacolor(col, alpha == nothing ? 0. : alpha) # add a default alpha if non existent - return """rgb "#$(hex(col, :aarrggbb))" """ + return "rgb \"#$(hex(col, :aarrggbb))\"" end function gaston_linestyle(style) From cbc0417ceaeddf740e448a296205ada0c89497d0 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 29 Jul 2021 21:49:10 +0200 Subject: [PATCH 425/518] Gaston: disable legends in contour plots --- src/backends/gaston.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 56f71ca7..ca463ff4 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -177,6 +177,7 @@ function gaston_seriesconf!(sp, series::Series) st = series[:seriestype] clims = get_clims(sp, series) + label = "title \"$(series[:label])\"" if st ∈ (:scatter, :scatter3d) pt, ps, lc = gaston_mk_ms_mc(series) push!(curveconf, "with points pt $pt ps $ps lc $lc") @@ -198,10 +199,12 @@ function gaston_seriesconf!(sp, series::Series) elseif st == :steppost push!(curveconf, "with fsteps") # Not sure if not the other way elseif st ∈ (:contour, :contour3d) + label = "notitle" push!(curveconf, "with lines") if st == :contour gsp.axesconf *= "\nset view map\nunset surface" end + gsp.axesconf *= "\nunset key" levels = join(map(string, collect(contour_levels(series, clims))), ", ") gsp.axesconf *= "\nset contour base\nset cntrparam levels discrete $levels" elseif st ∈ (:surface, :heatmap) @@ -218,8 +221,7 @@ function gaston_seriesconf!(sp, series::Series) @warn "Gaston: $st is not implemented yet" end - # label - push!(curveconf, "title \"$(series[:label])\"") + push!(curveconf, label) return join(curveconf, " ") end From d3380f4ee8a1076da71d59ff0873fb2772dd1b7b Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 29 Jul 2021 22:16:37 +0200 Subject: [PATCH 426/518] Gaston: try to respect the layout ratio --- src/backends/gaston.jl | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index ca463ff4..e66adc72 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -36,8 +36,6 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) @error "Gaston: $n != $(length(plt.subplots))" end - # FIXME: find a way to support nested layouts - # e.g. figures spanning multiple rows/cols plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) @@ -81,6 +79,17 @@ end function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend}) scaling = plt.attr[:dpi] / Plots.DPI + # try to respect the layout ratio + _, sps = gaston_get_subplots(0, plt.subplots, plt.layout) + + nr, nc = size(sps); n = 0 + for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major + sp = plt.o.subplots[n += 1] + w = plt.layout.widths[r] + h = plt.layout.widths[c] + sp.axesconf = "set size $(w.value),$(h.value)\n" * sp.axesconf + end + # Scale all plot elements to match Plots.jl DPI standard saveopts = "fontscale $scaling lw $scaling dl $scaling ps $scaling" @@ -235,7 +244,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack for letter in (:x, :y, :z) axis_attr = sp.attr[Symbol(letter, :axis)] # label names - push!(axesconf, "set $(letter)label \"$(axis_attr[:guide])\" ") + push!(axesconf, "set $(letter)label \"$(axis_attr[:guide])\"") push!(axesconf, "set $(letter)label font \"$(axis_attr[:guidefontfamily]), $(axis_attr[:guidefontsize])\"") # Handle ticks From 2dec8c1192b8c33219023bca1f04d39be2e921bf Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 29 Jul 2021 22:18:31 +0200 Subject: [PATCH 427/518] Gaston: typo --- src/backends/gaston.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index e66adc72..a344c6c0 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -85,8 +85,8 @@ function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend} nr, nc = size(sps); n = 0 for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major sp = plt.o.subplots[n += 1] - w = plt.layout.widths[r] - h = plt.layout.widths[c] + w = plt.layout.widths[c] + h = plt.layout.heights[r] sp.axesconf = "set size $(w.value),$(h.value)\n" * sp.axesconf end From 95804039f4241b407b133a42eeee8624c8aeb9f6 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 29 Jul 2021 23:57:58 +0200 Subject: [PATCH 428/518] Gaston: Recursive update width/heights from layout --- src/backends/gaston.jl | 47 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index a344c6c0..2de7724a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -80,15 +80,8 @@ function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend} scaling = plt.attr[:dpi] / Plots.DPI # try to respect the layout ratio - _, sps = gaston_get_subplots(0, plt.subplots, plt.layout) - - nr, nc = size(sps); n = 0 - for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major - sp = plt.o.subplots[n += 1] - w = plt.layout.widths[c] - h = plt.layout.heights[r] - sp.axesconf = "set size $(w.value),$(h.value)\n" * sp.axesconf - end + w_h = gaston_widths_heights(plt.layout, 1, 1) + gaston_widths_heights!(0, plt, w_h) # Scale all plot elements to match Plots.jl DPI standard saveopts = "fontscale $scaling lw $scaling dl $scaling ps $scaling" @@ -155,6 +148,42 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend nothing end +function gaston_widths_heights(layout, pw, ph) + nr, nc = size(layout) + w_h = Array{Any}(undef, nr, nc) + for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major + l = layout[r, c] + # nested layout: multiply with parent width and height (pct) + w = layout.widths[c].value * pw + h = layout.heights[r].value * ph + if l isa GridLayout + w_h[r, c] = gaston_widths_heights(l, w, h) + else + w_h[r, c] = get(l.attr, :blank, false) ? (nothing, nothing) : (w, h) + end + end + return w_h +end + +function gaston_widths_heights!(n::Int, plt, widths_heights) + nr, nc = size(widths_heights) + for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major + w_h = widths_heights[r, c] + if w_h isa Tuple + w, h = w_h + if w === nothing || h === nothing + continue + else + gsp = plt.o.subplots[n += 1] + gsp.axesconf = "set size $w,$h\n" * gsp.axesconf + end + else + n = gaston_widths_heights!(n, plt, w_h) + end + end + return n +end + function gaston_add_series(plt::Plot{GastonBackend}, series::Series) # Gaston.Curve = Plots.Series sp = series[:subplot] From 01d5ff1580aced0a27669880b296c8d993a7f734 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 30 Jul 2021 00:20:38 +0200 Subject: [PATCH 429/518] Gaston: move update ratios to _update_plot_object --- src/backends/gaston.jl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 2de7724a..f2789a1a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -50,7 +50,11 @@ function _update_min_padding!(sp::Subplot{GastonBackend}) sp.minpad = (20mm, 5mm, 2mm, 10mm) end -_update_plot_object(plt::Plot{GastonBackend}) = nothing +function _update_plot_object(plt::Plot{GastonBackend}) + # respect the layout ratio + w_h = gaston_widths_heights(plt.layout, 1, 1) + gaston_widths_heights!(0, plt, w_h) +end for (mime, term) in ( "application/eps" => "epscairo", # NEED fixing TODO @@ -79,10 +83,6 @@ end function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend}) scaling = plt.attr[:dpi] / Plots.DPI - # try to respect the layout ratio - w_h = gaston_widths_heights(plt.layout, 1, 1) - gaston_widths_heights!(0, plt, w_h) - # Scale all plot elements to match Plots.jl DPI standard saveopts = "fontscale $scaling lw $scaling dl $scaling ps $scaling" From 74b70fc0393c59acf7b9fa4a87041c5f06eb4638 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 30 Jul 2021 13:09:59 +0200 Subject: [PATCH 430/518] Gaston: handle multiple colors --- src/backends/gaston.jl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index f2789a1a..59b24bf0 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -434,9 +434,13 @@ function gaston_marker(marker) end function gaston_color(color, alpha=0.) - col = single_color(color) # in case of gradients - col = alphacolor(col, alpha == nothing ? 0. : alpha) # add a default alpha if non existent - return "rgb \"#$(hex(col, :aarrggbb))\"" + if isvector(color) + return gaston_color.(color) + else + col = single_color(color) # in case of gradients + col = alphacolor(col, alpha == nothing ? 0. : alpha) # add a default alpha if non existent + return "rgb \"#$(hex(col, :aarrggbb))\"" + end end function gaston_linestyle(style) From 330d3231f6bf83343ac584f0fa378b53f013dc40 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 30 Jul 2021 13:11:39 +0200 Subject: [PATCH 431/518] Gaston: gaston_init_subplot should accept nothing --- src/backends/gaston.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 59b24bf0..0257afd2 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -134,7 +134,7 @@ function gaston_init_subplots(plt, sps) return sz end -function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}) +function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot{GastonBackend}}) if sp === nothing push!(plt.o.subplots, sp) else From 5dab21e9ba2a5eef96fb2a8d1afb247993e25916 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 30 Jul 2021 13:28:22 +0200 Subject: [PATCH 432/518] Gaston: multiplot, add position --- src/backends/gaston.jl | 55 ++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 0257afd2..9c00a8d8 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -52,8 +52,8 @@ end function _update_plot_object(plt::Plot{GastonBackend}) # respect the layout ratio - w_h = gaston_widths_heights(plt.layout, 1, 1) - gaston_widths_heights!(0, plt, w_h) + xy_wh = gaston_multiplot_size_pos(plt.layout, (0, 0, 1, 1)) + gaston_multiplot_size_pos!(0, plt, xy_wh) end for (mime, term) in ( @@ -148,37 +148,44 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot nothing end -function gaston_widths_heights(layout, pw, ph) +function gaston_multiplot_size_pos(layout, parent_xy_wh) nr, nc = size(layout) - w_h = Array{Any}(undef, nr, nc) + xy_wh = Array{Any}(undef, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major l = layout[r, c] - # nested layout: multiply with parent width and height (pct) - w = layout.widths[c].value * pw - h = layout.heights[r].value * ph - if l isa GridLayout - w_h[r, c] = gaston_widths_heights(l, w, h) - else - w_h[r, c] = get(l.attr, :blank, false) ? (nothing, nothing) : (w, h) + if !isa(l, EmptyLayout) + # previous position (origin) + prev_r = r > 1 ? xy_wh[r - 1, c] : undef + prev_c = c > 1 ? xy_wh[r, c - 1] : undef + prev_r isa Array{Any} && (prev_r = prev_r[end, end]) + prev_c isa Array{Any} && (prev_c = prev_c[end, end]) + x = prev_c !== undef ? prev_c[1] + prev_c[3] : parent_xy_wh[1] + y = prev_r !== undef ? prev_r[2] + prev_r[4] : parent_xy_wh[2] + # width and height (pct) are multiplicative (parent) + w = layout.widths[c].value * parent_xy_wh[3] + h = layout.heights[r].value * parent_xy_wh[4] + if l isa GridLayout + xy_wh[r, c] = gaston_multiplot_size_pos(l, (x, y, w, h)) + else + xy_wh[r, c] = x, y, w, h + end end end - return w_h + return xy_wh end -function gaston_widths_heights!(n::Int, plt, widths_heights) - nr, nc = size(widths_heights) +function gaston_multiplot_size_pos!(n::Int, plt, origin_size) + nr, nc = size(origin_size) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major - w_h = widths_heights[r, c] - if w_h isa Tuple - w, h = w_h - if w === nothing || h === nothing - continue - else - gsp = plt.o.subplots[n += 1] - gsp.axesconf = "set size $w,$h\n" * gsp.axesconf - end + xy_wh = origin_size[r, c] + if xy_wh === undef + continue + elseif xy_wh isa Tuple + x, y, w, h = xy_wh + gsp = plt.o.subplots[n += 1] + gsp.axesconf = "set origin $x,$y\nset size $w,$h\n" * gsp.axesconf else - n = gaston_widths_heights!(n, plt, w_h) + n = gaston_multiplot_size_pos!(n, plt, xy_wh) end end return n From 3ec86e983a25ddc0e64be83f166ae590e8e1bb7d Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Fri, 30 Jul 2021 13:29:59 +0200 Subject: [PATCH 433/518] Gaston: swap pos and size --- src/backends/gaston.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 9c00a8d8..fcdb4ac1 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -52,8 +52,8 @@ end function _update_plot_object(plt::Plot{GastonBackend}) # respect the layout ratio - xy_wh = gaston_multiplot_size_pos(plt.layout, (0, 0, 1, 1)) - gaston_multiplot_size_pos!(0, plt, xy_wh) + xy_wh = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1)) + gaston_multiplot_pos_size!(0, plt, xy_wh) end for (mime, term) in ( @@ -148,7 +148,7 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot nothing end -function gaston_multiplot_size_pos(layout, parent_xy_wh) +function gaston_multiplot_pos_size(layout, parent_xy_wh) nr, nc = size(layout) xy_wh = Array{Any}(undef, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major @@ -165,7 +165,7 @@ function gaston_multiplot_size_pos(layout, parent_xy_wh) w = layout.widths[c].value * parent_xy_wh[3] h = layout.heights[r].value * parent_xy_wh[4] if l isa GridLayout - xy_wh[r, c] = gaston_multiplot_size_pos(l, (x, y, w, h)) + xy_wh[r, c] = gaston_multiplot_pos_size(l, (x, y, w, h)) else xy_wh[r, c] = x, y, w, h end @@ -174,7 +174,7 @@ function gaston_multiplot_size_pos(layout, parent_xy_wh) return xy_wh end -function gaston_multiplot_size_pos!(n::Int, plt, origin_size) +function gaston_multiplot_pos_size!(n::Int, plt, origin_size) nr, nc = size(origin_size) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major xy_wh = origin_size[r, c] @@ -185,7 +185,7 @@ function gaston_multiplot_size_pos!(n::Int, plt, origin_size) gsp = plt.o.subplots[n += 1] gsp.axesconf = "set origin $x,$y\nset size $w,$h\n" * gsp.axesconf else - n = gaston_multiplot_size_pos!(n, plt, xy_wh) + n = gaston_multiplot_pos_size!(n, plt, xy_wh) end end return n From f394698458fd6cb694edca0a7242966dab6ef323 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 13:05:23 +0200 Subject: [PATCH 434/518] Typo, cleanup --- src/arg_desc.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/arg_desc.jl b/src/arg_desc.jl index d6cbe564..b848bf70 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -16,14 +16,14 @@ const _arg_desc = KW( :markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).", :markercolor => "Color Type. Color of the interior of the marker or shape. `:match` will take the value from `:seriescolor`.", :markeralpha => "Number in [0,1]. The alpha/opacity override for the marker interior. `nothing` (the default) means it will take the alpha value of markercolor.", -:markersize => "Number or AbstractVector. Size (radius pixels) of the markers.", +:markersize => "Number or AbstractVector. Size (radius pixels) of the markers", :markerstrokestyle => "Symbol. Style of the marker stroke (border). Choose from $(_allStyles)", -:markerstrokewidth => "Number. Width of the marker stroke (border. in pixels)", +:markerstrokewidth => "Number. Width of the marker stroke (border) in pixels", :markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.", :markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.", :bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`", :smooth => "Bool. Add a regression line?", -:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`.", +:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`", :x => "Various. Input data. First Dimension", :y => "Various. Input data. Second Dimension", :z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.", @@ -42,7 +42,7 @@ const _arg_desc = KW( :arrow => "nothing (no arrows), Bool (if true, default arrows), Arrow object, or arg(s) that could be style or head length/widths. Defines arrowheads that should be displayed at the end of path line segments (just before a NaN and the last non-NaN point). Used in quiverplot, streamplot, or similar.", :normalize => "Bool or Symbol. Histogram normalization mode. Possible values are: false/:none (no normalization, default), true/:pdf (normalize to a discrete Probability Density Function, where the total area of the bins is 1), :probability (bin heights sum to 1) and :density (the area of each bin, rather than the height, is equal to the counts - useful for uneven bin sizes).", :weights => "AbstractVector. Used in histogram types for weighted counts.", -:show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default).", +:show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default)", :contours => "Bool. Add contours to the side-grids of 3D plots? Used in surface/wireframe.", :contour_labels => "Bool. Show labels at the contour lines?", :match_dimensions => "Bool. For heatmap types... should the first dimension of a matrix (rows) correspond to the first dimension of the plot (x-axis)? The default is false, which matches the behavior of Matplotlib, Plotly, and others. Note: when passing a function for z, the function should still map `(x,y) -> z`.", From 4420e2009ff91280eb45230a71202f9650ebfd64 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 31 Jul 2021 13:54:32 +0200 Subject: [PATCH 435/518] Gaston: rework markers (filled, empty) - cleanup --- src/backends.jl | 18 ++-- src/backends/gaston.jl | 192 +++++++++++++++++++---------------------- 2 files changed, 99 insertions(+), 111 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index 1b6989ed..592da1c7 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -658,16 +658,20 @@ const _gaston_style = [ const _gaston_marker = [ :none, - # :auto, - :circle, + :auto, + :pixel, + :cross, + :xcross, + :+, + :x, + :star5, :rect, - :diamond, + :circle, :utriangle, :dtriangle, + :diamond, :pentagon, - :x, - :+ -] #vcat(_allMarkers, Shape) +] const _gaston_scale = [ :identity, @@ -765,7 +769,7 @@ const HDF5PLOT_MAP_TELEM2STR = Dict{Type, String}() #Don't really like this global variable... Very hacky mutable struct HDF5Plot_PlotRef - ref::Union{Plot, Nothing} + ref::Union{Plot, Nothing} end const HDF5PLOT_PLOTREF = HDF5Plot_PlotRef(nothing) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index fcdb4ac1..a2946409 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -1,7 +1,4 @@ # https://github.com/mbaz/Gaston. -const G = Gaston -const GastonSubplot = G.Plot -const GASTON_MARKER_SCALING = 1.3 / 5.0 # -------------------------------------------- # These functions are called by Plots @@ -10,16 +7,15 @@ const GASTON_MARKER_SCALING = 1.3 / 5.0 # Create the window/figure for this backend. function _create_backend_figure(plt::Plot{GastonBackend}) xsize, ysize = plt.attr[:size] - G.set(termopts="size $xsize,$ysize") + Gaston.set(termopts="size $xsize,$ysize") - state_handle = G.nexthandle() # for now all the figures will be kept - plt.o = G.newfigure(state_handle) + state_handle = Gaston.nexthandle() # for now all the figures will be kept + plt.o = Gaston.newfigure(state_handle) end - function _before_layout_calcs(plt::Plot{GastonBackend}) # Initialize all the subplots first - plt.o.subplots = G.SubPlot[] + plt.o.subplots = Gaston.SubPlot[] n1 = n2 = 0 if length(plt.inset_subplots) > 0 @@ -31,15 +27,14 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) n2, sps = gaston_get_subplots(0, plt.subplots, plt.layout) end - n = n1 + n2 - if n != length(plt.subplots) + if (n = n1 + n2) != length(plt.subplots) @error "Gaston: $n != $(length(plt.subplots))" end plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) - for series in plt.series_list + for series ∈ plt.series_list gaston_add_series(plt, series) end nothing @@ -56,23 +51,19 @@ function _update_plot_object(plt::Plot{GastonBackend}) gaston_multiplot_pos_size!(0, plt, xy_wh) end -for (mime, term) in ( - "application/eps" => "epscairo", # NEED fixing TODO - "image/eps" => "epslatex", # NEED fixing TODO - "application/pdf" => "pdfcairo", # NEED fixing TODO - "application/postscript" => "postscript", # NEED fixing TODO - "image/svg+xml" => "svg", - "text/latex" => "tikz", # NEED fixing TODO - "application/x-tex" => "epslatex", # NEED fixing TODO - "text/plain" => "dumb", # NEED fixing TODO +for (mime, term) ∈ ( + "application/eps" => "epscairo", # NEED fixing TODO + "image/eps" => "epslatex", # NEED fixing TODO + "application/pdf" => "pdfcairo", # NEED fixing TODO + "application/postscript" => "postscript", # NEED fixing TODO + "image/svg+xml" => "svg", + "text/latex" => "tikz", # NEED fixing TODO + "application/x-tex" => "epslatex", # NEED fixing TODO + "text/plain" => "dumb", # NEED fixing TODO ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) - tmpfile = G.tempname() * "." * $term - G.save( - term=$term, - output=tmpfile, - handle=plt.o.handle, - ) + tmpfile = "$(Gaston.tempname()).$term" + Gaston.save(term=$term, output=tmpfile, handle=plt.o.handle) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) rm(tmpfile, force=true) @@ -86,13 +77,8 @@ function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend} # Scale all plot elements to match Plots.jl DPI standard saveopts = "fontscale $scaling lw $scaling dl $scaling ps $scaling" - tmpfile = G.tempname() - G.save( - term="pngcairo", - output=tmpfile, - handle=plt.o.handle, - saveopts=saveopts - ) + tmpfile = Gaston.tempname() + Gaston.save(term="pngcairo", output=tmpfile, handle=plt.o.handle, saveopts=saveopts) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) rm(tmpfile, force=true) @@ -138,7 +124,7 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot if sp === nothing push!(plt.o.subplots, sp) else - sp.o = GastonSubplot( + sp.o = Gaston.Plot( dims=RecipesPipeline.is3d(sp) ? 3 : 2, axesconf=gaston_parse_axes_args(plt, sp), # Gnuplot string curves=[] @@ -194,31 +180,48 @@ end function gaston_add_series(plt::Plot{GastonBackend}, series::Series) # Gaston.Curve = Plots.Series sp = series[:subplot] - g_sp = sp.o # Gaston subplot object + gsp = sp.o # Gaston subplot object - if series[:seriestype] ∈ (:heatmap, :contour) && g_sp.dims == 2 - g_sp.dims = 3 # FIXME: this is ugly, we need heatmap/contour to use splot, not plot + if gsp.dims == 2 && series[:seriestype] ∈ (:heatmap, :contour) + gsp.dims = 3 # FIXME: this is ugly, we need heatmap/contour to use splot, not plot end x = series[:x] y = series[:y] - z = g_sp.dims == 2 ? nothing : series[:z] + z = gsp.dims == 2 ? nothing : series[:z] if z isa Surface z = z.surf end seriesconf = gaston_seriesconf!(sp, series) # Gnuplot string - c = G.Curve(x, y, z, nothing, seriesconf) + c = Gaston.Curve(x, y, z, nothing, seriesconf) - isfirst = length(g_sp.curves) == 0 ? true : false - push!(g_sp.curves, c) - G.write_data(c, g_sp.dims, g_sp.datafile, append = isfirst ? false : true) + isfirst = length(gsp.curves) == 0 ? true : false + push!(gsp.curves, c) + Gaston.write_data(c, gsp.dims, gsp.datafile, append = isfirst ? false : true) nothing end function gaston_seriesconf!(sp, series::Series) - gsp = sp.o - curveconf = String[] + #= + gnuplot abbreviations (see gnuplot/src/set.c) + --------------------------------------------- + dl: dashlength + dt: dashtype + fc: fillcolor + fs: fillstyle + lc: linecolor + lp: linespoints + ls: linestyle + lt: linetype + lw: linewidth + pi: pointinterval + pn: pointnumber + ps: pointscale + pt: pointtype + tc: textcolor + =# + gsp = sp.o; curveconf = String[] st = series[:seriestype] clims = get_clims(sp, series) @@ -236,9 +239,8 @@ function gaston_seriesconf!(sp, series::Series) end elseif st == :shape fc = gaston_color(series[:fillcolor], series[:fillalpha]) - fs = "solid" lc, _ = gaston_lc_ls_lw(series) - push!(curveconf, "with filledcurves fc $fc fs $fs border lc $lc") + push!(curveconf, "with filledcurves fc $fc fs solid border lc $lc") elseif st == :steppre push!(curveconf, "with steps") elseif st == :steppost @@ -247,9 +249,9 @@ function gaston_seriesconf!(sp, series::Series) label = "notitle" push!(curveconf, "with lines") if st == :contour - gsp.axesconf *= "\nset view map\nunset surface" + gsp.axesconf *= "\nset view map\nunset surface" # 2D end - gsp.axesconf *= "\nunset key" + gsp.axesconf *= "\nunset key" # FIXME: too many legend (key) entries levels = join(map(string, collect(contour_levels(series, clims))), ", ") gsp.axesconf *= "\nset contour base\nset cntrparam levels discrete $levels" elseif st ∈ (:surface, :heatmap) @@ -277,7 +279,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack # TODO: configure grid, axis spines, thickness end - for letter in (:x, :y, :z) + for letter ∈ (:x, :y, :z) axis_attr = sp.attr[Symbol(letter, :axis)] # label names push!(axesconf, "set $(letter)label \"$(axis_attr[:guide])\"") @@ -301,8 +303,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack # tick locations if axis_attr[:ticks] != :native - # axis limits - from, to = axis_limits(sp, letter) + from, to = axis_limits(sp, letter) # axis limits push!(axesconf, "set $(letter)range [$from:$to]") ticks = get_ticks(sp, axis_attr) @@ -311,9 +312,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack ratio = get_aspect_ratio(sp) if ratio != :none - if ratio == :equal - ratio = -1 - end + ratio == :equal && (ratio = -1) push!(axesconf, "set size ratio $ratio") end end @@ -337,30 +336,24 @@ function gaston_set_ticks!(axesconf, ticks, letter) ttype = ticksType(ticks) if ttype == :ticks tick_locations = @view ticks[:] - gaston_tick_string = [] - for i in eachindex(tick_locations) + gaston_ticks = String[] + for i ∈ eachindex(tick_locations) lac = tick_locations[i] - push!(gaston_tick_string, "$loc") + push!(gaston_ticks, "$loc") end - push!( - axesconf, - "set $(letter)tics (" * join(gaston_tick_string, ", ") * ")" - ) + push!(axesconf, "set $(letter)tics (" * join(gaston_ticks, ", ") * ")") elseif ttype == :ticks_and_labels tick_locations = @view ticks[1][:] tick_labels = @view ticks[2][:] - gaston_tick_string = [] - for i in eachindex(tick_locations) + gaston_ticks = String[] + for i ∈ eachindex(tick_locations) loc = tick_locations[i] lab = gaston_enclose_tick_string(tick_labels[i]) - push!(gaston_tick_string, "'$lab' $loc") + push!(gaston_ticks, "'$lab' $loc") end - push!( - axesconf, - "set $(letter)tics (" * join(gaston_tick_string, ", ") * ")" - ) + push!(axesconf, "set $(letter)tics (" * join(gaston_ticks, ", ") * ")") else - error("Invalid input for $(letter)ticks: $ticks") + @error "Gaston: invalid input for $(letter)ticks: $ticks" end nothing end @@ -368,25 +361,16 @@ end function gaston_set_legend!(axesconf, sp) leg = sp[:legend] if sp[:legend] ∉ (:none, :inline) - if leg == :best - leg = :topright - end + leg == :best && (leg = :topright) - if occursin("outer", string(leg)) - push!(axesconf, "set key outside") - else - push!(axesconf, "set key inside") - end - positions = ["top", "bottom", "left", "right"] - for position in positions - if occursin(position, string(leg)) - push!(axesconf, "set key $position") - end + push!(axesconf, "set key " * (occursin("outer", string(leg)) ? "outside" : "inside")) + for position ∈ ("top", "bottom", "left", "right") + occursin(position, string(leg)) && push!(axesconf, "set key $position") end if sp[:legendtitle] != nothing push!(axesconf, "set key title '$(sp[:legendtitle])'") end - push!(axesconf, "set key box linewidth 1") + push!(axesconf, "set key box lw 1") push!(axesconf, "set key opaque") push!(axesconf, "set border back") @@ -402,6 +386,8 @@ end # Helpers # -------------------------------------------- +gaston_alpha(alpha) = alpha === nothing ? 0 : alpha + gaston_lc_ls_lw(series::Series) = ( gaston_color(series[:linecolor], series[:linealpha]), gaston_linestyle(series[:linestyle]), @@ -409,8 +395,8 @@ gaston_lc_ls_lw(series::Series) = ( ) gaston_mk_ms_mc(series::Series) = ( - gaston_marker(series[:markershape]), - series[:markersize] * GASTON_MARKER_SCALING, + gaston_marker(series[:markershape], series[:markeralpha]), + series[:markersize] * 1.3 / 5., gaston_color(series[:markercolor], series[:markeralpha]), ) @@ -423,29 +409,31 @@ function gaston_palette(gradient) return '(' * join(palette, ", ") * ')' end -function gaston_marker(marker) +function gaston_marker(marker, alpha) + # NOTE: :rtriangle, :ltriangle, :hexagon, :heptagon, :octagon seems unsupported by gnuplot + filled = gaston_alpha(alpha) == 0 marker == :none && return -1 - marker == :circle && return 7 - marker == :rect && return 5 - marker == :diamond && return 28 - marker == :utriangle && return 9 - marker == :dtriangle && return 11 - marker == :+ && return 1 - marker == :x && return 2 - marker == :star5 && return 3 - marker == :pentagon && return 15 marker == :pixel && return 0 + marker ∈ (:+, :cross) && return 1 + marker ∈ (:x, :xcross) && return 2 + marker == :star5 && 3 + marker == :rect && return filled ? 5 : 4 + marker == :circle && return filled ? 7 : 6 + marker == :utriangle && return filled ? 9 : 8 + marker == :dtriangle && return filled ? 11 : 10 + marker == :diamond && return filled ? 13 : 12 + marker == :pentagon && return filled ? 15 : 14 - @warn "Unsupported marker $marker" + @warn "Gaston: unsupported marker $marker" return 1 end -function gaston_color(color, alpha=0.) +function gaston_color(color, alpha=0) if isvector(color) return gaston_color.(color) else col = single_color(color) # in case of gradients - col = alphacolor(col, alpha == nothing ? 0. : alpha) # add a default alpha if non existent + col = alphacolor(col, gaston_alpha(alpha)) # add a default alpha if non existent return "rgb \"#$(hex(col, :aarrggbb))\"" end end @@ -459,11 +447,7 @@ function gaston_linestyle(style) end function gaston_enclose_tick_string(tick_string) - if findfirst("^", tick_string) == nothing - return tick_string - end - + findfirst("^", tick_string) == nothing && return tick_string base, power = split(tick_string, "^") - power = string("{", power, "}") - return string(base, "^", power) + return "$base^{$power}" end From 03fbc25b3311c1e30629e513b0e2605c2ae379d1 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 31 Jul 2021 14:35:30 +0200 Subject: [PATCH 436/518] Gaston: add minor ticks --- src/backends/gaston.jl | 85 +++++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index a2946409..05490516 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -124,9 +124,18 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot if sp === nothing push!(plt.o.subplots, sp) else + dims = RecipesPipeline.is3d(sp) ? 3 : 2 + if dims == 2 + for series ∈ plt.series_list + if series[:seriestype] ∈ (:heatmap, :contour) + dims = 3 # we need heatmap/contour to use splot, not plot + break + end + end + end sp.o = Gaston.Plot( - dims=RecipesPipeline.is3d(sp) ? 3 : 2, - axesconf=gaston_parse_axes_args(plt, sp), # Gnuplot string + dims=dims, + axesconf=gaston_parse_axes_args(plt, sp, dims), # Gnuplot string curves=[] ) push!(plt.o.subplots, sp.o) @@ -182,10 +191,6 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) sp = series[:subplot] gsp = sp.o # Gaston subplot object - if gsp.dims == 2 && series[:seriestype] ∈ (:heatmap, :contour) - gsp.dims = 3 # FIXME: this is ugly, we need heatmap/contour to use splot, not plot - end - x = series[:x] y = series[:y] z = gsp.dims == 2 ? nothing : series[:z] @@ -272,7 +277,7 @@ function gaston_seriesconf!(sp, series::Series) return join(curveconf, " ") end -function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}) +function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}, dims::Int) axesconf = String[] # Standard 2d axis if !ispolar(sp) && !RecipesPipeline.is3d(sp) @@ -280,34 +285,42 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack end for letter ∈ (:x, :y, :z) - axis_attr = sp.attr[Symbol(letter, :axis)] + if letter == :z && dims == 2 + continue + end + axis = sp.attr[Symbol(letter, :axis)] # label names - push!(axesconf, "set $(letter)label \"$(axis_attr[:guide])\"") - push!(axesconf, "set $(letter)label font \"$(axis_attr[:guidefontfamily]), $(axis_attr[:guidefontsize])\"") + push!(axesconf, "set $(letter)label \"$(axis[:guide])\"") + push!(axesconf, "set $(letter)label font \"$(axis[:guidefontfamily]), $(axis[:guidefontsize])\"") # Handle ticks # ticksyle - push!(axesconf, "set $(letter)tics font \"$(axis_attr[:tickfontfamily]), $(axis_attr[:tickfontsize])\"") - push!(axesconf, "set $(letter)tics textcolor rgb \"#$(hex(axis_attr[:tickfontcolor], :rrggbb))\"") - push!(axesconf, "set $(letter)tics $(axis_attr[:tick_direction])") + push!(axesconf, "set $(letter)tics font \"$(axis[:tickfontfamily]), $(axis[:tickfontsize])\"") + push!(axesconf, "set $(letter)tics textcolor rgb \"#$(hex(axis[:tickfontcolor], :rrggbb))\"") + push!(axesconf, "set $(letter)tics $(axis[:tick_direction])") - mirror = axis_attr[:mirror] ? "mirror" : "nomirror" + mirror = axis[:mirror] ? "mirror" : "nomirror" push!(axesconf, "set $(letter)tics $(mirror)") - logscale = if axis_attr[:scale] == :identity + logscale = if axis[:scale] == :identity "nologscale" - elseif axis_attr[:scale] == :log10 + elseif axis[:scale] == :log10 "logscale" end push!(axesconf, "set $logscale $(letter)") - # tick locations - if axis_attr[:ticks] != :native + # major tick locations + if axis[:ticks] != :native from, to = axis_limits(sp, letter) # axis limits push!(axesconf, "set $(letter)range [$from:$to]") - ticks = get_ticks(sp, axis_attr) - gaston_set_ticks!(axesconf, ticks, letter) + ticks = get_ticks(sp, axis) + gaston_set_ticks!(axesconf, ticks, letter, "", "") + + if axis[:minorticks] != :native + minor_ticks = get_minor_ticks(sp, axis, ticks) + gaston_set_ticks!(axesconf, minor_ticks, letter, "m", "add") + end end ratio = get_aspect_ratio(sp) @@ -326,35 +339,37 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack return join(axesconf, "\n") end -function gaston_set_ticks!(axesconf, ticks, letter) +function gaston_set_ticks!(axesconf, ticks, letter, maj_min, add) ticks == :auto && return if ticks ∈ (:none, nothing, false) - push!(axesconf, "unset $(letter)tics") + push!(axesconf, "unset $(maj_min)$(letter)tics") return end ttype = ticksType(ticks) + gaston_ticks = String[] if ttype == :ticks - tick_locations = @view ticks[:] - gaston_ticks = String[] - for i ∈ eachindex(tick_locations) - lac = tick_locations[i] - push!(gaston_ticks, "$loc") + tick_locs = @view ticks[:] + for i ∈ eachindex(tick_locs) + tick = if maj_min == "m" + "'' $(tick_locs[i]) 1" # see gnuplot manual 'Mxtics' + else + "$(tick_locs[i])" + end + push!(gaston_ticks, tick) end - push!(axesconf, "set $(letter)tics (" * join(gaston_ticks, ", ") * ")") elseif ttype == :ticks_and_labels - tick_locations = @view ticks[1][:] + tick_locs = @view ticks[1][:] tick_labels = @view ticks[2][:] - gaston_ticks = String[] - for i ∈ eachindex(tick_locations) - loc = tick_locations[i] + for i ∈ eachindex(tick_locs) lab = gaston_enclose_tick_string(tick_labels[i]) - push!(gaston_ticks, "'$lab' $loc") + push!(gaston_ticks, "'$lab' $(tick_locs[i])") end - push!(axesconf, "set $(letter)tics (" * join(gaston_ticks, ", ") * ")") else - @error "Gaston: invalid input for $(letter)ticks: $ticks" + gaston_ticks = nothing + @error "Gaston: invalid input for $(maj_min)$(letter)ticks: $ticks" end + gaston_ticks !== nothing && push!(axesconf, "set $(letter)tics $add (" * join(gaston_ticks, ", ") * ")") nothing end From 2c7288286599489dcbe8edbc71b25c3e74a930d8 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 14:40:51 +0200 Subject: [PATCH 437/518] gr_draw_minorgrid should read minorgrid not grid --- 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 fe28fc4f..97322e41 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1412,7 +1412,7 @@ function gr_draw_grid(sp, axis, segments, func = gr_polyline) end function gr_draw_minorgrid(sp, axis, segments, func = gr_polyline) - if axis[:grid] + if axis[:minorgrid] gr_set_line( axis[:minorgridlinewidth], axis[:minorgridstyle], From 1889f5b7f98ede419e499093120a6e5288ce32ba Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 14:44:34 +0200 Subject: [PATCH 438/518] Gaston: add support for major/minor grids --- src/backends/gaston.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 05490516..057e5cf6 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -322,6 +322,11 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack gaston_set_ticks!(axesconf, minor_ticks, letter, "m", "add") end end + + if axis[:grid] + push!(axesconf, "set grid $(letter)tics") + axis[:minorgrid] && push!(axesconf, "set grid m$(letter)tics") + end ratio = get_aspect_ratio(sp) if ratio != :none From e9e95968a99bdf9a80532425adc76ef704d17067 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 14:50:16 +0200 Subject: [PATCH 439/518] GR: code style --- 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 fe28fc4f..958ae9cf 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -990,7 +990,7 @@ end ## Legend function gr_add_legend(sp, leg, viewport_plotarea) - if !(sp[:legend] in(:none, :inline)) + if sp[:legend] ∉ (:none, :inline) GR.savestate() GR.selntran(0) GR.setscale(0) From 57b48da670cb7ed9c59c6a1881582a556f5b849b Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 15:02:40 +0200 Subject: [PATCH 440/518] Gaston: conditional label in legend --- src/backends/gaston.jl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 057e5cf6..8f00019a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -230,7 +230,11 @@ function gaston_seriesconf!(sp, series::Series) st = series[:seriestype] clims = get_clims(sp, series) - label = "title \"$(series[:label])\"" + label = if should_add_to_legend(series) + "title \"$(series[:label])\"" + else + "notitle" + end if st ∈ (:scatter, :scatter3d) pt, ps, lc = gaston_mk_ms_mc(series) push!(curveconf, "with points pt $pt ps $ps lc $lc") @@ -251,7 +255,6 @@ function gaston_seriesconf!(sp, series::Series) elseif st == :steppost push!(curveconf, "with fsteps") # Not sure if not the other way elseif st ∈ (:contour, :contour3d) - label = "notitle" push!(curveconf, "with lines") if st == :contour gsp.axesconf *= "\nset view map\nunset surface" # 2D From 1e3cb4b4eaa7e0e55c7b739356d63b8cd15c625d Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 31 Jul 2021 13:07:29 +0000 Subject: [PATCH 441/518] Update precompile_*.jl file [skip ci] --- .../precompile/precompile_Plots.jl | 49 ++----------------- 1 file changed, 4 insertions(+), 45 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index f6353073..328255f4 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,35 +68,20 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) - Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -124,25 +109,17 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -187,8 +164,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -209,10 +184,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) - Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -225,8 +198,8 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:xerror}},Any,Any,Any}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:yerror}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Vector{ComplexF64}}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),Dict{Symbol, Any},Type{Val{:bar}},Plot{GRBackend}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) @@ -244,14 +217,12 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) - Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -265,7 +236,6 @@ function _precompile_() Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) @@ -293,13 +263,12 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Int64},Vector{Float64},Nothing,Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) - Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -312,12 +281,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) - Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) - Base.precompile(Tuple{typeof(ignorenan_extrema),Matrix{Float64}}) - Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(is_marker_supported),PlotlyBackend,Vector{Symbol}}) - Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -337,7 +301,6 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -349,12 +312,8 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Float64, Int64, Int64},Tuple{Float64, Float64, Int64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) - Base.precompile(Tuple{typeof(scalefontsizes),Float64}) - Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(setindex!),GridLayout,GridLayout,Int64,Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) From 4078424f3cf3474d05dc13ed65c613b3b7c6f7eb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 18:14:40 +0200 Subject: [PATCH 442/518] Gaston: add support for annotations --- src/backends/gaston.jl | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 8f00019a..c6b48e3f 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -31,12 +31,22 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) @error "Gaston: $n != $(length(plt.subplots))" end - plt.o.layout = gaston_init_subplots(plt, sps) + mapping, plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) for series ∈ plt.series_list gaston_add_series(plt, series) end + + for (sp, gsp) ∈ mapping + for ann in sp[:annotations] + x, y, val = locate_annotation(sp, ann...); ft = val.font + gsp.axesconf *= ( + "\nset label \"$(val.str)\" at $x,$y $(ft.halign) rotate by $(ft.rotation) " * + "font \"$(ft.family),$(ft.pointsize)\" front textcolor $(gaston_color(ft.color))" + ) + end + end nothing end @@ -108,16 +118,17 @@ end function gaston_init_subplots(plt, sps) sz = nr, nc = size(sps) + mapping = Dict{Subplot{GastonBackend}, Gaston.SubPlot}() for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major sp = sps[r, c] if sp isa Subplot || sp === nothing - gaston_init_subplot(plt, sp) + mapping[sp] = gaston_init_subplot(plt, sp) else gaston_init_subplots(plt, sp) sz = max.(sz, size(sp)) end end - return sz + return mapping, sz end function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot{GastonBackend}}) From 77a9fe3b47907d13f314da359d309885d5e842e0 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 18:50:35 +0200 Subject: [PATCH 443/518] Gaston: add support for background color --- src/backends/gaston.jl | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index c6b48e3f..0affbc3f 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -62,18 +62,19 @@ function _update_plot_object(plt::Plot{GastonBackend}) end for (mime, term) ∈ ( - "application/eps" => "epscairo", # NEED fixing TODO - "image/eps" => "epslatex", # NEED fixing TODO - "application/pdf" => "pdfcairo", # NEED fixing TODO - "application/postscript" => "postscript", # NEED fixing TODO + "application/eps" => "epscairo", + "image/eps" => "epslatex", + "application/pdf" => "pdfcairo", + "application/postscript" => "postscript", + "image/png" => "pngcairo", "image/svg+xml" => "svg", - "text/latex" => "tikz", # NEED fixing TODO - "application/x-tex" => "epslatex", # NEED fixing TODO - "text/plain" => "dumb", # NEED fixing TODO + "text/latex" => "tikz", + "application/x-tex" => "epslatex", + "text/plain" => "dumb", ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) tmpfile = "$(Gaston.tempname()).$term" - Gaston.save(term=$term, output=tmpfile, handle=plt.o.handle) + Gaston.save(term=$term, output=tmpfile, handle=plt.o.handle, saveopts=gaston_saveopts(plt)) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) rm(tmpfile, force=true) @@ -81,26 +82,21 @@ for (mime, term) ∈ ( end end -function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{GastonBackend}) - scaling = plt.attr[:dpi] / Plots.DPI - - # Scale all plot elements to match Plots.jl DPI standard - saveopts = "fontscale $scaling lw $scaling dl $scaling ps $scaling" - - tmpfile = Gaston.tempname() - Gaston.save(term="pngcairo", output=tmpfile, handle=plt.o.handle, saveopts=saveopts) - while !isfile(tmpfile) end # avoid race condition with read in next line - write(io, read(tmpfile)) - rm(tmpfile, force=true) - nothing -end - _display(plt::Plot{GastonBackend}) = display(plt.o) # -------------------------------------------- # These functions are gaston specific # -------------------------------------------- +function gaston_saveopts(plt::Plot{GastonBackend}) + xsize, ysize = plt.attr[:size] + saveopts = "size $xsize,$ysize background $(gaston_color(plt.attr[:background_color]))" + + # Scale all plot elements to match Plots.jl DPI standard + scaling = plt.attr[:dpi] / Plots.DPI + saveopts *= "fontscale $scaling lw $scaling dl $scaling ps $scaling" +end + function gaston_get_subplots(n, plt_subplots, layout) nr, nc = size(layout) sps = Array{Any}(undef, nr, nc) @@ -310,7 +306,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack # Handle ticks # ticksyle push!(axesconf, "set $(letter)tics font \"$(axis[:tickfontfamily]), $(axis[:tickfontsize])\"") - push!(axesconf, "set $(letter)tics textcolor rgb \"#$(hex(axis[:tickfontcolor], :rrggbb))\"") + push!(axesconf, "set $(letter)tics textcolor $(gaston_color(axis[:tickfontcolor]))") push!(axesconf, "set $(letter)tics $(axis[:tick_direction])") mirror = axis[:mirror] ? "mirror" : "nomirror" From e9b3208d41cba522625f111193252fd727933604 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 18:59:49 +0200 Subject: [PATCH 444/518] Gaston: typo on eval _show --- src/backends/gaston.jl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 0affbc3f..1bd138ff 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -66,15 +66,15 @@ for (mime, term) ∈ ( "image/eps" => "epslatex", "application/pdf" => "pdfcairo", "application/postscript" => "postscript", - "image/png" => "pngcairo", + "image/png" => "png", "image/svg+xml" => "svg", "text/latex" => "tikz", "application/x-tex" => "epslatex", "text/plain" => "dumb", ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) - tmpfile = "$(Gaston.tempname()).$term" - Gaston.save(term=$term, output=tmpfile, handle=plt.o.handle, saveopts=gaston_saveopts(plt)) + term = String($term); tmpfile = "$(Gaston.tempname()).$term" + Gaston.save(term=term, output=tmpfile, handle=plt.o.handle, saveopts=gaston_saveopts(plt)) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) rm(tmpfile, force=true) @@ -95,6 +95,8 @@ function gaston_saveopts(plt::Plot{GastonBackend}) # Scale all plot elements to match Plots.jl DPI standard scaling = plt.attr[:dpi] / Plots.DPI saveopts *= "fontscale $scaling lw $scaling dl $scaling ps $scaling" + + return saveopts end function gaston_get_subplots(n, plt_subplots, layout) From 982c79baa7fd2a20f11e08a19120882b43de16b3 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 19:02:29 +0200 Subject: [PATCH 445/518] Gaston: drop setting termopts in _create_backend_figure --- src/backends/gaston.jl | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 1bd138ff..8f09003e 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -6,9 +6,6 @@ # Create the window/figure for this backend. function _create_backend_figure(plt::Plot{GastonBackend}) - xsize, ysize = plt.attr[:size] - Gaston.set(termopts="size $xsize,$ysize") - state_handle = Gaston.nexthandle() # for now all the figures will be kept plt.o = Gaston.newfigure(state_handle) end From 34bf55c03387cbfa0253eb065d6911c074102908 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 19:09:26 +0200 Subject: [PATCH 446/518] Gaston: blank plot fixes --- src/backends/gaston.jl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 8f09003e..03913884 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -36,6 +36,7 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) end for (sp, gsp) ∈ mapping + (sp === nothing || gsp === nothing) && continue for ann in sp[:annotations] x, y, val = locate_annotation(sp, ann...); ft = val.font gsp.axesconf *= ( @@ -113,7 +114,7 @@ end function gaston_init_subplots(plt, sps) sz = nr, nc = size(sps) - mapping = Dict{Subplot{GastonBackend}, Gaston.SubPlot}() + mapping = Dict{Union{Nothing,Subplot{GastonBackend}}, Gaston.SubPlot}() for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major sp = sps[r, c] if sp isa Subplot || sp === nothing @@ -294,9 +295,7 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack end for letter ∈ (:x, :y, :z) - if letter == :z && dims == 2 - continue - end + (letter == :z && dims == 2) && continue axis = sp.attr[Symbol(letter, :axis)] # label names push!(axesconf, "set $(letter)label \"$(axis[:guide])\"") From 4ed13644c4cfefef5a6ea725fd292402cb23ead1 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 19:21:55 +0200 Subject: [PATCH 447/518] Gaston: minor fixes --- src/backends/gaston.jl | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 03913884..cd9f2856 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -237,11 +237,6 @@ function gaston_seriesconf!(sp, series::Series) st = series[:seriestype] clims = get_clims(sp, series) - label = if should_add_to_legend(series) - "title \"$(series[:label])\"" - else - "notitle" - end if st ∈ (:scatter, :scatter3d) pt, ps, lc = gaston_mk_ms_mc(series) push!(curveconf, "with points pt $pt ps $ps lc $lc") @@ -263,19 +258,15 @@ function gaston_seriesconf!(sp, series::Series) push!(curveconf, "with fsteps") # Not sure if not the other way elseif st ∈ (:contour, :contour3d) push!(curveconf, "with lines") - if st == :contour - gsp.axesconf *= "\nset view map\nunset surface" # 2D - end + st == :contour && (gsp.axesconf *= "\nset view map\nunset surface") # 2D gsp.axesconf *= "\nunset key" # FIXME: too many legend (key) entries levels = join(map(string, collect(contour_levels(series, clims))), ", ") gsp.axesconf *= "\nset contour base\nset cntrparam levels discrete $levels" elseif st ∈ (:surface, :heatmap) + push!(curveconf, "with pm3d") palette = gaston_palette(series[:seriescolor]) gsp.axesconf *= "\nset palette model RGB defined $palette" - if st == :heatmap - gsp.axesconf *= "\nset view map" - end - push!(curveconf, "with pm3d") + st == :heatmap && (gsp.axesconf *= "\nset view map") elseif st == :wireframe lc, dt, lw = gaston_lc_ls_lw(series) push!(curveconf, "with lines lc $lc dt $dt lw $lw") @@ -283,7 +274,7 @@ function gaston_seriesconf!(sp, series::Series) @warn "Gaston: $st is not implemented yet" end - push!(curveconf, label) + push!(curveconf, should_add_to_legend(series) ? "title \"$(series[:label])\"" : "notitle") return join(curveconf, " ") end @@ -456,11 +447,11 @@ function gaston_marker(marker, alpha) return 1 end -function gaston_color(color, alpha=0) - if isvector(color) - return gaston_color.(color) +function gaston_color(col, alpha=0) + if isvector(col) + return gaston_color.(col) else - col = single_color(color) # in case of gradients + col = single_color(col) # in case of gradients col = alphacolor(col, gaston_alpha(alpha)) # add a default alpha if non existent return "rgb \"#$(hex(col, :aarrggbb))\"" end From dc3d302353172cf166a661aee9009cdc8a2cdda8 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 19:44:57 +0200 Subject: [PATCH 448/518] Gaston: typo --- src/backends/gaston.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index cd9f2856..50d25e47 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -435,7 +435,7 @@ function gaston_marker(marker, alpha) marker == :pixel && return 0 marker ∈ (:+, :cross) && return 1 marker ∈ (:x, :xcross) && return 2 - marker == :star5 && 3 + marker == :star5 && return 3 marker == :rect && return filled ? 5 : 4 marker == :circle && return filled ? 7 : 6 marker == :utriangle && return filled ? 9 : 8 From aa6b636793f9b533c5074f75db1ce91f8113ede6 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 20:27:26 +0200 Subject: [PATCH 449/518] Gaston: add support for :hline, :vline markers --- src/backends/gaston.jl | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 50d25e47..1b65bef9 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -214,7 +214,24 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) nothing end -function gaston_seriesconf!(sp, series::Series) +function gaston_hvline!(sp, series, curveconf, pt, dt, lw, lc, command) + if pt == :hline + lo, hi = axis_limits(sp, :x) + for y ∈ series[:y] + sp.o.axesconf *= "\nset arrow from graph $lo,$y to $hi,$y nohead lc $lc lw $lw dt $dt" + end + elseif pt == :vline + lo, hi = axis_limits(sp, :y) + for x ∈ series[:x] + sp.o.axesconf *= "\nset arrow from $x,$lo to $x,$hi nohead lc $lc lw $lw dt $dt" + end + else + push!(curveconf, command) + end + nothing +end + +function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series) #= gnuplot abbreviations (see gnuplot/src/set.c) --------------------------------------------- @@ -238,15 +255,16 @@ function gaston_seriesconf!(sp, series::Series) clims = get_clims(sp, series) if st ∈ (:scatter, :scatter3d) - pt, ps, lc = gaston_mk_ms_mc(series) - push!(curveconf, "with points pt $pt ps $ps lc $lc") + lc, dt, lw = gaston_lc_ls_lw(series) + pt, ps, mc = gaston_mk_ms_mc(series) + gaston_hvline!(sp, series, curveconf, pt, dt, lw, mc, "with points pt $pt ps $ps lc $mc") elseif st ∈ (:path, :straightline, :path3d) lc, dt, lw = gaston_lc_ls_lw(series) if series[:markershape] == :none # simplepath push!(curveconf, "with lines lc $lc dt $dt lw $lw") else - pt, ps = gaston_mk_ms_mc(series) - push!(curveconf, "with lp lc $lc dt $dt lw $lw pt $pt ps $ps") + pt, ps, mc = gaston_mk_ms_mc(series) + gaston_hvline!(sp, series, curveconf, x, y, pt, dt, lw, mc, "with lp lc $mc dt $dt lw $lw pt $pt ps $ps") end elseif st == :shape fc = gaston_color(series[:fillcolor], series[:fillalpha]) From 88b86be17a5e1b0aaf99192a736c0cbf25eedeb3 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 20:28:37 +0200 Subject: [PATCH 450/518] Gaston: :hline and :vline are now valid markers --- src/backends.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backends.jl b/src/backends.jl index 592da1c7..06a71d1f 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -671,6 +671,8 @@ const _gaston_marker = [ :dtriangle, :diamond, :pentagon, + :hline, + :vline, ] const _gaston_scale = [ From 2938950bdace791727eb6df4709593db80f3c1a3 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 20:30:05 +0200 Subject: [PATCH 451/518] Gaston: missing markers --- src/backends/gaston.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 1b65bef9..97a4f8f6 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -460,6 +460,7 @@ function gaston_marker(marker, alpha) marker == :dtriangle && return filled ? 11 : 10 marker == :diamond && return filled ? 13 : 12 marker == :pentagon && return filled ? 15 : 14 + marker ∈ (:vline, :hline) && return marker @warn "Gaston: unsupported marker $marker" return 1 From 5bc96cfe6837f0c4059045c888980a117145e758 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 20:31:58 +0200 Subject: [PATCH 452/518] GR: remove obsolete method --- src/backends/gr.jl | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index e80e8e07..2a7e23c1 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -400,14 +400,6 @@ function gr_set_font(f::Font, s; halign = f.halign, valign = f.valign, GR.settextalign(gr_halign(halign), gr_valign(valign)) end -function gr_nans_to_infs!(z) - for (i,zi) in enumerate(z) - if isnan(zi) - z[i] = Inf - end - end -end - function gr_w3tondc(x, y, z) xw, yw, zw = GR.wc3towc(x, y, z) x, y = GR.wctondc(xw, yw) From 7863ab9b3bf563099e12d0f298cf00936fa5e264 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sat, 31 Jul 2021 20:46:03 +0200 Subject: [PATCH 453/518] Update gaston.jl --- src/backends/gaston.jl | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 97a4f8f6..43c108e8 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -215,15 +215,18 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) end function gaston_hvline!(sp, series, curveconf, pt, dt, lw, lc, command) - if pt == :hline - lo, hi = axis_limits(sp, :x) - for y ∈ series[:y] - sp.o.axesconf *= "\nset arrow from graph $lo,$y to $hi,$y nohead lc $lc lw $lw dt $dt" - end - elseif pt == :vline - lo, hi = axis_limits(sp, :y) - for x ∈ series[:x] - sp.o.axesconf *= "\nset arrow from $x,$lo to $x,$hi nohead lc $lc lw $lw dt $dt" + if pt ∈ (:hline, :vline) + xs, ys = straightline_data(series) + if pt == :hline + lo, hi = axis_limits(sp, :x) + for y ∈ ys + sp.o.axesconf *= "\nset arrow from $lo,$y to $hi,$y nohead lc $lc lw $lw dt $dt" + end + elseif pt == :vline + lo, hi = axis_limits(sp, :y) + for x ∈ xs + sp.o.axesconf *= "\nset arrow from $x,$lo to $x,$hi nohead lc $lc lw $lw dt $dt" + end end else push!(curveconf, command) From bf43b9ececb2afff8395ba0ec72cc165dddc298d Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 31 Jul 2021 19:31:14 +0000 Subject: [PATCH 454/518] Update precompile_*.jl file [skip ci] --- .../precompile/precompile_Plots.jl | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 328255f4..5093b68b 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -74,13 +74,15 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) @@ -184,6 +186,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(scatter!)),Any,typeof(scatter!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip, :disp), Tuple{Vector{Int64}, Bool}},typeof(test_examples),Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(test_examples)),NamedTuple{(:skip,), Tuple{Vector{Int64}}},typeof(test_examples),Symbol}) + Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) @@ -198,13 +201,13 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:sticks}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:vline}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:xerror}},Any,Any,Any}) - Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:yerror}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Vector{ComplexF64}}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.add_series!),Plot{PlotlyBackend},DefaultsDict}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.process_sliced_series_attributes!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -219,11 +222,13 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) + Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_replace_markershape),Vector{Symbol}}) + Base.precompile(Tuple{typeof(_slice_series_args!),Dict{Symbol, Any},Plot{GRBackend},Subplot{GRBackend},Int64}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) + Base.precompile(Tuple{typeof(_update_plot_args),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) @@ -241,7 +246,6 @@ function _precompile_() Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -259,11 +263,13 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Vector{Float64},Vector{Float64},Int64,Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_segments_3d),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_shapes),Series,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Matrix{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) @@ -281,6 +287,7 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),UnitRange{Int64},Symbol}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) + Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) @@ -302,7 +309,6 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) - Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Int64, Symbol, Symbol}}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Symbol, Int64, String}}) @@ -313,10 +319,10 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) - Base.precompile(Tuple{typeof(setindex!),GridLayout,GridLayout,Int64,Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) From 2fcd90716571d28da0a0bb6b9ffb224295548a37 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sat, 31 Jul 2021 23:09:23 +0200 Subject: [PATCH 455/518] Gaston: add support for img - rework fonts - fix undef --- src/backends.jl | 5 +- src/backends/gaston.jl | 249 ++++++++++++++++++++++------------------- src/examples.jl | 7 +- 3 files changed, 141 insertions(+), 120 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index 06a71d1f..fab0df86 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -590,7 +590,7 @@ function _initialize_backend(::GastonBackend) end const _gaston_attr = merge_with_base_supported([ - # :annotations, + :annotations, # :background_color_legend, # :background_color_inside, # :background_color_outside, @@ -620,7 +620,7 @@ const _gaston_attr = merge_with_base_supported([ # :overwrite_figure, # :polar, # :normalize, :weights, :contours, - # :aspect_ratio, + :aspect_ratio, :tick_direction, # :framestyle, # :camera, @@ -645,6 +645,7 @@ const _gaston_seriestype = [ :heatmap, :surface, :mesh3d, + :image, ] const _gaston_style = [ diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 43c108e8..58238f7a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -28,21 +28,18 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) @error "Gaston: $n != $(length(plt.subplots))" end - mapping, plt.o.layout = gaston_init_subplots(plt, sps) + plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) for series ∈ plt.series_list gaston_add_series(plt, series) end - for (sp, gsp) ∈ mapping - (sp === nothing || gsp === nothing) && continue + for sp ∈ plt.subplots + sp === nothing && continue for ann in sp[:annotations] - x, y, val = locate_annotation(sp, ann...); ft = val.font - gsp.axesconf *= ( - "\nset label \"$(val.str)\" at $x,$y $(ft.halign) rotate by $(ft.rotation) " * - "font \"$(ft.family),$(ft.pointsize)\" front textcolor $(gaston_color(ft.color))" - ) + x, y, val = locate_annotation(sp, ann...) + sp.o.axesconf *= "\nset label '$(val.str)' at $x,$y $(gaston_font(val.font))" end end nothing @@ -99,7 +96,7 @@ end function gaston_get_subplots(n, plt_subplots, layout) nr, nc = size(layout) - sps = Array{Any}(undef, nr, nc) + sps = Array{Any}(nothing, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major l = layout[r, c] if l isa GridLayout @@ -114,35 +111,35 @@ end function gaston_init_subplots(plt, sps) sz = nr, nc = size(sps) - mapping = Dict{Union{Nothing,Subplot{GastonBackend}}, Gaston.SubPlot}() for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major sp = sps[r, c] if sp isa Subplot || sp === nothing - mapping[sp] = gaston_init_subplot(plt, sp) + gaston_init_subplot(plt, sp) else gaston_init_subplots(plt, sp) sz = max.(sz, size(sp)) end end - return mapping, sz + return sz end function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot{GastonBackend}}) if sp === nothing push!(plt.o.subplots, sp) else - dims = RecipesPipeline.is3d(sp) ? 3 : 2 + dims = RecipesPipeline.is3d(sp) || sp.attr[:projection] == "3d" || needs_any_3d_axes(sp) ? 3 : 2 + any_label = false if dims == 2 for series ∈ plt.series_list if series[:seriestype] ∈ (:heatmap, :contour) dims = 3 # we need heatmap/contour to use splot, not plot - break end + any_label |= should_add_to_legend(series) end end sp.o = Gaston.Plot( dims=dims, - axesconf=gaston_parse_axes_args(plt, sp, dims), # Gnuplot string + axesconf=gaston_parse_axes_args(plt, sp, dims, any_label), # Gnuplot string curves=[] ) push!(plt.o.subplots, sp.o) @@ -152,17 +149,17 @@ end function gaston_multiplot_pos_size(layout, parent_xy_wh) nr, nc = size(layout) - xy_wh = Array{Any}(undef, nr, nc) + xy_wh = Array{Any}(nothing, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major l = layout[r, c] if !isa(l, EmptyLayout) # previous position (origin) - prev_r = r > 1 ? xy_wh[r - 1, c] : undef - prev_c = c > 1 ? xy_wh[r, c - 1] : undef + prev_r = r > 1 ? xy_wh[r - 1, c] : nothing + prev_c = c > 1 ? xy_wh[r, c - 1] : nothing prev_r isa Array{Any} && (prev_r = prev_r[end, end]) prev_c isa Array{Any} && (prev_c = prev_c[end, end]) - x = prev_c !== undef ? prev_c[1] + prev_c[3] : parent_xy_wh[1] - y = prev_r !== undef ? prev_r[2] + prev_r[4] : parent_xy_wh[2] + x = prev_c !== nothing ? prev_c[1] + prev_c[3] : parent_xy_wh[1] + y = prev_r !== nothing ? prev_r[2] + prev_r[4] : parent_xy_wh[2] # width and height (pct) are multiplicative (parent) w = layout.widths[c].value * parent_xy_wh[3] h = layout.heights[r].value * parent_xy_wh[4] @@ -180,12 +177,13 @@ function gaston_multiplot_pos_size!(n::Int, plt, origin_size) nr, nc = size(origin_size) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major xy_wh = origin_size[r, c] - if xy_wh === undef + if xy_wh === nothing continue elseif xy_wh isa Tuple x, y, w, h = xy_wh - gsp = plt.o.subplots[n += 1] - gsp.axesconf = "set origin $x,$y\nset size $w,$h\n" * gsp.axesconf + if (gsp = plt.o.subplots[n += 1]) !== nothing + gsp.axesconf = "set origin $x,$y\nset size $w,$h\n" * gsp.axesconf + end else n = gaston_multiplot_pos_size!(n, plt, xy_wh) end @@ -194,39 +192,54 @@ function gaston_multiplot_pos_size!(n::Int, plt, origin_size) end function gaston_add_series(plt::Plot{GastonBackend}, series::Series) - # Gaston.Curve = Plots.Series - sp = series[:subplot] - gsp = sp.o # Gaston subplot object + sp = series[:subplot]; gsp = sp.o + x, y, z = series[:x], series[:y], series[:z] + st = series[:seriestype] - x = series[:x] - y = series[:y] - z = gsp.dims == 2 ? nothing : series[:z] - if z isa Surface - z = z.surf + curves = [] + if gsp.dims == 2 && z === nothing + for seg ∈ series_segments(series, st; check=true) + i, rng = seg.attr_index, seg.range + seriesconf = gaston_seriesconf!(sp, series, i) + push!(curves, Gaston.Curve(x[rng], y[rng], nothing, nothing, seriesconf)) + end + else + seriesconf = gaston_seriesconf!(sp, series, 1) + if z isa Surface + z = z.surf + if st == :image + z = Float32.(Gray.(z)) + nr, nc = size(z) + lx = length(x) + if lx == 2 && lx != nr + x = collect(range(x[1], x[2], length=nr)) + end + ly = length(y) + if ly == 2 && ly != nc + y = collect(range(y[1], y[2], length=nc)) + end + end + end + push!(curves, Gaston.Curve(x, y, z, nothing, seriesconf)) end - seriesconf = gaston_seriesconf!(sp, series) # Gnuplot string - c = Gaston.Curve(x, y, z, nothing, seriesconf) - - isfirst = length(gsp.curves) == 0 ? true : false - push!(gsp.curves, c) - Gaston.write_data(c, gsp.dims, gsp.datafile, append = isfirst ? false : true) + for c ∈ curves + append = length(gsp.curves) > 0; push!(gsp.curves, c) + Gaston.write_data(c, gsp.dims, gsp.datafile, append=append) + end nothing end function gaston_hvline!(sp, series, curveconf, pt, dt, lw, lc, command) - if pt ∈ (:hline, :vline) - xs, ys = straightline_data(series) - if pt == :hline - lo, hi = axis_limits(sp, :x) - for y ∈ ys - sp.o.axesconf *= "\nset arrow from $lo,$y to $hi,$y nohead lc $lc lw $lw dt $dt" - end - elseif pt == :vline - lo, hi = axis_limits(sp, :y) - for x ∈ xs - sp.o.axesconf *= "\nset arrow from $x,$lo to $x,$hi nohead lc $lc lw $lw dt $dt" - end + if pt == :hline + lo, hi = axis_limits(sp, :x) + for y ∈ series[:y] + sp.o.axesconf *= "\nset arrow from $lo,$y to $hi,$y nohead lc $lc lw $lw dt $dt" + end + elseif pt == :vline + lo, hi = axis_limits(sp, :y) + for x ∈ series[:x] + sp.o.axesconf *= "\nset arrow from $x,$lo to $x,$hi nohead lc $lc lw $lw dt $dt" end else push!(curveconf, command) @@ -234,7 +247,7 @@ function gaston_hvline!(sp, series, curveconf, pt, dt, lw, lc, command) nothing end -function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series) +function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) #= gnuplot abbreviations (see gnuplot/src/set.c) --------------------------------------------- @@ -251,56 +264,63 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series) pn: pointnumber ps: pointscale pt: pointtype - tc: textcolor + tc: textcolor + w: with =# gsp = sp.o; curveconf = String[] st = series[:seriestype] clims = get_clims(sp, series) if st ∈ (:scatter, :scatter3d) - lc, dt, lw = gaston_lc_ls_lw(series) - pt, ps, mc = gaston_mk_ms_mc(series) - gaston_hvline!(sp, series, curveconf, pt, dt, lw, mc, "with points pt $pt ps $ps lc $mc") + lc, dt, lw = gaston_lc_ls_lw(series, clims, i) + pt, ps, mc = gaston_mk_ms_mc(series, clims, i) + gaston_hvline!(sp, series, curveconf, pt, dt, lw, mc, "w points pt $pt ps $ps lc $mc") elseif st ∈ (:path, :straightline, :path3d) - lc, dt, lw = gaston_lc_ls_lw(series) - if series[:markershape] == :none # simplepath - push!(curveconf, "with lines lc $lc dt $dt lw $lw") + lc, dt, lw = gaston_lc_ls_lw(series, clims, i) + if series[:markershape] == :none # simplepath + push!(curveconf, "w lines lc $lc dt $dt lw $lw") else - pt, ps, mc = gaston_mk_ms_mc(series) - gaston_hvline!(sp, series, curveconf, x, y, pt, dt, lw, mc, "with lp lc $mc dt $dt lw $lw pt $pt ps $ps") + pt, ps, mc = gaston_mk_ms_mc(series, clims, i) + gaston_hvline!(sp, series, curveconf, pt, dt, lw, mc, "w lp lc $mc dt $dt lw $lw pt $pt ps $ps") end elseif st == :shape - fc = gaston_color(series[:fillcolor], series[:fillalpha]) - lc, _ = gaston_lc_ls_lw(series) - push!(curveconf, "with filledcurves fc $fc fs solid border lc $lc") + fc = gaston_color(get_fillcolor(series, i), get_fillalpha(series, i)) + lc, _ = gaston_lc_ls_lw(series, clims, i) + push!(curveconf, "w filledcurves fc $fc fs solid border lc $lc") elseif st == :steppre - push!(curveconf, "with steps") + push!(curveconf, "w steps") elseif st == :steppost - push!(curveconf, "with fsteps") # Not sure if not the other way + push!(curveconf, "w fsteps") # Not sure if not the other way + elseif st == :image + palette = gaston_palette(series[:seriescolor]) + gsp.axesconf *= "\nset palette model RGB defined $palette" + push!(curveconf, "w image pixels") elseif st ∈ (:contour, :contour3d) - push!(curveconf, "with lines") + push!(curveconf, "w lines") st == :contour && (gsp.axesconf *= "\nset view map\nunset surface") # 2D gsp.axesconf *= "\nunset key" # FIXME: too many legend (key) entries levels = join(map(string, collect(contour_levels(series, clims))), ", ") gsp.axesconf *= "\nset contour base\nset cntrparam levels discrete $levels" elseif st ∈ (:surface, :heatmap) - push!(curveconf, "with pm3d") + push!(curveconf, "w pm3d") palette = gaston_palette(series[:seriescolor]) gsp.axesconf *= "\nset palette model RGB defined $palette" st == :heatmap && (gsp.axesconf *= "\nset view map") elseif st == :wireframe - lc, dt, lw = gaston_lc_ls_lw(series) - push!(curveconf, "with lines lc $lc dt $dt lw $lw") + lc, dt, lw = gaston_lc_ls_lw(series, clims, i) + push!(curveconf, "w lines lc $lc dt $dt lw $lw") else @warn "Gaston: $st is not implemented yet" end - push!(curveconf, should_add_to_legend(series) ? "title \"$(series[:label])\"" : "notitle") + push!(curveconf, should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle") return join(curveconf, " ") end -function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}, dims::Int) - axesconf = String[] +function gaston_parse_axes_args( + plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}, dims::Int, any_label::Bool +) + axesconf = String["reset"] # Standard 2d axis if !ispolar(sp) && !RecipesPipeline.is3d(sp) # TODO: configure grid, axis spines, thickness @@ -310,17 +330,12 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack (letter == :z && dims == 2) && continue axis = sp.attr[Symbol(letter, :axis)] # label names - push!(axesconf, "set $(letter)label \"$(axis[:guide])\"") - push!(axesconf, "set $(letter)label font \"$(axis[:guidefontfamily]), $(axis[:guidefontsize])\"") - - # Handle ticks - # ticksyle - push!(axesconf, "set $(letter)tics font \"$(axis[:tickfontfamily]), $(axis[:tickfontsize])\"") - push!(axesconf, "set $(letter)tics textcolor $(gaston_color(axis[:tickfontcolor]))") - push!(axesconf, "set $(letter)tics $(axis[:tick_direction])") + push!(axesconf, "set $(letter)label '$(axis[:guide])' $(gaston_font(guidefont(axis)))") mirror = axis[:mirror] ? "mirror" : "nomirror" - push!(axesconf, "set $(letter)tics $(mirror)") + + # Handle ticks + push!(axesconf, "set $(letter)tics $(mirror) $(axis[:tick_direction]) $(gaston_font(tickfont(axis)))") logscale = if axis[:scale] == :identity "nologscale" @@ -331,8 +346,8 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack # major tick locations if axis[:ticks] != :native - from, to = axis_limits(sp, letter) # axis limits - push!(axesconf, "set $(letter)range [$from:$to]") + lo, hi = axis_limits(sp, letter) + push!(axesconf, "set $(letter)range [$lo:$hi]") ticks = get_ticks(sp, axis) gaston_set_ticks!(axesconf, ticks, letter, "", "") @@ -354,11 +369,14 @@ function gaston_parse_axes_args(plt::Plot{GastonBackend}, sp::Subplot{GastonBack push!(axesconf, "set size ratio $ratio") end end - gaston_set_legend!(axesconf, sp) # Set legend params + gaston_set_legend!(axesconf, sp, any_label) # Set legend params - if sp[:title] != nothing - push!(axesconf, "set title '$(sp[:title])'") - push!(axesconf, "set title font '$(sp[:titlefontfamily]), $(sp[:titlefontsize])'") + if hascolorbar(sp) + push!(axesconf, "set cbtics $(gaston_font(colorbartitlefont(sp)))") + end + + if sp[:title] !== nothing + push!(axesconf, "set title '$(sp[:title])' $(gaston_font(titlefont(sp)))") end return join(axesconf, "\n") @@ -394,27 +412,27 @@ function gaston_set_ticks!(axesconf, ticks, letter, maj_min, add) gaston_ticks = nothing @error "Gaston: invalid input for $(maj_min)$(letter)ticks: $ticks" end - gaston_ticks !== nothing && push!(axesconf, "set $(letter)tics $add (" * join(gaston_ticks, ", ") * ")") + if gaston_ticks !== nothing + push!(axesconf, "set $(letter)tics $add (" * join(gaston_ticks, ", ") * ")") + end nothing end -function gaston_set_legend!(axesconf, sp) +function gaston_set_legend!(axesconf, sp, any_label) leg = sp[:legend] - if sp[:legend] ∉ (:none, :inline) + if sp[:legend] ∉ (:none, :inline) && any_label leg == :best && (leg = :topright) push!(axesconf, "set key " * (occursin("outer", string(leg)) ? "outside" : "inside")) for position ∈ ("top", "bottom", "left", "right") occursin(position, string(leg)) && push!(axesconf, "set key $position") end - if sp[:legendtitle] != nothing - push!(axesconf, "set key title '$(sp[:legendtitle])'") + if sp[:legendtitle] !== nothing + push!(axesconf, "set key title '$(sp[:legendtitle])' $(gaston_font(legendfont(sp)))") end - push!(axesconf, "set key box lw 1") - push!(axesconf, "set key opaque") - + push!(axesconf, "set key box lw 1 opaque") + # push!(axesconf, "set key $(gaston_font(legendtitlefont(sp), rot=false, align=false))") push!(axesconf, "set border back") - push!(axesconf, "set key font \"$(sp[:legendfontfamily]), $(sp[:legendfontsize])\"") else push!(axesconf, "set key off") @@ -426,23 +444,32 @@ end # Helpers # -------------------------------------------- +function gaston_font(f; rot=true, align=true) + font = "font '$(f.family),$(f.pointsize)' " + align && (font *= "$(gaston_halign(f.halign)) ") + rot && (font *= "rotate by $(f.rotation) ") + font *= "textcolor $(gaston_color(f.color))" +end + +gaston_halign(k) = (left=:left, hcenter=:center, right=:right)[k] +gaston_valign(k) = (top=:top, vcenter=:center, bottom=:bottom)[k] + gaston_alpha(alpha) = alpha === nothing ? 0 : alpha -gaston_lc_ls_lw(series::Series) = ( - gaston_color(series[:linecolor], series[:linealpha]), - gaston_linestyle(series[:linestyle]), - series[:linewidth], +gaston_lc_ls_lw(series::Series, clims, i::Int) = ( + gaston_color(get_linecolor(series, clims, i), get_linealpha(series, i)), + gaston_linestyle(get_linestyle(series, i)), + get_linewidth(series, i), ) -gaston_mk_ms_mc(series::Series) = ( - gaston_marker(series[:markershape], series[:markeralpha]), - series[:markersize] * 1.3 / 5., - gaston_color(series[:markercolor], series[:markeralpha]), +gaston_mk_ms_mc(series::Series, clims, i::Int) = ( + gaston_marker(_cycle(series[:markershape], i), get_markeralpha(series, i)), + _cycle(series[:markersize], i) * 1.3 / 5, + gaston_color(get_markercolor(series, clims, i), get_markeralpha(series, i)), ) function gaston_palette(gradient) - palette = String[] - n = -1 + palette = String[]; n = -1 for rgba ∈ gradient # FIXME: naive conversion, inefficient ? push!(palette, "$(n += 1) $(rgba.r) $(rgba.g) $(rgba.b)") end @@ -470,13 +497,9 @@ function gaston_marker(marker, alpha) end function gaston_color(col, alpha=0) - if isvector(col) - return gaston_color.(col) - else - col = single_color(col) # in case of gradients - col = alphacolor(col, gaston_alpha(alpha)) # add a default alpha if non existent - return "rgb \"#$(hex(col, :aarrggbb))\"" - end + col = single_color(col) # in case of gradients + col = alphacolor(col, gaston_alpha(alpha)) # add a default alpha if non existent + return "rgb '#$(hex(col, :aarrggbb))'" end function gaston_linestyle(style) @@ -488,7 +511,7 @@ function gaston_linestyle(style) end function gaston_enclose_tick_string(tick_string) - findfirst("^", tick_string) == nothing && return tick_string + findfirst("^", tick_string) === nothing && return tick_string base, power = split(tick_string, "^") return "$base^{$power}" end diff --git a/src/examples.jl b/src/examples.jl index b273a3f3..1397655f 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1244,19 +1244,16 @@ _backend_skips = Dict( :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], :gaston => [ 2, # animations - 4, # colors/palette issues - 6, # TODO: support embedded images - 10, # TODO: support histogram2d + 10, # TODO: support histogram2d 16, # TODO: support nested layouts 27, # TODO: support polar 30, # uses StatsPlots, deprecated ? 31, # animations - 38, # TODO: support histogram2d + 38, # TODO: support histogram2d 47, # TODO: support mesh3d 48, # TODO: vector of shapes, ... 49, # TODO: support polar 50, # TODO: 1D data not supported for pm3d - 51, # TODO: support embedded images 55, # TODO: scaling is ugly ], ) From 92cad5376b0aa1649e0e1d0bd29a1b73f3d2b178 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 00:21:13 +0200 Subject: [PATCH 456/518] Update gaston.jl --- src/backends/gaston.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 58238f7a..769d2984 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -428,7 +428,7 @@ function gaston_set_legend!(axesconf, sp, any_label) occursin(position, string(leg)) && push!(axesconf, "set key $position") end if sp[:legendtitle] !== nothing - push!(axesconf, "set key title '$(sp[:legendtitle])' $(gaston_font(legendfont(sp)))") + push!(axesconf, "set key title '$(sp[:legendtitle])'") # $(gaston_font(legendfont(sp))) end push!(axesconf, "set key box lw 1 opaque") # push!(axesconf, "set key $(gaston_font(legendtitlefont(sp), rot=false, align=false))") From 40cc74bea671e8466163691d044a8cab5b6e5391 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 00:32:33 +0200 Subject: [PATCH 457/518] Gaston: fix :steppre, :steppost, add histeps --- src/backends/gaston.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 769d2984..9f53d8ae 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -288,9 +288,11 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) lc, _ = gaston_lc_ls_lw(series, clims, i) push!(curveconf, "w filledcurves fc $fc fs solid border lc $lc") elseif st == :steppre - push!(curveconf, "w steps") + push!(curveconf, "w fsteps") + elseif st == :stepmid + push!(curveconf, "w histeps") elseif st == :steppost - push!(curveconf, "w fsteps") # Not sure if not the other way + push!(curveconf, "w steps") elseif st == :image palette = gaston_palette(series[:seriescolor]) gsp.axesconf *= "\nset palette model RGB defined $palette" From 8ebe9e8204c43bd45a936243c3607646b8f8c3c6 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 00:59:02 +0200 Subject: [PATCH 458/518] Gaston: allow additional series --- src/backends/gaston.jl | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 9f53d8ae..d101ea57 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -200,8 +200,9 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) if gsp.dims == 2 && z === nothing for seg ∈ series_segments(series, st; check=true) i, rng = seg.attr_index, seg.range - seriesconf = gaston_seriesconf!(sp, series, i) - push!(curves, Gaston.Curve(x[rng], y[rng], nothing, nothing, seriesconf)) + for sc ∈ gaston_seriesconf!(sp, series, i) + push!(curves, Gaston.Curve(x[rng], y[rng], nothing, nothing, sc)) + end end else seriesconf = gaston_seriesconf!(sp, series, 1) @@ -220,7 +221,9 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) end end end - push!(curves, Gaston.Curve(x, y, z, nothing, seriesconf)) + for sc ∈ gaston_seriesconf!(sp, series, 1) + push!(curves, Gaston.Curve(x, y, z, nothing, sc)) + end end for c ∈ curves @@ -267,8 +270,8 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) tc: textcolor w: with =# - gsp = sp.o; curveconf = String[] - st = series[:seriestype] + gsp = sp.o; st = series[:seriestype]; extra = [] + curveconf = String[should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle"] clims = get_clims(sp, series) if st ∈ (:scatter, :scatter3d) @@ -287,12 +290,17 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) fc = gaston_color(get_fillcolor(series, i), get_fillalpha(series, i)) lc, _ = gaston_lc_ls_lw(series, clims, i) push!(curveconf, "w filledcurves fc $fc fs solid border lc $lc") - elseif st == :steppre - push!(curveconf, "w fsteps") - elseif st == :stepmid - push!(curveconf, "w histeps") - elseif st == :steppost - push!(curveconf, "w steps") + elseif st ∈ (:steppre, :stepmid, :steppost) + step = if st == :steppre + "fsteps" + elseif st == :stepmid + "histeps" + elseif st == :steppost + "steps" + end + push!(curveconf, "w $step") + lc, dt, lw = gaston_lc_ls_lw(series, clims, i) + push!(extra, "w points lc $lc dt $dt lw $lw notitle") elseif st == :image palette = gaston_palette(series[:seriescolor]) gsp.axesconf *= "\nset palette model RGB defined $palette" @@ -315,8 +323,7 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) @warn "Gaston: $st is not implemented yet" end - push!(curveconf, should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle") - return join(curveconf, " ") + return [join(curveconf, " "), extra...] end function gaston_parse_axes_args( From bf16a97cd59ff7aed33d1594f12261b0dd00cee7 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 01:16:41 +0200 Subject: [PATCH 459/518] Gaston: fix legendtitle --- src/backends/gaston.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index d101ea57..43367a59 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -437,14 +437,12 @@ function gaston_set_legend!(axesconf, sp, any_label) occursin(position, string(leg)) && push!(axesconf, "set key $position") end if sp[:legendtitle] !== nothing - push!(axesconf, "set key title '$(sp[:legendtitle])'") # $(gaston_font(legendfont(sp))) + push!(axesconf, "set key title '$(sp[:legendtitle])' $(gaston_font(legendtitlefont(sp)))") end push!(axesconf, "set key box lw 1 opaque") - # push!(axesconf, "set key $(gaston_font(legendtitlefont(sp), rot=false, align=false))") push!(axesconf, "set border back") else push!(axesconf, "set key off") - end nothing end From 603dc10788469c02d947ffb052c4338e0f2099e2 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 01:23:44 +0200 Subject: [PATCH 460/518] Gaston: fix broken multiplot --- src/backends/gaston.jl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 43367a59..e047e0b6 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -177,15 +177,13 @@ function gaston_multiplot_pos_size!(n::Int, plt, origin_size) nr, nc = size(origin_size) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major xy_wh = origin_size[r, c] - if xy_wh === nothing - continue + if xy_wh isa Array + n = gaston_multiplot_pos_size!(n, plt, xy_wh) elseif xy_wh isa Tuple x, y, w, h = xy_wh if (gsp = plt.o.subplots[n += 1]) !== nothing gsp.axesconf = "set origin $x,$y\nset size $w,$h\n" * gsp.axesconf end - else - n = gaston_multiplot_pos_size!(n, plt, xy_wh) end end return n From 204adc3e36e015525423c8dc0a3a470fba2c3bbf Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 07:22:20 +0200 Subject: [PATCH 461/518] Gaston: add flip - add :log2, :ln scales --- src/backends/gaston.jl | 70 ++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index e047e0b6..0830be72 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -52,8 +52,8 @@ end function _update_plot_object(plt::Plot{GastonBackend}) # respect the layout ratio - xy_wh = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1)) - gaston_multiplot_pos_size!(0, plt, xy_wh) + xy_wh = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1), 0) + gaston_multiplot_pos_size!(0, xy_wh) end for (mime, term) ∈ ( @@ -147,43 +147,44 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot nothing end -function gaston_multiplot_pos_size(layout, parent_xy_wh) +function gaston_multiplot_pos_size(layout, parent_xy_wh, level) nr, nc = size(layout) - xy_wh = Array{Any}(nothing, nr, nc) + xy_wh_sp = Array{Any}(nothing, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major l = layout[r, c] if !isa(l, EmptyLayout) # previous position (origin) - prev_r = r > 1 ? xy_wh[r - 1, c] : nothing - prev_c = c > 1 ? xy_wh[r, c - 1] : nothing - prev_r isa Array{Any} && (prev_r = prev_r[end, end]) - prev_c isa Array{Any} && (prev_c = prev_c[end, end]) + prev_r = r > 1 ? xy_wh_sp[r - 1, c] : nothing + prev_c = c > 1 ? xy_wh_sp[r, c - 1] : nothing + prev_r isa Array && (prev_r = prev_r[end, end]) + prev_c isa Array && (prev_c = prev_c[end, end]) x = prev_c !== nothing ? prev_c[1] + prev_c[3] : parent_xy_wh[1] y = prev_r !== nothing ? prev_r[2] + prev_r[4] : parent_xy_wh[2] # width and height (pct) are multiplicative (parent) w = layout.widths[c].value * parent_xy_wh[3] h = layout.heights[r].value * parent_xy_wh[4] if l isa GridLayout - xy_wh[r, c] = gaston_multiplot_pos_size(l, (x, y, w, h)) + sub = gaston_multiplot_pos_size(l, (x, y, w, h), level + 1) + xy_wh_sp[r, c] = size(sub) == (1, 1) ? only(sub) : sub else - xy_wh[r, c] = x, y, w, h + xy_wh_sp[r, c] = x, y, w, h, l end end end - return xy_wh + return xy_wh_sp end -function gaston_multiplot_pos_size!(n::Int, plt, origin_size) - nr, nc = size(origin_size) +function gaston_multiplot_pos_size!(n::Int, dat) + nr, nc = size(dat) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major - xy_wh = origin_size[r, c] - if xy_wh isa Array - n = gaston_multiplot_pos_size!(n, plt, xy_wh) - elseif xy_wh isa Tuple - x, y, w, h = xy_wh - if (gsp = plt.o.subplots[n += 1]) !== nothing - gsp.axesconf = "set origin $x,$y\nset size $w,$h\n" * gsp.axesconf - end + xy_wh_sp = dat[r, c] + if xy_wh_sp isa Array + n = gaston_multiplot_pos_size!(n, xy_wh_sp) + elseif xy_wh_sp isa Tuple + x, y, w, h, sp = xy_wh_sp + sp === nothing && continue + sp.o === nothing && continue + sp.o.axesconf = "set origin $x,$y\nset size $w,$h\n" * sp.o.axesconf end end return n @@ -269,7 +270,9 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) w: with =# gsp = sp.o; st = series[:seriestype]; extra = [] - curveconf = String[should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle"] + curveconf = String[ + should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle" + ] clims = get_clims(sp, series) if st ∈ (:scatter, :scatter3d) @@ -338,22 +341,29 @@ function gaston_parse_axes_args( axis = sp.attr[Symbol(letter, :axis)] # label names push!(axesconf, "set $(letter)label '$(axis[:guide])' $(gaston_font(guidefont(axis)))") - mirror = axis[:mirror] ? "mirror" : "nomirror" - # Handle ticks + # handle ticks push!(axesconf, "set $(letter)tics $(mirror) $(axis[:tick_direction]) $(gaston_font(tickfont(axis)))") - logscale = if axis[:scale] == :identity - "nologscale" + if axis[:scale] == :identity + logscale, base = "nologscale", "" elseif axis[:scale] == :log10 - "logscale" + logscale, base = "logscale", "10" + elseif axis[:scale] == :log2 + logscale, base = "logscale", "2" + elseif axis[:scale] == :ln + logscale, base = "logscale", "e" end - push!(axesconf, "set $logscale $(letter)") + push!(axesconf, "set $logscale $letter $base") # major tick locations if axis[:ticks] != :native - lo, hi = axis_limits(sp, letter) + if axis[:flip] + hi, lo = axis_limits(sp, letter) + else + lo, hi = axis_limits(sp, letter) + end push!(axesconf, "set $(letter)range [$lo:$hi]") ticks = get_ticks(sp, axis) @@ -376,7 +386,7 @@ function gaston_parse_axes_args( push!(axesconf, "set size ratio $ratio") end end - gaston_set_legend!(axesconf, sp, any_label) # Set legend params + gaston_set_legend!(axesconf, sp, any_label) if hascolorbar(sp) push!(axesconf, "set cbtics $(gaston_font(colorbartitlefont(sp)))") From af610735eb6bddd127faf019384b8a4de42f95d7 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 07:38:28 +0200 Subject: [PATCH 462/518] Gaston: fix legend font --- src/backends/gaston.jl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 0830be72..7cff0b83 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -147,7 +147,7 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot nothing end -function gaston_multiplot_pos_size(layout, parent_xy_wh, level) +function gaston_multiplot_pos_size(layout, parent_xy_wh) nr, nc = size(layout) xy_wh_sp = Array{Any}(nothing, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major @@ -164,7 +164,7 @@ function gaston_multiplot_pos_size(layout, parent_xy_wh, level) w = layout.widths[c].value * parent_xy_wh[3] h = layout.heights[r].value * parent_xy_wh[4] if l isa GridLayout - sub = gaston_multiplot_pos_size(l, (x, y, w, h), level + 1) + sub = gaston_multiplot_pos_size(l, (x, y, w, h)) xy_wh_sp[r, c] = size(sub) == (1, 1) ? only(sub) : sub else xy_wh_sp[r, c] = x, y, w, h, l @@ -270,9 +270,7 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) w: with =# gsp = sp.o; st = series[:seriestype]; extra = [] - curveconf = String[ - should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle" - ] + curveconf = String[should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle"] clims = get_clims(sp, series) if st ∈ (:scatter, :scatter3d) @@ -444,8 +442,9 @@ function gaston_set_legend!(axesconf, sp, any_label) for position ∈ ("top", "bottom", "left", "right") occursin(position, string(leg)) && push!(axesconf, "set key $position") end + push!(axesconf, "set key $(gaston_font(legendfont(sp), rot=false, align=false))") if sp[:legendtitle] !== nothing - push!(axesconf, "set key title '$(sp[:legendtitle])' $(gaston_font(legendtitlefont(sp)))") + push!(axesconf, "set key title '$(sp[:legendtitle])'") end push!(axesconf, "set key box lw 1 opaque") push!(axesconf, "set border back") From 9fba70db5ec879037c837913f3516a3181e715f0 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 1 Aug 2021 06:00:06 +0000 Subject: [PATCH 463/518] Update precompile_*.jl file [skip ci] --- .../precompile/precompile_Plots.jl | 59 +++++++++++++++++-- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index 5093b68b..aafcebc6 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -68,22 +68,35 @@ function _precompile_() ccall(:jl_generating_output, Cint, ()) == 1 || return nothing Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :blank), Tuple{Symbol, Bool}},Type{EmptyLayout}}) Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:label, :width, :height), Tuple{Symbol, Symbol, Length{:pct, Float64}}},Type{EmptyLayout}}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{GridLayout}},Type{Subplot},PlotlyBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{GRBackend}}},Type{Subplot},GRBackend}) + Base.precompile(Tuple{Core.kwftype(typeof(Type)),NamedTuple{(:parent,), Tuple{Subplot{PlotlyBackend}}},Type{Subplot},PlotlyBackend}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Int64}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims, :flip), Tuple{Bool, Tuple{Float64, Float64}, Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :guide), Tuple{Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :minorgrid, :mirror, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:gridlinewidth, :grid, :gridalpha, :gridstyle, :foreground_color_grid), Tuple{Int64, Bool, Float64, Symbol, RGBA{Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide,), Tuple{String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guide_position, :guidefontvalign, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:guidefonthalign, :guide_position, :mirror, :guide), Tuple{Symbol, Symbol, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims, :flip, :ticks, :guide), Tuple{Tuple{Int64, Int64}, Bool, StepRange{Int64, Int64}, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Float64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:shape,), Tuple{Symbol}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(default)),NamedTuple{(:titlefont, :legendfontsize, :guidefont, :tickfont, :guide, :framestyle, :yminorgrid), Tuple{Tuple{Int64, String}, Int64, Tuple{Int64, Symbol}, Tuple{Int64, Symbol}, String, Symbol, Bool}},typeof(default)}) Base.precompile(Tuple{Core.kwftype(typeof(font)),NamedTuple{(:family, :pointsize, :halign, :valign, :rotation, :color), Tuple{String, Int64, Symbol, Symbol, Float64, RGBA{Float64}}},typeof(font)}) @@ -111,17 +124,27 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{GRBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{GRBackend},Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot!),Vector{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:annotations, :leg), Tuple{Tuple{Int64, Float64, PlotText}, Bool}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:arrow,), Tuple{Int64}},typeof(plot),Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:aspect_ratio, :seriestype), Tuple{Int64, Symbol}},typeof(plot),Vector{String},Vector{String},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:bins, :weights, :seriestype), Tuple{Symbol, Vector{Int64}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:color, :line, :marker), Tuple{Matrix{Symbol}, Tuple{Symbol, Int64}, Tuple{Matrix{Symbol}, Int64, Float64, Stroke}}},typeof(plot),Vector{Vector{T} where T}}) @@ -132,6 +155,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Float64}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) @@ -166,6 +190,8 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:projection, :seriestype), Tuple{Symbol, Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},UnitRange{Int64},Matrix{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:quiver, :seriestype), Tuple{Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:reg, :fill), Tuple{Bool, Tuple{Int64, Symbol}}},typeof(plot),Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Int64}},typeof(plot),UnitRange{Int64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{Tuple{LinRange{Float64}, LinRange{Float64}}}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:ribbon,), Tuple{typeof(sqrt)}},typeof(plot),UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) @@ -189,6 +215,7 @@ function _precompile_() Base.precompile(Tuple{Type{GridLayout},Int64,Vararg{Int64, N} where N}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},AbstractVector{OHLC}}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},PortfolioComposition}) + Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barbins}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:barhist}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bar}},Any,Any,Any}) Base.precompile(Tuple{typeof(RecipesBase.apply_recipe),AbstractDict{Symbol, Any},Type{Val{:bins2d}},Any,Any,Any}) @@ -207,7 +234,6 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) - Base.precompile(Tuple{typeof(RecipesPipeline.process_sliced_series_attributes!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -220,15 +246,16 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(_slice_series_args!),Dict{Symbol, Any},Plot{GRBackend},Subplot{GRBackend},Int64}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) - Base.precompile(Tuple{typeof(_update_plot_args),Plot{GRBackend},DefaultsDict}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_periphery),Subplot{GRBackend},Vector{Any}}) @@ -239,13 +266,17 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) + Base.precompile(Tuple{typeof(convertLegendValue),Symbol}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) + Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) + Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) Base.precompile(Tuple{typeof(fakedata),Int64,Int64}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -254,6 +285,7 @@ function _precompile_() Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(gr_clims),Subplot{GRBackend},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},AbsoluteLength,AbsoluteLength,Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) @@ -275,6 +307,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_surface),Series,Vector{Float64},Vector{Float64},Vector{Float64},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_fill_viewport),Vector{Float64},RGBA{Float64}}) Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Float64}, Vector{String}},Int64}) + Base.precompile(Tuple{typeof(gr_get_ticks_size),Tuple{Vector{Int64}, Vector{String}},Int64}) Base.precompile(Tuple{typeof(gr_label_ticks),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_label_ticks_3d),Subplot{GRBackend},Symbol,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(gr_polaraxes),Int64,Float64,Subplot{GRBackend}}) @@ -289,6 +322,10 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,UnitRange{Int64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) + Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) + Base.precompile(Tuple{typeof(leftpad),EmptyLayout}) + Base.precompile(Tuple{typeof(locate_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) + Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Int64, Float64},Symbol,Symbol}) @@ -309,6 +346,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) + Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Int64, Symbol, Symbol}}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,Tuple{String, Symbol, Int64, String}}) @@ -318,23 +356,36 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Int64, Float64, Int64},Tuple{Int64, Float64, Int64}}) + Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Int64, Float64}}) + Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(resetfontsizes)}) + Base.precompile(Tuple{typeof(scalefontsizes),Float64}) + Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) + isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Int64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end + let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end + if !ismissing(fbody) + precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) + end + end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 5a5864d08743f1b5f6560b66763af3de2d368c1b Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 08:35:16 +0200 Subject: [PATCH 464/518] Gaston: rework margins, terminal fontsize and size --- src/backends/gaston.jl | 50 ++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 7cff0b83..ea097f1a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -46,13 +46,12 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) end function _update_min_padding!(sp::Subplot{GastonBackend}) - # FIXME: make this more flexible - sp.minpad = (20mm, 5mm, 2mm, 10mm) + sp.minpad = 0mm, 0mm, 0mm, 0mm end function _update_plot_object(plt::Plot{GastonBackend}) # respect the layout ratio - xy_wh = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1), 0) + xy_wh = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1)) gaston_multiplot_pos_size!(0, xy_wh) end @@ -69,6 +68,7 @@ for (mime, term) ∈ ( ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) term = String($term); tmpfile = "$(Gaston.tempname()).$term" + Gaston.save(term=term, output=tmpfile, handle=plt.o.handle, saveopts=gaston_saveopts(plt)) while !isfile(tmpfile) end # avoid race condition with read in next line write(io, read(tmpfile)) @@ -84,14 +84,17 @@ _display(plt::Plot{GastonBackend}) = display(plt.o) # -------------------------------------------- function gaston_saveopts(plt::Plot{GastonBackend}) - xsize, ysize = plt.attr[:size] - saveopts = "size $xsize,$ysize background $(gaston_color(plt.attr[:background_color]))" + saveopts = String["size $(join(plt.attr[:size], ","))"] + + push!(saveopts, gaston_font(plottitlefont(plt), rot=false, align=false, color=false, scale=1)) + + push!(saveopts, "background $(gaston_color(plt.attr[:background_color]))") # Scale all plot elements to match Plots.jl DPI standard scaling = plt.attr[:dpi] / Plots.DPI - saveopts *= "fontscale $scaling lw $scaling dl $scaling ps $scaling" + push!(saveopts, "fontscale $scaling lw $scaling dl $scaling ps $scaling") - return saveopts + return join(saveopts, " ") end function gaston_get_subplots(n, plt_subplots, layout) @@ -129,18 +132,14 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot else dims = RecipesPipeline.is3d(sp) || sp.attr[:projection] == "3d" || needs_any_3d_axes(sp) ? 3 : 2 any_label = false - if dims == 2 - for series ∈ plt.series_list - if series[:seriestype] ∈ (:heatmap, :contour) - dims = 3 # we need heatmap/contour to use splot, not plot - end - any_label |= should_add_to_legend(series) + for series ∈ plt.series_list + if dims == 2 && series[:seriestype] ∈ (:heatmap, :contour) + dims = 3 # we need heatmap/contour to use splot, not plot end + any_label |= should_add_to_legend(series) end sp.o = Gaston.Plot( - dims=dims, - axesconf=gaston_parse_axes_args(plt, sp, dims, any_label), # Gnuplot string - curves=[] + dims=dims, curves=[], axesconf=gaston_parse_axes_args(plt, sp, dims, any_label), ) push!(plt.o.subplots, sp.o) end @@ -328,11 +327,8 @@ end function gaston_parse_axes_args( plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}, dims::Int, any_label::Bool ) - axesconf = String["reset"] - # Standard 2d axis - if !ispolar(sp) && !RecipesPipeline.is3d(sp) - # TODO: configure grid, axis spines, thickness - end + # axesconf = String["set margins 2, 2, 2, 2"] # left, right, bottom, top + axesconf = String[] for letter ∈ (:x, :y, :z) (letter == :z && dims == 2) && continue @@ -444,6 +440,7 @@ function gaston_set_legend!(axesconf, sp, any_label) end push!(axesconf, "set key $(gaston_font(legendfont(sp), rot=false, align=false))") if sp[:legendtitle] !== nothing + # NOTE: cannot use legendtitlefont(sp) as it will override legendfont push!(axesconf, "set key title '$(sp[:legendtitle])'") end push!(axesconf, "set key box lw 1 opaque") @@ -458,11 +455,12 @@ end # Helpers # -------------------------------------------- -function gaston_font(f; rot=true, align=true) - font = "font '$(f.family),$(f.pointsize)' " - align && (font *= "$(gaston_halign(f.halign)) ") - rot && (font *= "rotate by $(f.rotation) ") - font *= "textcolor $(gaston_color(f.color))" +function gaston_font(f; rot=true, align=true, color=true, scale=1) + font = String["font '$(f.family),$(round(Int, scale * f.pointsize))'"] + align && push!(font, "$(gaston_halign(f.halign))") + rot && push!(font, "rotate by $(f.rotation)") + color && push!(font, "textcolor $(gaston_color(f.color))") + return join(font, " ") end gaston_halign(k) = (left=:left, hcenter=:center, right=:right)[k] From 0f54c8686591216c71f57faa3650ccef5c89f7be Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 08:46:38 +0200 Subject: [PATCH 465/518] Gaston: update examples --- src/examples.jl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index 1397655f..6e616b68 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1244,17 +1244,11 @@ _backend_skips = Dict( :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], :gaston => [ 2, # animations - 10, # TODO: support histogram2d - 16, # TODO: support nested layouts 27, # TODO: support polar - 30, # uses StatsPlots, deprecated ? 31, # animations - 38, # TODO: support histogram2d 47, # TODO: support mesh3d - 48, # TODO: vector of shapes, ... 49, # TODO: support polar 50, # TODO: 1D data not supported for pm3d - 55, # TODO: scaling is ugly ], ) From 806dc3aa43990d3c18c0071f30b996344290d306 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 1 Aug 2021 09:07:29 +0200 Subject: [PATCH 466/518] rework fontscales - cleanup --- src/args.jl | 48 ++++++++++++++++++++++++----------------------- src/components.jl | 8 ++++---- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/args.jl b/src/args.jl index 96fbaed6..5e624c0c 100644 --- a/src/args.jl +++ b/src/args.jl @@ -524,12 +524,25 @@ const _initial_defaults = deepcopy(_all_defaults) const _initial_axis_defaults = deepcopy(_axis_defaults) # to be able to reset font sizes to initial values -const _initial_fontsizes = Dict(:titlefontsize => _subplot_defaults[:titlefontsize], - :legendfontsize => _subplot_defaults[:legendfontsize], - :legendtitlefontsize => _subplot_defaults[:legendtitlefontsize], - :annotationfontsize => _subplot_defaults[:annotationfontsize], - :tickfontsize => _axis_defaults[:tickfontsize], - :guidefontsize => _axis_defaults[:guidefontsize]) +const _initial_plt_fontsizes = Dict( + :plot_titlefontsize => _plot_defaults[:plot_titlefontsize], +) + +const _initial_sp_fontsizes = Dict( + :titlefontsize => _subplot_defaults[:titlefontsize], + :legendfontsize => _subplot_defaults[:legendfontsize], + :legendtitlefontsize => _subplot_defaults[:legendtitlefontsize], + :annotationfontsize => _subplot_defaults[:annotationfontsize], + :colorbar_tickfontsize => _subplot_defaults[:colorbar_tickfontsize], + :colorbar_titlefontsize => _subplot_defaults[:colorbar_titlefontsize], +) + +const _initial_ax_fontsizes = Dict( + :tickfontsize => _axis_defaults[:tickfontsize], + :guidefontsize => _axis_defaults[:guidefontsize], +) + +const _initial_fontsizes = merge(_initial_plt_fontsizes, _initial_sp_fontsizes, _initial_ax_fontsizes) const _internal_args = [:plot_object, :series_plotindex, :markershape_to_add, :letter, :idxfilter] @@ -548,8 +561,7 @@ const _all_subplot_args = sort(union([_subplot_args; _magic_subplot_args])) const _all_series_args = sort(union([_series_args; _magic_series_args])) const _all_plot_args = _plot_args -const _all_args = - sort(union([_all_axis_args; _all_subplot_args; _all_series_args; _all_plot_args])) +const _all_args = sort(union([_all_axis_args; _all_subplot_args; _all_series_args; _all_plot_args])) is_subplot_attr(k) = k in _all_subplot_args is_series_attr(k) = k in _all_series_args @@ -571,9 +583,7 @@ function aliasesAndAutopick(plotattributes::AKW, sym::Symbol, aliases::Dict{Symb end end -function aliases(aliasMap::Dict{Symbol,Symbol}, val) - sortedkeys(filter((k,v)-> v==val, aliasMap)) -end +aliases(aliasMap::Dict{Symbol,Symbol}, val) = sortedkeys(filter((k,v)-> v==val, aliasMap)) # ----------------------------------------------------------------------------- @@ -776,9 +786,7 @@ function default(; reset = true, kw...) end end -function default(plotattributes::AKW, k::Symbol) - get(plotattributes, k, default(k)) -end +default(plotattributes::AKW, k::Symbol) = get(plotattributes, k, default(k)) function reset_defaults() foreach(merge!, _all_defaults, _initial_defaults) @@ -1427,9 +1435,7 @@ function Base.getindex(axis::Axis, k::Symbol) end end -function Base.getindex(series::Series, k::Symbol) - series.plotattributes[k] -end +Base.getindex(series::Series, k::Symbol) = series.plotattributes[k] Base.setindex!(plt::Plot, v, k::Symbol) = (plt.attr[k] = v) Base.setindex!(sp::Subplot, v, k::Symbol) = (sp.attr[k] = v) @@ -1611,9 +1617,7 @@ end has_black_border_for_default(st) = error("The seriestype attribute only accepts Symbols, you passed the $(typeof(st)) $st.") has_black_border_for_default(st::Function) = error("The seriestype attribute only accepts Symbols, you passed the function $st.") -function has_black_border_for_default(st::Symbol) - like_histogram(st) || st in (:hexbin, :bar, :shape) -end +has_black_border_for_default(st::Symbol) = like_histogram(st) || st in (:hexbin, :bar, :shape) # converts a symbol or string into a Colorant or ColorGradient # and assigns a color automatically @@ -1626,9 +1630,7 @@ function get_series_color(c, sp::Subplot, n::Int, seriestype) plot_color(c) end -function get_series_color(c::AbstractArray, sp::Subplot, n::Int, seriestype) - map(x->get_series_color(x, sp, n, seriestype), c) -end +get_series_color(c::AbstractArray, sp::Subplot, n::Int, seriestype) = map(x->get_series_color(x, sp, n, seriestype), c) function ensure_gradient!(plotattributes::AKW, csym::Symbol, asym::Symbol) if plotattributes[csym] isa ColorPalette diff --git a/src/components.jl b/src/components.jl index 63be7b15..03b3c5b5 100644 --- a/src/components.jl +++ b/src/components.jl @@ -327,12 +327,12 @@ end Scales all **current** font sizes by `factor`. For example `scalefontsizes(1.1)` increases all current font sizes by 10%. To reset to initial sizes, use `scalefontsizes()` """ function scalefontsizes(factor::Number) - for k in (:titlefontsize, :legendfontsize, :legendtitlefontsize) + for k in keys(merge(_initial_plt_fontsizes, _initial_sp_fontsizes)) scalefontsize(k, factor) end for letter in (:x,:y,:z) - for k in (:guidefontsize, :tickfontsize) + for k in keys(_initial_ax_fontsizes) scalefontsize(Symbol(letter, k), factor) end end @@ -344,7 +344,7 @@ end Resets font sizes to initial default values. """ function scalefontsizes() - for k in (:titlefontsize, :legendfontsize, :legendtitlefontsize) + for k in keys(merge(_initial_plt_fontsizes, _initial_sp_fontsizes)) f = default(k) if k in keys(_initial_fontsizes) factor = f / _initial_fontsizes[k] @@ -353,7 +353,7 @@ function scalefontsizes() end for letter in (:x,:y,:z) - for k in (:guidefontsize, :tickfontsize) + for k in keys(_initial_ax_fontsizes) if k in keys(_initial_fontsizes) f = default(Symbol(letter, k)) factor = f / _initial_fontsizes[k] From f49f5d1638e968c61d6033cd52481af9e95d7b96 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 09:47:36 +0200 Subject: [PATCH 467/518] Update gaston.jl --- src/backends/gaston.jl | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index ea097f1a..7c171ce7 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -51,8 +51,8 @@ end function _update_plot_object(plt::Plot{GastonBackend}) # respect the layout ratio - xy_wh = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1)) - gaston_multiplot_pos_size!(0, xy_wh) + dat = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1)) + gaston_multiplot_pos_size!(dat) end for (mime, term) ∈ ( @@ -148,13 +148,13 @@ end function gaston_multiplot_pos_size(layout, parent_xy_wh) nr, nc = size(layout) - xy_wh_sp = Array{Any}(nothing, nr, nc) + dat = Array{Any}(nothing, nr, nc) for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major l = layout[r, c] if !isa(l, EmptyLayout) # previous position (origin) - prev_r = r > 1 ? xy_wh_sp[r - 1, c] : nothing - prev_c = c > 1 ? xy_wh_sp[r, c - 1] : nothing + prev_r = r > 1 ? dat[r - 1, c] : nothing + prev_c = c > 1 ? dat[r, c - 1] : nothing prev_r isa Array && (prev_r = prev_r[end, end]) prev_c isa Array && (prev_c = prev_c[end, end]) x = prev_c !== nothing ? prev_c[1] + prev_c[3] : parent_xy_wh[1] @@ -164,21 +164,21 @@ function gaston_multiplot_pos_size(layout, parent_xy_wh) h = layout.heights[r].value * parent_xy_wh[4] if l isa GridLayout sub = gaston_multiplot_pos_size(l, (x, y, w, h)) - xy_wh_sp[r, c] = size(sub) == (1, 1) ? only(sub) : sub + dat[r, c] = size(sub) == (1, 1) ? only(sub) : sub else - xy_wh_sp[r, c] = x, y, w, h, l + dat[r, c] = x, y, w, h, l end end end - return xy_wh_sp + return dat end -function gaston_multiplot_pos_size!(n::Int, dat) +function gaston_multiplot_pos_size!(dat) nr, nc = size(dat) for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major xy_wh_sp = dat[r, c] if xy_wh_sp isa Array - n = gaston_multiplot_pos_size!(n, xy_wh_sp) + gaston_multiplot_pos_size!(n, xy_wh_sp) elseif xy_wh_sp isa Tuple x, y, w, h, sp = xy_wh_sp sp === nothing && continue @@ -186,7 +186,7 @@ function gaston_multiplot_pos_size!(n::Int, dat) sp.o.axesconf = "set origin $x,$y\nset size $w,$h\n" * sp.o.axesconf end end - return n + nothing end function gaston_add_series(plt::Plot{GastonBackend}, series::Series) From 773c7a90b4eb64f1ef8e9f714d348ed11e6f7d29 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 14:16:07 +0200 Subject: [PATCH 468/518] Gaston: conditional add_to_legend --- src/backends/gaston.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 7c171ce7..484bf247 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -203,7 +203,6 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) end end else - seriesconf = gaston_seriesconf!(sp, series, 1) if z isa Surface z = z.surf if st == :image @@ -269,7 +268,8 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) w: with =# gsp = sp.o; st = series[:seriestype]; extra = [] - curveconf = String[should_add_to_legend(series) ? "title '$(series[:label])'" : "notitle"] + add_to_legend = should_add_to_legend(series) && i == 1 + curveconf = String[add_to_legend ? "title '$(series[:label])'" : "notitle"] clims = get_clims(sp, series) if st ∈ (:scatter, :scatter3d) From 0b989cd33edf390a0ca40197002d97ce2c93e6c4 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 15:04:09 +0200 Subject: [PATCH 469/518] Gaston: rework multiplot --- src/backends/gaston.jl | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 484bf247..324b989a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -149,9 +149,14 @@ end function gaston_multiplot_pos_size(layout, parent_xy_wh) nr, nc = size(layout) dat = Array{Any}(nothing, nr, nc) - for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major + for r ∈ 1:nr, c ∈ 1:nc l = layout[r, c] - if !isa(l, EmptyLayout) + # width and height (pct) are multiplicative (parent) + w = layout.widths[c].value * parent_xy_wh[3] + h = layout.heights[r].value * parent_xy_wh[4] + if isa(l, EmptyLayout) + dat[r, c] = (c - 1) * w, (r - 1) * h, w, h, nothing + else # previous position (origin) prev_r = r > 1 ? dat[r - 1, c] : nothing prev_c = c > 1 ? dat[r, c - 1] : nothing @@ -159,9 +164,6 @@ function gaston_multiplot_pos_size(layout, parent_xy_wh) prev_c isa Array && (prev_c = prev_c[end, end]) x = prev_c !== nothing ? prev_c[1] + prev_c[3] : parent_xy_wh[1] y = prev_r !== nothing ? prev_r[2] + prev_r[4] : parent_xy_wh[2] - # width and height (pct) are multiplicative (parent) - w = layout.widths[c].value * parent_xy_wh[3] - h = layout.heights[r].value * parent_xy_wh[4] if l isa GridLayout sub = gaston_multiplot_pos_size(l, (x, y, w, h)) dat[r, c] = size(sub) == (1, 1) ? only(sub) : sub @@ -175,15 +177,17 @@ end function gaston_multiplot_pos_size!(dat) nr, nc = size(dat) - for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major + for r ∈ 1:nr, c ∈ 1:nc xy_wh_sp = dat[r, c] if xy_wh_sp isa Array - gaston_multiplot_pos_size!(n, xy_wh_sp) + gaston_multiplot_pos_size!(xy_wh_sp) elseif xy_wh_sp isa Tuple x, y, w, h, sp = xy_wh_sp sp === nothing && continue sp.o === nothing && continue - sp.o.axesconf = "set origin $x,$y\nset size $w,$h\n" * sp.o.axesconf + @show r, c x, y sp[:title] + # gnuplot screen coordinates: bottom left at 0,0 and top right at 1,1 + sp.o.axesconf = "set origin $x, $(1 - y - h)\nset size $w, $h\n" * sp.o.axesconf end end nothing From a9a24841fe50b273b138f6ef424e3b819b076400 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 15:04:52 +0200 Subject: [PATCH 470/518] Gaston: remove debug --- src/backends/gaston.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 324b989a..f201241a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -185,7 +185,6 @@ function gaston_multiplot_pos_size!(dat) x, y, w, h, sp = xy_wh_sp sp === nothing && continue sp.o === nothing && continue - @show r, c x, y sp[:title] # gnuplot screen coordinates: bottom left at 0,0 and top right at 1,1 sp.o.axesconf = "set origin $x, $(1 - y - h)\nset size $w, $h\n" * sp.o.axesconf end From 85fa05464d5940fa13f849465b7e6132bafdf7cb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 15:16:46 +0200 Subject: [PATCH 471/518] Gaston: reset key on contours --- src/backends/gaston.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index f201241a..2ef6daa2 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -309,7 +309,6 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) elseif st ∈ (:contour, :contour3d) push!(curveconf, "w lines") st == :contour && (gsp.axesconf *= "\nset view map\nunset surface") # 2D - gsp.axesconf *= "\nunset key" # FIXME: too many legend (key) entries levels = join(map(string, collect(contour_levels(series, clims))), ", ") gsp.axesconf *= "\nset contour base\nset cntrparam levels discrete $levels" elseif st ∈ (:surface, :heatmap) From defe808619a0607b05594ca1f80154e693a69570 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 15:23:42 +0200 Subject: [PATCH 472/518] Gaston: update attributes --- src/backends.jl | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index fab0df86..f78a012e 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -597,26 +597,23 @@ const _gaston_attr = merge_with_base_supported([ # :foreground_color_legend, # :foreground_color_grid, :foreground_color_axis, # :foreground_color_text, :foreground_color_border, - :label, - # :seriescolor, :seriesalpha, + :label, :seriescolor, :seriesalpha, :linecolor, :linestyle, :linewidth, :linealpha, :markershape, :markercolor, :markersize, :markeralpha, # :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, :markerstrokestyle, # :fillrange, :fillcolor, :fillalpha, # :bins, # :bar_width, :bar_edges, - # :title, - # :window_title, - :guide, - # :guide_position, - :lims, :ticks, :scale, # :flip, :rotation, + :title, :window_title, + :guide, :guide_position, + :lims, :ticks, :scale, :flip, :rotation, :tickfont, :guidefont, - # :legendfont, - # :grid, :legend, + :legendfont, :grid, :legend, # :colorbar, :colorbar_title, # :fill_z, :line_z, :marker_z, :levels, - # :ribbon, :quiver, :arrow, - # :orientation, + # :ribbon, + :quiver, + # :arrow, :orientation, # :overwrite_figure, # :polar, # :normalize, :weights, :contours, @@ -676,12 +673,7 @@ const _gaston_marker = [ :vline, ] -const _gaston_scale = [ - :identity, - # :ln, - # :log2, - :log10, -] +const _gaston_scale = [:identity, :ln, :log2, :log10] # ------------------------------------------------------------------------------ # unicodeplots From fe8d08123c23977bd9d29b781d2cdf22b01308f2 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:00:43 +0200 Subject: [PATCH 473/518] Gaston: fix wrong series_list causing segfault --- src/backends/gaston.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 2ef6daa2..a528da7a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -132,7 +132,7 @@ function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot else dims = RecipesPipeline.is3d(sp) || sp.attr[:projection] == "3d" || needs_any_3d_axes(sp) ? 3 : 2 any_label = false - for series ∈ plt.series_list + for series ∈ series_list(sp) if dims == 2 && series[:seriestype] ∈ (:heatmap, :contour) dims = 3 # we need heatmap/contour to use splot, not plot end From e4c8921ae96f83b4ba692938e86172559fd2a03e Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:11:17 +0200 Subject: [PATCH 474/518] Gaston: remove more key entries (e.g. :shape) --- src/backends/gaston.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index a528da7a..30c1d62e 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -196,12 +196,13 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) sp = series[:subplot]; gsp = sp.o x, y, z = series[:x], series[:y], series[:z] st = series[:seriestype] + @show st series[:ribbon] curves = [] if gsp.dims == 2 && z === nothing - for seg ∈ series_segments(series, st; check=true) + for (n, seg) ∈ enumerate(series_segments(series, st; check=true)) i, rng = seg.attr_index, seg.range - for sc ∈ gaston_seriesconf!(sp, series, i) + for sc ∈ gaston_seriesconf!(sp, series, i, n == 1) push!(curves, Gaston.Curve(x[rng], y[rng], nothing, nothing, sc)) end end @@ -221,7 +222,7 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) end end end - for sc ∈ gaston_seriesconf!(sp, series, 1) + for sc ∈ gaston_seriesconf!(sp, series, 1, true) push!(curves, Gaston.Curve(x, y, z, nothing, sc)) end end @@ -250,7 +251,7 @@ function gaston_hvline!(sp, series, curveconf, pt, dt, lw, lc, command) nothing end -function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) +function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, add_to_legend::Bool) #= gnuplot abbreviations (see gnuplot/src/set.c) --------------------------------------------- @@ -271,7 +272,7 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int) w: with =# gsp = sp.o; st = series[:seriestype]; extra = [] - add_to_legend = should_add_to_legend(series) && i == 1 + add_to_legend &= should_add_to_legend(series) curveconf = String[add_to_legend ? "title '$(series[:label])'" : "notitle"] clims = get_clims(sp, series) From d8a40f5400ac2fa239ab69b01051656da0313bfb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:12:07 +0200 Subject: [PATCH 475/518] Gaston: remove debug show(...) --- src/backends/gaston.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 30c1d62e..28561f8a 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -196,7 +196,6 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) sp = series[:subplot]; gsp = sp.o x, y, z = series[:x], series[:y], series[:z] st = series[:seriestype] - @show st series[:ribbon] curves = [] if gsp.dims == 2 && z === nothing From b7c6a65921c5e2e3926c9e3b5d04959613566762 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:18:19 +0200 Subject: [PATCH 476/518] Gaston: remove :vline, :hline markers --- src/backends/gaston.jl | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 28561f8a..d1e447c0 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -233,23 +233,6 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) nothing end -function gaston_hvline!(sp, series, curveconf, pt, dt, lw, lc, command) - if pt == :hline - lo, hi = axis_limits(sp, :x) - for y ∈ series[:y] - sp.o.axesconf *= "\nset arrow from $lo,$y to $hi,$y nohead lc $lc lw $lw dt $dt" - end - elseif pt == :vline - lo, hi = axis_limits(sp, :y) - for x ∈ series[:x] - sp.o.axesconf *= "\nset arrow from $x,$lo to $x,$hi nohead lc $lc lw $lw dt $dt" - end - else - push!(curveconf, command) - end - nothing -end - function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, add_to_legend::Bool) #= gnuplot abbreviations (see gnuplot/src/set.c) @@ -278,14 +261,14 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, if st ∈ (:scatter, :scatter3d) lc, dt, lw = gaston_lc_ls_lw(series, clims, i) pt, ps, mc = gaston_mk_ms_mc(series, clims, i) - gaston_hvline!(sp, series, curveconf, pt, dt, lw, mc, "w points pt $pt ps $ps lc $mc") + push!(curveconf, "w points pt $pt ps $ps lc $mc") elseif st ∈ (:path, :straightline, :path3d) lc, dt, lw = gaston_lc_ls_lw(series, clims, i) if series[:markershape] == :none # simplepath push!(curveconf, "w lines lc $lc dt $dt lw $lw") else pt, ps, mc = gaston_mk_ms_mc(series, clims, i) - gaston_hvline!(sp, series, curveconf, pt, dt, lw, mc, "w lp lc $mc dt $dt lw $lw pt $pt ps $ps") + push!(curveconf, "w lp lc $mc dt $dt lw $lw pt $pt ps $ps") end elseif st == :shape fc = gaston_color(get_fillcolor(series, i), get_fillalpha(series, i)) @@ -504,7 +487,6 @@ function gaston_marker(marker, alpha) marker == :dtriangle && return filled ? 11 : 10 marker == :diamond && return filled ? 13 : 12 marker == :pentagon && return filled ? 15 : 14 - marker ∈ (:vline, :hline) && return marker @warn "Gaston: unsupported marker $marker" return 1 From a94c49ab95cfe0f23e32fba7d9f03c04275de6a3 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:19:16 +0200 Subject: [PATCH 477/518] Gaston: remove unsupported :line, :vline markers --- src/backends.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index f78a012e..c440b4f2 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -669,8 +669,8 @@ const _gaston_marker = [ :dtriangle, :diamond, :pentagon, - :hline, - :vline, + # :hline, + # :vline, ] const _gaston_scale = [:identity, :ln, :log2, :log10] From 52be7387f2c0fc2639a5564151b73cea824c3ffb Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 17:53:08 +0200 Subject: [PATCH 478/518] Gaston: support polar --- src/backends/gaston.jl | 72 +++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 22 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index d1e447c0..7ae0d848 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -31,7 +31,7 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) - for series ∈ plt.series_list + for (s, series) ∈ enumerate(plt.series_list) gaston_add_series(plt, series) end @@ -90,6 +90,8 @@ function gaston_saveopts(plt::Plot{GastonBackend}) push!(saveopts, "background $(gaston_color(plt.attr[:background_color]))") + # push!(saveopts, "title '$(plt.attr[:window_title])'") + # Scale all plot elements to match Plots.jl DPI standard scaling = plt.attr[:dpi] / Plots.DPI push!(saveopts, "fontscale $scaling lw $scaling dl $scaling ps $scaling") @@ -219,6 +221,9 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) if ly == 2 && ly != nc y = collect(range(y[1], y[2], length=nc)) end + elseif st == :heatmap + length(x) == size(z, 2) + 1 && (x = @view x[1:end-1]) + length(y) == size(z, 1) + 1 && (y = @view y[1:end-1]) end end for sc ∈ gaston_seriesconf!(sp, series, 1, true) @@ -315,6 +320,8 @@ function gaston_parse_axes_args( # axesconf = String["set margins 2, 2, 2, 2"] # left, right, bottom, top axesconf = String[] + polar = ispolar(sp) && dims == 2 # cannot splot in polar coordinates + for letter ∈ (:x, :y, :z) (letter == :z && dims == 2) && continue axis = sp.attr[Symbol(letter, :axis)] @@ -322,9 +329,6 @@ function gaston_parse_axes_args( push!(axesconf, "set $(letter)label '$(axis[:guide])' $(gaston_font(guidefont(axis)))") mirror = axis[:mirror] ? "mirror" : "nomirror" - # handle ticks - push!(axesconf, "set $(letter)tics $(mirror) $(axis[:tick_direction]) $(gaston_font(tickfont(axis)))") - if axis[:scale] == :identity logscale, base = "nologscale", "" elseif axis[:scale] == :log10 @@ -336,27 +340,34 @@ function gaston_parse_axes_args( end push!(axesconf, "set $logscale $letter $base") - # major tick locations - if axis[:ticks] != :native - if axis[:flip] - hi, lo = axis_limits(sp, letter) - else - lo, hi = axis_limits(sp, letter) - end - push!(axesconf, "set $(letter)range [$lo:$hi]") + # handle ticks + if polar + push!(axesconf, "set size square\nunset $(letter)tics") + else + push!(axesconf, "set $(letter)tics $(mirror) $(axis[:tick_direction]) $(gaston_font(tickfont(axis)))") - ticks = get_ticks(sp, axis) - gaston_set_ticks!(axesconf, ticks, letter, "", "") + # major tick locations + if axis[:ticks] != :native + if axis[:flip] + hi, lo = axis_limits(sp, letter) + else + lo, hi = axis_limits(sp, letter) + end + push!(axesconf, "set $(letter)range [$lo:$hi]") - if axis[:minorticks] != :native - minor_ticks = get_minor_ticks(sp, axis, ticks) - gaston_set_ticks!(axesconf, minor_ticks, letter, "m", "add") + ticks = get_ticks(sp, axis) + gaston_set_ticks!(axesconf, ticks, letter, "", "") + + if axis[:minorticks] != :native + minor_ticks = get_minor_ticks(sp, axis, ticks) + gaston_set_ticks!(axesconf, minor_ticks, letter, "m", "add") + end end end - + if axis[:grid] - push!(axesconf, "set grid $(letter)tics") - axis[:minorgrid] && push!(axesconf, "set grid m$(letter)tics") + push!(axesconf, "set grid " * (polar ? "polar" : "$(letter)tics")) + axis[:minorgrid] && push!(axesconf, "set grid " * (polar ? "polar" : "m$(letter)tics")) end ratio = get_aspect_ratio(sp) @@ -375,6 +386,23 @@ function gaston_parse_axes_args( push!(axesconf, "set title '$(sp[:title])' $(gaston_font(titlefont(sp)))") end + if polar + push!(axesconf, "unset border\nset polar\nset border polar") + tmin, tmax = axis_limits(sp, :x, false, false) + rmin, rmax = axis_limits(sp, :y, false, false) + rticks = get_ticks(sp, :y) + if (ttype = ticksType(rticks)) == :ticks + gaston_ticks = String[string(t) for (t, l) ∈ zip(rticks...)] + elseif ttype == :ticks_and_labels + gaston_ticks = String["'$l' $t" for (t, l) ∈ zip(rticks...)] + end + push!(axesconf, "set rtics ( " * join(gaston_ticks, ", ") * " ) $(gaston_font(tickfont(sp.attr[:yaxis])))") + push!(axesconf, "set trange [$(min(0, tmin)):$(max(2π, tmax))]") + push!(axesconf, "set rrange [$rmin:$rmax]") + push!(axesconf, "set ttics 0,30 format \"%g\".GPVAL_DEGREE_SIGN $(gaston_font(tickfont(sp.attr[:xaxis])))") + push!(axesconf, "set mttics 3") + end + return join(axesconf, "\n") end @@ -385,9 +413,8 @@ function gaston_set_ticks!(axesconf, ticks, letter, maj_min, add) return end - ttype = ticksType(ticks) gaston_ticks = String[] - if ttype == :ticks + if (ttype = ticksType(ticks)) == :ticks tick_locs = @view ticks[:] for i ∈ eachindex(tick_locs) tick = if maj_min == "m" @@ -487,6 +514,7 @@ function gaston_marker(marker, alpha) marker == :dtriangle && return filled ? 11 : 10 marker == :diamond && return filled ? 13 : 12 marker == :pentagon && return filled ? 15 : 14 + marker ∈ (:vline, :hline) && return marker @warn "Gaston: unsupported marker $marker" return 1 From 9308dd74a806b44162c9fc6159ec1adee1366ec9 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 17:54:15 +0200 Subject: [PATCH 479/518] Update gaston.jl --- src/backends/gaston.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 7ae0d848..2fdf84ab 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -514,7 +514,6 @@ function gaston_marker(marker, alpha) marker == :dtriangle && return filled ? 11 : 10 marker == :diamond && return filled ? 13 : 12 marker == :pentagon && return filled ? 15 : 14 - marker ∈ (:vline, :hline) && return marker @warn "Gaston: unsupported marker $marker" return 1 From 9985157eb8672b07ff45d7f569874b095dfe1478 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 17:54:54 +0200 Subject: [PATCH 480/518] Update backends.jl --- src/backends.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends.jl b/src/backends.jl index c440b4f2..a82efca5 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -615,7 +615,7 @@ const _gaston_attr = merge_with_base_supported([ :quiver, # :arrow, :orientation, # :overwrite_figure, - # :polar, + :polar, # :normalize, :weights, :contours, :aspect_ratio, :tick_direction, From 670fba56a72a1f501c5751cbf4c68864a87597a1 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 17:55:35 +0200 Subject: [PATCH 481/518] Update examples.jl --- src/examples.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index 6e616b68..3915ce82 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1244,7 +1244,6 @@ _backend_skips = Dict( :unicodeplots => [6, 10, 22, 24, 28, 38, 43, 45, 47, 49, 50, 51, 55], :gaston => [ 2, # animations - 27, # TODO: support polar 31, # animations 47, # TODO: support mesh3d 49, # TODO: support polar From c6d9332cf1112602251d3a68afefbb421d2e1fbe Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 18:03:44 +0200 Subject: [PATCH 482/518] Gaston: fix polar ticks --- src/backends/gaston.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 2fdf84ab..e38a890e 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -31,7 +31,7 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) - for (s, series) ∈ enumerate(plt.series_list) + for series ∈ plt.series_list gaston_add_series(plt, series) end @@ -392,7 +392,7 @@ function gaston_parse_axes_args( rmin, rmax = axis_limits(sp, :y, false, false) rticks = get_ticks(sp, :y) if (ttype = ticksType(rticks)) == :ticks - gaston_ticks = String[string(t) for (t, l) ∈ zip(rticks...)] + gaston_ticks = string.(ticks) elseif ttype == :ticks_and_labels gaston_ticks = String["'$l' $t" for (t, l) ∈ zip(rticks...)] end From 7b1941b12926730092b34fafef88cad40fadf3e2 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Sun, 1 Aug 2021 18:04:10 +0200 Subject: [PATCH 483/518] Typo --- src/backends/gaston.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index e38a890e..f2246a43 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -392,7 +392,7 @@ function gaston_parse_axes_args( rmin, rmax = axis_limits(sp, :y, false, false) rticks = get_ticks(sp, :y) if (ttype = ticksType(rticks)) == :ticks - gaston_ticks = string.(ticks) + gaston_ticks = string.(rticks) elseif ttype == :ticks_and_labels gaston_ticks = String["'$l' $t" for (t, l) ∈ zip(rticks...)] end From b79a2d32fef7aaa06ef395602565a2946a4812ca Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 2 Aug 2021 12:58:16 +0200 Subject: [PATCH 484/518] fix series_annotations for bar (#3742) * fix series_annotations for bar * fix my typos in bar recipe * fix fillrange of annotation series for groupedbar * fix series_annotations for bar * fix my typos in bar recipe * fix fillrange of annotation series for groupedbar * fix series_annotations for bar * fix my typos in bar recipe * fix fillrange of annotation series for groupedbar * fix series_annotations for bar * fix fillrange of annotation series for groupedbar --- src/recipes.jl | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/recipes.jl b/src/recipes.jl index c2911db9..cd1dce43 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -472,16 +472,6 @@ end fillto = map(x -> _is_positive(x) ? typeof(baseline)(x) : baseline, fillto) end - if !isnothing(plotattributes[:series_annotations]) - if isvertical(plotattributes) - annotations := (x,y,plotattributes[:series_annotations].strs,:bottom) - else - annotations := (y,x,plotattributes[:series_annotations].strs,:left) - end - series_annotations := nothing - end - - # create the bar shapes by adding x/y segments xseg, yseg = Segments(), Segments() for i = 1:ny yi = procy[i] @@ -507,15 +497,30 @@ end # switch back if !isvertical(plotattributes) xseg, yseg = yseg, xseg + x, y = y, x end - # reset orientation orientation := default(:orientation) - x := xseg.pts - y := yseg.pts - seriestype := :shape + # draw the bar shapes + @series begin + seriestype := :shape + series_annotations := nothing + primary := true + x := xseg.pts + y := yseg.pts + () + end + + # add empty series + primary := false + seriestype := :scatter + markersize := 0 + markeralpha := 0 + fillrange := nothing + x := x + y := y () end @deps bar shape From d6878a8ea09de0c18154a1faba98b96295b1c5ea Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 2 Aug 2021 12:53:02 +0200 Subject: [PATCH 485/518] remove the need for Plots.pct in annotations --- src/components.jl | 80 ++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 46 deletions(-) diff --git a/src/components.jl b/src/components.jl index d07bcce0..c2887516 100644 --- a/src/components.jl +++ b/src/components.jl @@ -573,64 +573,52 @@ function Base.iterate(ea::EachAnn, i = 1) ((_cycle(ea.x,i), _cycle(ea.y,i), str, fnt), i+1) end +# ----------------------------------------------------------------------- annotations(::Nothing) = [] annotations(anns::AVec) = anns annotations(anns::AMat) = map(annotations, anns) annotations(anns) = Any[anns] annotations(sa::SeriesAnnotations) = sa +_annotationfont(sp::Subplot) = Plots.font(; + family=sp[:annotationfontfamily], + pointsize=sp[:annotationfontsize], + halign=sp[:annotationhalign], + valign=sp[:annotationvalign], + rotation=sp[:annotationrotation], + color=sp[:annotationcolor], +) + +_annotation(sp, font, lab, pos...; alphabet="abcdefghijklmnopqrstuvwxyz") = ( + if lab == :auto + (pos..., text("($(alphabet[sp[:subplot_index]]))", font)) + else + (pos..., isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab[1], font, lab[2:end]...) : text(lab, font)) + end +) + # Expand arrays of coordinates, positions and labels into induvidual annotations # and make sure labels are of type PlotText -function process_annotation(sp::Subplot, xs, ys, labs, font = nothing) +function process_annotation(sp::Subplot, xs, ys, labs, font=_annotationfont(sp)) anns = [] labs = makevec(labs) xlength = length(methods(length, (typeof(xs),))) == 0 ? 1 : length(xs) ylength = length(methods(length, (typeof(ys),))) == 0 ? 1 : length(ys) - if isnothing(font) - font = Plots.font(; - family=sp[:annotationfontfamily], - pointsize=sp[:annotationfontsize], - halign=sp[:annotationhalign], - valign=sp[:annotationvalign], - rotation=sp[:annotationrotation], - color=sp[:annotationcolor], - ) - end for i in 1:max(xlength, ylength, length(labs)) x, y, lab = _cycle(xs, i), _cycle(ys, i), _cycle(labs, i) - x = typeof(x) <: TimeType ? Dates.value(x) : x - y = typeof(y) <: TimeType ? Dates.value(y) : y - if lab == :auto - alphabet = "abcdefghijklmnopqrstuvwxyz" - push!(anns, (x, y, text(string("(", alphabet[sp[:subplot_index]], ")"), font))) - else - push!(anns, (x, y, isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab[1], font, lab[2:end]...) : text(lab, font))) - end + x = typeof(x) <: TimeType ? Dates.value(x) : x + y = typeof(y) <: TimeType ? Dates.value(y) : y + push!(anns, _annotation(sp, font, lab, x, y)) end anns end -function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol}, labs, font = nothing) + +function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol,Tuple}, labs, font=_annotationfont(sp)) anns = [] positions, labs = makevec(positions), makevec(labs) - if isnothing(font) - font = Plots.font(; - family=sp[:annotationfontfamily], - pointsize=sp[:annotationfontsize], - halign=sp[:annotationhalign], - valign=sp[:annotationvalign], - rotation=sp[:annotationrotation], - color=sp[:annotationcolor], - ) - end for i in 1:max(length(positions), length(labs)) pos, lab = _cycle(positions, i), _cycle(labs, i) - pos = get(_positionAliases, pos, pos) - if lab == :auto - alphabet = "abcdefghijklmnopqrstuvwxyz" - push!(anns, (pos, text(string("(", alphabet[sp[:subplot_index]], ")"), font))) - else - push!(anns, (pos, isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab[1], font, lab[2:end]...) : text(lab, font))) - end + push!(anns, _annotation(sp, font, lab, get(_positionAliases, pos, pos))) end anns end @@ -640,7 +628,7 @@ process_any_label(lab, font=Font()) = lab isa Tuple ? text(lab...) : text(lab, f _relative_position(xmin, xmax, pos::Length{:pct}) = xmin + pos.value * (xmax - xmin) # Give each annotation coordinates based on specified position -locate_annotation( +function locate_annotation( sp::Subplot, pos::Symbol, label::PlotText; position_multiplier=Dict{Symbol, Tuple{Float64,Float64}}( :topleft => (0.1pct, 0.9pct), @@ -650,7 +638,7 @@ locate_annotation( :bottomcenter => (0.5pct, 0.1pct), :bottomright => (0.9pct, 0.1pct), ) -) = begin +) x, y = position_multiplier[pos] ( _relative_position(axis_limits(sp, :x)..., x), @@ -661,15 +649,15 @@ end locate_annotation(sp::Subplot, x, y, label::PlotText) = (x, y, label) locate_annotation(sp::Subplot, x, y, z, label::PlotText) = (x, y, z, label) -locate_annotation(sp::Subplot, x::Length{:pct}, y::Length{:pct}, label::PlotText) = ( - _relative_position(axis_limits(sp, :x)..., x), - _relative_position(axis_limits(sp, :y)..., y), +locate_annotation(sp::Subplot, rel::NTuple{2,<:Number}, label::PlotText) = ( + _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), + _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), label ) -locate_annotation(sp::Subplot, x::Length{:pct}, y::Length{:pct}, z::Length{:pct}, label::PlotText) = ( - _relative_position(axis_limits(sp, :x)..., x), - _relative_position(axis_limits(sp, :y)..., y), - _relative_position(axis_limits(sp, :z)..., z), +locate_annotation(sp::Subplot, rel::NTuple{3,<:Number}, label::PlotText) = ( + _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), + _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), + _relative_position(axis_limits(sp, :z)..., rel[3] * Plots.pct), label ) # ----------------------------------------------------------------------- From 07d32197a1f47d7c086d9ada9617a6cda133f635 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 2 Aug 2021 16:55:51 +0200 Subject: [PATCH 486/518] add regression test --- test/test_components.jl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/test_components.jl b/test/test_components.jl index ce616075..2cb2a931 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -148,4 +148,14 @@ end @test spl.series_list[3].plotattributes[:series_annotations].strs == ["1/3"] @test spl.series_list[4].plotattributes[:series_annotations].strs == ["1/4"] @test spl.series_list[5].plotattributes[:series_annotations].strs == ["1/5"] + + p = plot([1, 2], annotations=(1.5, 2, text("foo", :left))) + x, y, txt = p.subplots[end][:annotations][end] + @test (x, y) == (1.5, 2) + @test txt.str == "foo" + + p = plot([1, 2], annotations=((.1, .5), :auto)) + pos, txt = p.subplots[end][:annotations][end] + @test pos == (.1, .5) + @test txt.str == "(a)" end From 2df85eb0fd328a4f876f2d6cb53c0aafdf38a899 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 2 Aug 2021 20:14:40 +0200 Subject: [PATCH 487/518] Update examples.jl --- src/examples.jl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/examples.jl b/src/examples.jl index 3915ce82..b40d577b 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -369,10 +369,12 @@ const _examples = PlotExample[ "Annotations", """ The `annotations` keyword is used for text annotations in data-coordinates. Pass in a - tuple `(x, y, text)`, or a vector of annotations, each of which is a tuple of `x`, `y` - and `text`. - `text` may be a simple `String`, or a `PlotText` object, which can be - built with the method `text(string, attrs...)`. + tuple `(x, y, text)`, a vector of annotations, each of which is a tuple of `x`, `y` + and `text`. You can position annotations using relative coordinates with the syntax + `((px, py), text)`, where for example `rx=.25` positions the annotation at `25%` of + the plot's width. + `text` may be a simple `String`, or a `PlotText` object, which can be built with the + method `text(string, attrs...)`. This wraps font and color attributes and allows you to set text styling. `text` may also be a tuple `(string, attrs...)` of arguments which are passed to `Plots.text`. From ff2ae4fe4fe95bc9ea6a4a2b80f86f4c94048362 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 2 Aug 2021 21:54:35 +0200 Subject: [PATCH 488/518] typo --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index b40d577b..57817243 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -371,7 +371,7 @@ const _examples = PlotExample[ The `annotations` keyword is used for text annotations in data-coordinates. Pass in a tuple `(x, y, text)`, a vector of annotations, each of which is a tuple of `x`, `y` and `text`. You can position annotations using relative coordinates with the syntax - `((px, py), text)`, where for example `rx=.25` positions the annotation at `25%` of + `((px, py), text)`, where for example `px=.25` positions the annotation at `25%` of the plot's width. `text` may be a simple `String`, or a `PlotText` object, which can be built with the method `text(string, attrs...)`. From a72b4a3481999323b6b49c06c332a9cf40bb05c1 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Mon, 2 Aug 2021 23:30:54 +0200 Subject: [PATCH 489/518] specify relative coordinates --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index 57817243..40acf561 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -372,7 +372,7 @@ const _examples = PlotExample[ tuple `(x, y, text)`, a vector of annotations, each of which is a tuple of `x`, `y` and `text`. You can position annotations using relative coordinates with the syntax `((px, py), text)`, where for example `px=.25` positions the annotation at `25%` of - the plot's width. + the subplot's axis width. `text` may be a simple `String`, or a `PlotText` object, which can be built with the method `text(string, attrs...)`. This wraps font and color attributes and allows you to set text styling. From c4681682a1ed5f2834370eefb69dfe76204645f7 Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Tue, 3 Aug 2021 09:58:28 +0200 Subject: [PATCH 490/518] 1.20.0 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 364ea80f..e367c5cb 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.19.4" +version = "1.20.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From f331bfa0102589ab416498218b5d55ee2114b24c Mon Sep 17 00:00:00 2001 From: t-bltg Date: Mon, 2 Aug 2021 20:55:08 +0200 Subject: [PATCH 491/518] allow passing tuple to series_annotations --- src/args.jl | 4 ++-- src/backends.jl | 1 + src/components.jl | 32 +++++++++++++++----------------- test/test_components.jl | 18 ++++++++---------- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/args.jl b/src/args.jl index 5e624c0c..d4c0eb0e 100644 --- a/src/args.jl +++ b/src/args.jl @@ -996,9 +996,9 @@ function processFontArg!(plotattributes::AKW, fontname::Symbol, arg) elseif arg == :center plotattributes[Symbol(fontname, :halign)] = :hcenter plotattributes[Symbol(fontname, :valign)] = :vcenter - elseif arg in (:hcenter, :left, :right) + elseif arg ∈ _haligns plotattributes[Symbol(fontname, :halign)] = arg - elseif arg in (:vcenter, :top, :bottom) + elseif arg ∈ _valigns plotattributes[Symbol(fontname, :valign)] = arg elseif T <: Colorant plotattributes[Symbol(fontname, :color)] = arg diff --git a/src/backends.jl b/src/backends.jl index a82efca5..d75967a4 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -70,6 +70,7 @@ function text_size(lablen::Int, sz::Number, rot::Number = 0) width, height end text_size(lab::AbstractString, sz::Number, rot::Number = 0) = text_size(length(lab), sz, rot) +text_size(lab::PlotText, sz::Number, rot::Number = 0) = text_size(length(lab.str), sz, rot) # account for the size/length/rotation of tick labels function tick_padding(sp::Subplot, axis::Axis) diff --git a/src/components.jl b/src/components.jl index 2f76a2fa..c95b51ea 100644 --- a/src/components.jl +++ b/src/components.jl @@ -475,10 +475,15 @@ mutable struct SeriesAnnotations scalefactor::Tuple end +_text_label(lab::Tuple, font) = text(lab[1], font, lab[2:end]...) +_text_label(lab::PlotText, font) = lab +_text_label(lab, font) = text(lab, font) + +series_annotations(anns::AMat) = map(series_annotations, anns) series_annotations(scalar) = series_annotations([scalar]) -function series_annotations(anns::AMat) - map(series_annotations, anns) -end +series_annotations(anns::SeriesAnnotations) = anns +series_annotations(::Nothing) = nothing + function series_annotations(strs::AbstractVector, args...) fnt = font() shp = nothing @@ -503,10 +508,8 @@ function series_annotations(strs::AbstractVector, args...) # scale!(s, scalefactor, scalefactor, (0,0)) # end # end - SeriesAnnotations(strs, fnt, shp, scalefactor) + SeriesAnnotations([_text_label(s, fnt) for s ∈ strs], fnt, shp, scalefactor) end -series_annotations(anns::SeriesAnnotations) = anns -series_annotations(::Nothing) = nothing function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) anns = series[:series_annotations] @@ -574,11 +577,11 @@ function Base.iterate(ea::EachAnn, i = 1) end # ----------------------------------------------------------------------- -annotations(::Nothing) = [] -annotations(anns::AVec) = anns annotations(anns::AMat) = map(annotations, anns) -annotations(anns) = Any[anns] annotations(sa::SeriesAnnotations) = sa +annotations(anns::AVec) = anns +annotations(anns) = Any[anns] +annotations(::Nothing) = [] _annotationfont(sp::Subplot) = Plots.font(; family=sp[:annotationfontfamily], @@ -589,12 +592,9 @@ _annotationfont(sp::Subplot) = Plots.font(; color=sp[:annotationcolor], ) -_annotation(sp, font, lab, pos...; alphabet="abcdefghijklmnopqrstuvwxyz") = ( - if lab == :auto - (pos..., text("($(alphabet[sp[:subplot_index]]))", font)) - else - (pos..., isa(lab, PlotText) ? lab : isa(lab, Tuple) ? text(lab[1], font, lab[2:end]...) : text(lab, font)) - end +_annotation(sp::Subplot, font, lab, pos...; alphabet="abcdefghijklmnopqrstuvwxyz") = ( + pos..., + lab == :auto ? text("($(alphabet[sp[:subplot_index]]))", font) : _text_label(lab, font) ) # Expand arrays of coordinates, positions and labels into induvidual annotations @@ -623,8 +623,6 @@ function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol,Tu anns end -process_any_label(lab, font=Font()) = lab isa Tuple ? text(lab...) : text(lab, font) - _relative_position(xmin, xmax, pos::Length{:pct}) = xmin + pos.value * (xmax - xmin) # Give each annotation coordinates based on specified position diff --git a/test/test_components.jl b/test/test_components.jl index 2cb2a931..aae50da3 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -116,7 +116,7 @@ end end @testset "Series Annotations" begin - square = Shape([(0, 0), (1, 0), (1, 1), (0, 1)]) + square = Shape([(0., 0.), (1., 0.), (1., 1.), (0., 1.)]) @test_logs (:warn, "Unused SeriesAnnotations arg: triangle (Symbol)") begin p = plot( [1, 2, 3], @@ -130,7 +130,7 @@ end ), ) sa = p.series_list[1].plotattributes[:series_annotations] - @test sa.strs == ["a"] + @test only(sa.strs).str == "a" @test sa.font.family == "courier" @test sa.baseshape == square @test sa.scalefactor == (1, 4) @@ -141,21 +141,19 @@ end layout = (5, 1), ylims = (-1.1, 1.1), xlims = (0, 5), - series_annotations = permutedims([["1/1"],["1/2"],["1/3"],["1/4"],["1/5"]]), + series_annotations = permutedims([["1/1"], ["1/2"], ["1/3"], ["1/4"], ["1/5"]]), ) - @test spl.series_list[1].plotattributes[:series_annotations].strs == ["1/1"] - @test spl.series_list[2].plotattributes[:series_annotations].strs == ["1/2"] - @test spl.series_list[3].plotattributes[:series_annotations].strs == ["1/3"] - @test spl.series_list[4].plotattributes[:series_annotations].strs == ["1/4"] - @test spl.series_list[5].plotattributes[:series_annotations].strs == ["1/5"] + for i ∈ 1:5 + @test only(spl.series_list[i].plotattributes[:series_annotations].strs).str == "1/$i" + end p = plot([1, 2], annotations=(1.5, 2, text("foo", :left))) - x, y, txt = p.subplots[end][:annotations][end] + x, y, txt = only(p.subplots[end][:annotations]) @test (x, y) == (1.5, 2) @test txt.str == "foo" p = plot([1, 2], annotations=((.1, .5), :auto)) - pos, txt = p.subplots[end][:annotations][end] + pos, txt = only(p.subplots[end][:annotations]) @test pos == (.1, .5) @test txt.str == "(a)" end From 5c13f007165feb03c44b89d14ffcd670234580d3 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Tue, 3 Aug 2021 10:37:05 +0200 Subject: [PATCH 492/518] cleanup --- src/components.jl | 263 +++++++++++++++++++++------------------------- 1 file changed, 118 insertions(+), 145 deletions(-) diff --git a/src/components.jl b/src/components.jl index c95b51ea..4164bede 100644 --- a/src/components.jl +++ b/src/components.jl @@ -1,10 +1,13 @@ const P2 = GeometryBasics.Point2{Float64} const P3 = GeometryBasics.Point3{Float64} -nanpush!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN,NaN)); push!(a, b)) -nanappend!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN,NaN)); append!(a, b)) -nanpush!(a::AbstractVector{P3}, b) = (push!(a, P3(NaN,NaN,NaN)); push!(a, b)) -nanappend!(a::AbstractVector{P3}, b) = (push!(a, P3(NaN,NaN,NaN)); append!(a, b)) +const _haligns = :hcenter, :left, :right +const _valigns = :vcenter, :top, :bottom + +nanpush!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN, NaN)); push!(a, b)) +nanappend!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN, NaN)); append!(a, b)) +nanpush!(a::AbstractVector{P3}, b) = (push!(a, P3(NaN, NaN, NaN)); push!(a, b)) +nanappend!(a::AbstractVector{P3}, b) = (push!(a, P3(NaN, NaN, NaN)); append!(a, b)) compute_angle(v::P2) = (angle = atan(v[2], v[1]); angle < 0 ? 2π - angle : angle) # ------------------------------------------------------------- @@ -38,9 +41,7 @@ vertices(shape::Shape) = collect(zip(shape.x, shape.y)) @deprecate shape_coords coords "return the vertex points from a Shape or Segments object" -function coords(shape::Shape) - shape.x, shape.y -end +coords(shape::Shape) = shape.x, shape.y #coords(shapes::AVec{Shape}) = unzip(map(coords, shapes)) function coords(shapes::AVec{<:Shape}) @@ -51,12 +52,12 @@ function coords(shapes::AVec{<:Shape}) end "get an array of tuples of points on a circle with radius `r`" -function partialcircle(start_θ, end_θ, n = 20, r=1) - [(r*cos(u), r*sin(u)) for u in range(start_θ, stop=end_θ, length=n)] -end +partialcircle(start_θ, end_θ, n=20, r=1) = [ + (r*cos(u), r*sin(u)) for u in range(start_θ, stop=end_θ, length=n) +] "interleave 2 vectors into each other (like a zipper's teeth)" -function weave(x,y; ordering = Vector[x,y]) +function weave(x, y; ordering=Vector[x, y]) ret = eltype(x)[] done = false while !done @@ -72,7 +73,7 @@ function weave(x,y; ordering = Vector[x,y]) end "create a star by weaving together points from an outer and inner circle. `n` is the number of arms" -function makestar(n; offset = -0.5, radius = 1.0) +function makestar(n; offset=-0.5, radius=1.0) z1 = offset * π z2 = z1 + π / (n) outercircle = partialcircle(z1, z1 + 2π, n+1, radius) @@ -81,27 +82,24 @@ function makestar(n; offset = -0.5, radius = 1.0) end "create a shape by picking points around the unit circle. `n` is the number of point/sides, `offset` is the starting angle" -function makeshape(n; offset = -0.5, radius = 1.0) - z = offset * π - Shape(partialcircle(z, z + 2π, n+1, radius)) -end +makeshape(n; offset=-0.5, radius=1.0) = Shape( + partialcircle(offset * π, offset * π + 2π, n+1, radius) +) -function makecross(; offset = -0.5, radius = 1.0) +function makecross(; offset=-0.5, radius=1.0) z2 = offset * π z1 = z2 - π/8 outercircle = partialcircle(z1, z1 + 2π, 9, radius) innercircle = partialcircle(z2, z2 + 2π, 5, 0.5radius) Shape(weave(outercircle, innercircle, - ordering=Vector[outercircle,innercircle,outercircle])) + ordering=Vector[outercircle, innercircle, outercircle])) end from_polar(angle, dist) = P2(dist*cos(angle), dist*sin(angle)) -function makearrowhead(angle; h = 2.0, w = 0.4) - tip = from_polar(angle, h) - Shape(P2[(0,0), from_polar(angle - 0.5π, w) - tip, - from_polar(angle + 0.5π, w) - tip, (0,0)]) -end +makearrowhead(angle; h=2.0, w=0.4, tip=from_polar(angle, h)) = Shape( + P2[(0, 0), from_polar(angle - 0.5π, w) - tip, from_polar(angle + 0.5π, w) - tip, (0, 0)] +) const _shapes = KW( :circle => makeshape(20), @@ -117,11 +115,11 @@ const _shapes = KW( :octagon => makeshape(8), :cross => makecross(offset=-0.25), :xcross => makecross(), - :vline => Shape([(0,1),(0,-1)]), - :hline => Shape([(1,0),(-1,0)]), + :vline => Shape([(0, 1), (0, -1)]), + :hline => Shape([(1, 0), (-1, 0)]), ) -for n in [4,5,6,7,8] +for n in 4:8 _shapes[Symbol("star$n")] = makestar(n) end @@ -129,20 +127,19 @@ Shape(k::Symbol) = deepcopy(_shapes[k]) # ----------------------------------------------------------------------- - # uses the centroid calculation from https://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon "return the centroid of a Shape" function center(shape::Shape) x, y = coords(shape) n = length(x) - A, Cx, Cy = 0.0, 0.0, 0.0 - for i=1:n - ip1 = i==n ? 1 : i+1 + A, Cx, Cy = 0, 0, 0 + for i ∈ 1:n + ip1 = i == n ? 1 : i+1 A += x[i] * y[ip1] - x[ip1] * y[i] end A *= 0.5 - for i=1:n - ip1 = i==n ? 1 : i+1 + for i ∈ 1:n + ip1 = i == n ? 1 : i+1 m = (x[i] * y[ip1] - x[ip1] * y[i]) Cx += (x[i] + x[ip1]) * m Cy += (y[i] + y[ip1]) * m @@ -150,72 +147,64 @@ function center(shape::Shape) Cx / 6A, Cy / 6A end -function scale!(shape::Shape, x::Real, y::Real = x, c = center(shape)) +function scale!(shape::Shape, x::Real, y::Real=x, c=center(shape)) sx, sy = coords(shape) cx, cy = c - for i=eachindex(sx) + for i ∈ eachindex(sx) sx[i] = (sx[i] - cx) * x + cx sy[i] = (sy[i] - cy) * y + cy end shape end -function scale(shape::Shape, x::Real, y::Real = x, c = center(shape)) - shapecopy = deepcopy(shape) - scale!(shapecopy, x, y, c) -end +scale(shape::Shape, x::Real, y::Real=x, c=center(shape)) = scale!(deepcopy(shape), x, y, c) + "translate a Shape in space" -function translate!(shape::Shape, x::Real, y::Real = x) +function translate!(shape::Shape, x::Real, y::Real=x) sx, sy = coords(shape) - for i=eachindex(sx) + for i ∈ eachindex(sx) sx[i] += x sy[i] += y end shape end -function translate(shape::Shape, x::Real, y::Real = x) - shapecopy = deepcopy(shape) - translate!(shapecopy, x, y) -end +translate(shape::Shape, x::Real, y::Real=x) = translate!(deepcopy(shape), x, y) -function rotate_x(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) +rotate_x(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) = ( (x - centerx) * cos(Θ) - (y - centery) * sin(Θ) + centerx -end +) -function rotate_y(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) +rotate_y(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) = ( (y - centery) * cos(Θ) + (x - centerx) * sin(Θ) + centery -end +) -function rotate(x::Real, y::Real, θ::Real, c = center(shape)) - cx, cy = c - rotate_x(x, y, Θ, cx, cy), rotate_y(x, y, Θ, cx, cy) -end +rotate(x::Real, y::Real, θ::Real, c=center(shape)) = ( + rotate_x(x, y, Θ, c...), + rotate_y(x, y, Θ, c...), +) -function rotate!(shape::Shape, Θ::Real, c = center(shape)) +function rotate!(shape::Shape, Θ::Real, c=center(shape)) x, y = coords(shape) - cx, cy = c - for i=eachindex(x) - xi = rotate_x(x[i], y[i], Θ, cx, cy) - yi = rotate_y(x[i], y[i], Θ, cx, cy) + for i ∈ eachindex(x) + xi = rotate_x(x[i], y[i], Θ, c...) + yi = rotate_y(x[i], y[i], Θ, c...) x[i], y[i] = xi, yi end shape end "rotate an object in space" -function rotate(shape::Shape, θ::Real, c = center(shape)) +function rotate(shape::Shape, θ::Real, c=center(shape)) x, y = coords(shape) - cx, cy = c - x_new = rotate_x.(x, y, θ, cx, cy) - y_new = rotate_y.(x, y, θ, cx, cy) + x_new = rotate_x.(x, y, θ, c...) + y_new = rotate_y.(x, y, θ, c...) Shape(x_new, y_new) end # ----------------------------------------------------------------------- - mutable struct Font family::AbstractString pointsize::Int @@ -239,17 +228,16 @@ arguments (which are distinguished by type/value) or as keyword arguments. # Examples ```julia-repl julia> font(8) -julia> font(family="serif",halign=:center,rotation=45.0) +julia> font(family="serif", halign=:center, rotation=45.0) ``` """ -function font(args...;kw...) - +function font(args...; kw...) # defaults family = "sans-serif" pointsize = 14 halign = :hcenter valign = :vcenter - rotation = 0.0 + rotation = 0 color = colorant"black" for arg in args @@ -265,9 +253,9 @@ function font(args...;kw...) elseif arg == :center halign = :hcenter valign = :vcenter - elseif arg in (:hcenter, :left, :right) + elseif arg ∈ _haligns halign = arg - elseif arg in (:vcenter, :top, :bottom) + elseif arg ∈ _valigns valign = arg elseif T <: Colorant color = arg @@ -282,33 +270,29 @@ function font(args...;kw...) elseif typeof(arg) <: Real rotation = convert(Float64, arg) else - @warn("Unused font arg: $arg ($(typeof(arg)))") + @warn "Unused font arg: $arg ($(typeof(arg)))" end end - for symbol in keys(kw) - if symbol == :family - family = string(kw[:family]) - elseif symbol == :pointsize - pointsize = kw[:pointsize] - elseif symbol == :halign - halign = kw[:halign] - if halign == :center - halign = :hcenter - end - @assert halign in (:hcenter, :left, :right) - elseif symbol == :valign - valign = kw[:valign] - if valign == :center - valign = :vcenter - end - @assert valign in (:vcenter, :top, :bottom) - elseif symbol == :rotation - rotation = kw[:rotation] - elseif symbol == :color - color = parse(Colorant, kw[:color]) + for sym in keys(kw) + if sym == :family + family = string(kw[sym]) + elseif sym == :pointsize + pointsize = kw[sym] + elseif sym == :halign + halign = kw[sym] + halign == :center && (halign = :hcenter) + @assert halign ∈ _haligns + elseif sym == :valign + valign = kw[sym] + valign == :center && (valign = :vcenter) + @assert valign ∈ _valigns + elseif sym == :rotation + rotation = kw[sym] + elseif sym == :color + color = parse(Colorant, kw[sym]) else - @warn("Unused font kwarg: $symbol") + @warn "Unused font kwarg: $sym" end end @@ -331,7 +315,7 @@ function scalefontsizes(factor::Number) scalefontsize(k, factor) end - for letter in (:x,:y,:z) + for letter in (:x, :y, :z) for k in keys(_initial_ax_fontsizes) scalefontsize(Symbol(letter, k), factor) end @@ -352,7 +336,7 @@ function scalefontsizes() end end - for letter in (:x,:y,:z) + for letter in (:x, :y, :z) for k in keys(_initial_ax_fontsizes) if k in keys(_initial_fontsizes) f = default(Symbol(letter, k)) @@ -381,16 +365,12 @@ Create a PlotText object wrapping a string with font info, for plot annotations. text(t::PlotText) = t text(t::PlotText, font::Font) = PlotText(t.str, font) text(str::AbstractString, f::Font) = PlotText(str, f) -function text(str, args...;kw...) - PlotText(string(str), font(args...;kw...)) -end +text(str, args...; kw...) = PlotText(string(str), font(args...; kw...)) Base.length(t::PlotText) = length(t.str) # ----------------------------------------------------------------------- -# ----------------------------------------------------------------------- - struct Stroke width color @@ -403,7 +383,7 @@ end Define the properties of the stroke used in plotting lines """ -function stroke(args...; alpha = nothing) +function stroke(args...; alpha=nothing) width = 1 color = :black style = :solid @@ -426,7 +406,7 @@ function stroke(args...; alpha = nothing) elseif allReals(arg) width = arg else - @warn("Unused stroke arg: $arg ($(typeof(arg)))") + @warn "Unused stroke arg: $arg ($(typeof(arg)))" end end @@ -440,7 +420,7 @@ struct Brush alpha end -function brush(args...; alpha = nothing) +function brush(args...; alpha=nothing) size = 1 color = :black @@ -459,7 +439,7 @@ function brush(args...; alpha = nothing) elseif allReals(arg) size = arg else - @warn("Unused brush arg: $arg ($(typeof(arg)))") + @warn "Unused brush arg: $arg ($(typeof(arg)))" end end @@ -487,7 +467,7 @@ series_annotations(::Nothing) = nothing function series_annotations(strs::AbstractVector, args...) fnt = font() shp = nothing - scalefactor = (1,1) + scalefactor = 1, 1 for arg in args if isa(arg, Shape) || (isa(arg, AbstractVector) && eltype(arg) == Shape) shp = arg @@ -496,48 +476,48 @@ function series_annotations(strs::AbstractVector, args...) elseif isa(arg, Symbol) && haskey(_shapes, arg) shp = _shapes[arg] elseif isa(arg, Number) - scalefactor = (arg,arg) + scalefactor = arg, arg elseif is_2tuple(arg) scalefactor = arg else - @warn("Unused SeriesAnnotations arg: $arg ($(typeof(arg)))") + @warn "Unused SeriesAnnotations arg: $arg ($(typeof(arg)))" end end # if scalefactor != 1 # for s in get(shp) - # scale!(s, scalefactor, scalefactor, (0,0)) + # scale!(s, scalefactor, scalefactor, (0, 0)) # end # end SeriesAnnotations([_text_label(s, fnt) for s ∈ strs], fnt, shp, scalefactor) end -function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) +function series_annotations_shapes!(series::Series, scaletype::Symbol=:pixels) anns = series[:series_annotations] - # msw,msh = anns.scalefactor + # msw, msh = anns.scalefactor # ms = series[:markersize] - # msw,msh = if isa(ms, AbstractVector) - # 1,1 + # msw, msh = if isa(ms, AbstractVector) + # 1, 1 # elseif is_2tuple(ms) # ms # else - # ms,ms + # ms, ms # end # @show msw msh if anns !== nothing && anns.baseshape !== nothing # we use baseshape to overwrite the markershape attribute # with a list of custom shapes for each - msw,msh = anns.scalefactor + msw, msh = anns.scalefactor msize = Float64[] shapes = Vector{Shape}(undef, length(anns.strs)) - for i in eachindex(anns.strs) - str = _cycle(anns.strs,i) + for i ∈ eachindex(anns.strs) + str = _cycle(anns.strs, i) # get the width and height of the string (in mm) sw, sh = text_size(str, anns.font.pointsize) # how much to scale the base shape? - # note: it's a rough assumption that the shape fills the unit box [-1,-1,1,1], + # note: it's a rough assumption that the shape fills the unit box [-1, -1, 1, 1], # so we scale the length-2 shape by 1/2 the total length scalar = (backend() == PyPlotBackend() ? 1.7 : 1.0) xscale = 0.5to_pixels(sw) * scalar @@ -548,7 +528,7 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) maxscale = max(xscale, yscale) push!(msize, maxscale) baseshape = _cycle(anns.baseshape, i) - shapes[i] = scale(baseshape, msw*xscale/maxscale, msh*yscale/maxscale, (0,0)) + shapes[i] = scale(baseshape, msw*xscale/maxscale, msh*yscale/maxscale, (0, 0)) end series[:markershape] = shapes series[:markersize] = msize @@ -562,18 +542,18 @@ mutable struct EachAnn y end -function Base.iterate(ea::EachAnn, i = 1) +function Base.iterate(ea::EachAnn, i=1) if ea.anns === nothing || isempty(ea.anns.strs) || i > length(ea.y) - return nothing + return end - tmp = _cycle(ea.anns.strs,i) - str,fnt = if isa(tmp, PlotText) + tmp = _cycle(ea.anns.strs, i) + str, fnt = if isa(tmp, PlotText) tmp.str, tmp.font else tmp, ea.anns.font end - ((_cycle(ea.x,i), _cycle(ea.y,i), str, fnt), i+1) + ((_cycle(ea.x, i), _cycle(ea.y, i), str, fnt), i+1) end # ----------------------------------------------------------------------- @@ -597,7 +577,7 @@ _annotation(sp::Subplot, font, lab, pos...; alphabet="abcdefghijklmnopqrstuvwxyz lab == :auto ? text("($(alphabet[sp[:subplot_index]]))", font) : _text_label(lab, font) ) -# Expand arrays of coordinates, positions and labels into induvidual annotations +# Expand arrays of coordinates, positions and labels into individual annotations # and make sure labels are of type PlotText function process_annotation(sp::Subplot, xs, ys, labs, font=_annotationfont(sp)) anns = [] @@ -613,7 +593,7 @@ function process_annotation(sp::Subplot, xs, ys, labs, font=_annotationfont(sp)) anns end -function process_annotation(sp::Subplot, positions::Union{AVec{Symbol},Symbol,Tuple}, labs, font=_annotationfont(sp)) +function process_annotation(sp::Subplot, positions::Union{AVec{Symbol}, Symbol, Tuple}, labs, font=_annotationfont(sp)) anns = [] positions, labs = makevec(positions), makevec(labs) for i in 1:max(length(positions), length(labs)) @@ -628,7 +608,7 @@ _relative_position(xmin, xmax, pos::Length{:pct}) = xmin + pos.value * (xmax - x # Give each annotation coordinates based on specified position function locate_annotation( sp::Subplot, pos::Symbol, label::PlotText; - position_multiplier=Dict{Symbol, Tuple{Float64,Float64}}( + position_multiplier=Dict{Symbol, Tuple{Float64, Float64}}( :topleft => (0.1pct, 0.9pct), :topcenter => (0.5pct, 0.9pct), :topright => (0.9pct, 0.9pct), @@ -647,12 +627,12 @@ end locate_annotation(sp::Subplot, x, y, label::PlotText) = (x, y, label) locate_annotation(sp::Subplot, x, y, z, label::PlotText) = (x, y, z, label) -locate_annotation(sp::Subplot, rel::NTuple{2,<:Number}, label::PlotText) = ( +locate_annotation(sp::Subplot, rel::NTuple{2, <:Number}, label::PlotText) = ( _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), label ) -locate_annotation(sp::Subplot, rel::NTuple{3,<:Number}, label::PlotText) = ( +locate_annotation(sp::Subplot, rel::NTuple{3, <:Number}, label::PlotText) = ( _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), _relative_position(axis_limits(sp, :z)..., rel[3] * Plots.pct), @@ -663,10 +643,10 @@ locate_annotation(sp::Subplot, rel::NTuple{3,<:Number}, label::PlotText) = ( "type which represents z-values for colors and sizes (and anything else that might come up)" struct ZValues values::Vector{Float64} - zrange::Tuple{Float64,Float64} + zrange::Tuple{Float64, Float64} end -function zvalues(values::AVec{T}, zrange::Tuple{T,T} = (ignorenan_minimum(values), ignorenan_maximum(values))) where T<:Real +function zvalues(values::AVec{T}, zrange::Tuple{T, T}=(ignorenan_minimum(values), ignorenan_maximum(values))) where T<:Real ZValues(collect(float(values)), map(Float64, zrange)) end @@ -689,9 +669,7 @@ end # ----------------------------------------------------------------------- # # I don't want to clash with ValidatedNumerics, but this would be nice: -# ..(a::T, b::T) = (a,b) - - +# ..(a::T, b::T) = (a, b) # ----------------------------------------------------------------------- @@ -712,8 +690,7 @@ Define arrowheads to apply to lines - args are `style` (`:open` or `:closed`), function arrow(args...) style = :simple side = :head - headlength = 0.3 - headwidth = 0.3 + headlength = headwidth = 0.3 setlength = false for arg in args T = typeof(arg) @@ -733,7 +710,7 @@ function arrow(args...) elseif T <: Tuple && length(arg) == 2 headlength, headwidth = Float64(arg[1]), Float64(arg[2]) else - @warn("Skipped arrow arg $arg") + @warn "Skipped arrow arg $arg" end end Arrow(style, side, headlength, headwidth) @@ -743,11 +720,11 @@ end # allow for do-block notation which gets called on every valid start/end pair which # we need to draw an arrow function add_arrows(func::Function, x::AVec, y::AVec) - for i=2:length(x) + for i ∈ 2:length(x) xyprev = (x[i-1], y[i-1]) xy = (x[i], y[i]) if ok(xyprev) && ok(xy) - if i==length(x) || !ok(x[i+1], y[i+1]) + if i == length(x) || !ok(x[i+1], y[i+1]) # add the arrow from xyprev to xy func(xyprev, xy) end @@ -772,16 +749,12 @@ end @deprecate curve_points coords -coords(curve::BezierCurve, n::Integer = 30; range = [0,1]) = map(curve, Base.range(first(range), stop=last(range), length=n)) +coords(curve::BezierCurve, n::Integer=30; range=[0, 1]) = map( + curve, Base.range(first(range), stop=last(range), length=n) +) -# build a BezierCurve which leaves point p vertically upwards and arrives point q vertically upwards. -# may create a loop if necessary. Assumes the view is [0,1] -function directed_curve(args...; kw...) - error("directed_curve has been moved to PlotRecipes") -end - -function extrema_plus_buffer(v, buffmult = 0.2) - vmin,vmax = ignorenan_extrema(v) +function extrema_plus_buffer(v, buffmult=0.2) + vmin, vmax = ignorenan_extrema(v) vdiff = vmax-vmin buffer = vdiff * buffmult vmin - buffer, vmax + buffer From 39cb5968685012d587e830ff6b80a53dce8b5b17 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Tue, 3 Aug 2021 13:29:45 +0200 Subject: [PATCH 493/518] allow passing vectors/tuples of vectors to series_annotations --- src/components.jl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/components.jl b/src/components.jl index 4164bede..b6a8feb3 100644 --- a/src/components.jl +++ b/src/components.jl @@ -4,10 +4,10 @@ const P3 = GeometryBasics.Point3{Float64} const _haligns = :hcenter, :left, :right const _valigns = :vcenter, :top, :bottom -nanpush!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN, NaN)); push!(a, b)) -nanappend!(a::AbstractVector{P2}, b) = (push!(a, P2(NaN, NaN)); append!(a, b)) -nanpush!(a::AbstractVector{P3}, b) = (push!(a, P3(NaN, NaN, NaN)); push!(a, b)) -nanappend!(a::AbstractVector{P3}, b) = (push!(a, P3(NaN, NaN, NaN)); append!(a, b)) +nanpush!(a::AVec{P2}, b) = (push!(a, P2(NaN, NaN)); push!(a, b)) +nanappend!(a::AVec{P2}, b) = (push!(a, P2(NaN, NaN)); append!(a, b)) +nanpush!(a::AVec{P3}, b) = (push!(a, P3(NaN, NaN, NaN)); push!(a, b)) +nanappend!(a::AVec{P3}, b) = (push!(a, P3(NaN, NaN, NaN)); append!(a, b)) compute_angle(v::P2) = (angle = atan(v[2], v[1]); angle < 0 ? 2π - angle : angle) # ------------------------------------------------------------- @@ -449,9 +449,9 @@ end # ----------------------------------------------------------------------- mutable struct SeriesAnnotations - strs::AbstractVector # the labels/names + strs::AVec # the labels/names font::Font - baseshape::Union{Shape, AbstractVector{Shape}, Nothing} + baseshape::Union{Shape, AVec{Shape}, Nothing} scalefactor::Tuple end @@ -464,12 +464,12 @@ series_annotations(scalar) = series_annotations([scalar]) series_annotations(anns::SeriesAnnotations) = anns series_annotations(::Nothing) = nothing -function series_annotations(strs::AbstractVector, args...) +function series_annotations(strs::AVec, args...) fnt = font() shp = nothing scalefactor = 1, 1 for arg in args - if isa(arg, Shape) || (isa(arg, AbstractVector) && eltype(arg) == Shape) + if isa(arg, Shape) || (isa(arg, AVec) && eltype(arg) == Shape) shp = arg elseif isa(arg, Font) fnt = arg @@ -479,6 +479,8 @@ function series_annotations(strs::AbstractVector, args...) scalefactor = arg, arg elseif is_2tuple(arg) scalefactor = arg + elseif isa(arg, AVec) + strs = collect(zip(strs, arg)) else @warn "Unused SeriesAnnotations arg: $arg ($(typeof(arg)))" end @@ -495,7 +497,7 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol=:pixels) anns = series[:series_annotations] # msw, msh = anns.scalefactor # ms = series[:markersize] - # msw, msh = if isa(ms, AbstractVector) + # msw, msh = if isa(ms, AVec) # 1, 1 # elseif is_2tuple(ms) # ms From bd70951afa7d9ce4da2c5128ae00e94fe1bef429 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:19:09 +0200 Subject: [PATCH 494/518] Gaston: flip y for :image series --- src/backends/gaston.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index f2246a43..9c2bc2a2 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -211,7 +211,7 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) if z isa Surface z = z.surf if st == :image - z = Float32.(Gray.(z)) + z = reverse(Float32.(Gray.(z)), dims=1) # flip y axis nr, nc = size(z) lx = length(x) if lx == 2 && lx != nr From 1ccd4ae69971c894e0b31c9318ea0af5eb73d2e3 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:19:40 +0200 Subject: [PATCH 495/518] Gaston: remove :histogram2d --- src/backends.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backends.jl b/src/backends.jl index a82efca5..dae75ab0 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -631,7 +631,6 @@ const _gaston_seriestype = [ :steppre, :stepmid, :steppost, - :histogram2d, :ysticks, :xsticks, :contour, :shape, From ed7b6f7f643bbc363fad7c07718931c922da3867 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:26:23 +0200 Subject: [PATCH 496/518] examples, missing number --- src/examples.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples.jl b/src/examples.jl index 40acf561..da3e7967 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1113,7 +1113,7 @@ const _examples = PlotExample[ plot!(sin, -π, π, lw=3, color=:red) end] ), - PlotExample( + PlotExample( # 52 "3d quiver", "", [quote From 67f441f152e49041242ed7242706b7f17d8c47d6 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:54:49 +0200 Subject: [PATCH 497/518] Gaston: swap :image axes --- src/backends/gaston.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 9c2bc2a2..a7f56dc5 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -213,13 +213,11 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) if st == :image z = reverse(Float32.(Gray.(z)), dims=1) # flip y axis nr, nc = size(z) - lx = length(x) - if lx == 2 && lx != nr - x = collect(range(x[1], x[2], length=nr)) + if (ly = length(y)) == 2 && ly != nr + y = collect(range(y[1], y[2], length=nr)) end - ly = length(y) - if ly == 2 && ly != nc - y = collect(range(y[1], y[2], length=nc)) + if (lx = length(x)) == 2 && lx != nc + x = collect(range(x[1], x[2], length=nc)) end elseif st == :heatmap length(x) == size(z, 2) + 1 && (x = @view x[1:end-1]) From c0ff6e3dee2d3feaab71ea5a96d6e88497d19893 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:55:52 +0200 Subject: [PATCH 498/518] Gaston: initial :quiver support --- src/backends/gaston.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index a7f56dc5..af776ea6 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -305,6 +305,8 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, elseif st == :wireframe lc, dt, lw = gaston_lc_ls_lw(series, clims, i) push!(curveconf, "w lines lc $lc dt $dt lw $lw") + elseif st == :quiver + push!(curveconf, "w vectors filled") else @warn "Gaston: $st is not implemented yet" end From 62b6075407604215e12d12b68b4c1d11b3a52679 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:56:54 +0200 Subject: [PATCH 499/518] Gaston: support :arrow for :quiver --- src/backends.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backends.jl b/src/backends.jl index dae75ab0..7fc3ab6e 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -613,7 +613,8 @@ const _gaston_attr = merge_with_base_supported([ # :fill_z, :line_z, :marker_z, :levels, # :ribbon, :quiver, - # :arrow, :orientation, + :arrow, + :orientation, # :overwrite_figure, :polar, # :normalize, :weights, :contours, From ba4c4d7bfb1559a19702c623b0ffe59554b8a75e Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:58:50 +0200 Subject: [PATCH 500/518] Update backends.jl --- src/backends.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/backends.jl b/src/backends.jl index 7fc3ab6e..f8553e98 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -614,8 +614,7 @@ const _gaston_attr = merge_with_base_supported([ # :ribbon, :quiver, :arrow, - :orientation, - # :overwrite_figure, + # :orientation, :overwrite_figure, :polar, # :normalize, :weights, :contours, :aspect_ratio, From b7b4c850b69df9a1f0200ae07a191d213a4dbcda Mon Sep 17 00:00:00 2001 From: t-bltg Date: Tue, 3 Aug 2021 18:27:53 +0200 Subject: [PATCH 501/518] move mesh3d triangle to utils - gaston: implement :mesh3d --- src/backends/gaston.jl | 23 ++-- src/backends/gr.jl | 29 +---- src/examples.jl | 1 - src/utils.jl | 244 ++++++++++++++++++++--------------------- 4 files changed, 136 insertions(+), 161 deletions(-) diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index af776ea6..5c6ddc0f 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -47,12 +47,14 @@ end function _update_min_padding!(sp::Subplot{GastonBackend}) sp.minpad = 0mm, 0mm, 0mm, 0mm + nothing end function _update_plot_object(plt::Plot{GastonBackend}) # respect the layout ratio dat = gaston_multiplot_pos_size(plt.layout, (0, 0, 1, 1)) gaston_multiplot_pos_size!(dat) + nothing end for (mime, term) ∈ ( @@ -224,6 +226,9 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) length(y) == size(z, 1) + 1 && (y = @view y[1:end-1]) end end + if st == :mesh3d + x, y, z = mesh3d_triangles(x, y, z, series[:connections]) + end for sc ∈ gaston_seriesconf!(sp, series, 1, true) push!(curves, Gaston.Curve(x, y, z, nothing, sc)) end @@ -302,7 +307,7 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, palette = gaston_palette(series[:seriescolor]) gsp.axesconf *= "\nset palette model RGB defined $palette" st == :heatmap && (gsp.axesconf *= "\nset view map") - elseif st == :wireframe + elseif st ∈ (:wireframe, :mesh3d) lc, dt, lw = gaston_lc_ls_lw(series, clims, i) push!(curveconf, "w lines lc $lc dt $dt lw $lw") elseif st == :quiver @@ -467,14 +472,6 @@ end # Helpers # -------------------------------------------- -function gaston_font(f; rot=true, align=true, color=true, scale=1) - font = String["font '$(f.family),$(round(Int, scale * f.pointsize))'"] - align && push!(font, "$(gaston_halign(f.halign))") - rot && push!(font, "rotate by $(f.rotation)") - color && push!(font, "textcolor $(gaston_color(f.color))") - return join(font, " ") -end - gaston_halign(k) = (left=:left, hcenter=:center, right=:right)[k] gaston_valign(k) = (top=:top, vcenter=:center, bottom=:bottom)[k] @@ -492,6 +489,14 @@ gaston_mk_ms_mc(series::Series, clims, i::Int) = ( gaston_color(get_markercolor(series, clims, i), get_markeralpha(series, i)), ) +function gaston_font(f; rot=true, align=true, color=true, scale=1) + font = String["font '$(f.family),$(round(Int, scale * f.pointsize))'"] + align && push!(font, "$(gaston_halign(f.halign))") + rot && push!(font, "rotate by $(f.rotation)") + color && push!(font, "textcolor $(gaston_color(f.color))") + return join(font, " ") +end + function gaston_palette(gradient) palette = String[]; n = -1 for rgba ∈ gradient # FIXME: naive conversion, inefficient ? diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 2a7e23c1..e28fb2d8 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1869,35 +1869,8 @@ function gr_draw_surface(series, x, y, z, clims) GR.surface(x, y, z, get(e_kwargs, :display_option, GR.OPTION_FILLED_MESH)) elseif st === :mesh3d @warn "GR: mesh3d is experimental (no face colors)" - conn = series[:connections] - if typeof(conn) <: Tuple{Array, Array, Array} - ci, cj, ck = conn - if !(length(ci) == length(cj) == length(ck)) - throw(ArgumentError("Argument connections must consist of equally sized arrays.")) - end - else - throw(ArgumentError("Argument connections has to be a tuple of three arrays.")) - end - X = zeros(eltype(x), 4length(ci)) - Y = zeros(eltype(y), 4length(cj)) - Z = zeros(eltype(z), 4length(ck)) - @inbounds for I ∈ 1:length(ci) - i = ci[I] + 1 # connections are 0-based - j = cj[I] + 1 - k = ck[I] + 1 - m = 4(I - 1) + 1; n = m + 1; o = m + 2; p = m + 3 - X[m] = X[p] = x[i] - Y[m] = Y[p] = y[i] - Z[m] = Z[p] = z[i] - X[n] = x[j] - Y[n] = y[j] - Z[n] = z[j] - X[o] = x[k] - Y[o] = y[k] - Z[o] = z[k] - end gr_set_line(get_linewidth(series), get_linestyle(series), get_linecolor(series), series) - GR.polyline3d(X, Y, Z) + GR.polyline3d(mesh3d_triangles(x, y, z, series[:connections])...) else throw(ArgumentError("Not handled !")) end diff --git a/src/examples.jl b/src/examples.jl index da3e7967..2f165f98 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -1247,7 +1247,6 @@ _backend_skips = Dict( :gaston => [ 2, # animations 31, # animations - 47, # TODO: support mesh3d 49, # TODO: support polar 50, # TODO: 1D data not supported for pm3d ], diff --git a/src/utils.jl b/src/utils.jl index f07945a2..9b7c12dd 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -1,6 +1,7 @@ -function treats_y_as_x(seriestype) - return seriestype in (:vline, :vspan, :histogram, :barhist, :stephist, :scatterhist) -end +# --------------------------------------------------------------- + +treats_y_as_x(seriestype) = seriestype in (:vline, :vspan, :histogram, :barhist, :stephist, :scatterhist) + function replace_image_with_heatmap(z::Array{T}) where T<:Colorant n, m = size(z) colors = palette(vec(z)) @@ -143,7 +144,7 @@ allnan(istart::Int, iend::Int, args::Tuple) = all(anynan(args), istart:iend) function Base.iterate(itr::NaNSegmentsIterator, nextidx::Int = itr.n1) i = findfirst(!anynan(itr.args), nextidx:itr.n2) - i === nothing && return nothing + i === nothing && return nextval = nextidx + i - 1 j = findfirst(anynan(itr.args), nextval:itr.n2) @@ -191,7 +192,7 @@ makevec(v::AVec) = v makevec(v::T) where {T} = T[v] "duplicate a single value, or pass the 2-tuple through" -maketuple(x::Real) = (x,x) +maketuple(x::Real) = (x, x) maketuple(x::Tuple{T,S}) where {T,S} = x for i in 2:4 @@ -224,7 +225,7 @@ expand_data(v, n::Integer) = [_cycle(v, i) for i=1:n] # if the type exists in a list, replace the first occurence. otherwise add it to the end function addOrReplace(v::AbstractVector, t::DataType, args...; kw...) - for (i,vi) in enumerate(v) + for (i, vi) in enumerate(v) if isa(vi, t) v[i] = t(args...; kw...) return @@ -254,7 +255,6 @@ end createSegments(z) = collect(repeat(reshape(z,1,:),2,1))[2:end] - sortedkeys(plotattributes::Dict) = sort(collect(keys(plotattributes))) function _heatmap_edges(v::AVec, isedges::Bool = false, ispolar::Bool = false) @@ -327,20 +327,18 @@ isscalar(::Any) = false is_2tuple(v) = typeof(v) <: Tuple && length(v) == 2 - isvertical(plotattributes::AKW) = get(plotattributes, :orientation, :vertical) in (:vertical, :v, :vert) isvertical(series::Series) = isvertical(series.plotattributes) -ticksType(ticks::AVec{T}) where {T<:Real} = :ticks -ticksType(ticks::AVec{T}) where {T<:AbstractString} = :labels +ticksType(ticks::AVec{T}) where {T<:Real} = :ticks +ticksType(ticks::AVec{T}) where {T<:AbstractString} = :labels ticksType(ticks::Tuple{T,S}) where {T<:Union{AVec,Tuple},S<:Union{AVec,Tuple}} = :ticks_and_labels -ticksType(ticks) = :invalid - -limsType(lims::Tuple{T,S}) where {T<:Real,S<:Real} = :limits -limsType(lims::Symbol) = lims == :auto ? :auto : :invalid -limsType(lims) = :invalid +ticksType(ticks) = :invalid +limsType(lims::Tuple{T,S}) where {T<:Real,S<:Real} = :limits +limsType(lims::Symbol) = lims == :auto ? :auto : :invalid +limsType(lims) = :invalid # recursively merge kw-dicts, e.g. for merging extra_kwargs / extra_plot_kwargs in plotly) recursive_merge(x::AbstractDict...) = merge(recursive_merge, x...) @@ -386,9 +384,7 @@ end handle_surface(z) = z handle_surface(z::Surface) = permutedims(z.surf) -function ok(x::Number, y::Number, z::Number = 0) - isfinite(x) && isfinite(y) && isfinite(z) -end +ok(x::Number, y::Number, z::Number=0) = isfinite(x) && isfinite(y) && isfinite(z) ok(tup::Tuple) = ok(tup...) # compute one side of a fill range from a ribbon @@ -418,9 +414,7 @@ function concatenate_fillrange(x,y::Tuple) return xline, yline end -function get_sp_lims(sp::Subplot, letter::Symbol) - axis_limits(sp, letter) -end +get_sp_lims(sp::Subplot, letter::Symbol) = axis_limits(sp, letter) """ xlims([plt]) @@ -466,10 +460,7 @@ function contour_levels(series::Series, clims) levels end - - for comp in (:line, :fill, :marker) - compcolor = string(comp, :color) get_compcolor = Symbol(:get_, compcolor) comp_z = string(comp, :_z) @@ -478,7 +469,6 @@ for comp in (:line, :fill, :marker) get_compalpha = Symbol(:get_, compalpha) @eval begin - function $get_compcolor(series, cmin::Real, cmax::Real, i::Int = 1) c = series[$Symbol($compcolor)] z = series[$Symbol($comp_z)] @@ -489,7 +479,7 @@ for comp in (:line, :fill, :marker) end end - $get_compcolor(series, clims, i::Int = 1) = $get_compcolor(series, clims[1], clims[2], i) + $get_compcolor(series, clims, i::Int=1) = $get_compcolor(series, clims[1], clims[2], i) function $get_compcolor(series, i::Int = 1) if series[$Symbol($comp_z)] === nothing @@ -499,7 +489,7 @@ for comp in (:line, :fill, :marker) end end - $get_compalpha(series, i::Int = 1) = _cycle(series[$Symbol($compalpha)], i) + $get_compalpha(series, i::Int=1) = _cycle(series[$Symbol($compalpha)], i) end end @@ -518,33 +508,23 @@ function get_colorgradient(series::Series) end end -single_color(c, v = 0.5) = c -single_color(grad::ColorGradient, v = 0.5) = grad[v] +single_color(c, v=0.5) = c +single_color(grad::ColorGradient, v=0.5) = grad[v] get_gradient(c) = cgrad() get_gradient(cg::ColorGradient) = cg -get_gradient(cp::ColorPalette) = cgrad(cp, categorical = true) +get_gradient(cp::ColorPalette) = cgrad(cp, categorical=true) -function get_linewidth(series, i::Int = 1) - _cycle(series[:linewidth], i) -end +get_linewidth(series, i::Int=1) = _cycle(series[:linewidth], i) +get_linestyle(series, i::Int=1) = _cycle(series[:linestyle], i) -function get_linestyle(series, i::Int = 1) - _cycle(series[:linestyle], i) -end - -function get_markerstrokecolor(series, i::Int = 1) +function get_markerstrokecolor(series, i::Int=1) msc = series[:markerstrokecolor] isa(msc, ColorGradient) ? msc : _cycle(msc, i) end -function get_markerstrokealpha(series, i::Int = 1) - _cycle(series[:markerstrokealpha], i) -end - -function get_markerstrokewidth(series, i::Int = 1) - _cycle(series[:markerstrokewidth], i) -end +get_markerstrokealpha(series, i::Int=1) = _cycle(series[:markerstrokealpha], i) +get_markerstrokewidth(series, i::Int=1) = _cycle(series[:markerstrokewidth], i) const _segmenting_vector_attributes = ( :seriescolor, @@ -564,7 +544,7 @@ const _segmenting_vector_attributes = ( :markershape, ) -const _segmenting_array_attributes = (:line_z, :fill_z, :marker_z) +const _segmenting_array_attributes = :line_z, :fill_z, :marker_z function has_attribute_segments(series::Series) # we want to check if a series needs to be split into segments just because @@ -589,19 +569,17 @@ function get_aspect_ratio(sp) return aspect_ratio end +get_size(series::Series) = get_size(series.plotattributes[:subplot]) get_size(kw) = get(kw, :size, default(:size)) get_size(plt::Plot) = get_size(plt.attr) get_size(sp::Subplot) = get_size(sp.plt) -get_size(series::Series) = get_size(series.plotattributes[:subplot]) get_thickness_scaling(kw) = get(kw, :thickness_scaling, default(:thickness_scaling)) get_thickness_scaling(plt::Plot) = get_thickness_scaling(plt.attr) get_thickness_scaling(sp::Subplot) = get_thickness_scaling(sp.plt) -get_thickness_scaling(series::Series) = - get_thickness_scaling(series.plotattributes[:subplot]) +get_thickness_scaling(series::Series) = get_thickness_scaling(series.plotattributes[:subplot]) # --------------------------------------------------------------- - makekw(; kw...) = KW(kw) wraptuple(x::Tuple) = x @@ -610,18 +588,20 @@ wraptuple(x) = (x,) trueOrAllTrue(f::Function, x::AbstractArray) = all(f, x) trueOrAllTrue(f::Function, x) = f(x) -allLineTypes(arg) = trueOrAllTrue(a -> get(_typeAliases, a, a) in _allTypes, arg) -allStyles(arg) = trueOrAllTrue(a -> get(_styleAliases, a, a) in _allStyles, arg) -allShapes(arg) = trueOrAllTrue(a -> is_marker_supported(get(_markerAliases, a, a)), arg) || - trueOrAllTrue(a -> isa(a, Shape), arg) -allAlphas(arg) = trueOrAllTrue(a -> (typeof(a) <: Real && a > 0 && a < 1) || - (typeof(a) <: AbstractFloat && (a == zero(typeof(a)) || a == one(typeof(a)))), arg) -allReals(arg) = trueOrAllTrue(a -> typeof(a) <: Real, arg) -allFunctions(arg) = trueOrAllTrue(a -> isa(a, Function), arg) +allLineTypes(arg) = trueOrAllTrue(a -> get(_typeAliases, a, a) in _allTypes, arg) +allStyles(arg) = trueOrAllTrue(a -> get(_styleAliases, a, a) in _allStyles, arg) +allShapes(arg) = ( + trueOrAllTrue(a -> is_marker_supported(get(_markerAliases, a, a)), arg) || + trueOrAllTrue(a -> isa(a, Shape), arg) +) +allAlphas(arg) = trueOrAllTrue( + a -> (typeof(a) <: Real && a > 0 && a < 1) || + (typeof(a) <: AbstractFloat && (a == zero(typeof(a)) || a == one(typeof(a)))), arg +) +allReals(arg) = trueOrAllTrue(a -> typeof(a) <: Real, arg) +allFunctions(arg) = trueOrAllTrue(a -> isa(a, Function), arg) # --------------------------------------------------------------- -# --------------------------------------------------------------- - """ Allows temporary setting of backend and defaults for Plots. Settings apply only for the `do` block. Example: @@ -655,7 +635,6 @@ function with(f::Function, args...; kw...) oldbackend = CURRENT_BACKEND.sym for arg in args - # change backend? if arg in backends() backend(arg) @@ -716,10 +695,7 @@ mutable struct DebugMode end const _debugMode = DebugMode(false) -function debugplots(on = true) - _debugMode.on = on -end - +debugplots(on=true) = _debugMode.on = on debugshow(io, x) = show(io, x) debugshow(io, x::AbstractArray) = print(io, summary(x)) @@ -739,9 +715,7 @@ end DD(io::IO, plotattributes::AKW, prefix = "") = dumpdict(io, plotattributes, prefix, true) DD(plotattributes::AKW, prefix = "") = DD(stdout, plotattributes, prefix) -function dumpcallstack() - error() # well... you wanted the stacktrace, didn't you?!? -end +dumpcallstack() = error() # well... you wanted the stacktrace, didn't you?!? # ------------------------------------------------------- # NOTE: backends should implement the following methods to get/set the x/y/z data objects @@ -773,10 +747,9 @@ function setxyz!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z} _series_updated(plt, series) end -function setxyz!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z<:AbstractMatrix} +setxyz!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z<:AbstractMatrix} = ( setxyz!(plt, (xyz[1], xyz[2], Surface(xyz[3])), i) -end - +) # ------------------------------------------------------- # indexing notation @@ -837,9 +810,7 @@ function extend_to_length!(v::AbstractVector, n) extend_by_data!(v, vmax .+ (1:(n - length(v)))) end extend_by_data!(v::AbstractVector, x) = isimmutable(v) ? vcat(v, x) : push!(v, x) -function extend_by_data!(v::AbstractVector, x::AbstractVector) - isimmutable(v) ? vcat(v, x) : append!(v, x) -end +extend_by_data!(v::AbstractVector, x::AbstractVector) = isimmutable(v) ? vcat(v, x) : append!(v, x) # ------------------------------------------------------- @@ -898,9 +869,7 @@ end # push y[i] to the ith series # same x for each series -function Base.push!(plt::Plot, x::Real, y::AVec) - push!(plt, [x], y) -end +Base.push!(plt::Plot, x::Real, y::AVec) = push!(plt, [x], y) # push (x[i], y[i]) to the ith series function Base.push!(plt::Plot, x::AVec, y::AVec) @@ -923,37 +892,36 @@ function Base.push!(plt::Plot, x::AVec, y::AVec, z::AVec) plt end - - - # --------------------------------------------------------------- - # Some conversion functions # note: I borrowed these conversion constants from Compose.jl's Measure -const PX_PER_INCH = 100 -const DPI = PX_PER_INCH -const MM_PER_INCH = 25.4 -const MM_PER_PX = MM_PER_INCH / PX_PER_INCH +const PX_PER_INCH = 100 +const DPI = PX_PER_INCH +const MM_PER_INCH = 25.4 +const MM_PER_PX = MM_PER_INCH / PX_PER_INCH -inch2px(inches::Real) = float(inches * PX_PER_INCH) -px2inch(px::Real) = float(px / PX_PER_INCH) -inch2mm(inches::Real) = float(inches * MM_PER_INCH) -mm2inch(mm::Real) = float(mm / MM_PER_INCH) -px2mm(px::Real) = float(px * MM_PER_PX) -mm2px(mm::Real) = float(mm / MM_PER_PX) +inch2px(inches::Real) = float(inches * PX_PER_INCH) +px2inch(px::Real) = float(px / PX_PER_INCH) +inch2mm(inches::Real) = float(inches * MM_PER_INCH) +mm2inch(mm::Real) = float(mm / MM_PER_INCH) +px2mm(px::Real) = float(px * MM_PER_PX) +mm2px(mm::Real) = float(mm / MM_PER_PX) "Smallest x in plot" -xmin(plt::Plot) = ignorenan_minimum([ignorenan_minimum(series.plotattributes[:x]) for series in plt.series_list]) +xmin(plt::Plot) = ignorenan_minimum( + [ignorenan_minimum(series.plotattributes[:x]) for series in plt.series_list] +) "Largest x in plot" -xmax(plt::Plot) = ignorenan_maximum([ignorenan_maximum(series.plotattributes[:x]) for series in plt.series_list]) +xmax(plt::Plot) = ignorenan_maximum( + [ignorenan_maximum(series.plotattributes[:x]) for series in plt.series_list] +) "Extrema of x-values in plot" ignorenan_extrema(plt::Plot) = (xmin(plt), xmax(plt)) - # --------------------------------------------------------------- # get fonts from objects: @@ -1026,18 +994,18 @@ guidefont(ax::Axis) = font(; function convert_sci_unicode(label::AbstractString) unicode_dict = Dict( - '⁰' => "0", - '¹' => "1", - '²' => "2", - '³' => "3", - '⁴' => "4", - '⁵' => "5", - '⁶' => "6", - '⁷' => "7", - '⁸' => "8", - '⁹' => "9", - '⁻' => "-", - "×10" => "×10^{", + '⁰' => "0", + '¹' => "1", + '²' => "2", + '³' => "3", + '⁴' => "4", + '⁵' => "5", + '⁶' => "6", + '⁷' => "7", + '⁸' => "8", + '⁹' => "9", + '⁻' => "-", + "×10" => "×10^{", ) for key in keys(unicode_dict) label = replace(label, key => unicode_dict[key]) @@ -1139,40 +1107,70 @@ function shape_data(series, expansion_factor = 1) return x, y end -function construct_categorical_data(x::AbstractArray, axis::Axis) +construct_categorical_data(x::AbstractArray, axis::Axis) = ( map(xi -> axis[:discrete_values][searchsortedfirst(axis[:continuous_values], xi)], x) -end +) -_fmt_paragraph(paragraph::AbstractString;kwargs...) = _fmt_paragraph(IOBuffer(),paragraph,0;kwargs...) +_fmt_paragraph(paragraph::AbstractString;kwargs...) = _fmt_paragraph( + IOBuffer(), paragraph, 0; kwargs... +) -function _fmt_paragraph(io::IOBuffer, - remaining_text::AbstractString, - column_count::Integer; - fillwidth=60, - leadingspaces=0) - - kwargs = (fillwidth = fillwidth, leadingspaces = leadingspaces) +function _fmt_paragraph( + io::IOBuffer, remaining_text::AbstractString, column_count::Integer; + fillwidth=60, leadingspaces=0 +) + kwargs = (fillwidth=fillwidth, leadingspaces=leadingspaces) m = match(r"(.*?) (.*)",remaining_text) - if isa(m,Nothing) + if isa(m, Nothing) if column_count + length(remaining_text) ≤ fillwidth - print(io,remaining_text) + print(io, remaining_text) String(take!(io)) else - print(io,"\n"*" "^leadingspaces*remaining_text) + print(io, "\n"*" "^leadingspaces*remaining_text) String(take!(io)) end else if column_count + length(m[1]) ≤ fillwidth print(io,"$(m[1]) ") - _fmt_paragraph(io,m[2],column_count + length(m[1]) + 1;kwargs...) + _fmt_paragraph(io, m[2], column_count + length(m[1]) + 1; kwargs...) else print(io,"\n"*" "^leadingspaces*"$(m[1]) ") - _fmt_paragraph(io,m[2],leadingspaces;kwargs...) + _fmt_paragraph(io, m[2], leadingspaces; kwargs...) end end end -function _document_argument(S::AbstractString) - _fmt_paragraph("`$S`: "*_arg_desc[Symbol(S)],leadingspaces = 6 + length(S)) +_document_argument(S::AbstractString) = _fmt_paragraph( + "`$S`: "*_arg_desc[Symbol(S)], leadingspaces=6+length(S) +) + +function mesh3d_triangles(x, y, z, cns) + if typeof(cns) <: Tuple{Array, Array, Array} + ci, cj, ck = cns + if !(length(ci) == length(cj) == length(ck)) + throw(ArgumentError("Argument connections must consist of equally sized arrays.")) + end + else + throw(ArgumentError("Argument connections has to be a tuple of three arrays.")) + end + X = zeros(eltype(x), 4length(ci)) + Y = zeros(eltype(y), 4length(cj)) + Z = zeros(eltype(z), 4length(ck)) + @inbounds for I ∈ 1:length(ci) + i = ci[I] + 1 # connections are 0-based + j = cj[I] + 1 + k = ck[I] + 1 + m = 4(I - 1) + 1; n = m + 1; o = m + 2; p = m + 3 + X[m] = X[p] = x[i] + Y[m] = Y[p] = y[i] + Z[m] = Z[p] = z[i] + X[n] = x[j] + Y[n] = y[j] + Z[n] = z[j] + X[o] = x[k] + Y[o] = y[k] + Z[o] = z[k] + end + return X, Y, Z end From a67a006501fd946ae496e820d4f47dadf1a53396 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Tue, 3 Aug 2021 19:20:52 +0000 Subject: [PATCH 502/518] Update precompile_*.jl file [skip ci] --- .../precompile/precompile_Plots.jl | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index aafcebc6..ff53acb7 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -94,6 +94,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) + Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) @@ -106,6 +107,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -139,6 +141,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) @@ -205,6 +208,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -246,6 +250,9 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) + Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) + Base.precompile(Tuple{typeof(_cycle),Nothing,Int64}) + Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) @@ -266,10 +273,8 @@ function _precompile_() Base.precompile(Tuple{typeof(bbox),AbsoluteLength,AbsoluteLength,AbsoluteLength,AbsoluteLength}) Base.precompile(Tuple{typeof(bbox),Float64,Float64,Float64,Float64}) Base.precompile(Tuple{typeof(build_layout),GridLayout,Int64,Vector{Plot}}) - Base.precompile(Tuple{typeof(convertLegendValue),Symbol}) Base.precompile(Tuple{typeof(convert_to_polar),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Int64, Float64}}) Base.precompile(Tuple{typeof(create_grid),Expr}) - Base.precompile(Tuple{typeof(discrete_value!),Axis,Vector{String}}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64},Vararg{Vector{Float64}, N} where N}) Base.precompile(Tuple{typeof(error_coords),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(error_zipit),Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}) @@ -277,6 +282,7 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) + Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -285,7 +291,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_xy),Vector{OHLC}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), NTuple{9, Float64}},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_add_legend),Subplot{GRBackend},NamedTuple{(:w, :h, :dy, :leftw, :textw, :rightw, :xoffset, :yoffset, :width_factor), Tuple{Int64, Int64, Int64, Float64, Int64, Float64, Float64, Float64, Float64}},Vector{Float64}}) - Base.precompile(Tuple{typeof(gr_clims),Subplot{GRBackend},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(gr_display),Subplot{GRBackend},AbsoluteLength,AbsoluteLength,Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_colorbar),GRColorbar,Subplot{GRBackend},Tuple{Float64, Float64},Vector{Float64}}) Base.precompile(Tuple{typeof(gr_draw_contour),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64},Tuple{Float64, Float64}}) @@ -323,8 +328,6 @@ function _precompile_() Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol,Vector{Float64},Symbol,Tuple{Int64, Int64},Bool}) Base.precompile(Tuple{typeof(heatmap_edges),Vector{Float64},Symbol}) Base.precompile(Tuple{typeof(ignorenan_minimum),Vector{Int64}}) - Base.precompile(Tuple{typeof(leftpad),EmptyLayout}) - Base.precompile(Tuple{typeof(locate_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) Base.precompile(Tuple{typeof(make_fillrange_side),UnitRange{Int64},LinRange{Float64}}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Function}) Base.precompile(Tuple{typeof(optimal_ticks_and_labels),Nothing,Tuple{Float64, Float64},Symbol,Symbol}) @@ -345,6 +348,7 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) + Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -356,36 +360,32 @@ function _precompile_() Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},StepRange{Int64, Int64},Symbol}) Base.precompile(Tuple{typeof(process_axis_arg!),Dict{Symbol, Any},Symbol,Symbol}) Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64, Float64}},Tuple{Int64, Float64, Int64},Tuple{Int64, Float64, Int64}}) - Base.precompile(Tuple{typeof(push!),Segments{Tuple{Float64, Float64}},Tuple{Int64, Int64},Tuple{Int64, Float64}}) - Base.precompile(Tuple{typeof(reset_axis_defaults_byletter!)}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) + Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) + Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) Base.precompile(Tuple{typeof(xgrid!),Plot{GRBackend},Symbol,Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(xlims),Subplot{PlotlyBackend}}) isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) - isdefined(Plots, Symbol("#add_major_or_minor_segments#126")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#126")),Vector{Int64},Bool,Segments{Tuple{Float64, Float64}},Float64,Bool}) isdefined(Plots, Symbol("#add_major_or_minor_segments#127")) && Base.precompile(Tuple{getfield(Plots, Symbol("#add_major_or_minor_segments#127")),Vector{Float64},Bool,Segments{Tuple{Float64, Float64, Float64}},Float64,Bool}) let fbody = try __lookup_kwbody__(which(font, (Font,Vararg{Any, N} where N,))) catch missing end if !ismissing(fbody) precompile(fbody, (Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}},typeof(font),Font,Vararg{Any, N} where N,)) end end - let fbody = try __lookup_kwbody__(which(gr_polyline, (Vector{Float64},Vector{Float64},typeof(GR.fillarea),))) catch missing end - if !ismissing(fbody) - precompile(fbody, (Symbol,Symbol,typeof(gr_polyline),Vector{Float64},Vector{Float64},typeof(GR.fillarea),)) - end - end let fbody = try __lookup_kwbody__(which(plot!, (Any,))) catch missing end if !ismissing(fbody) precompile(fbody, (Any,typeof(plot!),Any,)) From 13141feb4f3a7a950ba0e471b11617ecd1d8f6a2 Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Wed, 4 Aug 2021 13:11:15 +0200 Subject: [PATCH 503/518] Fix #3462 --- src/plot.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plot.jl b/src/plot.jl index a01e6451..fe614a67 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -73,7 +73,7 @@ The main plot command. Use `plot` to create a new plot object, and `plot!` to ad ``` There are lots of ways to pass in data, and lots of keyword arguments... just try it and it will likely work as expected. -When you pass in matrices, it splits by columns. To see the list of available attributes, use the `plotattr([attr])` +When you pass in matrices, it splits by columns. To see the list of available attributes, use the `plotattr(attr)` function, where `attr` is the symbol `:Series`, `:Subplot`, `:Plot`, or `:Axis`. Pass any attribute to `plotattr` as a String to look up its docstring, e.g., `plotattr("seriestype")`. """ From 10e9325635e7603f99afe5c48afa42bd4d4902e6 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 8 Aug 2021 00:10:27 +0200 Subject: [PATCH 504/518] avoid ambiguous += --- src/backends/gr.jl | 2 +- src/backends/pgfplotsx.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index e28fb2d8..8fb040ea 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -27,7 +27,7 @@ gr_markertype(k) = ( octagon = -24, cross = 2, xcross = 5, - + = 2, + (+) = 2, x = 5, star4 = -25, star5 = -26, diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index 030ddefa..cde7fd9b 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -708,7 +708,7 @@ pgfx_get_marker(k) = get( none = "none", cross = "+", xcross = "x", - + = "+", + (+) = "+", x = "x", utriangle = "triangle*", dtriangle = "triangle*", From 9e824367bb930cccaa41382a2fdc71d04424f38f Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 8 Aug 2021 00:23:41 +0200 Subject: [PATCH 505/518] add configuration file --- .JuliaFormatter.toml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .JuliaFormatter.toml diff --git a/.JuliaFormatter.toml b/.JuliaFormatter.toml new file mode 100644 index 00000000..481cff0a --- /dev/null +++ b/.JuliaFormatter.toml @@ -0,0 +1 @@ +whitespace_in_kwargs=false \ No newline at end of file From 1c84704a816505379cef898caf467eea42f0031a Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 8 Aug 2021 01:40:22 +0200 Subject: [PATCH 506/518] move format to separate action --- .github/workflows/format.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/format.yml diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml new file mode 100644 index 00000000..1b041417 --- /dev/null +++ b/.github/workflows/format.yml @@ -0,0 +1,26 @@ +name: Run JuliaFormatter + +on: + pull_request: + +jobs: + Benchmark: + if: "!contains(github.event.head_commit.message, '[skip ci]')" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: julia-actions/setup-julia@latest + with: + version: 1 + + # Setup + - name: Ubuntu TESTCMD + run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV + + # Check format + - name: Install JuliaFormatter and format + run: | + git diff --name-only --exit-code + $TESTCMD -e 'using Pkg; pkg"add JuliaFormatter CSTParser#master"' + $TESTCMD -e 'using JuliaFormatter; format(["src", "test"])' + git diff --exit-code From ffca3c130539ee51bbaa076d169a7be7dc9cc953 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 8 Aug 2021 20:25:36 +0200 Subject: [PATCH 507/518] update JuliaFormatter config file --- .JuliaFormatter.toml | 5 ++++- .github/workflows/benchmark.yml | 7 ++----- .github/workflows/ci.yml | 6 +++--- .github/workflows/format.yml | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.JuliaFormatter.toml b/.JuliaFormatter.toml index 481cff0a..5e092a6d 100644 --- a/.JuliaFormatter.toml +++ b/.JuliaFormatter.toml @@ -1 +1,4 @@ -whitespace_in_kwargs=false \ No newline at end of file +style = "blue" +import_to_using = false +always_use_return = false +short_to_long_function_def = false diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index ccc7bb31..4062fc8a 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -1,4 +1,4 @@ -name: Run benchmarks +name: benchmarks on: pull_request: @@ -6,9 +6,6 @@ on: jobs: Benchmark: if: "!contains(github.event.head_commit.message, '[skip ci]')" - env: - GKS_ENCODING: "utf8" - GKSwstype: "100" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -16,7 +13,7 @@ jobs: with: version: 1 - ## Setup + # Setup - name: Ubuntu TESTCMD run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV - name: Install Plots dependencies diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45a723a9..584bd3fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,9 +72,9 @@ jobs: # Run tests - name: Run Graphical test run: | - $TESTCMD --project -e 'using Pkg; Pkg.test(coverage=true);' - $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots");' - $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes");' + $TESTCMD --project -e 'using Pkg; Pkg.test(coverage=true)' + $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots")' + $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes")' - name: Codecov uses: julia-actions/julia-uploadcodecov@latest diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 1b041417..e983db8f 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -1,10 +1,10 @@ -name: Run JuliaFormatter +name: format on: pull_request: jobs: - Benchmark: + JuliaFormatter: if: "!contains(github.event.head_commit.message, '[skip ci]')" runs-on: ubuntu-latest steps: From 9164ee09cbbbd6626640bc385e7a542ffc4e5c98 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 8 Aug 2021 23:04:18 +0200 Subject: [PATCH 508/518] fix wrong method signature --- .JuliaFormatter.toml | 3 +++ src/backends/gr.jl | 9 +++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.JuliaFormatter.toml b/.JuliaFormatter.toml index 5e092a6d..49843713 100644 --- a/.JuliaFormatter.toml +++ b/.JuliaFormatter.toml @@ -1,4 +1,7 @@ style = "blue" import_to_using = false always_use_return = false +conditional_to_if = false +whitespace_typedefs = true short_to_long_function_def = false +annotate_untyped_fields_with_any = false diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 8fb040ea..49dace78 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -768,22 +768,20 @@ function _update_min_padding!(sp::Subplot{GRBackend}) h = 0mm if !isempty(first(xticks)) gr_set_font( - tickfont(xaxis), + tickfont(xaxis), sp, halign = (:left, :hcenter, :right)[sign(xaxis[:rotation]) + 2], valign = (xaxis[:mirror] ? :bottom : :top), rotation = xaxis[:rotation], - sp ) l = 0.01 + last(gr_get_ticks_size(xticks, xaxis[:rotation])) h = max(h, 1mm + get_size(sp)[2] * l * px) end if !isempty(first(yticks)) gr_set_font( - tickfont(yaxis), + tickfont(yaxis), sp, halign = (:left, :hcenter, :right)[sign(yaxis[:rotation]) + 2], valign = (yaxis[:mirror] ? :bottom : :top), rotation = yaxis[:rotation], - sp ) l = 0.01 + last(gr_get_ticks_size(yticks, yaxis[:rotation])) h = max(h, 1mm + get_size(sp)[2] * l * px) @@ -799,12 +797,11 @@ function _update_min_padding!(sp::Subplot{GRBackend}) if !isempty(first(zticks)) gr_set_font( - tickfont(zaxis), + tickfont(zaxis), sp, halign = (zaxis[:mirror] ? :left : :right), valign = (:top, :vcenter, :bottom)[sign(zaxis[:rotation]) + 2], rotation = zaxis[:rotation], color = zaxis[:tickfontcolor], - sp ) l = 0.01 + first(gr_get_ticks_size(zticks, zaxis[:rotation])) w = 1mm + get_size(sp)[1] * l * px From a3eca8244e6651183bb43c0361744b7606a67fda Mon Sep 17 00:00:00 2001 From: t-bltg Date: Tue, 10 Aug 2021 19:21:50 +0200 Subject: [PATCH 509/518] disable formatting on exports --- .JuliaFormatter.toml | 9 +++++++-- src/Plots.jl | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.JuliaFormatter.toml b/.JuliaFormatter.toml index 49843713..a580c42d 100644 --- a/.JuliaFormatter.toml +++ b/.JuliaFormatter.toml @@ -1,7 +1,12 @@ -style = "blue" +always_for_in = true import_to_using = false +align_pair_arrow = true +align_assignment = true +align_conditional = true always_use_return = false conditional_to_if = false -whitespace_typedefs = true +whitespace_in_kwargs = true +remove_extra_newlines = true +whitespace_ops_in_indices = true short_to_long_function_def = false annotate_untyped_fields_with_any = false diff --git a/src/Plots.jl b/src/Plots.jl index 5b067f0a..2efe1f7f 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -25,6 +25,7 @@ import JSON using Requires +#! format: off export grid, bbox, @@ -117,7 +118,7 @@ export scalefontsize, scalefontsizes, resetfontsizes - +#! format: on # --------------------------------------------------------- import NaNMath # define functions that ignores NaNs. To overcome the destructive effects of https://github.com/JuliaLang/julia/pull/12563 From c5db139bbb76b04d5b7b5417975df5a28bbd0c72 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Wed, 11 Aug 2021 07:57:46 +0200 Subject: [PATCH 510/518] run format(["src", "test"]) --- src/Plots.jl | 68 +- src/animation.jl | 170 ++-- src/arg_desc.jl | 360 ++++----- src/args.jl | 1130 ++++++++++++++++++--------- src/axes.jl | 236 ++++-- src/backends.jl | 720 ++++++++++++----- src/backends/deprecated/pgfplots.jl | 272 +++++-- src/backends/gaston.jl | 155 ++-- src/backends/gr.jl | 436 +++++++---- src/backends/hdf5.jl | 102 ++- src/backends/inspectdr.jl | 253 +++--- src/backends/pgfplotsx.jl | 498 ++++++------ src/backends/plotly.jl | 445 +++++++---- src/backends/plotlyjs.jl | 9 +- src/backends/pyplot.jl | 561 ++++++++----- src/backends/unicodeplots.jl | 46 +- src/backends/web.jl | 12 +- src/colorbars.jl | 27 +- src/components.jl | 511 ++++++------ src/examples.jl | 589 +++++++------- src/fileio.jl | 9 +- src/ijulia.jl | 18 +- src/init.jl | 43 +- src/layouts.jl | 244 +++--- src/legend.jl | 61 +- src/output.jl | 8 +- src/pipeline.jl | 52 +- src/plot.jl | 35 +- src/plotattr.jl | 37 +- src/precompile_includer.jl | 9 +- src/recipes.jl | 161 ++-- src/shorthands.jl | 45 +- src/subplots.jl | 40 +- src/themes.jl | 16 +- src/types.jl | 23 +- src/utils.jl | 300 +++---- test/imgcomp.jl | 16 +- test/integration_dates.jl | 30 +- test/runtests.jl | 85 +- test/test_axes.jl | 24 +- test/test_axis_letter.jl | 9 +- test/test_components.jl | 17 +- test/test_hdf5plots.jl | 25 +- test/test_pgfplotsx.jl | 785 +++++++++---------- test/test_pipeline.jl | 4 +- test/test_recipes.jl | 30 +- test/test_shorthands.jl | 42 +- 47 files changed, 5118 insertions(+), 3650 deletions(-) diff --git a/src/Plots.jl b/src/Plots.jl index 2efe1f7f..bb0ea855 100644 --- a/src/Plots.jl +++ b/src/Plots.jl @@ -4,7 +4,17 @@ if isdefined(Base, :Experimental) && isdefined(Base.Experimental, Symbol("@optle @eval Base.Experimental.@optlevel 1 end -const _current_plots_version = VersionNumber(split(first(filter(line -> occursin("version", line), readlines(normpath(@__DIR__, "..", "Project.toml")))), "\"")[2]) +const _current_plots_version = VersionNumber( + split( + first( + filter( + line -> occursin("version", line), + readlines(normpath(@__DIR__, "..", "Project.toml")), + ), + ), + "\"", + )[2], +) using Reexport @@ -137,7 +147,6 @@ ignorenan_extrema(x) = Base.extrema(x) # This makes it impossible to create row vectors of String and Symbol with the transpose operator. # This solves this issue, internally in Plots at least. - # commented out on the insistence of the METADATA maintainers #Base.transpose(x::Symbol) = x @@ -148,12 +157,13 @@ ignorenan_extrema(x) = Base.extrema(x) import Measures module PlotMeasures import Measures -import Measures: Length, AbsoluteLength, Measure, BoundingBox, mm, cm, inch, pt, width, height, w, h +import Measures: + Length, AbsoluteLength, Measure, BoundingBox, mm, cm, inch, pt, width, height, w, h const BBox = Measures.Absolute2DBox # allow pixels and percentages const px = AbsoluteLength(0.254) -const pct = Length{:pct, Float64}(1.0) +const pct = Length{:pct,Float64}(1.0) Base.:*(m1::AbsoluteLength, m2::Length{:pct}) = AbsoluteLength(m1.value * m2.value) Base.:*(m1::Length{:pct}, m2::AbsoluteLength) = AbsoluteLength(m2.value * m1.value) @@ -168,7 +178,8 @@ import .PlotMeasures: Length, AbsoluteLength, Measure, width, height # --------------------------------------------------------- import RecipesPipeline -import RecipesPipeline: SliceIt, +import RecipesPipeline: + SliceIt, DefaultsDict, Formatted, AbstractSurface, @@ -220,33 +231,30 @@ include("backends/web.jl") include("shorthands.jl") -let PlotOrSubplot = Union{Plot, Subplot} - global title!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; title = s, kw...) - global xlabel!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; xlabel = s, kw...) - global ylabel!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; ylabel = s, kw...) - global xlims!(plt::PlotOrSubplot, lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(plt; xlims = lims, kw...) - global ylims!(plt::PlotOrSubplot, lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(plt; ylims = lims, kw...) - global zlims!(plt::PlotOrSubplot, lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(plt; zlims = lims, kw...) - global xlims!(plt::PlotOrSubplot, xmin::Real, xmax::Real; kw...) = plot!(plt; xlims = (xmin,xmax), kw...) - global ylims!(plt::PlotOrSubplot, ymin::Real, ymax::Real; kw...) = plot!(plt; ylims = (ymin,ymax), kw...) - global zlims!(plt::PlotOrSubplot, zmin::Real, zmax::Real; kw...) = plot!(plt; zlims = (zmin,zmax), kw...) - global xticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) = plot!(plt; xticks = ticks, kw...) - global yticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) = plot!(plt; yticks = ticks, kw...) - global xticks!(plt::PlotOrSubplot, - ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(plt; xticks = (ticks,labels), kw...) - global yticks!(plt::PlotOrSubplot, - ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(plt; yticks = (ticks,labels), kw...) - global xgrid!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; xgrid = args, kw...) - global ygrid!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; ygrid = args, kw...) - global annotate!(plt::PlotOrSubplot, anns...; kw...) = plot!(plt; annotation = anns, kw...) - global annotate!(plt::PlotOrSubplot, anns::AVec{T}; kw...) where {T<:Tuple} = plot!(plt; annotation = anns, kw...) - global xflip!(plt::PlotOrSubplot, flip::Bool = true; kw...) = plot!(plt; xflip = flip, kw...) - global yflip!(plt::PlotOrSubplot, flip::Bool = true; kw...) = plot!(plt; yflip = flip, kw...) - global xaxis!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; xaxis = args, kw...) - global yaxis!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; yaxis = args, kw...) +let PlotOrSubplot = Union{Plot,Subplot} + global title!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; title = s, kw...) + global xlabel!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; xlabel = s, kw...) + global ylabel!(plt::PlotOrSubplot, s::AbstractString; kw...) = plot!(plt; ylabel = s, kw...) + global xlims!(plt::PlotOrSubplot, lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(plt; xlims = lims, kw...) + global ylims!(plt::PlotOrSubplot, lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(plt; ylims = lims, kw...) + global zlims!(plt::PlotOrSubplot, lims::Tuple{T,S}; kw...) where {T<:Real,S<:Real} = plot!(plt; zlims = lims, kw...) + global xlims!(plt::PlotOrSubplot, xmin::Real, xmax::Real; kw...) = plot!(plt; xlims = (xmin, xmax), kw...) + global ylims!(plt::PlotOrSubplot, ymin::Real, ymax::Real; kw...) = plot!(plt; ylims = (ymin, ymax), kw...) + global zlims!(plt::PlotOrSubplot, zmin::Real, zmax::Real; kw...) = plot!(plt; zlims = (zmin, zmax), kw...) + global xticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) = plot!(plt; xticks = ticks, kw...) + global yticks!(plt::PlotOrSubplot, ticks::TicksArgs; kw...) = plot!(plt; yticks = ticks, kw...) + global xticks!(plt::PlotOrSubplot, ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(plt; xticks = (ticks, labels), kw...) + global yticks!(plt::PlotOrSubplot, ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(plt; yticks = (ticks, labels), kw...) + global xgrid!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; xgrid = args, kw...) + global ygrid!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; ygrid = args, kw...) + global annotate!(plt::PlotOrSubplot, anns...; kw...) = plot!(plt; annotation = anns, kw...) + global annotate!(plt::PlotOrSubplot, anns::AVec{T}; kw...) where {T<:Tuple} = plot!(plt; annotation = anns, kw...) + global xflip!(plt::PlotOrSubplot, flip::Bool = true; kw...) = plot!(plt; xflip = flip, kw...) + global yflip!(plt::PlotOrSubplot, flip::Bool = true; kw...) = plot!(plt; yflip = flip, kw...) + global xaxis!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; xaxis = args, kw...) + global yaxis!(plt::PlotOrSubplot, args...; kw...) = plot!(plt; yaxis = args, kw...) end - # --------------------------------------------------------- const CURRENT_BACKEND = CurrentBackend(:none) diff --git a/src/animation.jl b/src/animation.jl index 0d89be65..9021059d 100644 --- a/src/animation.jl +++ b/src/animation.jl @@ -14,24 +14,24 @@ end Add a plot (the current plot if not specified) to an existing animation """ -function frame(anim::Animation, plt::P=current()) where P<:AbstractPlot +function frame(anim::Animation, plt::P = current()) where {P<:AbstractPlot} i = length(anim.frames) + 1 filename = @sprintf("%06d.png", i) png(plt, joinpath(anim.dir, filename)) push!(anim.frames, filename) end -giffn() = (isijulia() ? "tmp.gif" : tempname()*".gif") -movfn() = (isijulia() ? "tmp.mov" : tempname()*".mov") -mp4fn() = (isijulia() ? "tmp.mp4" : tempname()*".mp4") -webmfn() = (isijulia() ? "tmp.webm" : tempname()*".webm") +giffn() = (isijulia() ? "tmp.gif" : tempname() * ".gif") +movfn() = (isijulia() ? "tmp.mov" : tempname() * ".mov") +mp4fn() = (isijulia() ? "tmp.mp4" : tempname() * ".mp4") +webmfn() = (isijulia() ? "tmp.webm" : tempname() * ".webm") mutable struct FrameIterator itr every::Int kw end -FrameIterator(itr; every=1, kw...) = FrameIterator(itr, every, kw) +FrameIterator(itr; every = 1, kw...) = FrameIterator(itr, every, kw) """ Animate from an iterator which returns the plot args each iteration. @@ -48,8 +48,8 @@ function animate(fitr::FrameIterator, fn = giffn(); kw...) end # most things will implement this -function animate(obj, fn = giffn(); every=1, fps=20, loop=0, kw...) - animate(FrameIterator(obj, every, kw), fn; fps=fps, loop=loop) +function animate(obj, fn = giffn(); every = 1, fps = 20, loop = 0, kw...) + animate(FrameIterator(obj, every, kw), fn; fps = fps, loop = loop) end # ----------------------------------------------- @@ -69,12 +69,16 @@ webm(anim::Animation, fn = webmfn(); kw...) = buildanimation(anim, fn, false; kw ffmpeg_framerate(fps) = "$fps" ffmpeg_framerate(fps::Rational) = "$(fps.num)/$(fps.den)" -function buildanimation(anim::Animation, fn::AbstractString, - is_animated_gif::Bool=true; - fps::Real = 20, loop::Integer = 0, - variable_palette::Bool=false, - verbose=false, - show_msg::Bool=true) +function buildanimation( + anim::Animation, + fn::AbstractString, + is_animated_gif::Bool = true; + fps::Real = 20, + loop::Integer = 0, + variable_palette::Bool = false, + verbose = false, + show_msg::Bool = true, +) if length(anim.frames) == 0 throw(ArgumentError("Cannot build empty animations")) end @@ -82,41 +86,49 @@ function buildanimation(anim::Animation, fn::AbstractString, fn = abspath(expanduser(fn)) animdir = anim.dir framerate = ffmpeg_framerate(fps) - verbose_level = (verbose isa Int ? verbose : - verbose ? 32 # "info" - : 16) # "error" + verbose_level = (verbose isa Int ? verbose : verbose ? 32 : 16) # "error" if is_animated_gif if variable_palette # generate a colorpalette for each frame for highest quality, but larger filesize - palette="palettegen=stats_mode=single[pal],[0:v][pal]paletteuse=new=1" - ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -lavfi "$palette" -loop $loop -y $fn`) + palette = "palettegen=stats_mode=single[pal],[0:v][pal]paletteuse=new=1" + ffmpeg_exe( + `-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -lavfi "$palette" -loop $loop -y $fn`, + ) else # generate a colorpalette first so ffmpeg does not have to guess it - ffmpeg_exe(`-v $verbose_level -i $(animdir)/%06d.png -vf "palettegen=stats_mode=diff" -y "$(animdir)/palette.bmp"`) + ffmpeg_exe( + `-v $verbose_level -i $(animdir)/%06d.png -vf "palettegen=stats_mode=diff" -y "$(animdir)/palette.bmp"`, + ) # then apply the palette to get better results - ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -i "$(animdir)/palette.bmp" -lavfi "paletteuse=dither=sierra2_4a" -loop $loop -y $fn`) + ffmpeg_exe( + `-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -i "$(animdir)/palette.bmp" -lavfi "paletteuse=dither=sierra2_4a" -loop $loop -y $fn`, + ) end else - ffmpeg_exe(`-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -vf format=yuv420p -loop $loop -y $fn`) + ffmpeg_exe( + `-v $verbose_level -framerate $framerate -i $(animdir)/%06d.png -vf format=yuv420p -loop $loop -y $fn`, + ) end show_msg && @info("Saved animation to ", fn) AnimatedGif(fn) end - - # write out html to view the gif function Base.show(io::IO, ::MIME"text/html", agif::AnimatedGif) ext = file_extension(agif.filename) if ext == "gif" - html = "" - elseif ext in ("mov", "mp4","webm") + html = + "" + elseif ext in ("mov", "mp4", "webm") mimetype = ext == "mov" ? "video/quicktime" : "video/$ext" - html = "" + html = + "" else error("Cannot show animation with extension $ext: $agif") end @@ -125,65 +137,67 @@ function Base.show(io::IO, ::MIME"text/html", agif::AnimatedGif) return nothing end - # Only gifs can be shown via image/gif Base.showable(::MIME"image/gif", agif::AnimatedGif) = file_extension(agif.filename) == "gif" function Base.show(io::IO, ::MIME"image/gif", agif::AnimatedGif) - open(fio-> write(io, fio), agif.filename) + open(fio -> write(io, fio), agif.filename) end - # ----------------------------------------------- function _animate(forloop::Expr, args...; callgif = false) - if forloop.head ∉ (:for, :while) - error("@animate macro expects a for- or while-block. got: $(forloop.head)") - end - - # add the call to frame to the end of each iteration - animsym = gensym("anim") - countersym = gensym("counter") - freqassert = :() - block = forloop.args[2] - - # create filter - n = length(args) - filterexpr = if n == 0 - # no filter... every iteration gets a frame - true - - elseif args[1] == :every - # filter every `freq` frames (starting with the first frame) - @assert n == 2 - freq = args[2] - freqassert = :(@assert isa($freq, Integer) && $freq > 0) - :(mod1($countersym, $freq) == 1) - - elseif args[1] == :when - # filter on custom expression - @assert n == 2 - args[2] - - else - error("Unsupported animate filter: $args") - end - - push!(block.args, :(if $filterexpr; Plots.frame($animsym); end)) - push!(block.args, :($countersym += 1)) - - # add a final call to `gif(anim)`? - retval = callgif ? :(Plots.gif($animsym)) : animsym - - # full expression: - esc(quote - $freqassert # if filtering, check frequency is an Integer > 0 - $animsym = Plots.Animation() # init animation object - let $countersym = 1 # init iteration counter - $forloop # for loop, saving a frame after each iteration + if forloop.head ∉ (:for, :while) + error("@animate macro expects a for- or while-block. got: $(forloop.head)") end - $retval # return the animation object, or the gif - end) + + # add the call to frame to the end of each iteration + animsym = gensym("anim") + countersym = gensym("counter") + freqassert = :() + block = forloop.args[2] + + # create filter + n = length(args) + filterexpr = if n == 0 + # no filter... every iteration gets a frame + true + + elseif args[1] == :every + # filter every `freq` frames (starting with the first frame) + @assert n == 2 + freq = args[2] + freqassert = :(@assert isa($freq, Integer) && $freq > 0) + :(mod1($countersym, $freq) == 1) + + elseif args[1] == :when + # filter on custom expression + @assert n == 2 + args[2] + + else + error("Unsupported animate filter: $args") + end + + push!(block.args, :( + if $filterexpr + Plots.frame($animsym) + end + )) + push!(block.args, :($countersym += 1)) + + # add a final call to `gif(anim)`? + retval = callgif ? :(Plots.gif($animsym)) : animsym + + # full expression: + esc(quote + $freqassert # if filtering, check frequency is an Integer > 0 + $animsym = Plots.Animation() # init animation object + let $countersym = 1 # init iteration counter + $forloop # for loop, saving a frame after each iteration + end + $retval # return the animation object, or the gif + end) end """ diff --git a/src/arg_desc.jl b/src/arg_desc.jl index b848bf70..da250471 100644 --- a/src/arg_desc.jl +++ b/src/arg_desc.jl @@ -1,187 +1,187 @@ const _arg_desc = KW( -# series args -:label => "String type. The label for a series, which appears in a legend. If empty, no legend entry is added.", -:seriescolor => "Color Type. The base color for this series. `:auto` (the default) will select a color from the subplot's `color_palette`, based on the order it was added to the subplot", -:seriesalpha => "Number in [0,1]. The alpha/opacity override for the series. `nothing` (the default) means it will take the alpha value of the color.", -:seriestype => "Symbol. This is the identifier of the type of visualization for this series. Choose from $(_allTypes) or any series recipes which are defined.", -:linestyle => "Symbol. Style of the line (for path and bar stroke). Choose from $(_allStyles)", -:linewidth => "Number. Width of the line (in pixels)", -:linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).", -:linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.", -:fillrange => "Number or AbstractVector. Fills area between fillrange and y for line-types, sets the base for bar/stick types, and similar for other types.", -:fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.", -:fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.", -:markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).", -:markercolor => "Color Type. Color of the interior of the marker or shape. `:match` will take the value from `:seriescolor`.", -:markeralpha => "Number in [0,1]. The alpha/opacity override for the marker interior. `nothing` (the default) means it will take the alpha value of markercolor.", -:markersize => "Number or AbstractVector. Size (radius pixels) of the markers", -:markerstrokestyle => "Symbol. Style of the marker stroke (border). Choose from $(_allStyles)", -:markerstrokewidth => "Number. Width of the marker stroke (border) in pixels", -:markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.", -:markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.", -:bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`", -:smooth => "Bool. Add a regression line?", -:group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`", -:x => "Various. Input data. First Dimension", -:y => "Various. Input data. Second Dimension", -:z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.", -:marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.", -:line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).", -:fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.", -:levels => "Integer, NTuple{2,Integer}, or AbstractVector. Levels or number of levels (or x-levels/y-levels) for a contour type.", -:orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).", -:bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)", -:bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).", -:bar_edges => "Bool. Align bars to edges (true), or centers (the default)?", -:xerror => "AbstractVector or 2-Tuple of Vectors. x (horizontal) error relative to x-value. If 2-tuple of vectors, the first vector corresponds to the left error (and the second to the right)", -:yerror => "AbstractVector or 2-Tuple of Vectors. y (vertical) error relative to y-value. If 2-tuple of vectors, the first vector corresponds to the bottom error (and the second to the top)", -:ribbon => "Number or AbstractVector. Creates a fillrange around the data points.", -:quiver => "AbstractVector or 2-Tuple of vectors. The directional vectors U,V which specify velocity/gradient vectors for a quiver plot.", -:arrow => "nothing (no arrows), Bool (if true, default arrows), Arrow object, or arg(s) that could be style or head length/widths. Defines arrowheads that should be displayed at the end of path line segments (just before a NaN and the last non-NaN point). Used in quiverplot, streamplot, or similar.", -:normalize => "Bool or Symbol. Histogram normalization mode. Possible values are: false/:none (no normalization, default), true/:pdf (normalize to a discrete Probability Density Function, where the total area of the bins is 1), :probability (bin heights sum to 1) and :density (the area of each bin, rather than the height, is equal to the counts - useful for uneven bin sizes).", -:weights => "AbstractVector. Used in histogram types for weighted counts.", -:show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default)", -:contours => "Bool. Add contours to the side-grids of 3D plots? Used in surface/wireframe.", -:contour_labels => "Bool. Show labels at the contour lines?", -:match_dimensions => "Bool. For heatmap types... should the first dimension of a matrix (rows) correspond to the first dimension of the plot (x-axis)? The default is false, which matches the behavior of Matplotlib, Plotly, and others. Note: when passing a function for z, the function should still map `(x,y) -> z`.", -:subplot => "Integer (subplot index) or Subplot object. The subplot that this series belongs to.", -:series_annotations => "AbstractVector of String or PlotText. These are annotations which are mapped to data points/positions.", -:primary => "Bool. Does this count as a 'real series'? For example, you could have a path (primary), and a scatter (secondary) as 2 separate series, maybe with different data (see sticks recipe for an example). The secondary series will get the same color, etc as the primary.", -:hover => "nothing or vector of strings. Text to display when hovering over each data point.", -:colorbar_entry => "Bool. Include this series in the color bar? Set to `false` to exclude.", + # series args + :label => "String type. The label for a series, which appears in a legend. If empty, no legend entry is added.", + :seriescolor => "Color Type. The base color for this series. `:auto` (the default) will select a color from the subplot's `color_palette`, based on the order it was added to the subplot", + :seriesalpha => "Number in [0,1]. The alpha/opacity override for the series. `nothing` (the default) means it will take the alpha value of the color.", + :seriestype => "Symbol. This is the identifier of the type of visualization for this series. Choose from $(_allTypes) or any series recipes which are defined.", + :linestyle => "Symbol. Style of the line (for path and bar stroke). Choose from $(_allStyles)", + :linewidth => "Number. Width of the line (in pixels)", + :linecolor => "Color Type. Color of the line (for path and bar stroke). `:match` will take the value from `:seriescolor`, (though histogram/bar types use `:black` as a default).", + :linealpha => "Number in [0,1]. The alpha/opacity override for the line. `nothing` (the default) means it will take the alpha value of linecolor.", + :fillrange => "Number or AbstractVector. Fills area between fillrange and y for line-types, sets the base for bar/stick types, and similar for other types.", + :fillcolor => "Color Type. Color of the filled area of path or bar types. `:match` will take the value from `:seriescolor`.", + :fillalpha => "Number in [0,1]. The alpha/opacity override for the fill area. `nothing` (the default) means it will take the alpha value of fillcolor.", + :markershape => "Symbol, Shape, or AbstractVector. Choose from $(_allMarkers).", + :markercolor => "Color Type. Color of the interior of the marker or shape. `:match` will take the value from `:seriescolor`.", + :markeralpha => "Number in [0,1]. The alpha/opacity override for the marker interior. `nothing` (the default) means it will take the alpha value of markercolor.", + :markersize => "Number or AbstractVector. Size (radius pixels) of the markers", + :markerstrokestyle => "Symbol. Style of the marker stroke (border). Choose from $(_allStyles)", + :markerstrokewidth => "Number. Width of the marker stroke (border) in pixels", + :markerstrokecolor => "Color Type. Color of the marker stroke (border). `:match` will take the value from `:foreground_color_subplot`.", + :markerstrokealpha => "Number in [0,1]. The alpha/opacity override for the marker stroke (border). `nothing` (the default) means it will take the alpha value of markerstrokecolor.", + :bins => "Integer, NTuple{2,Integer}, AbstractVector or Symbol. Default is :auto (the Freedman-Diaconis rule). For histogram-types, defines the approximate number of bins to aim for, or the auto-binning algorithm to use (:sturges, :sqrt, :rice, :scott or :fd). For fine-grained control pass a Vector of break values, e.g. `range(minimum(x), stop = maximum(x), length = 25)`", + :smooth => "Bool. Add a regression line?", + :group => "AbstractVector. Data is split into a separate series, one for each unique value in `group`", + :x => "Various. Input data. First Dimension", + :y => "Various. Input data. Second Dimension", + :z => "Various. Input data. Third Dimension. May be wrapped by a `Surface` for surface and heatmap types.", + :marker_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series data point, which correspond to the color to be used from a markercolor gradient.", + :line_z => "AbstractVector, Function `f(x,y,z) -> z_value`, or Function `f(x,y) -> z_value`, or nothing. z-values for each series line segment, which correspond to the color to be used from a linecolor gradient. Note that for N points, only the first N-1 values are used (one per line-segment).", + :fill_z => "Matrix{Float64} of the same size as z matrix, which specifies the color of the 3D surface; the default value is `nothing`.", + :levels => "Integer, NTuple{2,Integer}, or AbstractVector. Levels or number of levels (or x-levels/y-levels) for a contour type.", + :orientation => "Symbol. Horizontal or vertical orientation for bar types. Values `:h`, `:hor`, `:horizontal` correspond to horizontal (sideways, anchored to y-axis), and `:v`, `:vert`, and `:vertical` correspond to vertical (the default).", + :bar_position => "Symbol. Choose from `:overlay` (default), `:stack`. (warning: May not be implemented fully)", + :bar_width => "nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when `orientation = :h`).", + :bar_edges => "Bool. Align bars to edges (true), or centers (the default)?", + :xerror => "AbstractVector or 2-Tuple of Vectors. x (horizontal) error relative to x-value. If 2-tuple of vectors, the first vector corresponds to the left error (and the second to the right)", + :yerror => "AbstractVector or 2-Tuple of Vectors. y (vertical) error relative to y-value. If 2-tuple of vectors, the first vector corresponds to the bottom error (and the second to the top)", + :ribbon => "Number or AbstractVector. Creates a fillrange around the data points.", + :quiver => "AbstractVector or 2-Tuple of vectors. The directional vectors U,V which specify velocity/gradient vectors for a quiver plot.", + :arrow => "nothing (no arrows), Bool (if true, default arrows), Arrow object, or arg(s) that could be style or head length/widths. Defines arrowheads that should be displayed at the end of path line segments (just before a NaN and the last non-NaN point). Used in quiverplot, streamplot, or similar.", + :normalize => "Bool or Symbol. Histogram normalization mode. Possible values are: false/:none (no normalization, default), true/:pdf (normalize to a discrete Probability Density Function, where the total area of the bins is 1), :probability (bin heights sum to 1) and :density (the area of each bin, rather than the height, is equal to the counts - useful for uneven bin sizes).", + :weights => "AbstractVector. Used in histogram types for weighted counts.", + :show_empty_bins => "Bool. Whether empty bins in a 2D histogram are colored as 0 (true), or transparent (the default)", + :contours => "Bool. Add contours to the side-grids of 3D plots? Used in surface/wireframe.", + :contour_labels => "Bool. Show labels at the contour lines?", + :match_dimensions => "Bool. For heatmap types... should the first dimension of a matrix (rows) correspond to the first dimension of the plot (x-axis)? The default is false, which matches the behavior of Matplotlib, Plotly, and others. Note: when passing a function for z, the function should still map `(x,y) -> z`.", + :subplot => "Integer (subplot index) or Subplot object. The subplot that this series belongs to.", + :series_annotations => "AbstractVector of String or PlotText. These are annotations which are mapped to data points/positions.", + :primary => "Bool. Does this count as a 'real series'? For example, you could have a path (primary), and a scatter (secondary) as 2 separate series, maybe with different data (see sticks recipe for an example). The secondary series will get the same color, etc as the primary.", + :hover => "nothing or vector of strings. Text to display when hovering over each data point.", + :colorbar_entry => "Bool. Include this series in the color bar? Set to `false` to exclude.", -# plot args -:plot_title => "String. Title for the whole plot (not the subplots)", -:plot_titlevspan => "Number in [0,1]. Vertical span of the whole plot title (fraction of the plot height)", -:background_color => "Color Type. Base color for all backgrounds.", -:background_color_outside => "Color Type or `:match` (matches `:background_color`). Color outside the plot area(s)", -:foreground_color => "Color Type. Base color for all foregrounds.", -:size => "NTuple{2,Int}. (width_px, height_px) of the whole Plot", -:pos => "NTuple{2,Int}. (left_px, top_px) position of the GUI window (note: currently unimplemented)", -:window_title => "String. Title of the standalone gui-window.", -:show => "Bool. Should this command open/refresh a GUI/display? This allows displaying in scripts or functions without explicitly calling `display`", -:layout => "Integer (number of subplots), NTuple{2,Integer} (grid dimensions), AbstractLayout (for example `grid(2,2)`), or the return from the `@layout` macro. This builds the layout of subplots.", -:link => "Symbol. How/whether to link axis limits between subplots. Values: `:none`, `:x` (x axes are linked by columns), `:y` (y axes are linked by rows), `:both` (x and y are linked), `:all` (every subplot is linked together regardless of layout position).", -:overwrite_figure => "Bool. Should we reuse the same GUI window/figure when plotting (true) or open a new one (false).", -:html_output_format => "Symbol. When writing html output, what is the format? `:png` and `:svg` are currently supported.", -:tex_output_standalone => "Bool. When writing tex output, should the source include a preamble for a standalone document class.", -:inset_subplots => "nothing or vector of 2-tuple (parent,bbox). optionally pass a vector of (parent,bbox) tuples which are the parent layout and the relative bounding box of inset subplots", -:dpi => "Number. Dots Per Inch of output figures", -:thickness_scaling => "Number. Scale for the thickness of all line elements like lines, borders, axes, grid lines, ... defaults to 1.", -:display_type => "Symbol (`:auto`, `:gui`, or `:inline`). When supported, `display` will either open a GUI window or plot inline.", -:extra_kwargs => "Either one of (`:plot`, `:subplot`, `:series`) to specify for which element extra keyword args are collected or a KW (Dict{Symbol,Any}) to pass a map of extra keyword args which may be specific to a backend. Default: `:series`.\n Example: `pgfplotsx(); scatter(1:5, extra_kwargs=Dict(:subplot=>Dict(\"axis line shift\" => \"10pt\"))`", -:fontfamily => "String or Symbol. Default font family for title, legend entries, tick labels and guides", -:warn_on_unsupported => "Bool. Warn on unsupported attributes, series types and marker shapes", + # plot args + :plot_title => "String. Title for the whole plot (not the subplots)", + :plot_titlevspan => "Number in [0,1]. Vertical span of the whole plot title (fraction of the plot height)", + :background_color => "Color Type. Base color for all backgrounds.", + :background_color_outside => "Color Type or `:match` (matches `:background_color`). Color outside the plot area(s)", + :foreground_color => "Color Type. Base color for all foregrounds.", + :size => "NTuple{2,Int}. (width_px, height_px) of the whole Plot", + :pos => "NTuple{2,Int}. (left_px, top_px) position of the GUI window (note: currently unimplemented)", + :window_title => "String. Title of the standalone gui-window.", + :show => "Bool. Should this command open/refresh a GUI/display? This allows displaying in scripts or functions without explicitly calling `display`", + :layout => "Integer (number of subplots), NTuple{2,Integer} (grid dimensions), AbstractLayout (for example `grid(2,2)`), or the return from the `@layout` macro. This builds the layout of subplots.", + :link => "Symbol. How/whether to link axis limits between subplots. Values: `:none`, `:x` (x axes are linked by columns), `:y` (y axes are linked by rows), `:both` (x and y are linked), `:all` (every subplot is linked together regardless of layout position).", + :overwrite_figure => "Bool. Should we reuse the same GUI window/figure when plotting (true) or open a new one (false).", + :html_output_format => "Symbol. When writing html output, what is the format? `:png` and `:svg` are currently supported.", + :tex_output_standalone => "Bool. When writing tex output, should the source include a preamble for a standalone document class.", + :inset_subplots => "nothing or vector of 2-tuple (parent,bbox). optionally pass a vector of (parent,bbox) tuples which are the parent layout and the relative bounding box of inset subplots", + :dpi => "Number. Dots Per Inch of output figures", + :thickness_scaling => "Number. Scale for the thickness of all line elements like lines, borders, axes, grid lines, ... defaults to 1.", + :display_type => "Symbol (`:auto`, `:gui`, or `:inline`). When supported, `display` will either open a GUI window or plot inline.", + :extra_kwargs => "Either one of (`:plot`, `:subplot`, `:series`) to specify for which element extra keyword args are collected or a KW (Dict{Symbol,Any}) to pass a map of extra keyword args which may be specific to a backend. Default: `:series`.\n Example: `pgfplotsx(); scatter(1:5, extra_kwargs=Dict(:subplot=>Dict(\"axis line shift\" => \"10pt\"))`", + :fontfamily => "String or Symbol. Default font family for title, legend entries, tick labels and guides", + :warn_on_unsupported => "Bool. Warn on unsupported attributes, series types and marker shapes", -# subplot args -:title => "String. Subplot title.", -:titlelocation => "Symbol. Position of subplot title. Values: `:left`, `:center`, `:right`", -:titlefontfamily => "String or Symbol. Font family of subplot title.", -:titlefontsize => "Integer. Font pointsize of subplot title.", -:titlefonthalign => "Symbol. Font horizontal alignment of subplot title: :hcenter, :left, :right or :center", -:titlefontvalign => "Symbol. Font vertical alignment of subplot title: :vcenter, :top, :bottom or :center", -:titlefontrotation => "Real. Font rotation of subplot title", -:titlefontcolor => "Color Type. Font color of subplot title", -:background_color_subplot => "Color Type or `:match` (matches `:background_color`). Base background color of the subplot.", -:background_color_legend => "Color Type or `:match` (matches `:background_color_subplot`). Background color of the legend.", -:background_color_inside => "Color Type or `:match` (matches `:background_color_subplot`). Background color inside the plot area (under the grid).", -:foreground_color_subplot => "Color Type or `:match` (matches `:foreground_color`). Base foreground color of the subplot.", -:foreground_color_legend => "Color Type or `:match` (matches `:foreground_color_subplot`). Foreground color of the legend.", -:foreground_color_title => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of subplot title.", -:color_palette => "Vector of colors (cycle through) or color gradient (generate list from gradient) or `:auto` (generate a color list using `Colors.distiguishable_colors` and custom seed colors chosen to contrast with the background). The color palette is a color list from which series colors are automatically chosen.", -:legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position) or angle or (angle,inout) tuple. Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend). Legend is positioned at (angle degrees) (so (90,:outer) is roughly equivalent to :outertop), close to the inside of the axes or the outside if inout=:outer.", -:legendfontfamily => "String or Symbol. Font family of legend entries.", -:legendfontsize => "Integer. Font pointsize of legend entries.", -:legendfonthalign => "Symbol. Font horizontal alignment of legend entries: :hcenter, :left, :right or :center", -:legendfontvalign => "Symbol. Font vertical alignment of legend entries: :vcenter, :top, :bottom or :center", -:legendfontrotation => "Real. Font rotation of legend entries", -:legendfontcolor => "Color Type. Font color of legend entries", -:legendtitle => "String. Legend title.", -:legendtitlefontfamily => "String or Symbol. Font family of the legend title.", -:legendtitlefontsize => "Integer. Font pointsize the legend title.", -:legendtitlefonthalign => "Symbol. Font horizontal alignment of the legend title: :hcenter, :left, :right or :center", -:legendtitlefontvalign => "Symbol. Font vertical alignment of the legend title: :vcenter, :top, :bottom or :center", -:legendtitlefontrotation => "Real. Font rotation of the legend title", -:legendtitlefontcolor => "Color Type. Font color of the legend title", -:colorbar => "Bool (show the colorbar?) or Symbol (colorbar position). Symbol values: `:none`, `:best`, `:right`, `:left`, `:top`, `:bottom`, `:legend` (matches legend value) (note: only some may be supported in each backend)", -:clims => "`:auto`, NTuple{2,Number}, or a function that takes series data in and returns NTuple{2,Number}. Fixes the limits of the colorbar.", -:colorbar_fontfamily => "String or Symbol. Font family of colobar entries.", -:colorbar_ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", -:colorbar_tickfontfamily => "String or Symbol. Font family of colorbar tick labels.", -:colorbar_tickfontsize => "Integer. Font pointsize of colorbar tick entries.", -:colorbar_tickfontcolor => "Color Type. Font color of colorbar tick entries", -:colorbar_scale => "Symbol. Scale of the colorbar axis: `:none`, `:ln`, `:log2`, `:log10`", -:colorbar_formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", -:legendfont => "Font. Font of legend items.", -:legendtitlefont => "Font. Font of the legend title.", -:annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String, PlotText (created with `text(args...)`), or a tuple of arguments to `text` (e.g., `(\"Label\", 8, :red, :top)`). Add one-off text annotations at the x,y coordinates.", -:annotationfontfamily => "String or Symbol. Font family of annotations.", -:annotationfontsize => "Integer. Font pointsize of annotations.", -:annotationhalign => "Symbol. horizontal alignment of annotations, :hcenter, :left, :right or :center.", -:annotationvalign => "Symbol. Vertical alignment of annotations, :vcenter, :top, :bottom or :center.", -:annotationrotation => "Float. Rotation of annotations in degrees.", -:annotationcolor => "Colorant or :match. Color of annotations.", -:projection => "Symbol or String. '3d' or 'polar'", -:aspect_ratio => "Symbol (:equal or :none) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units. With `:none`, images inherit aspect ratio of the plot area.", -:margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.", -:left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.", -:top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.", -:right_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the right of the subplot.", -:bottom_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the bottom of the subplot.", -:subplot_index => "Integer. Internal (not set by user). Specifies the index of this subplot in the Plot's `plt.subplot` list.", -:colorbar_title => "String. Title of colorbar.", -:framestyle => "Symbol. Style of the axes frame. Choose from $(_allFramestyles)", -:camera => "NTuple{2, Real}. Sets the view angle (azimuthal, elevation) for 3D plots", + # subplot args + :title => "String. Subplot title.", + :titlelocation => "Symbol. Position of subplot title. Values: `:left`, `:center`, `:right`", + :titlefontfamily => "String or Symbol. Font family of subplot title.", + :titlefontsize => "Integer. Font pointsize of subplot title.", + :titlefonthalign => "Symbol. Font horizontal alignment of subplot title: :hcenter, :left, :right or :center", + :titlefontvalign => "Symbol. Font vertical alignment of subplot title: :vcenter, :top, :bottom or :center", + :titlefontrotation => "Real. Font rotation of subplot title", + :titlefontcolor => "Color Type. Font color of subplot title", + :background_color_subplot => "Color Type or `:match` (matches `:background_color`). Base background color of the subplot.", + :background_color_legend => "Color Type or `:match` (matches `:background_color_subplot`). Background color of the legend.", + :background_color_inside => "Color Type or `:match` (matches `:background_color_subplot`). Background color inside the plot area (under the grid).", + :foreground_color_subplot => "Color Type or `:match` (matches `:foreground_color`). Base foreground color of the subplot.", + :foreground_color_legend => "Color Type or `:match` (matches `:foreground_color_subplot`). Foreground color of the legend.", + :foreground_color_title => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of subplot title.", + :color_palette => "Vector of colors (cycle through) or color gradient (generate list from gradient) or `:auto` (generate a color list using `Colors.distiguishable_colors` and custom seed colors chosen to contrast with the background). The color palette is a color list from which series colors are automatically chosen.", + :legend => "Bool (show the legend?) or (x,y) tuple or Symbol (legend position) or angle or (angle,inout) tuple. Bottom left corner of legend is placed at (x,y). Symbol values: `:none`; `:best`; `:inline`; `:inside`; `:legend`; any valid combination of `:(outer ?)(top/bottom ?)(right/left ?)`, i.e.: `:top`, `:topright`, `:outerleft`, `:outerbottomright` ... (note: only some may be supported in each backend). Legend is positioned at (angle degrees) (so (90,:outer) is roughly equivalent to :outertop), close to the inside of the axes or the outside if inout=:outer.", + :legendfontfamily => "String or Symbol. Font family of legend entries.", + :legendfontsize => "Integer. Font pointsize of legend entries.", + :legendfonthalign => "Symbol. Font horizontal alignment of legend entries: :hcenter, :left, :right or :center", + :legendfontvalign => "Symbol. Font vertical alignment of legend entries: :vcenter, :top, :bottom or :center", + :legendfontrotation => "Real. Font rotation of legend entries", + :legendfontcolor => "Color Type. Font color of legend entries", + :legendtitle => "String. Legend title.", + :legendtitlefontfamily => "String or Symbol. Font family of the legend title.", + :legendtitlefontsize => "Integer. Font pointsize the legend title.", + :legendtitlefonthalign => "Symbol. Font horizontal alignment of the legend title: :hcenter, :left, :right or :center", + :legendtitlefontvalign => "Symbol. Font vertical alignment of the legend title: :vcenter, :top, :bottom or :center", + :legendtitlefontrotation => "Real. Font rotation of the legend title", + :legendtitlefontcolor => "Color Type. Font color of the legend title", + :colorbar => "Bool (show the colorbar?) or Symbol (colorbar position). Symbol values: `:none`, `:best`, `:right`, `:left`, `:top`, `:bottom`, `:legend` (matches legend value) (note: only some may be supported in each backend)", + :clims => "`:auto`, NTuple{2,Number}, or a function that takes series data in and returns NTuple{2,Number}. Fixes the limits of the colorbar.", + :colorbar_fontfamily => "String or Symbol. Font family of colobar entries.", + :colorbar_ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", + :colorbar_tickfontfamily => "String or Symbol. Font family of colorbar tick labels.", + :colorbar_tickfontsize => "Integer. Font pointsize of colorbar tick entries.", + :colorbar_tickfontcolor => "Color Type. Font color of colorbar tick entries", + :colorbar_scale => "Symbol. Scale of the colorbar axis: `:none`, `:ln`, `:log2`, `:log10`", + :colorbar_formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", + :legendfont => "Font. Font of legend items.", + :legendtitlefont => "Font. Font of the legend title.", + :annotations => "(x,y,text) tuple(s). Can be a single tuple or a list of them. Text can be String, PlotText (created with `text(args...)`), or a tuple of arguments to `text` (e.g., `(\"Label\", 8, :red, :top)`). Add one-off text annotations at the x,y coordinates.", + :annotationfontfamily => "String or Symbol. Font family of annotations.", + :annotationfontsize => "Integer. Font pointsize of annotations.", + :annotationhalign => "Symbol. horizontal alignment of annotations, :hcenter, :left, :right or :center.", + :annotationvalign => "Symbol. Vertical alignment of annotations, :vcenter, :top, :bottom or :center.", + :annotationrotation => "Float. Rotation of annotations in degrees.", + :annotationcolor => "Colorant or :match. Color of annotations.", + :projection => "Symbol or String. '3d' or 'polar'", + :aspect_ratio => "Symbol (:equal or :none) or Number. Plot area is resized so that 1 y-unit is the same size as `aspect_ratio` x-units. With `:none`, images inherit aspect ratio of the plot area.", + :margin => "Measure (multiply by `mm`, `px`, etc). Base for individual margins... not directly used. Specifies the extra padding around subplots.", + :left_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the left of the subplot.", + :top_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the top of the subplot.", + :right_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding to the right of the subplot.", + :bottom_margin => "Measure (multiply by `mm`, `px`, etc) or `:match` (matches `:margin`). Specifies the extra padding on the bottom of the subplot.", + :subplot_index => "Integer. Internal (not set by user). Specifies the index of this subplot in the Plot's `plt.subplot` list.", + :colorbar_title => "String. Title of colorbar.", + :framestyle => "Symbol. Style of the axes frame. Choose from $(_allFramestyles)", + :camera => "NTuple{2, Real}. Sets the view angle (azimuthal, elevation) for 3D plots", -# axis args -:guide => "String. Axis guide (label).", -:guide_position => "Symbol. Position of axis guides: :top, :bottom, :left or :right", -:lims => """ - NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). - `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0] - `:symmetric` sets the limits to be symmetric around zero. - Set widen=true to widen the specified limits (as occurs when lims are not specified). - """, -:ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", -:scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", -:rotation => "Number. Degrees rotation of tick labels.", -:flip => "Bool. Should we flip (reverse) the axis?", -:formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", -:tickfontfamily => "String or Symbol. Font family of tick labels.", -:tickfontsize => "Integer. Font pointsize of tick labels.", -:tickfonthalign => "Symbol. Font horizontal alignment of tick labels: :hcenter, :left, :right or :center", -:tickfontvalign => "Symbol. Font vertical alignment of tick labels: :vcenter, :top, :bottom or :center", -:tickfontrotation => "Real. Font rotation of tick labels", -:tickfontcolor => "Color Type. Font color of tick labels", -:guidefontfamily => "String or Symbol. Font family of axes guides.", -:guidefontsize => "Integer. Font pointsize of axes guides.", -:guidefonthalign => "Symbol. Font horizontal alignment of axes guides: :hcenter, :left, :right or :center", -:guidefontvalign => "Symbol. Font vertical alignment of axes guides: :vcenter, :top, :bottom or :center", -:guidefontrotation => "Real. Font rotation of axes guides", -:guidefontcolor => "Color Type. Font color of axes guides", -:foreground_color_axis => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis ticks.", -:foreground_color_border => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of plot area border (spines).", -:foreground_color_text => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of tick labels.", -:foreground_color_guide => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis guides (axis labels).", -:mirror => "Bool. Switch the side of the tick labels (right or top).", -:grid => "Bool, Symbol, String or `nothing`. Show the grid lines? `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:none`, `:off`", -:foreground_color_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of grid lines.", -:gridalpha => "Number in [0,1]. The alpha/opacity override for the grid lines.", -:gridstyle => "Symbol. Style of the grid lines. Choose from $(_allStyles)", -:gridlinewidth => "Number. Width of the grid lines (in pixels)", -:foreground_color_minor_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of minor grid lines.", -:minorgrid => "Bool. Adds minor grid lines and ticks to the plot. Set minorticks to change number of gridlines", -:minorticks => "Integer. Intervals to divide the gap between major ticks into", -:minorgridalpha => "Number in [0,1]. The alpha/opacity override for the minorgrid lines.", -:minorgridstyle => "Symbol. Style of the minor grid lines. Choose from $(_allStyles)", -:minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", -:tick_direction => "Symbol. Direction of the ticks. `:in`, `:out` or `:none`", -:showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", -:widen => """ - Bool or :auto. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. - Defaults to `:auto`, which widens unless limits were manually set. - """, -:draw_arrow => "Bool. Draw arrow at the end of the axis.", + # axis args + :guide => "String. Axis guide (label).", + :guide_position => "Symbol. Position of axis guides: :top, :bottom, :left or :right", + :lims => """ + NTuple{2,Number} or Symbol. Force axis limits. Only finite values are used (you can set only the right limit with `xlims = (-Inf, 2)` for example). + `:round` widens the limit to the nearest round number ie. [0.1,3.6]=>[0.0,4.0] + `:symmetric` sets the limits to be symmetric around zero. + Set widen=true to widen the specified limits (as occurs when lims are not specified). + """, + :ticks => "Vector of numbers (set the tick values), Tuple of (tickvalues, ticklabels), or `:auto`", + :scale => "Symbol. Scale of the axis: `:none`, `:ln`, `:log2`, `:log10`", + :rotation => "Number. Degrees rotation of tick labels.", + :flip => "Bool. Should we flip (reverse) the axis?", + :formatter => "Function, :scientific, :plain or :auto. A method which converts a number to a string for tick labeling.", + :tickfontfamily => "String or Symbol. Font family of tick labels.", + :tickfontsize => "Integer. Font pointsize of tick labels.", + :tickfonthalign => "Symbol. Font horizontal alignment of tick labels: :hcenter, :left, :right or :center", + :tickfontvalign => "Symbol. Font vertical alignment of tick labels: :vcenter, :top, :bottom or :center", + :tickfontrotation => "Real. Font rotation of tick labels", + :tickfontcolor => "Color Type. Font color of tick labels", + :guidefontfamily => "String or Symbol. Font family of axes guides.", + :guidefontsize => "Integer. Font pointsize of axes guides.", + :guidefonthalign => "Symbol. Font horizontal alignment of axes guides: :hcenter, :left, :right or :center", + :guidefontvalign => "Symbol. Font vertical alignment of axes guides: :vcenter, :top, :bottom or :center", + :guidefontrotation => "Real. Font rotation of axes guides", + :guidefontcolor => "Color Type. Font color of axes guides", + :foreground_color_axis => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis ticks.", + :foreground_color_border => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of plot area border (spines).", + :foreground_color_text => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of tick labels.", + :foreground_color_guide => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of axis guides (axis labels).", + :mirror => "Bool. Switch the side of the tick labels (right or top).", + :grid => "Bool, Symbol, String or `nothing`. Show the grid lines? `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:none`, `:off`", + :foreground_color_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of grid lines.", + :gridalpha => "Number in [0,1]. The alpha/opacity override for the grid lines.", + :gridstyle => "Symbol. Style of the grid lines. Choose from $(_allStyles)", + :gridlinewidth => "Number. Width of the grid lines (in pixels)", + :foreground_color_minor_grid => "Color Type or `:match` (matches `:foreground_color_subplot`). Color of minor grid lines.", + :minorgrid => "Bool. Adds minor grid lines and ticks to the plot. Set minorticks to change number of gridlines", + :minorticks => "Integer. Intervals to divide the gap between major ticks into", + :minorgridalpha => "Number in [0,1]. The alpha/opacity override for the minorgrid lines.", + :minorgridstyle => "Symbol. Style of the minor grid lines. Choose from $(_allStyles)", + :minorgridlinewidth => "Number. Width of the minor grid lines (in pixels)", + :tick_direction => "Symbol. Direction of the ticks. `:in`, `:out` or `:none`", + :showaxis => "Bool, Symbol or String. Show the axis. `true`, `false`, `:show`, `:hide`, `:yes`, `:no`, `:x`, `:y`, `:z`, `:xy`, ..., `:all`, `:off`", + :widen => """ + Bool or :auto. Widen the axis limits by a small factor to avoid cut-off markers and lines at the borders. + Defaults to `:auto`, which widens unless limits were manually set. + """, + :draw_arrow => "Bool. Draw arrow at the end of the axis.", ) diff --git a/src/args.jl b/src/args.jl index d4c0eb0e..57dd3298 100644 --- a/src/args.jl +++ b/src/args.jl @@ -1,7 +1,7 @@ function makeplural(s::Symbol) str = string(s) if last(str) != 's' - return Symbol(string(s,"s")) + return Symbol(string(s, "s")) end return s end @@ -25,7 +25,7 @@ function add_aliases(sym::Symbol, aliases::Symbol...) end function add_non_underscore_aliases!(aliases::Dict{Symbol,Symbol}) - for (k,v) in aliases + for (k, v) in aliases s = string(k) if '_' in s aliases[make_non_underscore(k)] = v @@ -44,22 +44,42 @@ end # ------------------------------------------------------------ const _allAxes = [:auto, :left, :right] -const _axesAliases = Dict{Symbol,Symbol}( - :a => :auto, - :l => :left, - :r => :right -) +const _axesAliases = Dict{Symbol,Symbol}(:a => :auto, :l => :left, :r => :right) -const _3dTypes = [ - :path3d, :scatter3d, :surface, :wireframe, :contour3d, :volume, :mesh3d -] -const _allTypes = vcat([ - :none, :line, :path, :steppre, :stepmid, :steppost, :sticks, :scatter, - :heatmap, :hexbin, :barbins, :barhist, :histogram, :scatterbins, - :scatterhist, :stepbins, :stephist, :bins2d, :histogram2d, :histogram3d, - :density, :bar, :hline, :vline, - :contour, :pie, :shape, :image -], _3dTypes) +const _3dTypes = [:path3d, :scatter3d, :surface, :wireframe, :contour3d, :volume, :mesh3d] +const _allTypes = vcat( + [ + :none, + :line, + :path, + :steppre, + :stepmid, + :steppost, + :sticks, + :scatter, + :heatmap, + :hexbin, + :barbins, + :barhist, + :histogram, + :scatterbins, + :scatterhist, + :stepbins, + :stephist, + :bins2d, + :histogram2d, + :histogram3d, + :density, + :bar, + :hline, + :vline, + :contour, + :pie, + :shape, + :image, + ], + _3dTypes, +) const _typeAliases = Dict{Symbol,Symbol}( :n => :none, @@ -102,7 +122,8 @@ add_non_underscore_aliases!(_typeAliases) const _histogram_like = [:histogram, :barhist, :barbins] const _line_like = [:line, :path, :steppre, :stepmid, :steppost] -const _surface_like = [:contour, :contourf, :contour3d, :heatmap, :surface, :wireframe, :image] +const _surface_like = + [:contour, :contourf, :contour3d, :heatmap, :surface, :wireframe, :image] like_histogram(seriestype::Symbol) = seriestype in _histogram_like like_line(seriestype::Symbol) = seriestype in _line_like @@ -117,36 +138,36 @@ ispolar(series::Series) = ispolar(series.plotattributes[:subplot]) const _allStyles = [:auto, :solid, :dash, :dot, :dashdot, :dashdotdot] const _styleAliases = Dict{Symbol,Symbol}( - :a => :auto, - :s => :solid, - :d => :dash, - :dd => :dashdot, - :ddd => :dashdotdot, + :a => :auto, + :s => :solid, + :d => :dash, + :dd => :dashdot, + :ddd => :dashdotdot, ) const _shape_keys = Symbol[ - :circle, - :rect, - :star5, - :diamond, - :hexagon, - :cross, - :xcross, - :utriangle, - :dtriangle, - :rtriangle, - :ltriangle, - :pentagon, - :heptagon, - :octagon, - :star4, - :star6, - :star7, - :star8, - :vline, - :hline, - :+, - :x, + :circle, + :rect, + :star5, + :diamond, + :hexagon, + :cross, + :xcross, + :utriangle, + :dtriangle, + :rtriangle, + :ltriangle, + :pentagon, + :heptagon, + :octagon, + :star4, + :star6, + :star7, + :star8, + :vline, + :hline, + :+, + :x, ] const _allMarkers = vcat(:none, :auto, _shape_keys) #sort(collect(keys(_shapes)))) @@ -183,22 +204,22 @@ const _markerAliases = Dict{Symbol,Symbol}( :lighttri => :ltriangle, :lighttriangle => :ltriangle, # :+ => :cross, - :plus => :cross, + :plus => :cross, # :x => :xcross, - :X => :xcross, - :star => :star5, - :s => :star5, - :star1 => :star5, - :s2 => :star8, - :star2 => :star8, - :p => :pentagon, - :pent => :pentagon, - :h => :hexagon, - :hex => :hexagon, - :hep => :heptagon, - :o => :octagon, - :oct => :octagon, - :spike => :vline, + :X => :xcross, + :star => :star5, + :s => :star5, + :star1 => :star5, + :s2 => :star8, + :star2 => :star8, + :p => :pentagon, + :pent => :pentagon, + :h => :hexagon, + :hex => :hexagon, + :hep => :heptagon, + :o => :octagon, + :oct => :octagon, + :spike => :vline, ) const _positionAliases = Dict{Symbol,Symbol}( @@ -219,16 +240,34 @@ const _positionAliases = Dict{Symbol,Symbol}( const _allScales = [:identity, :ln, :log2, :log10, :asinh, :sqrt] const _logScales = [:ln, :log2, :log10] const _logScaleBases = Dict(:ln => ℯ, :log2 => 2.0, :log10 => 10.0) -const _scaleAliases = Dict{Symbol,Symbol}( - :none => :identity, - :log => :log10, -) +const _scaleAliases = Dict{Symbol,Symbol}(:none => :identity, :log => :log10) -const _allGridSyms = [:x, :y, :z, - :xy, :xz, :yx, :yz, :zx, :zy, - :xyz, :xzy, :yxz, :yzx, :zxy, :zyx, - :all, :both, :on, :yes, :show, - :none, :off, :no, :hide] +const _allGridSyms = [ + :x, + :y, + :z, + :xy, + :xz, + :yx, + :yz, + :zx, + :zy, + :xyz, + :xzy, + :yxz, + :yzx, + :zxy, + :zyx, + :all, + :both, + :on, + :yes, + :show, + :none, + :off, + :no, + :hide, +] const _allGridArgs = [_allGridSyms; string.(_allGridSyms); nothing] hasgrid(arg::Nothing, letter) = false hasgrid(arg::Bool, letter) = arg @@ -236,17 +275,39 @@ function hasgrid(arg::Symbol, letter) if arg in _allGridSyms arg in (:all, :both, :on) || occursin(string(letter), string(arg)) else - @warn("Unknown grid argument $arg; $(Symbol(letter, :grid)) was set to `true` instead.") + @warn( + "Unknown grid argument $arg; $(Symbol(letter, :grid)) was set to `true` instead." + ) true end end hasgrid(arg::AbstractString, letter) = hasgrid(Symbol(arg), letter) -const _allShowaxisSyms = [:x, :y, :z, - :xy, :xz, :yx, :yz, :zx, :zy, - :xyz, :xzy, :yxz, :yzx, :zxy, :zyx, - :all, :both, :on, :yes, :show, - :off, :no, :hide] +const _allShowaxisSyms = [ + :x, + :y, + :z, + :xy, + :xz, + :yx, + :yz, + :zx, + :zy, + :xyz, + :xzy, + :yxz, + :yzx, + :zxy, + :zyx, + :all, + :both, + :on, + :yes, + :show, + :off, + :no, + :hide, +] const _allShowaxisArgs = [_allGridSyms; string.(_allGridSyms)] showaxis(arg::Nothing, letter) = false showaxis(arg::Bool, letter) = arg @@ -254,19 +315,21 @@ function showaxis(arg::Symbol, letter) if arg in _allGridSyms arg in (:all, :both, :on, :yes) || occursin(string(letter), string(arg)) else - @warn("Unknown showaxis argument $arg; $(Symbol(letter, :showaxis)) was set to `true` instead.") + @warn( + "Unknown showaxis argument $arg; $(Symbol(letter, :showaxis)) was set to `true` instead." + ) true end end showaxis(arg::AbstractString, letter) = hasgrid(Symbol(arg), letter) const _allFramestyles = [:box, :semi, :axes, :origin, :zerolines, :grid, :none] -const _framestyleAliases = Dict{Symbol, Symbol}( - :frame => :box, - :border => :box, - :on => :box, - :transparent => :semi, - :semitransparent => :semi, +const _framestyleAliases = Dict{Symbol,Symbol}( + :frame => :box, + :border => :box, + :on => :box, + :transparent => :semi, + :semitransparent => :semi, ) const _bar_width = 0.8 @@ -321,120 +384,118 @@ const _series_defaults = KW( :subplot => :auto, # which subplot(s) does this series belong to? :series_annotations => nothing, # a list of annotations which apply to the coordinates of this series :primary => true, # when true, this "counts" as a series for color selection, etc. the main use is to allow - # one logical series to be broken up (path and markers, for example) - :hover => nothing, # text to display when hovering over the data points - :stride => (1,1), # array stride for wireframe/surface, the first element is the row stride and the second is the column stride. - :connections => nothing, # tuple of arrays to specifiy connectivity of a 3d mesh - :extra_kwargs => Dict() + # one logical series to be broken up (path and markers, for example) + :hover => nothing, # text to display when hovering over the data points + :stride => (1, 1), # array stride for wireframe/surface, the first element is the row stride and the second is the column stride. + :connections => nothing, # tuple of arrays to specifiy connectivity of a 3d mesh + :extra_kwargs => Dict(), ) - const _plot_defaults = KW( - :plot_title => "", - :plot_titleindex => 0, - :plot_titlefontsize => 16, - :plot_titlelocation => :center, # also :left or :right - :plot_titlefontfamily => :match, - :plot_titlefonthalign => :hcenter, - :plot_titlefontvalign => :vcenter, - :plot_titlefontrotation => 0.0, - :plot_titlefontcolor => :match, - :plot_titlevspan => 0.05, # vertical span of the plot title, here 5% - :background_color => colorant"white", # default for all backgrounds, - :background_color_outside => :match, # background outside grid, - :foreground_color => :auto, # default for all foregrounds, and title color, - :fontfamily => "sans-serif", - :size => (600,400), - :pos => (0,0), - :window_title => "Plots.jl", - :show => false, - :layout => 1, - :link => :none, - :overwrite_figure => true, - :html_output_format => :auto, - :tex_output_standalone => false, - :inset_subplots => nothing, # optionally pass a vector of (parent,bbox) tuples which are - # the parent layout and the relative bounding box of inset subplots - :dpi => DPI, # dots per inch for images, etc - :thickness_scaling => 1, - :display_type => :auto, - :warn_on_unsupported => true, - :extra_plot_kwargs => Dict(), - :extra_kwargs => :series, # directs collection of extra_kwargs + :plot_title => "", + :plot_titleindex => 0, + :plot_titlefontsize => 16, + :plot_titlelocation => :center, # also :left or :right + :plot_titlefontfamily => :match, + :plot_titlefonthalign => :hcenter, + :plot_titlefontvalign => :vcenter, + :plot_titlefontrotation => 0.0, + :plot_titlefontcolor => :match, + :plot_titlevspan => 0.05, # vertical span of the plot title, here 5% + :background_color => colorant"white", # default for all backgrounds, + :background_color_outside => :match, # background outside grid, + :foreground_color => :auto, # default for all foregrounds, and title color, + :fontfamily => "sans-serif", + :size => (600, 400), + :pos => (0, 0), + :window_title => "Plots.jl", + :show => false, + :layout => 1, + :link => :none, + :overwrite_figure => true, + :html_output_format => :auto, + :tex_output_standalone => false, + :inset_subplots => nothing, # optionally pass a vector of (parent,bbox) tuples which are + # the parent layout and the relative bounding box of inset subplots + :dpi => DPI, # dots per inch for images, etc + :thickness_scaling => 1, + :display_type => :auto, + :warn_on_unsupported => true, + :extra_plot_kwargs => Dict(), + :extra_kwargs => :series, # directs collection of extra_kwargs ) - const _subplot_defaults = KW( - :title => "", - :titlelocation => :center, # also :left or :right - :fontfamily_subplot => :match, - :titlefontfamily => :match, - :titlefontsize => 14, - :titlefonthalign => :hcenter, - :titlefontvalign => :vcenter, - :titlefontrotation => 0.0, - :titlefontcolor => :match, - :background_color_subplot => :match, # default for other bg colors... match takes plot default - :background_color_legend => :match, # background of legend - :background_color_inside => :match, # background inside grid - :foreground_color_subplot => :match, # default for other fg colors... match takes plot default - :foreground_color_legend => :match, # foreground of legend - :foreground_color_title => :match, # title color - :color_palette => :auto, - :legend => :best, - :legendtitle => nothing, - :colorbar => :legend, - :clims => :auto, - :colorbar_fontfamily => :match, - :colorbar_ticks => :auto, - :colorbar_tickfontfamily => :match, - :colorbar_tickfontsize => 8, - :colorbar_tickfonthalign => :hcenter, - :colorbar_tickfontvalign => :vcenter, - :colorbar_tickfontrotation => 0.0, - :colorbar_tickfontcolor => :match, - :colorbar_scale => :identity, - :colorbar_formatter => :auto, - :colorbar_discrete_values => [], - :colorbar_continuous_values => zeros(0), - :legendfontfamily => :match, - :legendfontsize => 8, - :legendfonthalign => :hcenter, - :legendfontvalign => :vcenter, - :legendfontrotation => 0.0, - :legendfontcolor => :match, - :legendtitlefontfamily => :match, - :legendtitlefontsize => 11, - :legendtitlefonthalign => :hcenter, - :legendtitlefontvalign => :vcenter, - :legendtitlefontrotation => 0.0, - :legendtitlefontcolor => :match, - :annotations => [], # annotation tuples... list of (x,y,annotation) - :annotationfontfamily => :match, - :annotationfontsize => 14, - :annotationhalign => :hcenter, - :annotationvalign => :vcenter, - :annotationrotation => 0.0, - :annotationcolor => :match, - :projection => :none, # can also be :polar or :3d - :aspect_ratio => :auto, # choose from :none or :equal - :margin => 1mm, - :left_margin => :match, - :top_margin => :match, - :right_margin => :match, - :bottom_margin => :match, - :subplot_index => -1, - :colorbar_title => "", - :colorbar_titlefontsize => 10, - :colorbar_title_location => :center, # also :left or :right - :colorbar_titlefontfamily => :match, - :colorbar_titlefonthalign => :hcenter, - :colorbar_titlefontvalign => :vcenter, + :title => "", + :titlelocation => :center, # also :left or :right + :fontfamily_subplot => :match, + :titlefontfamily => :match, + :titlefontsize => 14, + :titlefonthalign => :hcenter, + :titlefontvalign => :vcenter, + :titlefontrotation => 0.0, + :titlefontcolor => :match, + :background_color_subplot => :match, # default for other bg colors... match takes plot default + :background_color_legend => :match, # background of legend + :background_color_inside => :match, # background inside grid + :foreground_color_subplot => :match, # default for other fg colors... match takes plot default + :foreground_color_legend => :match, # foreground of legend + :foreground_color_title => :match, # title color + :color_palette => :auto, + :legend => :best, + :legendtitle => nothing, + :colorbar => :legend, + :clims => :auto, + :colorbar_fontfamily => :match, + :colorbar_ticks => :auto, + :colorbar_tickfontfamily => :match, + :colorbar_tickfontsize => 8, + :colorbar_tickfonthalign => :hcenter, + :colorbar_tickfontvalign => :vcenter, + :colorbar_tickfontrotation => 0.0, + :colorbar_tickfontcolor => :match, + :colorbar_scale => :identity, + :colorbar_formatter => :auto, + :colorbar_discrete_values => [], + :colorbar_continuous_values => zeros(0), + :legendfontfamily => :match, + :legendfontsize => 8, + :legendfonthalign => :hcenter, + :legendfontvalign => :vcenter, + :legendfontrotation => 0.0, + :legendfontcolor => :match, + :legendtitlefontfamily => :match, + :legendtitlefontsize => 11, + :legendtitlefonthalign => :hcenter, + :legendtitlefontvalign => :vcenter, + :legendtitlefontrotation => 0.0, + :legendtitlefontcolor => :match, + :annotations => [], # annotation tuples... list of (x,y,annotation) + :annotationfontfamily => :match, + :annotationfontsize => 14, + :annotationhalign => :hcenter, + :annotationvalign => :vcenter, + :annotationrotation => 0.0, + :annotationcolor => :match, + :projection => :none, # can also be :polar or :3d + :aspect_ratio => :auto, # choose from :none or :equal + :margin => 1mm, + :left_margin => :match, + :top_margin => :match, + :right_margin => :match, + :bottom_margin => :match, + :subplot_index => -1, + :colorbar_title => "", + :colorbar_titlefontsize => 10, + :colorbar_title_location => :center, # also :left or :right + :colorbar_titlefontfamily => :match, + :colorbar_titlefonthalign => :hcenter, + :colorbar_titlefontvalign => :vcenter, :colorbar_titlefontrotation => 0.0, - :colorbar_titlefontcolor => :match, - :framestyle => :axes, - :camera => (30,30), - :extra_kwargs => Dict() + :colorbar_titlefontcolor => :match, + :framestyle => :axes, + :camera => (30, 30), + :extra_kwargs => Dict(), ) const _axis_defaults = KW( @@ -500,33 +561,28 @@ const _suppress_warnings = Set{Symbol}([ const _axis_defaults_byletter = KW() function reset_axis_defaults_byletter!() - for letter in (:x,:y,:z) + for letter in (:x, :y, :z) _axis_defaults_byletter[letter] = KW() - for (k,v) in _axis_defaults + for (k, v) in _axis_defaults _axis_defaults_byletter[letter][k] = v end end end reset_axis_defaults_byletter!() -for letter in (:x,:y,:z), k in keys(_axis_defaults) +for letter in (:x, :y, :z), k in keys(_axis_defaults) # allow the underscore version too: xguide or x_guide add_aliases(Symbol(letter, k), Symbol(letter, "_", k)) end -const _all_defaults = KW[ - _series_defaults, - _plot_defaults, - _subplot_defaults -] +const _all_defaults = KW[_series_defaults, _plot_defaults, _subplot_defaults] const _initial_defaults = deepcopy(_all_defaults) const _initial_axis_defaults = deepcopy(_axis_defaults) # to be able to reset font sizes to initial values -const _initial_plt_fontsizes = Dict( - :plot_titlefontsize => _plot_defaults[:plot_titlefontsize], -) +const _initial_plt_fontsizes = + Dict(:plot_titlefontsize => _plot_defaults[:plot_titlefontsize]) const _initial_sp_fontsizes = Dict( :titlefontsize => _subplot_defaults[:titlefontsize], @@ -542,7 +598,8 @@ const _initial_ax_fontsizes = Dict( :guidefontsize => _axis_defaults[:guidefontsize], ) -const _initial_fontsizes = merge(_initial_plt_fontsizes, _initial_sp_fontsizes, _initial_ax_fontsizes) +const _initial_fontsizes = + merge(_initial_plt_fontsizes, _initial_sp_fontsizes, _initial_ax_fontsizes) const _internal_args = [:plot_object, :series_plotindex, :markershape_to_add, :letter, :idxfilter] @@ -553,7 +610,8 @@ const _subplot_args = sort(union(collect(keys(_subplot_defaults)))) const _plot_args = sort(union(collect(keys(_plot_defaults)))) const _magic_axis_args = [:axis, :tickfont, :guidefont, :grid, :minorgrid] -const _magic_subplot_args = [:titlefont, :legendfont, :legendtitlefont, :plot_titlefont, :colorbar_titlefont] +const _magic_subplot_args = + [:titlefont, :legendfont, :legendtitlefont, :plot_titlefont, :colorbar_titlefont] const _magic_series_args = [:line, :marker, :fill] const _all_axis_args = sort(union([_axis_args; _magic_axis_args])) @@ -561,21 +619,29 @@ const _all_subplot_args = sort(union([_subplot_args; _magic_subplot_args])) const _all_series_args = sort(union([_series_args; _magic_series_args])) const _all_plot_args = _plot_args -const _all_args = sort(union([_all_axis_args; _all_subplot_args; _all_series_args; _all_plot_args])) +const _all_args = + sort(union([_all_axis_args; _all_subplot_args; _all_series_args; _all_plot_args])) is_subplot_attr(k) = k in _all_subplot_args is_series_attr(k) = k in _all_series_args -is_axis_attr(k) = Symbol(chop(string(k); head=1, tail=0)) in _all_axis_args +is_axis_attr(k) = Symbol(chop(string(k); head = 1, tail = 0)) in _all_axis_args is_axis_attr_noletter(k) = k in _all_axis_args RecipesBase.is_key_supported(k::Symbol) = is_attr_supported(k) is_default_attribute(k) = k in _internal_args || k in _all_args || is_axis_attr_noletter(k) # ----------------------------------------------------------------------------- -autopick_ignore_none_auto(arr::AVec, idx::Integer) = _cycle(setdiff(arr, [:none, :auto]), idx) +autopick_ignore_none_auto(arr::AVec, idx::Integer) = + _cycle(setdiff(arr, [:none, :auto]), idx) autopick_ignore_none_auto(notarr, idx::Integer) = notarr -function aliasesAndAutopick(plotattributes::AKW, sym::Symbol, aliases::Dict{Symbol,Symbol}, options::AVec, plotIndex::Int) +function aliasesAndAutopick( + plotattributes::AKW, + sym::Symbol, + aliases::Dict{Symbol,Symbol}, + options::AVec, + plotIndex::Int, +) if plotattributes[sym] == :auto plotattributes[sym] = autopick_ignore_none_auto(options, plotIndex) elseif haskey(aliases, plotattributes[sym]) @@ -583,17 +649,16 @@ function aliasesAndAutopick(plotattributes::AKW, sym::Symbol, aliases::Dict{Symb end end -aliases(aliasMap::Dict{Symbol,Symbol}, val) = sortedkeys(filter((k,v)-> v==val, aliasMap)) +aliases(aliasMap::Dict{Symbol,Symbol}, val) = + sortedkeys(filter((k, v) -> v == val, aliasMap)) # ----------------------------------------------------------------------------- - # margin -add_aliases(:left_margin , :leftmargin ) -add_aliases(:top_margin , :topmargin) -add_aliases(:bottom_margin , :bottommargin) -add_aliases(:right_margin ,:rightmargin) - +add_aliases(:left_margin, :leftmargin) +add_aliases(:top_margin, :topmargin) +add_aliases(:bottom_margin, :bottommargin) +add_aliases(:right_margin, :rightmargin) # colors add_aliases(:seriescolor, :c, :color, :colour) @@ -603,36 +668,176 @@ add_aliases(:markerstrokecolor, :msc, :mscolor, :mscolour, :markerstrokecolour) add_aliases(:markerstrokewidth, :msw, :mswidth) add_aliases(:fillcolor, :fc, :fcolor, :fcolour, :fillcolour) -add_aliases(:background_color, :bg, :bgcolor, :bg_color, :background, - :background_colour, :bgcolour, :bg_colour) -add_aliases(:background_color_legend, :bg_legend, :bglegend, :bgcolor_legend, :bg_color_legend, :background_legend, - :background_colour_legend, :bgcolour_legend, :bg_colour_legend) -add_aliases(:background_color_subplot, :bg_subplot, :bgsubplot, :bgcolor_subplot, :bg_color_subplot, :background_subplot, - :background_colour_subplot, :bgcolour_subplot, :bg_colour_subplot) -add_aliases(:background_color_inside, :bg_inside, :bginside, :bgcolor_inside, :bg_color_inside, :background_inside, - :background_colour_inside, :bgcolour_inside, :bg_colour_inside) -add_aliases(:background_color_outside, :bg_outside, :bgoutside, :bgcolor_outside, :bg_color_outside, :background_outside, - :background_colour_outside, :bgcolour_outside, :bg_colour_outside) -add_aliases(:foreground_color, :fg, :fgcolor, :fg_color, :foreground, - :foreground_colour, :fgcolour, :fg_colour) -add_aliases(:foreground_color_legend, :fg_legend, :fglegend, :fgcolor_legend, :fg_color_legend, :foreground_legend, - :foreground_colour_legend, :fgcolour_legend, :fg_colour_legend) -add_aliases(:foreground_color_subplot, :fg_subplot, :fgsubplot, :fgcolor_subplot, :fg_color_subplot, :foreground_subplot, - :foreground_colour_subplot, :fgcolour_subplot, :fg_colour_subplot) -add_aliases(:foreground_color_grid, :fg_grid, :fggrid, :fgcolor_grid, :fg_color_grid, :foreground_grid, - :foreground_colour_grid, :fgcolour_grid, :fg_colour_grid, :gridcolor) -add_aliases(:foreground_color_minor_grid, :fg_minor_grid, :fgminorgrid, :fgcolor_minorgrid, :fg_color_minorgrid, :foreground_minorgrid, - :foreground_colour_minor_grid, :fgcolour_minorgrid, :fg_colour_minor_grid, :minorgridcolor) -add_aliases(:foreground_color_title, :fg_title, :fgtitle, :fgcolor_title, :fg_color_title, :foreground_title, - :foreground_colour_title, :fgcolour_title, :fg_colour_title, :titlecolor) -add_aliases(:foreground_color_axis, :fg_axis, :fgaxis, :fgcolor_axis, :fg_color_axis, :foreground_axis, - :foreground_colour_axis, :fgcolour_axis, :fg_colour_axis, :axiscolor) -add_aliases(:foreground_color_border, :fg_border, :fgborder, :fgcolor_border, :fg_color_border, :foreground_border, - :foreground_colour_border, :fgcolour_border, :fg_colour_border, :bordercolor) -add_aliases(:foreground_color_text, :fg_text, :fgtext, :fgcolor_text, :fg_color_text, :foreground_text, - :foreground_colour_text, :fgcolour_text, :fg_colour_text, :textcolor) -add_aliases(:foreground_color_guide, :fg_guide, :fgguide, :fgcolor_guide, :fg_color_guide, :foreground_guide, - :foreground_colour_guide, :fgcolour_guide, :fg_colour_guide, :guidecolor) +add_aliases( + :background_color, + :bg, + :bgcolor, + :bg_color, + :background, + :background_colour, + :bgcolour, + :bg_colour, +) +add_aliases( + :background_color_legend, + :bg_legend, + :bglegend, + :bgcolor_legend, + :bg_color_legend, + :background_legend, + :background_colour_legend, + :bgcolour_legend, + :bg_colour_legend, +) +add_aliases( + :background_color_subplot, + :bg_subplot, + :bgsubplot, + :bgcolor_subplot, + :bg_color_subplot, + :background_subplot, + :background_colour_subplot, + :bgcolour_subplot, + :bg_colour_subplot, +) +add_aliases( + :background_color_inside, + :bg_inside, + :bginside, + :bgcolor_inside, + :bg_color_inside, + :background_inside, + :background_colour_inside, + :bgcolour_inside, + :bg_colour_inside, +) +add_aliases( + :background_color_outside, + :bg_outside, + :bgoutside, + :bgcolor_outside, + :bg_color_outside, + :background_outside, + :background_colour_outside, + :bgcolour_outside, + :bg_colour_outside, +) +add_aliases( + :foreground_color, + :fg, + :fgcolor, + :fg_color, + :foreground, + :foreground_colour, + :fgcolour, + :fg_colour, +) +add_aliases( + :foreground_color_legend, + :fg_legend, + :fglegend, + :fgcolor_legend, + :fg_color_legend, + :foreground_legend, + :foreground_colour_legend, + :fgcolour_legend, + :fg_colour_legend, +) +add_aliases( + :foreground_color_subplot, + :fg_subplot, + :fgsubplot, + :fgcolor_subplot, + :fg_color_subplot, + :foreground_subplot, + :foreground_colour_subplot, + :fgcolour_subplot, + :fg_colour_subplot, +) +add_aliases( + :foreground_color_grid, + :fg_grid, + :fggrid, + :fgcolor_grid, + :fg_color_grid, + :foreground_grid, + :foreground_colour_grid, + :fgcolour_grid, + :fg_colour_grid, + :gridcolor, +) +add_aliases( + :foreground_color_minor_grid, + :fg_minor_grid, + :fgminorgrid, + :fgcolor_minorgrid, + :fg_color_minorgrid, + :foreground_minorgrid, + :foreground_colour_minor_grid, + :fgcolour_minorgrid, + :fg_colour_minor_grid, + :minorgridcolor, +) +add_aliases( + :foreground_color_title, + :fg_title, + :fgtitle, + :fgcolor_title, + :fg_color_title, + :foreground_title, + :foreground_colour_title, + :fgcolour_title, + :fg_colour_title, + :titlecolor, +) +add_aliases( + :foreground_color_axis, + :fg_axis, + :fgaxis, + :fgcolor_axis, + :fg_color_axis, + :foreground_axis, + :foreground_colour_axis, + :fgcolour_axis, + :fg_colour_axis, + :axiscolor, +) +add_aliases( + :foreground_color_border, + :fg_border, + :fgborder, + :fgcolor_border, + :fg_color_border, + :foreground_border, + :foreground_colour_border, + :fgcolour_border, + :fg_colour_border, + :bordercolor, +) +add_aliases( + :foreground_color_text, + :fg_text, + :fgtext, + :fgcolor_text, + :fg_color_text, + :foreground_text, + :foreground_colour_text, + :fgcolour_text, + :fg_colour_text, + :textcolor, +) +add_aliases( + :foreground_color_guide, + :fg_guide, + :fgguide, + :fgcolor_guide, + :fg_color_guide, + :foreground_guide, + :foreground_colour_guide, + :fgcolour_guide, + :fg_colour_guide, + :guidecolor, +) # alphas add_aliases(:seriesalpha, :alpha, :α, :opacity) @@ -672,11 +877,29 @@ add_aliases(:zlims, :zlim, :zlimit, :zlimits) add_aliases(:zticks, :ztick) add_aliases(:zrotation, :zrot, :zr) add_aliases(:guidefontsize, :labelfontsize) -add_aliases(:fill_z, :fillz, :fz, :surfacecolor, :surfacecolour, :sc, :surfcolor, :surfcolour) +add_aliases( + :fill_z, + :fillz, + :fz, + :surfacecolor, + :surfacecolour, + :sc, + :surfcolor, + :surfcolour, +) add_aliases(:legend, :leg, :key) add_aliases(:legendtitle, :legend_title, :labeltitle, :label_title, :leg_title, :key_title) add_aliases(:colorbar, :cb, :cbar, :colorkey) -add_aliases(:colorbar_title, :colorbartitle, :cb_title, :cbtitle, :cbartitle, :cbar_title, :colorkeytitle, :colorkey_title) +add_aliases( + :colorbar_title, + :colorbartitle, + :cb_title, + :cbtitle, + :cbartitle, + :cbar_title, + :colorkeytitle, + :colorkey_title, +) add_aliases(:clims, :clim, :cbarlims, :cbar_lims, :climits, :color_limits) add_aliases(:smooth, :regression, :reg) add_aliases(:levels, :nlevels, :nlev, :levs) @@ -694,18 +917,75 @@ add_aliases(:show_empty_bins, :showemptybins, :showempty, :show_empty) add_aliases(:aspect_ratio, :aspectratio, :axis_ratio, :axisratio, :ratio) add_aliases(:subplot, :sp, :subplt, :splt) add_aliases(:projection, :proj) -add_aliases(:titlelocation, :title_location, :title_loc, :titleloc, :title_position, :title_pos, :titlepos, :titleposition, :title_align, :title_alignment) -add_aliases(:series_annotations, :series_ann, :seriesann, :series_anns, :seriesanns, :series_annotation, :text, :txt, :texts, :txts) +add_aliases( + :titlelocation, + :title_location, + :title_loc, + :titleloc, + :title_position, + :title_pos, + :titlepos, + :titleposition, + :title_align, + :title_alignment, +) +add_aliases( + :series_annotations, + :series_ann, + :seriesann, + :series_anns, + :seriesanns, + :series_annotation, + :text, + :txt, + :texts, + :txts, +) add_aliases(:html_output_format, :format, :fmt, :html_format) add_aliases(:orientation, :direction, :dir) add_aliases(:inset_subplots, :inset, :floating) add_aliases(:stride, :wirefame_stride, :surface_stride, :surf_str, :str) add_aliases(:gridlinewidth, :gridwidth, :grid_linewidth, :grid_width, :gridlw, :grid_lw) add_aliases(:gridstyle, :grid_style, :gridlinestyle, :grid_linestyle, :grid_ls, :gridls) -add_aliases(:minorgridlinewidth, :minorgridwidth, :minorgrid_linewidth, :minorgrid_width, :minorgridlw, :minorgrid_lw) -add_aliases(:minorgridstyle, :minorgrid_style, :minorgridlinestyle, :minorgrid_linestyle, :minorgrid_ls, :minorgridls) -add_aliases(:framestyle, :frame_style, :frame, :axesstyle, :axes_style, :boxstyle, :box_style, :box, :borderstyle, :border_style, :border) -add_aliases(:tick_direction, :tickdirection, :tick_dir, :tickdir, :tick_orientation, :tickorientation, :tick_or, :tickor) +add_aliases( + :minorgridlinewidth, + :minorgridwidth, + :minorgrid_linewidth, + :minorgrid_width, + :minorgridlw, + :minorgrid_lw, +) +add_aliases( + :minorgridstyle, + :minorgrid_style, + :minorgridlinestyle, + :minorgrid_linestyle, + :minorgrid_ls, + :minorgridls, +) +add_aliases( + :framestyle, + :frame_style, + :frame, + :axesstyle, + :axes_style, + :boxstyle, + :box_style, + :box, + :borderstyle, + :border_style, + :border, +) +add_aliases( + :tick_direction, + :tickdirection, + :tick_dir, + :tickdir, + :tick_orientation, + :tickorientation, + :tick_or, + :tickor, +) add_aliases(:camera, :cam, :viewangle, :view_angle) add_aliases(:contour_labels, :contourlabels, :clabels, :clabs) add_aliases(:warn_on_unsupported, :warn) @@ -723,7 +1003,7 @@ function parse_axis_kw(s::Symbol) s = string(s) for letter in ('x', 'y', 'z') if startswith(s, letter) - return (Symbol(letter), Symbol(chop(s, head=1, tail=0))) + return (Symbol(letter), Symbol(chop(s, head = 1, tail = 0))) end end return nothing @@ -781,7 +1061,7 @@ function default(; reset = true, kw...) end kw = KW(kw) RecipesPipeline.preprocess_attributes!(kw) - for (k,v) in kw + for (k, v) in kw default(k, v) end end @@ -812,107 +1092,116 @@ function handleColors!(plotattributes::AKW, arg, csym::Symbol) false end - - function processLineArg(plotattributes::AKW, arg) # seriestype if allLineTypes(arg) plotattributes[:seriestype] = arg - # linestyle + # linestyle elseif allStyles(arg) plotattributes[:linestyle] = arg elseif typeof(arg) <: Stroke arg.width === nothing || (plotattributes[:linewidth] = arg.width) - arg.color === nothing || (plotattributes[:linecolor] = arg.color == :auto ? :auto : plot_color(arg.color)) + arg.color === nothing || ( + plotattributes[:linecolor] = + arg.color == :auto ? :auto : plot_color(arg.color) + ) arg.alpha === nothing || (plotattributes[:linealpha] = arg.alpha) arg.style === nothing || (plotattributes[:linestyle] = arg.style) elseif typeof(arg) <: Brush - arg.size === nothing || (plotattributes[:fillrange] = arg.size) - arg.color === nothing || (plotattributes[:fillcolor] = arg.color == :auto ? :auto : plot_color(arg.color)) + arg.size === nothing || (plotattributes[:fillrange] = arg.size) + arg.color === nothing || ( + plotattributes[:fillcolor] = + arg.color == :auto ? :auto : plot_color(arg.color) + ) arg.alpha === nothing || (plotattributes[:fillalpha] = arg.alpha) elseif typeof(arg) <: Arrow || arg in (:arrow, :arrows) plotattributes[:arrow] = arg - # linealpha + # linealpha elseif allAlphas(arg) plotattributes[:linealpha] = arg - # linewidth + # linewidth elseif allReals(arg) plotattributes[:linewidth] = arg - # color + # color elseif !handleColors!(plotattributes, arg, :linecolor) @warn("Skipped line arg $arg.") - end end - function processMarkerArg(plotattributes::AKW, arg) # markershape if allShapes(arg) plotattributes[:markershape] = arg - # stroke style + # stroke style elseif allStyles(arg) plotattributes[:markerstrokestyle] = arg elseif typeof(arg) <: Stroke arg.width === nothing || (plotattributes[:markerstrokewidth] = arg.width) - arg.color === nothing || (plotattributes[:markerstrokecolor] = arg.color == :auto ? :auto : plot_color(arg.color)) + arg.color === nothing || ( + plotattributes[:markerstrokecolor] = + arg.color == :auto ? :auto : plot_color(arg.color) + ) arg.alpha === nothing || (plotattributes[:markerstrokealpha] = arg.alpha) arg.style === nothing || (plotattributes[:markerstrokestyle] = arg.style) elseif typeof(arg) <: Brush - arg.size === nothing || (plotattributes[:markersize] = arg.size) - arg.color === nothing || (plotattributes[:markercolor] = arg.color == :auto ? :auto : plot_color(arg.color)) + arg.size === nothing || (plotattributes[:markersize] = arg.size) + arg.color === nothing || ( + plotattributes[:markercolor] = + arg.color == :auto ? :auto : plot_color(arg.color) + ) arg.alpha === nothing || (plotattributes[:markeralpha] = arg.alpha) - # linealpha + # linealpha elseif allAlphas(arg) plotattributes[:markeralpha] = arg - # bool + # bool elseif typeof(arg) <: Bool plotattributes[:markershape] = arg ? :circle : :none - # markersize + # markersize elseif allReals(arg) plotattributes[:markersize] = arg - # markercolor + # markercolor elseif !handleColors!(plotattributes, arg, :markercolor) @warn("Skipped marker arg $arg.") - end end - function processFillArg(plotattributes::AKW, arg) # fr = get(plotattributes, :fillrange, 0) if typeof(arg) <: Brush - arg.size === nothing || (plotattributes[:fillrange] = arg.size) - arg.color === nothing || (plotattributes[:fillcolor] = arg.color == :auto ? :auto : plot_color(arg.color)) + arg.size === nothing || (plotattributes[:fillrange] = arg.size) + arg.color === nothing || ( + plotattributes[:fillcolor] = + arg.color == :auto ? :auto : plot_color(arg.color) + ) arg.alpha === nothing || (plotattributes[:fillalpha] = arg.alpha) elseif typeof(arg) <: Bool plotattributes[:fillrange] = arg ? 0 : nothing - # fillrange function + # fillrange function elseif allFunctions(arg) plotattributes[:fillrange] = arg - # fillalpha + # fillalpha elseif allAlphas(arg) plotattributes[:fillalpha] = arg - # fillrange provided as vector or number - elseif typeof(arg) <: Union{AbstractArray{<:Real}, Real} + # fillrange provided as vector or number + elseif typeof(arg) <: Union{AbstractArray{<:Real},Real} plotattributes[:fillrange] = arg elseif !handleColors!(plotattributes, arg, :fillcolor) @@ -922,7 +1211,6 @@ function processFillArg(plotattributes::AKW, arg) return end - function processGridArg!(plotattributes::AKW, arg, letter) if arg in _allGridArgs || isa(arg, Bool) plotattributes[Symbol(letter, :grid)] = hasgrid(arg, letter) @@ -931,23 +1219,26 @@ function processGridArg!(plotattributes::AKW, arg, letter) plotattributes[Symbol(letter, :gridstyle)] = arg elseif typeof(arg) <: Stroke - arg.width === nothing || (plotattributes[Symbol(letter, :gridlinewidth)] = arg.width) - arg.color === nothing || (plotattributes[Symbol(letter, :foreground_color_grid)] = arg.color in (:auto, :match) ? :match : plot_color(arg.color)) + arg.width === nothing || + (plotattributes[Symbol(letter, :gridlinewidth)] = arg.width) + arg.color === nothing || ( + plotattributes[Symbol(letter, :foreground_color_grid)] = + arg.color in (:auto, :match) ? :match : plot_color(arg.color) + ) arg.alpha === nothing || (plotattributes[Symbol(letter, :gridalpha)] = arg.alpha) arg.style === nothing || (plotattributes[Symbol(letter, :gridstyle)] = arg.style) - # linealpha + # linealpha elseif allAlphas(arg) plotattributes[Symbol(letter, :gridalpha)] = arg - # linewidth + # linewidth elseif allReals(arg) plotattributes[Symbol(letter, :gridlinewidth)] = arg - # color + # color elseif !handleColors!(plotattributes, arg, Symbol(letter, :foreground_color_grid)) @warn("Skipped grid arg $arg.") - end end @@ -960,23 +1251,29 @@ function processMinorGridArg!(plotattributes::AKW, arg, letter) plotattributes[Symbol(letter, :minorgrid)] = true elseif typeof(arg) <: Stroke - arg.width === nothing || (plotattributes[Symbol(letter, :minorgridlinewidth)] = arg.width) - arg.color === nothing || (plotattributes[Symbol(letter, :foreground_color_minor_grid)] = arg.color in (:auto, :match) ? :match : plot_color(arg.color)) - arg.alpha === nothing || (plotattributes[Symbol(letter, :minorgridalpha)] = arg.alpha) - arg.style === nothing || (plotattributes[Symbol(letter, :minorgridstyle)] = arg.style) + arg.width === nothing || + (plotattributes[Symbol(letter, :minorgridlinewidth)] = arg.width) + arg.color === nothing || ( + plotattributes[Symbol(letter, :foreground_color_minor_grid)] = + arg.color in (:auto, :match) ? :match : plot_color(arg.color) + ) + arg.alpha === nothing || + (plotattributes[Symbol(letter, :minorgridalpha)] = arg.alpha) + arg.style === nothing || + (plotattributes[Symbol(letter, :minorgridstyle)] = arg.style) plotattributes[Symbol(letter, :minorgrid)] = true - # linealpha + # linealpha elseif allAlphas(arg) plotattributes[Symbol(letter, :minorgridalpha)] = arg plotattributes[Symbol(letter, :minorgrid)] = true - # linewidth + # linewidth elseif allReals(arg) plotattributes[Symbol(letter, :minorgridlinewidth)] = arg plotattributes[Symbol(letter, :minorgrid)] = true - # color + # color elseif handleColors!(plotattributes, arg, Symbol(letter, :foreground_color_minor_grid)) plotattributes[Symbol(letter, :minorgrid)] = true else @@ -1124,7 +1421,8 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) end # fonts - for fontname in (:titlefont, :legendfont, :legendtitlefont, :plot_titlefont, :colorbar_titlefont) + for fontname in + (:titlefont, :legendfont, :legendtitlefont, :plot_titlefont, :colorbar_titlefont) args = RecipesPipeline.pop_kw!(plotattributes, fontname, ()) for arg in wraptuple(args) processFontArg!(plotattributes, fontname, arg) @@ -1136,7 +1434,8 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) processLineArg(plotattributes, arg) end - if haskey(plotattributes, :seriestype) && haskey(_typeAliases, plotattributes[:seriestype]) + if haskey(plotattributes, :seriestype) && + haskey(_typeAliases, plotattributes[:seriestype]) plotattributes[:seriestype] = _typeAliases[plotattributes[:seriestype]] end @@ -1149,7 +1448,9 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) RecipesPipeline.reset_kw!(plotattributes, :marker) if haskey(plotattributes, :markershape) plotattributes[:markershape] = _replace_markershape(plotattributes[:markershape]) - if plotattributes[:markershape] == :none && get(plotattributes, :seriestype, :path) in (:scatter, :scatterbins, :scatterhist, :scatter3d) #the default should be :auto, not :none, so that :none can be set explicitly and would be respected + if plotattributes[:markershape] == :none && + get(plotattributes, :seriestype, :path) in + (:scatter, :scatterbins, :scatterhist, :scatter3d) #the default should be :auto, not :none, so that :none can be set explicitly and would be respected plotattributes[:markershape] = :circle end elseif anymarker @@ -1164,10 +1465,11 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) # handle series annotations if haskey(plotattributes, :series_annotations) - plotattributes[:series_annotations] = series_annotations(wraptuple(plotattributes[:series_annotations])...) + plotattributes[:series_annotations] = + series_annotations(wraptuple(plotattributes[:series_annotations])...) end - # convert into strokes and brushes + # convert into strokes and brushes if haskey(plotattributes, :arrow) a = plotattributes[:arrow] @@ -1182,7 +1484,6 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) end end - # if get(plotattributes, :arrow, false) == true # plotattributes[:arrow] = arrow() # end @@ -1196,19 +1497,21 @@ function RecipesPipeline.preprocess_attributes!(plotattributes::AKW) end # framestyle - if haskey(plotattributes, :framestyle) && haskey(_framestyleAliases, plotattributes[:framestyle]) + if haskey(plotattributes, :framestyle) && + haskey(_framestyleAliases, plotattributes[:framestyle]) plotattributes[:framestyle] = _framestyleAliases[plotattributes[:framestyle]] end # warnings for moved recipes st = get(plotattributes, :seriestype, :path) if st in (:boxplot, :violin, :density) && !isdefined(Main, :StatsPlots) - @warn("seriestype $st has been moved to StatsPlots. To use: \`Pkg.add(\"StatsPlots\"); using StatsPlots\`") + @warn( + "seriestype $st has been moved to StatsPlots. To use: \`Pkg.add(\"StatsPlots\"); using StatsPlots\`" + ) end return end - # ----------------------------------------------------------------------------- const _already_warned = Dict{Symbol,Set{Symbol}}() @@ -1231,10 +1534,12 @@ function warn_on_unsupported_args(pkg::AbstractBackend, plotattributes) end if !isempty(_to_warn) && - !get(plotattributes, :warn_on_unsupported, _plot_defaults[:warn_on_unsupported]) + !get(plotattributes, :warn_on_unsupported, _plot_defaults[:warn_on_unsupported]) for k in sort(collect(_to_warn)) push!(already_warned, k) - @warn("Keyword argument $k not supported with $pkg. Choose from: $(supported_attrs(pkg))") + @warn( + "Keyword argument $k not supported with $pkg. Choose from: $(supported_attrs(pkg))" + ) end end return extra_kwargs @@ -1249,13 +1554,19 @@ function warn_on_unsupported(pkg::AbstractBackend, plotattributes) return end if !is_seriestype_supported(pkg, plotattributes[:seriestype]) - @warn("seriestype $(plotattributes[:seriestype]) is unsupported with $pkg. Choose from: $(supported_seriestypes(pkg))") + @warn( + "seriestype $(plotattributes[:seriestype]) is unsupported with $pkg. Choose from: $(supported_seriestypes(pkg))" + ) end if !is_style_supported(pkg, plotattributes[:linestyle]) - @warn("linestyle $(plotattributes[:linestyle]) is unsupported with $pkg. Choose from: $(supported_styles(pkg))") + @warn( + "linestyle $(plotattributes[:linestyle]) is unsupported with $pkg. Choose from: $(supported_styles(pkg))" + ) end if !is_marker_supported(pkg, plotattributes[:markershape]) - @warn("markershape $(plotattributes[:markershape]) is unsupported with $pkg. Choose from: $(supported_markers(pkg))") + @warn( + "markershape $(plotattributes[:markershape]) is unsupported with $pkg. Choose from: $(supported_markers(pkg))" + ) end end @@ -1267,13 +1578,14 @@ function warn_on_unsupported_scales(pkg::AbstractBackend, plotattributes::AKW) if haskey(plotattributes, k) v = plotattributes[k] if !is_scale_supported(pkg, v) - @warn("scale $v is unsupported with $pkg. Choose from: $(supported_scales(pkg))") + @warn( + "scale $v is unsupported with $pkg. Choose from: $(supported_scales(pkg))" + ) end end end end - # ----------------------------------------------------------------------------- function convertLegendValue(val::Symbol) @@ -1281,7 +1593,28 @@ function convertLegendValue(val::Symbol) :best elseif val in (:no, :none) :none - elseif val in (:right, :left, :top, :bottom, :inside, :best, :legend, :topright, :topleft, :bottomleft, :bottomright, :outertopright, :outertopleft, :outertop, :outerright, :outerleft, :outerbottomright, :outerbottomleft, :outerbottom, :inline) + elseif val in ( + :right, + :left, + :top, + :bottom, + :inside, + :best, + :legend, + :topright, + :topleft, + :bottomleft, + :bottomright, + :outertopright, + :outertopleft, + :outertop, + :outerright, + :outerleft, + :outerbottomright, + :outerbottomleft, + :outerbottom, + :inline, + ) val else error("Invalid symbol for legend: $val") @@ -1289,38 +1622,42 @@ function convertLegendValue(val::Symbol) end convertLegendValue(val::Bool) = val ? :best : :none convertLegendValue(val::Nothing) = :none -convertLegendValue(v::Tuple{S,T}) where {S<:Real, T<:Real} = 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) # ----------------------------------------------------------------------------- - # 1-row matrices will give an element # multi-row matrices will give a column # InputWrapper just gives the contents # anything else is returned as-is function slice_arg(v::AMat, idx::Int) - c = mod1(idx, size(v,2)) - m,n = axes(v) - size(v,1) == 1 ? v[first(m),n[c]] : v[:,n[c]] + c = mod1(idx, size(v, 2)) + m, n = axes(v) + size(v, 1) == 1 ? v[first(m), n[c]] : v[:, n[c]] end slice_arg(wrapper::InputWrapper, idx) = wrapper.obj slice_arg(v, idx) = v - # given an argument key (k), extract the argument value for this index, # and set into plotattributes[k]. Matrices are sliced by column. # if nothing is set (or container is empty), return the existing value. -function slice_arg!(plotattributes_in, plotattributes_out, - k::Symbol, idx::Int, remove_pair::Bool) +function slice_arg!( + plotattributes_in, + plotattributes_out, + k::Symbol, + idx::Int, + remove_pair::Bool, +) v = get(plotattributes_in, k, plotattributes_out[k]) - plotattributes_out[k] = if haskey(plotattributes_in, k) && typeof(v) <: AMat && !isempty(v) - slice_arg(v, idx) - else - v - end + plotattributes_out[k] = + if haskey(plotattributes_in, k) && typeof(v) <: AMat && !isempty(v) + slice_arg(v, idx) + else + v + end if remove_pair RecipesPipeline.reset_kw!(plotattributes_in, k) end @@ -1384,15 +1721,15 @@ const _match_map = KW( const _match_map2 = KW( :background_color_subplot => :background_color, :foreground_color_subplot => :foreground_color, - :foreground_color_axis => :foreground_color_subplot, - :foreground_color_border => :foreground_color_subplot, - :foreground_color_grid => :foreground_color_subplot, - :foreground_color_minor_grid=> :foreground_color_subplot, - :foreground_color_guide => :foreground_color_subplot, - :foreground_color_text => :foreground_color_subplot, - :fontfamily_subplot => :fontfamily, - :tickfontfamily => :fontfamily_subplot, - :guidefontfamily => :fontfamily_subplot, + :foreground_color_axis => :foreground_color_subplot, + :foreground_color_border => :foreground_color_subplot, + :foreground_color_grid => :foreground_color_subplot, + :foreground_color_minor_grid => :foreground_color_subplot, + :foreground_color_guide => :foreground_color_subplot, + :foreground_color_text => :foreground_color_subplot, + :fontfamily_subplot => :fontfamily, + :tickfontfamily => :fontfamily_subplot, + :guidefontfamily => :fontfamily_subplot, ) # properly retrieve from plt.attr, passing `:match` to the correct key @@ -1405,7 +1742,6 @@ function Base.getindex(plt::Plot, k::Symbol) end end - # properly retrieve from sp.attr, passing `:match` to the correct key function Base.getindex(sp::Subplot, k::Symbol) v = sp.attr[k] @@ -1420,7 +1756,6 @@ function Base.getindex(sp::Subplot, k::Symbol) end end - # properly retrieve from axis.attr, passing `:match` to the correct key function Base.getindex(axis::Axis, k::Symbol) v = axis.plotattributes[k] @@ -1447,7 +1782,6 @@ Base.get(sp::Subplot, k::Symbol, v) = get(sp.attr, k, v) Base.get(axis::Axis, k::Symbol, v) = get(axis.plotattributes, k, v) Base.get(series::Series, k::Symbol, v) = get(series.plotattributes, k, v) - # ----------------------------------------------------------------------------- function fg_color(plotattributes::AKW) @@ -1469,16 +1803,14 @@ function fg_color_sp(plotattributes::AKW) end end - - # update attr from an input dictionary function _update_plot_args(plt::Plot, plotattributes_in::AKW) - for (k,v) in _plot_defaults + for (k, v) in _plot_defaults slice_arg!(plotattributes_in, plt.attr, k, 1, true) end # handle colors - plotattributes= plt.attr + plotattributes = plt.attr plt[:background_color] = plot_color(plotattributes[:background_color]) plt[:foreground_color] = fg_color(plotattributes) # bg = plot_color(plt.attr[:background_color]) @@ -1524,7 +1856,13 @@ function _update_subplot_colors(sp::Subplot) return end -function _update_axis(plt::Plot, sp::Subplot, plotattributes_in::AKW, letter::Symbol, subplot_index::Int) +function _update_axis( + plt::Plot, + sp::Subplot, + plotattributes_in::AKW, + letter::Symbol, + subplot_index::Int, +) # get (maybe initialize) the axis axis = get_axis(sp, letter) @@ -1540,7 +1878,12 @@ function _update_axis(plt::Plot, sp::Subplot, plotattributes_in::AKW, letter::Sy return end -function _update_axis(axis::Axis, plotattributes_in::AKW, letter::Symbol, subplot_index::Int) +function _update_axis( + axis::Axis, + plotattributes_in::AKW, + letter::Symbol, + subplot_index::Int, +) # build the KW of arguments from the letter version (i.e. xticks --> ticks) kw = KW() for k in _all_axis_args @@ -1588,7 +1931,13 @@ function _update_axis_links(plt::Plot, axis::Axis, letter::Symbol) end # update a subplots args and axes -function _update_subplot_args(plt::Plot, sp::Subplot, plotattributes_in, subplot_index::Int, remove_pair::Bool) +function _update_subplot_args( + plt::Plot, + sp::Subplot, + plotattributes_in, + subplot_index::Int, + remove_pair::Bool, +) anns = RecipesPipeline.pop_kw!(sp.attr, :annotations) # # grab those args which apply to this subplot @@ -1605,7 +1954,9 @@ function _update_subplot_args(plt::Plot, sp::Subplot, plotattributes_in, subplot lk = Symbol(letter, :lims) # warn against using `Range` in x,y,z lims - if !lims_warned && haskey(plotattributes_in, lk) && plotattributes_in[lk] isa AbstractRange + if !lims_warned && + haskey(plotattributes_in, lk) && + plotattributes_in[lk] isa AbstractRange @warn("lims should be a Tuple, not $(typeof(plotattributes_in[lk])).") lims_warned = true end @@ -1615,9 +1966,13 @@ end # ----------------------------------------------------------------------------- -has_black_border_for_default(st) = error("The seriestype attribute only accepts Symbols, you passed the $(typeof(st)) $st.") -has_black_border_for_default(st::Function) = error("The seriestype attribute only accepts Symbols, you passed the function $st.") -has_black_border_for_default(st::Symbol) = like_histogram(st) || st in (:hexbin, :bar, :shape) +has_black_border_for_default(st) = error( + "The seriestype attribute only accepts Symbols, you passed the $(typeof(st)) $st.", +) +has_black_border_for_default(st::Function) = + error("The seriestype attribute only accepts Symbols, you passed the function $st.") +has_black_border_for_default(st::Symbol) = + like_histogram(st) || st in (:hexbin, :bar, :shape) # converts a symbol or string into a Colorant or ColorGradient # and assigns a color automatically @@ -1630,7 +1985,8 @@ function get_series_color(c, sp::Subplot, n::Int, seriestype) plot_color(c) end -get_series_color(c::AbstractArray, sp::Subplot, n::Int, seriestype) = map(x->get_series_color(x, sp, n, seriestype), c) +get_series_color(c::AbstractArray, sp::Subplot, n::Int, seriestype) = + map(x -> get_series_color(x, sp, n, seriestype), c) function ensure_gradient!(plotattributes::AKW, csym::Symbol, asym::Symbol) if plotattributes[csym] isa ColorPalette @@ -1640,31 +1996,37 @@ function ensure_gradient!(plotattributes::AKW, csym::Symbol, asym::Symbol) end plotattributes[csym] = cgrad(plotattributes[csym], categorical = true, alpha = α) elseif !(plotattributes[csym] isa ColorGradient) - plotattributes[csym] = typeof(plotattributes[asym]) <: AbstractVector ? cgrad() : cgrad(alpha = plotattributes[asym]) + plotattributes[csym] = + typeof(plotattributes[asym]) <: AbstractVector ? cgrad() : + cgrad(alpha = plotattributes[asym]) end end function _replace_linewidth(plotattributes::AKW) # get a good default linewidth... 0 for surface and heatmaps if plotattributes[:linewidth] == :auto - plotattributes[:linewidth] = (get(plotattributes, :seriestype, :path) in (:surface,:heatmap,:image) ? 0 : 1) + plotattributes[:linewidth] = ( + get(plotattributes, :seriestype, :path) in (:surface, :heatmap, :image) ? 0 : 1 + ) end end function _slice_series_args!(plotattributes::AKW, plt::Plot, sp::Subplot, commandIndex::Int) for k in keys(_series_defaults) - haskey(plotattributes, k) && slice_arg!(plotattributes, plotattributes, k, commandIndex, false) + haskey(plotattributes, k) && + slice_arg!(plotattributes, plotattributes, k, commandIndex, false) end return plotattributes end -label_to_string(label::Bool, series_plotindex) = label ? label_to_string(:auto, series_plotindex) : "" +label_to_string(label::Bool, series_plotindex) = + label ? label_to_string(:auto, series_plotindex) : "" label_to_string(label::Nothing, series_plotindex) = "" label_to_string(label::Missing, series_plotindex) = "" function label_to_string(label::Symbol, series_plotindex) - if label==:auto + if label == :auto return string("y", series_plotindex) - elseif label==:none + elseif label == :none return "" else throw(ArgumentError("unsupported symbol $(label) passed to `label`")) @@ -1677,8 +2039,20 @@ function _update_series_attributes!(plotattributes::AKW, plt::Plot, sp::Subplot) globalIndex = plotattributes[:series_plotindex] plotIndex = _series_index(plotattributes, sp) - aliasesAndAutopick(plotattributes, :linestyle, _styleAliases, supported_styles(pkg), plotIndex) - aliasesAndAutopick(plotattributes, :markershape, _markerAliases, supported_markers(pkg), plotIndex) + aliasesAndAutopick( + plotattributes, + :linestyle, + _styleAliases, + supported_styles(pkg), + plotIndex, + ) + aliasesAndAutopick( + plotattributes, + :markershape, + _markerAliases, + supported_markers(pkg), + plotIndex, + ) # update alphas for asym in (:linealpha, :markeralpha, :fillalpha) @@ -1697,7 +2071,7 @@ function _update_series_attributes!(plotattributes::AKW, plt::Plot, sp::Subplot) # update other colors for s in (:line, :marker, :fill) - csym, asym = Symbol(s,:color), Symbol(s,:alpha) + csym, asym = Symbol(s, :color), Symbol(s, :alpha) plotattributes[csym] = if plotattributes[csym] == :auto plot_color(if has_black_border_for_default(stype) && s == :line sp[:foreground_color_subplot] @@ -1743,7 +2117,7 @@ function _update_series_attributes!(plotattributes::AKW, plt::Plot, sp::Subplot) plotattributes[:label] = label_to_string.(plotattributes[:label], globalIndex) _replace_linewidth(plotattributes) - plotattributes + plotattributes end function _series_index(plotattributes, sp) @@ -1764,7 +2138,7 @@ end #-------------------------------------------------- ## inspired by Base.@kwdef -macro add_attributes( level, expr ) +macro add_attributes(level, expr) expr = macroexpand(__module__, expr) # to expand @static expr isa Expr && expr.head === :struct || error("Invalid usage of @add_attributes") T = expr.args[2] @@ -1782,18 +2156,32 @@ macro add_attributes( level, expr ) # e.g. _series_defualts[key] = value exp_key = Symbol(lowercase(string(T)), "_", key) pl_key = makeplural(exp_key) - push!(insert_block.args, Expr( - :(=), Expr(:ref, Symbol("_", level, "_defaults"), QuoteNode(exp_key)), value - )) - push!(insert_block.args, :( - add_aliases($(QuoteNode(exp_key)), $(QuoteNode(pl_key))) - )) - push!(insert_block.args, :( - add_aliases($(QuoteNode(exp_key)), $(QuoteNode(make_non_underscore(exp_key)))) - )) - push!(insert_block.args, :( - add_aliases($(QuoteNode(exp_key)), $(QuoteNode(make_non_underscore(pl_key)))) - )) + push!( + insert_block.args, + Expr( + :(=), + Expr(:ref, Symbol("_", level, "_defaults"), QuoteNode(exp_key)), + value, + ), + ) + push!( + insert_block.args, + :(add_aliases($(QuoteNode(exp_key)), $(QuoteNode(pl_key)))), + ) + push!( + insert_block.args, + :(add_aliases( + $(QuoteNode(exp_key)), + $(QuoteNode(make_non_underscore(exp_key))), + )), + ) + push!( + insert_block.args, + :(add_aliases( + $(QuoteNode(exp_key)), + $(QuoteNode(make_non_underscore(pl_key))), + )), + ) end return quote $expr diff --git a/src/axes.jl b/src/axes.jl index fc99e5b8..31c339ee 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -1,5 +1,4 @@ - # xaxis(args...; kw...) = Axis(:x, args...; kw...) # yaxis(args...; kw...) = Axis(:y, args...; kw...) # zaxis(args...; kw...) = Axis(:z, args...; kw...) @@ -36,42 +35,41 @@ function process_axis_arg!(plotattributes::AKW, arg, letter = "") T = typeof(arg) arg = get(_scaleAliases, arg, arg) if typeof(arg) <: Font - plotattributes[Symbol(letter,:tickfont)] = arg - plotattributes[Symbol(letter,:guidefont)] = arg + plotattributes[Symbol(letter, :tickfont)] = arg + plotattributes[Symbol(letter, :guidefont)] = arg elseif arg in _allScales - plotattributes[Symbol(letter,:scale)] = arg + plotattributes[Symbol(letter, :scale)] = arg elseif arg in (:flip, :invert, :inverted) - plotattributes[Symbol(letter,:flip)] = true + plotattributes[Symbol(letter, :flip)] = true elseif T <: AbstractString - plotattributes[Symbol(letter,:guide)] = arg + plotattributes[Symbol(letter, :guide)] = arg - # xlims/ylims + # xlims/ylims elseif (T <: Tuple || T <: AVec) && length(arg) == 2 sym = typeof(arg[1]) <: Number ? :lims : :ticks - plotattributes[Symbol(letter,sym)] = arg + plotattributes[Symbol(letter, sym)] = arg - # xticks/yticks + # xticks/yticks elseif T <: AVec - plotattributes[Symbol(letter,:ticks)] = arg + plotattributes[Symbol(letter, :ticks)] = arg elseif arg === nothing - plotattributes[Symbol(letter,:ticks)] = [] + plotattributes[Symbol(letter, :ticks)] = [] elseif T <: Bool || arg in _allShowaxisArgs - plotattributes[Symbol(letter,:showaxis)] = showaxis(arg, letter) + plotattributes[Symbol(letter, :showaxis)] = showaxis(arg, letter) elseif typeof(arg) <: Number - plotattributes[Symbol(letter,:rotation)] = arg + plotattributes[Symbol(letter, :rotation)] = arg elseif typeof(arg) <: Function - plotattributes[Symbol(letter,:formatter)] = arg + plotattributes[Symbol(letter, :formatter)] = arg elseif !handleColors!(plotattributes, arg, Symbol(letter, :foreground_color_axis)) @warn("Skipped $(letter)axis arg $arg") - end end @@ -87,15 +85,15 @@ function attr!(axis::Axis, args...; kw...) RecipesPipeline.preprocess_attributes!(KW(kw)) # then override for any keywords... only those keywords that already exists in plotattributes - for (k,v) in kw + for (k, v) in kw if haskey(plotattributes, k) if k == :discrete_values # add these discrete values to the axis for vi in v discrete_value!(axis, vi) end - #could perhaps use TimeType here, as Date and DateTime are both subtypes of TimeType - # or could perhaps check if dateformatter or datetimeformatter is in use + #could perhaps use TimeType here, as Date and DateTime are both subtypes of TimeType + # or could perhaps check if dateformatter or datetimeformatter is in use elseif k == :lims && isa(v, Tuple{Date,Date}) plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) @@ -122,11 +120,8 @@ Base.setindex!(axis::Axis, v, ks::Symbol...) = setindex!(axis.plotattributes, v, Base.haskey(axis::Axis, k::Symbol) = haskey(axis.plotattributes, k) ignorenan_extrema(axis::Axis) = (ex = axis[:extrema]; (ex.emin, ex.emax)) -const _label_func = Dict{Symbol,Function}( - :log10 => x -> "10^$x", - :log2 => x -> "2^$x", - :ln => x -> "e^$x", -) +const _label_func = + Dict{Symbol,Function}(:log10 => x -> "10^$x", :log2 => x -> "2^$x", :ln => x -> "e^$x") labelfunc(scale::Symbol, backend::AbstractBackend) = get(_label_func, scale, string) const _label_func_tex = Dict{Symbol,Function}( @@ -136,7 +131,6 @@ const _label_func_tex = Dict{Symbol,Function}( ) labelfunc_tex(scale::Symbol) = get(_label_func_tex, scale, convert_sci_unicode) - function optimal_ticks_and_labels(ticks, alims, scale, formatter) amin, amax = alims @@ -158,8 +152,8 @@ function optimal_ticks_and_labels(ticks, alims, scale, formatter) # are converted to 'DateTime integers' (actually floats) before # being passed to optimize_datetime_ticks. # (convert(Int, convert(DateTime, convert(Date, i))) == 87600000*i) - ticks, labels = optimize_datetime_ticks(864e5 * amin, 864e5 * amax; - k_min = 2, k_max = 4) + ticks, labels = + optimize_datetime_ticks(864e5 * amin, 864e5 * amax; k_min = 2, k_max = 4) # Now the ticks are converted back to floats corresponding to Dates. return ticks / 864e5, labels elseif formatter == RecipesPipeline.datetimeformatter @@ -198,7 +192,10 @@ function optimal_ticks_and_labels(ticks, alims, scale, formatter) if formatter in (:auto, :plain, :scientific, :engineering) map(labelfunc(scale, backend()), Showoff.showoff(scaled_ticks, formatter)) elseif formatter == :latex - map(x -> string("\$", replace(convert_sci_unicode(x), '×' => "\\times"), "\$"), Showoff.showoff(unscaled_ticks, :auto)) + map( + x -> string("\$", replace(convert_sci_unicode(x), '×' => "\\times"), "\$"), + Showoff.showoff(unscaled_ticks, :auto), + ) else # there was an override for the formatter... use that on the unscaled ticks map(formatter, unscaled_ticks) @@ -223,16 +220,22 @@ function get_ticks(sp::Subplot, axis::Axis; update = true) if update || !haskey(axis.plotattributes, :optimized_ticks) dvals = axis[:discrete_values] ticks = _transform_ticks(axis[:ticks]) - axis.plotattributes[:optimized_ticks] = if ticks isa Symbol && ticks !== :none && - ispolar(sp) && axis[:letter] === :x && !isempty(dvals) - collect(0:pi/4:7pi/4), string.(0:45:315) - else - cvals = axis[:continuous_values] - alims = axis_limits(sp, axis[:letter]) - scale = axis[:scale] - formatter = axis[:formatter] - get_ticks(ticks, cvals, dvals, alims, scale, formatter) - end + axis.plotattributes[:optimized_ticks] = + if ( + ticks isa Symbol && + ticks !== :none && + ispolar(sp) && + axis[:letter] === :x && + !isempty(dvals) + ) + collect(0:(pi / 4):(7pi / 4)), string.(0:45:315) + else + cvals = axis[:continuous_values] + alims = axis_limits(sp, axis[:letter]) + scale = axis[:scale] + formatter = axis[:formatter] + get_ticks(ticks, cvals, dvals, alims, scale, formatter) + end end return axis.plotattributes[:optimized_ticks] end @@ -297,7 +300,7 @@ end get_ticks(sp::Subplot, s::Symbol) = get_ticks(sp, sp[Symbol(s, :axis)]) get_ticks(p::Plot, s::Symbol) = [get_ticks(sp, s) for sp in p.subplots] -function get_ticks(ticks::Symbol, cvals::T, dvals, args...) where T +function get_ticks(ticks::Symbol, cvals::T, dvals, args...) where {T} if ticks === :none return T[], String[] elseif !isempty(dvals) @@ -316,21 +319,21 @@ end get_ticks(ticks::AVec, cvals, dvals, args...) = optimal_ticks_and_labels(ticks, args...) function get_ticks(ticks::Int, dvals, cvals, args...) if !isempty(dvals) - rng = round.(Int, range(1, stop=length(dvals), length=ticks)) + rng = round.(Int, range(1, stop = length(dvals), length = ticks)) cvals[rng], string.(dvals[rng]) else optimal_ticks_and_labels(ticks, args...) end end -get_ticks(ticks::NTuple{2, Any}, args...) = ticks -get_ticks(::Nothing, cvals::T, args...) where T = T[], String[] +get_ticks(ticks::NTuple{2,Any}, args...) = ticks +get_ticks(::Nothing, cvals::T, args...) where {T} = T[], String[] get_ticks(ticks::Bool, args...) = ticks ? get_ticks(:auto, args...) : get_ticks(nothing, args...) -get_ticks(::T, args...) where T = error("Unknown ticks type in get_ticks: $T") +get_ticks(::T, args...) where {T} = error("Unknown ticks type in get_ticks: $T") _transform_ticks(ticks) = ticks -_transform_ticks(ticks::AbstractArray{T}) where T <: Dates.TimeType = Dates.value.(ticks) -_transform_ticks(ticks::NTuple{2, Any}) = (_transform_ticks(ticks[1]), ticks[2]) +_transform_ticks(ticks::AbstractArray{T}) where {T<:Dates.TimeType} = Dates.value.(ticks) +_transform_ticks(ticks::NTuple{2,Any}) = (_transform_ticks(ticks[1]), ticks[2]) function get_minor_ticks(sp, axis, ticks) axis[:minorticks] ∈ (:none, nothing, false) && !axis[:minorgrid] && return nothing @@ -350,30 +353,36 @@ function get_minor_ticks(sp, axis, ticks) sub = 1 # unused ratio = length(ticks) > 2 ? (ticks[3] - ticks[2]) / (ticks[2] - ticks[1]) : 1 first_step = ticks[2] - ticks[1] - last_step = ticks[end] - ticks[end-1] + last_step = ticks[end] - ticks[end - 1] ticks = [ticks[1] - first_step / ratio; ticks; ticks[end] + last_step * ratio] end # default to 9 intervals between major ticks for log10 scale and 5 intervals otherwise n_default = (scale == :log10) ? 9 : 5 - n = typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 ? axis[:minorticks] : n_default + n = + typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 ? axis[:minorticks] : + n_default minorticks = typeof(ticks[1])[] - for (i, hi) ∈ enumerate(ticks[2:end]) + for (i, hi) in enumerate(ticks[2:end]) lo = ticks[i] if isfinite(lo) && isfinite(hi) && hi > lo if log_scaled - for e ∈ 1:sub + for e in 1:sub lo_ = lo * base^(e - 1) hi_ = lo_ * base step = (hi_ - lo_) / n - append!(minorticks, collect( - lo_ + (e > 1 ? 0 : step) : step : hi_ - (e < sub ? 0 : step / 2) - )) + append!( + minorticks, + collect( + (lo_ + (e > 1 ? 0 : step)):step:(hi_ - (e < sub ? 0 : + step / 2)), + ), + ) end else step = (hi - lo) / n - append!(minorticks, collect(lo + step : step : hi - step / 2)) + append!(minorticks, collect((lo + step):step:(hi - step / 2))) end end end @@ -382,17 +391,15 @@ end # ------------------------------------------------------------------------- - function reset_extrema!(sp::Subplot) - for asym in (:x,:y,:z) - sp[Symbol(asym,:axis)][:extrema] = Extrema() + for asym in (:x, :y, :z) + sp[Symbol(asym, :axis)][:extrema] = Extrema() end for series in sp.series_list expand_extrema!(sp, series.plotattributes) end end - function expand_extrema!(ex::Extrema, v::Number) ex.emin = isfinite(v) ? min(v, ex.emin) : ex.emin ex.emax = isfinite(v) ? max(v, ex.emax) : ex.emax @@ -407,14 +414,13 @@ end expand_extrema!(axis::Axis, ::Nothing) = axis[:extrema] expand_extrema!(axis::Axis, ::Bool) = axis[:extrema] - function expand_extrema!(axis::Axis, v::Tuple{MIN,MAX}) where {MIN<:Number,MAX<:Number} ex = axis[:extrema] ex.emin = isfinite(v[1]) ? min(v[1], ex.emin) : ex.emin ex.emax = isfinite(v[2]) ? max(v[2], ex.emax) : ex.emax ex end -function expand_extrema!(axis::Axis, v::AVec{N}) where N<:Number +function expand_extrema!(axis::Axis, v::AVec{N}) where {N<:Number} ex = axis[:extrema] for vi in v expand_extrema!(ex, vi) @@ -422,7 +428,6 @@ function expand_extrema!(axis::Axis, v::AVec{N}) where N<:Number ex end - function expand_extrema!(sp::Subplot, plotattributes::AKW) vert = isvertical(plotattributes) @@ -433,7 +438,12 @@ function expand_extrema!(sp::Subplot, plotattributes::AKW) else letter == :x ? :y : letter == :y ? :x : :z end] - if letter != :z && plotattributes[:seriestype] == :straightline && any(series[:seriestype] != :straightline for series in series_list(sp)) && data[1] != data[2] + if ( + letter != :z && + plotattributes[:seriestype] == :straightline && + any(series[:seriestype] != :straightline for series in series_list(sp)) && + data[1] != data[2] + ) data = [NaN] end axis = sp[Symbol(letter, "axis")] @@ -442,7 +452,8 @@ function expand_extrema!(sp::Subplot, plotattributes::AKW) expand_extrema!(sp[:xaxis], data.x_extents) expand_extrema!(sp[:yaxis], data.y_extents) expand_extrema!(sp[:zaxis], data.z_extents) - elseif eltype(data) <: Number || (isa(data, Surface) && all(di -> isa(di, Number), data.surf)) + elseif eltype(data) <: Number || + (isa(data, Surface) && all(di -> isa(di, Number), data.surf)) if !(eltype(data) <: Number) # huh... must have been a mis-typed surface? lets swap it out data = plotattributes[letter] = Surface(Matrix{Float64}(data.surf)) @@ -452,7 +463,8 @@ function expand_extrema!(sp::Subplot, plotattributes::AKW) # TODO: need more here... gotta track the discrete reference value # as well as any coord offset (think of boxplot shape coords... they all # correspond to the same x-value) - plotattributes[letter], plotattributes[Symbol(letter,"_discrete_indices")] = discrete_value!(axis, data) + plotattributes[letter], plotattributes[Symbol(letter, "_discrete_indices")] = + discrete_value!(axis, data) expand_extrema!(axis, plotattributes[letter]) end end @@ -486,7 +498,9 @@ function expand_extrema!(sp::Subplot, plotattributes::AKW) bw = plotattributes[:bar_width] if bw === nothing - bw = plotattributes[:bar_width] = _bar_width * ignorenan_minimum(filter(x->x>0,diff(sort(data)))) + bw = + plotattributes[:bar_width] = + _bar_width * ignorenan_minimum(filter(x -> x > 0, diff(sort(data)))) end axis = sp.attr[Symbol(dsym, :axis)] expand_extrema!(axis, ignorenan_maximum(data) + 0.5maximum(bw)) @@ -512,7 +526,7 @@ end # ------------------------------------------------------------------------- # push the limits out slightly -function widen(lmin, lmax, scale=:identity) +function widen(lmin, lmax, scale = :identity) f, invf = RecipesPipeline.scale_func(scale), RecipesPipeline.inverse_scale_func(scale) span = f(lmax) - f(lmin) # eps = NaNMath.max(1e-16, min(1e-2span, 1e-10)) @@ -521,7 +535,28 @@ function widen(lmin, lmax, scale=:identity) end # figure out if widening is a good idea. -const _widen_seriestypes = (:line, :path, :steppre, :stepmid, :steppost, :sticks, :scatter, :barbins, :barhist, :histogram, :scatterbins, :scatterhist, :stepbins, :stephist, :bins2d, :histogram2d, :bar, :shape, :path3d, :scatter3d) +const _widen_seriestypes = ( + :line, + :path, + :steppre, + :stepmid, + :steppost, + :sticks, + :scatter, + :barbins, + :barhist, + :histogram, + :scatterbins, + :scatterhist, + :stepbins, + :stephist, + :bins2d, + :histogram2d, + :bar, + :shape, + :path3d, + :scatter3d, +) function default_should_widen(axis::Axis) if axis[:widen] isa Bool @@ -540,7 +575,7 @@ function default_should_widen(axis::Axis) end function round_limits(amin, amax, scale) - base = get(_logScaleBases, scale, 10.) + base = get(_logScaleBases, scale, 10.0) factor = base^(1 - round(log(base, amax - amin))) amin = floor(amin * factor) / factor amax = ceil(amax * factor) / factor @@ -548,7 +583,12 @@ function round_limits(amin, amax, scale) end # using the axis extrema and limit overrides, return the min/max value for this axis -function axis_limits(sp, letter, should_widen = default_should_widen(sp[Symbol(letter, :axis)]), consider_aspect = true) +function axis_limits( + sp, + letter, + should_widen = default_should_widen(sp[Symbol(letter, :axis)]), + consider_aspect = true, +) axis = sp[Symbol(letter, :axis)] ex = axis[:extrema] amin, amax = ex.emin, ex.emax @@ -594,7 +634,9 @@ function axis_limits(sp, letter, should_widen = default_should_widen(sp[Symbol(l end if ( - !has_user_lims && consider_aspect && letter in (:x, :y) && + !has_user_lims && + consider_aspect && + letter in (:x, :y) && !(sp[:aspect_ratio] in (:none, :auto) || RecipesPipeline.is3d(:sp)) ) aspect_ratio = isa(sp[:aspect_ratio], Number) ? sp[:aspect_ratio] : 1 @@ -664,11 +706,11 @@ end # add the discrete value for each item. return the continuous values and the indices function discrete_value!(axis::Axis, v::AMat) - n,m = axes(v) + n, m = axes(v) cmat = zeros(axes(v)) discrete_indices = similar(Array{Int}, axes(v)) for i in n, j in m - cmat[i,j], discrete_indices[i,j] = discrete_value!(axis, v[i,j]) + cmat[i, j], discrete_indices[i, j] = discrete_value!(axis, v[i, j]) end cmat, discrete_indices end @@ -711,7 +753,11 @@ function axis_drawing_info(sp, letter) if sp[:framestyle] != :grid push!(segments, reverse_if((amin, oa1), isy), reverse_if((amax, oa1), isy)) # don't show the 0 tick label for the origin framestyle - if sp[:framestyle] == :origin && !(ticks in (:none, nothing, false)) && length(ticks) > 1 + if ( + sp[:framestyle] == :origin && + !(ticks in (:none, nothing, false)) && + length(ticks) > 1 + ) i = findfirst(==(0), ticks[1]) if i !== nothing deleteat!(ticks[1], i) @@ -765,11 +811,23 @@ function axis_drawing_info(sp, letter) ax_length = letter === :x ? height(sp.plotarea).value : width(sp.plotarea).value # add major grid segments - add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 1.2 / ax_length, ax[:tick_direction] !== :none) + add_major_or_minor_segments( + ticks[1], + ax[:grid], + grid_segments, + 1.2 / ax_length, + ax[:tick_direction] !== :none, + ) # add minor grid segments if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] - add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.6 / ax_length, true) + add_major_or_minor_segments( + minor_ticks, + ax[:minorgrid], + minorgrid_segments, + 0.6 / ax_length, + true, + ) end end end @@ -780,7 +838,7 @@ function axis_drawing_info(sp, letter) tick_segments = tick_segments, grid_segments = grid_segments, minorgrid_segments = minorgrid_segments, - border_segments = border_segments + border_segments = border_segments, ) end @@ -816,8 +874,7 @@ function axis_drawing_info_3d(sp, letter) minorgrid_segments = Segments(3) border_segments = Segments(3) - - if sp[:framestyle] != :none# && letter === :x + if sp[:framestyle] != :none # && letter === :x na0, na1 = if sp[:framestyle] in (:origin, :zerolines) 0, 0 else @@ -837,7 +894,11 @@ function axis_drawing_info_3d(sp, letter) sort_3d_axes(amax, na0, fa0, letter), ) # don't show the 0 tick label for the origin framestyle - if sp[:framestyle] == :origin && !(ticks in (:none, nothing, false)) && length(ticks) > 1 + if ( + sp[:framestyle] == :origin && + !(ticks in (:none, nothing, false)) && + length(ticks) > 1 + ) i0 = findfirst(==(0), ticks[1]) if i0 !== nothing deleteat!(ticks[1], i0) @@ -857,7 +918,8 @@ function axis_drawing_info_3d(sp, letter) if ax[:ticks] ∉ (:none, nothing, false) f = RecipesPipeline.scale_func(nax[:scale]) invf = RecipesPipeline.inverse_scale_func(nax[:scale]) - ga0, ga1 = sp[:framestyle] in (:origin, :zerolines) ? (namin, namax) : (na0, na1) + ga0, ga1 = + sp[:framestyle] in (:origin, :zerolines) ? (namin, namax) : (na0, na1) add_major_or_minor_segments(ticks, grid, segments, factor, cond) = begin ticks === nothing && return @@ -898,11 +960,23 @@ function axis_drawing_info_3d(sp, letter) end # add major grid segments - add_major_or_minor_segments(ticks[1], ax[:grid], grid_segments, 0.012, ax[:tick_direction] !== :none) + add_major_or_minor_segments( + ticks[1], + ax[:grid], + grid_segments, + 0.012, + ax[:tick_direction] !== :none, + ) # add minor grid segments if ax[:minorticks] ∉ (:none, nothing, false) || ax[:minorgrid] - add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.006, true) + add_major_or_minor_segments( + minor_ticks, + ax[:minorgrid], + minorgrid_segments, + 0.006, + true, + ) end end end @@ -913,7 +987,7 @@ function axis_drawing_info_3d(sp, letter) tick_segments = tick_segments, grid_segments = grid_segments, minorgrid_segments = minorgrid_segments, - border_segments = border_segments + border_segments = border_segments, ) end diff --git a/src/backends.jl b/src/backends.jl index 961c274a..09247960 100644 --- a/src/backends.jl +++ b/src/backends.jl @@ -1,12 +1,12 @@ struct NoBackend <: AbstractBackend end -const _backendType = Dict{Symbol, DataType}(:none => NoBackend) -const _backendSymbol = Dict{DataType, Symbol}(NoBackend => :none) +const _backendType = Dict{Symbol,DataType}(:none => NoBackend) +const _backendSymbol = Dict{DataType,Symbol}(NoBackend => :none) const _backends = Symbol[] const _initialized_backends = Set{Symbol}() const _default_backends = (:none, :gr, :plotly) -const _backend_packages = Dict{Symbol, Symbol}() +const _backend_packages = Dict{Symbol,Symbol}() "Returns a list of supported backends" backends() = _backends @@ -66,10 +66,11 @@ function text_size(lablen::Int, sz::Number, rot::Number = 0) # now compute the generalized "height" after rotation as the "opposite+adjacent" of 2 triangles height = abs(sind(rot)) * width + abs(cosd(rot)) * ptsz - width = abs(sind(rot+90)) * width + abs(cosd(rot+90)) * ptsz + width = abs(sind(rot + 90)) * width + abs(cosd(rot + 90)) * ptsz width, height end -text_size(lab::AbstractString, sz::Number, rot::Number = 0) = text_size(length(lab), sz, rot) +text_size(lab::AbstractString, sz::Number, rot::Number = 0) = + text_size(length(lab), sz, rot) text_size(lab::PlotText, sz::Number, rot::Number = 0) = text_size(length(lab.str), sz, rot) # account for the size/length/rotation of tick labels @@ -104,8 +105,8 @@ end # to fit ticks, tick labels, guides, colorbars, etc. function _update_min_padding!(sp::Subplot) # TODO: something different when `RecipesPipeline.is3d(sp) == true` - leftpad = tick_padding(sp, sp[:yaxis]) + sp[:left_margin] + guide_padding(sp[:yaxis]) - toppad = sp[:top_margin] + title_padding(sp) + leftpad = tick_padding(sp, sp[:yaxis]) + sp[:left_margin] + guide_padding(sp[:yaxis]) + toppad = sp[:top_margin] + title_padding(sp) rightpad = sp[:right_margin] bottompad = tick_padding(sp, sp[:xaxis]) + sp[:bottom_margin] + guide_padding(sp[:xaxis]) @@ -125,10 +126,9 @@ _update_plot_object(plt::Plot) = nothing # --------------------------------------------------------- - mutable struct CurrentBackend - sym::Symbol - pkg::AbstractBackend + sym::Symbol + pkg::AbstractBackend end CurrentBackend(sym::Symbol) = CurrentBackend(sym, _backend_instance(sym)) @@ -143,8 +143,10 @@ function _pick_default_backend() if sym in _backends backend(sym) else - @warn("You have set PLOTS_DEFAULT_BACKEND=$env_default but it is not a valid backend package. Choose from:\n\t" * - join(sort(_backends), "\n\t")) + @warn( + "You have set PLOTS_DEFAULT_BACKEND=$env_default but it is not a valid backend package. Choose from:\n\t" * + join(sort(_backends), "\n\t") + ) _fallback_default_backend() end else @@ -152,7 +154,6 @@ function _pick_default_backend() end end - # --------------------------------------------------------- """ @@ -189,7 +190,8 @@ function backend(sym::Symbol) end end -const _deprecated_backends = [:qwt, :winston, :bokeh, :gadfly, :immerse, :glvisualize, :pgfplots] +const _deprecated_backends = + [:qwt, :winston, :bokeh, :gadfly, :immerse, :glvisualize, :pgfplots] function warn_on_deprecated_backend(bsym::Symbol) if bsym in _deprecated_backends @@ -201,23 +203,29 @@ function warn_on_deprecated_backend(bsym::Symbol) end end - - # --------------------------------------------------------- # these are args which every backend supports because they're not used in the backend code const _base_supported_args = [ :color_palette, - :background_color, :background_color_subplot, - :foreground_color, :foreground_color_subplot, + :background_color, + :background_color_subplot, + :foreground_color, + :foreground_color_subplot, :group, :seriestype, - :seriescolor, :seriesalpha, + :seriescolor, + :seriesalpha, :smooth, - :xerror, :yerror, :zerror, + :xerror, + :yerror, + :zerror, :subplot, - :x, :y, :z, - :show, :size, + :x, + :y, + :z, + :show, + :size, :margin, :left_margin, :right_margin, @@ -231,23 +239,21 @@ const _base_supported_args = [ :subplot_index, :discrete_values, :projection, - :show_empty_bins + :show_empty_bins, ] function merge_with_base_supported(v::AVec) v = vcat(v, _base_supported_args) for vi in v if haskey(_axis_defaults, vi) - for letter in (:x,:y,:z) - push!(v, Symbol(letter,vi)) + for letter in (:x, :y, :z) + push!(v, Symbol(letter, vi)) end end end Set(v) end - - @init_backend PyPlot @init_backend UnicodePlots @init_backend Plotly @@ -286,7 +292,6 @@ end # is_subplot_supported(::AbstractBackend) = false # is_subplot_supported() = is_subplot_supported(backend()) - ################################################################################ # initialize the backends @@ -305,39 +310,91 @@ _initialize_backend(pkg::GRBackend) = nothing const _gr_attr = merge_with_base_supported([ :annotations, - :background_color_legend, :background_color_inside, :background_color_outside, - :foreground_color_legend, :foreground_color_grid, :foreground_color_axis, - :foreground_color_text, :foreground_color_border, + :background_color_legend, + :background_color_inside, + :background_color_outside, + :foreground_color_legend, + :foreground_color_grid, + :foreground_color_axis, + :foreground_color_text, + :foreground_color_border, :label, - :seriescolor, :seriesalpha, - :linecolor, :linestyle, :linewidth, :linealpha, - :markershape, :markercolor, :markersize, :markeralpha, - :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, - :fillrange, :fillcolor, :fillalpha, + :seriescolor, + :seriesalpha, + :linecolor, + :linestyle, + :linewidth, + :linealpha, + :markershape, + :markercolor, + :markersize, + :markeralpha, + :markerstrokewidth, + :markerstrokecolor, + :markerstrokealpha, + :fillrange, + :fillcolor, + :fillalpha, :bins, :layout, - :title, :window_title, - :guide, :lims, :ticks, :scale, :flip, - :titlefontfamily, :titlefontsize, :titlefonthalign, :titlefontvalign, - :titlefontrotation, :titlefontcolor, - :legendfontfamily, :legendfontsize, :legendfonthalign, :legendfontvalign, - :legendfontrotation, :legendfontcolor, - :tickfontfamily, :tickfontsize, :tickfonthalign, :tickfontvalign, - :tickfontrotation, :tickfontcolor, - :guidefontfamily, :guidefontsize, :guidefonthalign, :guidefontvalign, - :guidefontrotation, :guidefontcolor, - :grid, :gridalpha, :gridstyle, :gridlinewidth, - :legend, :legendtitle, :colorbar, :colorbar_title, :colorbar_entry, - :colorbar_titlefontfamily, :colorbar_titlefontsize, - :colorbar_titlefontvalign, :colorbar_titlefonthalign, - :colorbar_titlefontrotation, :colorbar_titlefontcolor, - :fill_z, :line_z, :marker_z, :levels, - :ribbon, :quiver, + :title, + :window_title, + :guide, + :lims, + :ticks, + :scale, + :flip, + :titlefontfamily, + :titlefontsize, + :titlefonthalign, + :titlefontvalign, + :titlefontrotation, + :titlefontcolor, + :legendfontfamily, + :legendfontsize, + :legendfonthalign, + :legendfontvalign, + :legendfontrotation, + :legendfontcolor, + :tickfontfamily, + :tickfontsize, + :tickfonthalign, + :tickfontvalign, + :tickfontrotation, + :tickfontcolor, + :guidefontfamily, + :guidefontsize, + :guidefonthalign, + :guidefontvalign, + :guidefontrotation, + :guidefontcolor, + :grid, + :gridalpha, + :gridstyle, + :gridlinewidth, + :legend, + :legendtitle, + :colorbar, + :colorbar_title, + :colorbar_entry, + :colorbar_titlefontfamily, + :colorbar_titlefontsize, + :colorbar_titlefontvalign, + :colorbar_titlefonthalign, + :colorbar_titlefontrotation, + :colorbar_titlefontcolor, + :fill_z, + :line_z, + :marker_z, + :levels, + :ribbon, + :quiver, :orientation, :overwrite_figure, :polar, :aspect_ratio, - :normalize, :weights, + :normalize, + :weights, :inset_subplots, :bar_width, :arrow, @@ -381,35 +438,79 @@ end const _plotly_attr = merge_with_base_supported([ :annotations, - :background_color_legend, :background_color_inside, :background_color_outside, - :foreground_color_legend, :foreground_color_guide, - :foreground_color_grid, :foreground_color_axis, - :foreground_color_text, :foreground_color_border, + :background_color_legend, + :background_color_inside, + :background_color_outside, + :foreground_color_legend, + :foreground_color_guide, + :foreground_color_grid, + :foreground_color_axis, + :foreground_color_text, + :foreground_color_border, :foreground_color_title, :label, - :seriescolor, :seriesalpha, - :linecolor, :linestyle, :linewidth, :linealpha, - :markershape, :markercolor, :markersize, :markeralpha, - :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, :markerstrokestyle, - :fillrange, :fillcolor, :fillalpha, + :seriescolor, + :seriesalpha, + :linecolor, + :linestyle, + :linewidth, + :linealpha, + :markershape, + :markercolor, + :markersize, + :markeralpha, + :markerstrokewidth, + :markerstrokecolor, + :markerstrokealpha, + :markerstrokestyle, + :fillrange, + :fillcolor, + :fillalpha, :bins, - :title, :titlelocation, - :titlefontfamily, :titlefontsize, :titlefonthalign, :titlefontvalign, + :title, + :titlelocation, + :titlefontfamily, + :titlefontsize, + :titlefonthalign, + :titlefontvalign, :titlefontcolor, - :legendfontfamily, :legendfontsize, :legendfontcolor, - :tickfontfamily, :tickfontsize, :tickfontcolor, - :guidefontfamily, :guidefontsize, :guidefontcolor, + :legendfontfamily, + :legendfontsize, + :legendfontcolor, + :tickfontfamily, + :tickfontsize, + :tickfontcolor, + :guidefontfamily, + :guidefontsize, + :guidefontcolor, :window_title, - :guide, :lims, :ticks, :scale, :flip, :rotation, - :tickfont, :guidefont, :legendfont, - :grid, :gridalpha, :gridlinewidth, - :legend, :colorbar, :colorbar_title, :colorbar_entry, - :marker_z, :fill_z, :line_z, :levels, - :ribbon, :quiver, + :guide, + :lims, + :ticks, + :scale, + :flip, + :rotation, + :tickfont, + :guidefont, + :legendfont, + :grid, + :gridalpha, + :gridlinewidth, + :legend, + :colorbar, + :colorbar_title, + :colorbar_entry, + :marker_z, + :fill_z, + :line_z, + :levels, + :ribbon, + :quiver, :orientation, # :overwrite_figure, :polar, - :normalize, :weights, + :normalize, + :weights, # :contours, :aspect_ratio, :hover, @@ -420,7 +521,7 @@ const _plotly_attr = merge_with_base_supported([ :tick_direction, :camera, :contour_labels, - ]) +]) const _plotly_seriestype = [ :path, @@ -434,12 +535,24 @@ const _plotly_seriestype = [ :shape, :scattergl, :straightline, - :mesh3d + :mesh3d, ] const _plotly_style = [:auto, :solid, :dash, :dot, :dashdot] const _plotly_marker = [ - :none, :auto, :circle, :rect, :diamond, :utriangle, :dtriangle, - :cross, :xcross, :pentagon, :hexagon, :octagon, :vline, :hline + :none, + :auto, + :circle, + :rect, + :diamond, + :utriangle, + :dtriangle, + :cross, + :xcross, + :pentagon, + :hexagon, + :octagon, + :vline, + :hline, ] const _plotly_scale = [:identity, :log10] @@ -454,23 +567,50 @@ const _pgfplots_attr = merge_with_base_supported([ :background_color_inside, # :background_color_outside, # :foreground_color_legend, - :foreground_color_grid, :foreground_color_axis, - :foreground_color_text, :foreground_color_border, + :foreground_color_grid, + :foreground_color_axis, + :foreground_color_text, + :foreground_color_border, :label, - :seriescolor, :seriesalpha, - :linecolor, :linestyle, :linewidth, :linealpha, - :markershape, :markercolor, :markersize, :markeralpha, - :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, :markerstrokestyle, - :fillrange, :fillcolor, :fillalpha, + :seriescolor, + :seriesalpha, + :linecolor, + :linestyle, + :linewidth, + :linealpha, + :markershape, + :markercolor, + :markersize, + :markeralpha, + :markerstrokewidth, + :markerstrokecolor, + :markerstrokealpha, + :markerstrokestyle, + :fillrange, + :fillcolor, + :fillalpha, :bins, # :bar_width, :bar_edges, :title, # :window_title, - :guide, :guide_position, :lims, :ticks, :scale, :flip, :rotation, - :tickfont, :guidefont, :legendfont, - :grid, :legend, - :colorbar, :colorbar_title, - :fill_z, :line_z, :marker_z, :levels, + :guide, + :guide_position, + :lims, + :ticks, + :scale, + :flip, + :rotation, + :tickfont, + :guidefont, + :legendfont, + :grid, + :legend, + :colorbar, + :colorbar_title, + :fill_z, + :line_z, + :marker_z, + :levels, # :ribbon, :quiver, :arrow, # :orientation, # :overwrite_figure, @@ -482,9 +622,36 @@ const _pgfplots_attr = merge_with_base_supported([ :camera, :contour_labels, ]) -const _pgfplots_seriestype = [:path, :path3d, :scatter, :steppre, :stepmid, :steppost, :histogram2d, :ysticks, :xsticks, :contour, :shape, :straightline,] +const _pgfplots_seriestype = [ + :path, + :path3d, + :scatter, + :steppre, + :stepmid, + :steppost, + :histogram2d, + :ysticks, + :xsticks, + :contour, + :shape, + :straightline, +] const _pgfplots_style = [:auto, :solid, :dash, :dot, :dashdot, :dashdotdot] -const _pgfplots_marker = [:none, :auto, :circle, :rect, :diamond, :utriangle, :dtriangle, :cross, :xcross, :star5, :pentagon, :hline, :vline] #vcat(_allMarkers, Shape) +const _pgfplots_marker = [ + :none, + :auto, + :circle, + :rect, + :diamond, + :utriangle, + :dtriangle, + :cross, + :xcross, + :star5, + :pentagon, + :hline, + :vline, +] #vcat(_allMarkers, Shape) const _pgfplots_scale = [:identity, :ln, :log2, :log10] # ------------------------------------------------------------------------------ @@ -497,11 +664,11 @@ function _initialize_backend(pkg::PlotlyJSBackend) end end -const _plotlyjs_attr = _plotly_attr -const _plotlyjs_seriestype = _plotly_seriestype -const _plotlyjs_style = _plotly_style -const _plotlyjs_marker = _plotly_marker -const _plotlyjs_scale = _plotly_scale +const _plotlyjs_attr = _plotly_attr +const _plotlyjs_seriestype = _plotly_seriestype +const _plotlyjs_style = _plotly_style +const _plotlyjs_marker = _plotly_marker +const _plotlyjs_scale = _plotly_scale # ------------------------------------------------------------------------------ # pyplot @@ -519,36 +686,89 @@ end const _pyplot_attr = merge_with_base_supported([ :annotations, - :background_color_legend, :background_color_inside, :background_color_outside, - :foreground_color_grid, :foreground_color_legend, :foreground_color_title, - :foreground_color_axis, :foreground_color_border, :foreground_color_guide, :foreground_color_text, + :background_color_legend, + :background_color_inside, + :background_color_outside, + :foreground_color_grid, + :foreground_color_legend, + :foreground_color_title, + :foreground_color_axis, + :foreground_color_border, + :foreground_color_guide, + :foreground_color_text, :label, - :linecolor, :linestyle, :linewidth, :linealpha, - :markershape, :markercolor, :markersize, :markeralpha, - :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, - :fillrange, :fillcolor, :fillalpha, - :bins, :bar_width, :bar_edges, :bar_position, - :title, :titlelocation, :titlefont, + :linecolor, + :linestyle, + :linewidth, + :linealpha, + :markershape, + :markercolor, + :markersize, + :markeralpha, + :markerstrokewidth, + :markerstrokecolor, + :markerstrokealpha, + :fillrange, + :fillcolor, + :fillalpha, + :bins, + :bar_width, + :bar_edges, + :bar_position, + :title, + :titlelocation, + :titlefont, :window_title, - :guide, :guide_position, :lims, :ticks, :scale, :flip, :rotation, - :titlefontfamily, :titlefontsize, :titlefontcolor, - :legendfontfamily, :legendfontsize, :legendfontcolor, - :tickfontfamily, :tickfontsize, :tickfontcolor, - :guidefontfamily, :guidefontsize, :guidefontcolor, - :grid, :gridalpha, :gridstyle, :gridlinewidth, - :legend, :legendtitle, :colorbar, :colorbar_title, :colorbar_entry, - :colorbar_ticks, :colorbar_tickfontfamily, :colorbar_tickfontsize, - :colorbar_tickfonthalign, :colorbar_tickfontvalign, - :colorbar_tickfontrotation, :colorbar_tickfontcolor, + :guide, + :guide_position, + :lims, + :ticks, + :scale, + :flip, + :rotation, + :titlefontfamily, + :titlefontsize, + :titlefontcolor, + :legendfontfamily, + :legendfontsize, + :legendfontcolor, + :tickfontfamily, + :tickfontsize, + :tickfontcolor, + :guidefontfamily, + :guidefontsize, + :guidefontcolor, + :grid, + :gridalpha, + :gridstyle, + :gridlinewidth, + :legend, + :legendtitle, + :colorbar, + :colorbar_title, + :colorbar_entry, + :colorbar_ticks, + :colorbar_tickfontfamily, + :colorbar_tickfontsize, + :colorbar_tickfonthalign, + :colorbar_tickfontvalign, + :colorbar_tickfontrotation, + :colorbar_tickfontcolor, :colorbar_scale, - :marker_z, :line_z, :fill_z, + :marker_z, + :line_z, + :fill_z, :levels, - :ribbon, :quiver, :arrow, + :ribbon, + :quiver, + :arrow, :orientation, :overwrite_figure, :polar, - :normalize, :weights, - :contours, :aspect_ratio, + :normalize, + :weights, + :contours, + :aspect_ratio, :clims, :inset_subplots, :dpi, @@ -557,7 +777,7 @@ const _pyplot_attr = merge_with_base_supported([ :tick_direction, :camera, :contour_labels, - ]) +]) const _pyplot_seriestype = [ :path, :steppre, @@ -598,18 +818,35 @@ const _gaston_attr = merge_with_base_supported([ # :foreground_color_legend, # :foreground_color_grid, :foreground_color_axis, # :foreground_color_text, :foreground_color_border, - :label, :seriescolor, :seriesalpha, - :linecolor, :linestyle, :linewidth, :linealpha, - :markershape, :markercolor, :markersize, :markeralpha, + :label, + :seriescolor, + :seriesalpha, + :linecolor, + :linestyle, + :linewidth, + :linealpha, + :markershape, + :markercolor, + :markersize, + :markeralpha, # :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, :markerstrokestyle, # :fillrange, :fillcolor, :fillalpha, # :bins, # :bar_width, :bar_edges, - :title, :window_title, - :guide, :guide_position, - :lims, :ticks, :scale, :flip, :rotation, - :tickfont, :guidefont, - :legendfont, :grid, :legend, + :title, + :window_title, + :guide, + :guide_position, + :lims, + :ticks, + :scale, + :flip, + :rotation, + :tickfont, + :guidefont, + :legendfont, + :grid, + :legend, # :colorbar, :colorbar_title, # :fill_z, :line_z, :marker_z, :levels, # :ribbon, @@ -623,7 +860,7 @@ const _gaston_attr = merge_with_base_supported([ # :framestyle, # :camera, # :contour_labels, - ]) +]) const _gaston_seriestype = [ :path, @@ -632,7 +869,8 @@ const _gaston_seriestype = [ :steppre, :stepmid, :steppost, - :ysticks, :xsticks, + :ysticks, + :xsticks, :contour, :shape, :straightline, @@ -645,14 +883,7 @@ const _gaston_seriestype = [ :image, ] -const _gaston_style = [ - :auto, - :solid, - :dash, - :dot, - :dashdot, - :dashdotdot -] +const _gaston_style = [:auto, :solid, :dash, :dot, :dashdot, :dashdotdot] const _gaston_marker = [ :none, @@ -687,14 +918,17 @@ const _unicodeplots_attr = merge_with_base_supported([ :markershape, :bins, :title, - :guide, :lims, - ]) + :guide, + :lims, +]) const _unicodeplots_seriestype = [ - :path, :scatter, :straightline, + :path, + :scatter, + :straightline, # :bar, :shape, :histogram2d, - :spy + :spy, ] const _unicodeplots_style = [:auto, :solid] const _unicodeplots_marker = [:none, :auto, :circle] @@ -708,33 +942,70 @@ const _canvas_type = Ref(:auto) const _hdf5_attr = merge_with_base_supported([ :annotations, - :background_color_legend, :background_color_inside, :background_color_outside, - :foreground_color_grid, :foreground_color_legend, :foreground_color_title, - :foreground_color_axis, :foreground_color_border, :foreground_color_guide, :foreground_color_text, + :background_color_legend, + :background_color_inside, + :background_color_outside, + :foreground_color_grid, + :foreground_color_legend, + :foreground_color_title, + :foreground_color_axis, + :foreground_color_border, + :foreground_color_guide, + :foreground_color_text, :label, - :linecolor, :linestyle, :linewidth, :linealpha, - :markershape, :markercolor, :markersize, :markeralpha, - :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, - :fillrange, :fillcolor, :fillalpha, - :bins, :bar_width, :bar_edges, :bar_position, - :title, :titlelocation, :titlefont, + :linecolor, + :linestyle, + :linewidth, + :linealpha, + :markershape, + :markercolor, + :markersize, + :markeralpha, + :markerstrokewidth, + :markerstrokecolor, + :markerstrokealpha, + :fillrange, + :fillcolor, + :fillalpha, + :bins, + :bar_width, + :bar_edges, + :bar_position, + :title, + :titlelocation, + :titlefont, :window_title, - :guide, :lims, :ticks, :scale, :flip, :rotation, - :tickfont, :guidefont, :legendfont, - :grid, :legend, :colorbar, - :marker_z, :line_z, :fill_z, + :guide, + :lims, + :ticks, + :scale, + :flip, + :rotation, + :tickfont, + :guidefont, + :legendfont, + :grid, + :legend, + :colorbar, + :marker_z, + :line_z, + :fill_z, :levels, - :ribbon, :quiver, :arrow, + :ribbon, + :quiver, + :arrow, :orientation, :overwrite_figure, :polar, - :normalize, :weights, - :contours, :aspect_ratio, + :normalize, + :weights, + :contours, + :aspect_ratio, :clims, :inset_subplots, :dpi, :colorbar_title, - ]) +]) const _hdf5_seriestype = [ :path, :steppre, @@ -759,68 +1030,115 @@ const _hdf5_scale = [:identity, :ln, :log2, :log10] # Additional constants #Dict has problems using "Types" as keys. Initialize in "_initialize_backend": -const HDF5PLOT_MAP_STR2TELEM = Dict{String, Type}() -const HDF5PLOT_MAP_TELEM2STR = Dict{Type, String}() +const HDF5PLOT_MAP_STR2TELEM = Dict{String,Type}() +const HDF5PLOT_MAP_TELEM2STR = Dict{Type,String}() #Don't really like this global variable... Very hacky mutable struct HDF5Plot_PlotRef - ref::Union{Plot, Nothing} + ref::Union{Plot,Nothing} end const HDF5PLOT_PLOTREF = HDF5Plot_PlotRef(nothing) - # ------------------------------------------------------------------------------ # inspectdr const _inspectdr_attr = merge_with_base_supported([ :annotations, - :background_color_legend, :background_color_inside, :background_color_outside, + :background_color_legend, + :background_color_inside, + :background_color_outside, # :foreground_color_grid, - :foreground_color_legend, :foreground_color_title, - :foreground_color_axis, :foreground_color_border, :foreground_color_guide, :foreground_color_text, + :foreground_color_legend, + :foreground_color_title, + :foreground_color_axis, + :foreground_color_border, + :foreground_color_guide, + :foreground_color_text, :label, - :seriescolor, :seriesalpha, - :linecolor, :linestyle, :linewidth, :linealpha, - :markershape, :markercolor, :markersize, :markeralpha, - :markerstrokewidth, :markerstrokecolor, :markerstrokealpha, + :seriescolor, + :seriesalpha, + :linecolor, + :linestyle, + :linewidth, + :linealpha, + :markershape, + :markercolor, + :markersize, + :markeralpha, + :markerstrokewidth, + :markerstrokecolor, + :markerstrokealpha, :markerstrokestyle, #Causes warning not to have it... what is this? - :fillcolor, :fillalpha, #:fillrange, -# :bins, :bar_width, :bar_edges, :bar_position, - :title, :titlelocation, + :fillcolor, + :fillalpha, #:fillrange, + # :bins, :bar_width, :bar_edges, :bar_position, + :title, + :titlelocation, :window_title, - :guide, :lims, :scale, #:ticks, :flip, :rotation, - :titlefontfamily, :titlefontsize, :titlefontcolor, - :legendfontfamily, :legendfontsize, :legendfontcolor, - :tickfontfamily, :tickfontsize, :tickfontcolor, - :guidefontfamily, :guidefontsize, :guidefontcolor, - :grid, :legend, #:colorbar, -# :marker_z, -# :line_z, -# :levels, - # :ribbon, :quiver, :arrow, -# :orientation, + :guide, + :lims, + :scale, #:ticks, :flip, :rotation, + :titlefontfamily, + :titlefontsize, + :titlefontcolor, + :legendfontfamily, + :legendfontsize, + :legendfontcolor, + :tickfontfamily, + :tickfontsize, + :tickfontcolor, + :guidefontfamily, + :guidefontsize, + :guidefontcolor, + :grid, + :legend, #:colorbar, + # :marker_z, + # :line_z, + # :levels, + # :ribbon, :quiver, :arrow, + # :orientation, :overwrite_figure, :polar, -# :normalize, :weights, -# :contours, :aspect_ratio, -# :clims, -# :inset_subplots, + # :normalize, :weights, + # :contours, :aspect_ratio, + # :clims, + # :inset_subplots, :dpi, -# :colorbar_title, - ]) + # :colorbar_title, +]) const _inspectdr_style = [:auto, :solid, :dash, :dot, :dashdot] const _inspectdr_seriestype = [ - :path, :scatter, :shape, :straightline, #, :steppre, :stepmid, :steppost - ] + :path, + :scatter, + :shape, + :straightline, #, :steppre, :stepmid, :steppost +] #see: _allMarkers, _shape_keys const _inspectdr_marker = Symbol[ - :none, :auto, - :circle, :rect, :diamond, - :cross, :xcross, - :utriangle, :dtriangle, :rtriangle, :ltriangle, - :pentagon, :hexagon, :heptagon, :octagon, - :star4, :star5, :star6, :star7, :star8, - :vline, :hline, :+, :x, + :none, + :auto, + :circle, + :rect, + :diamond, + :cross, + :xcross, + :utriangle, + :dtriangle, + :rtriangle, + :ltriangle, + :pentagon, + :hexagon, + :heptagon, + :octagon, + :star4, + :star5, + :star6, + :star7, + :star8, + :vline, + :hline, + :+, + :x, ] const _inspectdr_scale = [:identity, :ln, :log2, :log10] diff --git a/src/backends/deprecated/pgfplots.jl b/src/backends/deprecated/pgfplots.jl index 718d8241..4c9f1ea3 100644 --- a/src/backends/deprecated/pgfplots.jl +++ b/src/backends/deprecated/pgfplots.jl @@ -27,7 +27,7 @@ const _pgfplots_markers = KW( :diamond => "diamond*", :pentagon => "pentagon*", :hline => "-", - :vline => "|" + :vline => "|", ) const _pgfplots_legend_pos = KW( @@ -38,7 +38,6 @@ const _pgfplots_legend_pos = KW( :outertopright => "outer north east", ) - const _pgf_series_extrastyle = KW( :steppre => "const plot mark right", :stepmid => "const plot mark mid", @@ -50,11 +49,7 @@ const _pgf_series_extrastyle = KW( # PGFPlots uses the anchors to define orientations for example to align left # one needs to use the right edge as anchor -const _pgf_annotation_halign = KW( - :center => "", - :left => "right", - :right => "left" -) +const _pgf_annotation_halign = KW(:center => "", :left => "right", :right => "left") const _pgf_framestyles = [:box, :axes, :origin, :zerolines, :grid, :none] const _pgf_framestyle_defaults = Dict(:semi => :box) @@ -63,7 +58,9 @@ function pgf_framestyle(style::Symbol) return style else default_style = get(_pgf_framestyle_defaults, style, :axes) - @warn("Framestyle :$style is not (yet) supported by the PGFPlots backend. :$default_style was cosen instead.") + @warn( + "Framestyle :$style is not (yet) supported by the PGFPlots backend. :$default_style was cosen instead." + ) default_style end end @@ -78,15 +75,15 @@ end function pgf_color(grad::ColorGradient) # Can't handle ColorGradient here, fallback to defaults. - cstr = @sprintf("{rgb,1:red,%.8f;green,%.8f;blue,%.8f}", 0.0, 0.60560316,0.97868012) + cstr = @sprintf("{rgb,1:red,%.8f;green,%.8f;blue,%.8f}", 0.0, 0.60560316, 0.97868012) cstr, 1 end # Generates a colormap for pgfplots based on a ColorGradient function pgf_colormap(grad::ColorGradient) join(map(grad.colors) do c - @sprintf("rgb=(%.8f,%.8f,%.8f)", red(c), green(c),blue(c)) - end,", ") + @sprintf("rgb=(%.8f,%.8f,%.8f)", red(c), green(c), blue(c)) + end, ", ") end pgf_thickness_scaling(plt::Plot) = plt[:thickness_scaling] @@ -94,7 +91,7 @@ pgf_thickness_scaling(sp::Subplot) = pgf_thickness_scaling(sp.plt) pgf_thickness_scaling(series) = pgf_thickness_scaling(series[:subplot]) function pgf_fillstyle(plotattributes, i = 1) - cstr,a = pgf_color(get_fillcolor(plotattributes, i)) + cstr, a = pgf_color(get_fillcolor(plotattributes, i)) fa = get_fillalpha(plotattributes, i) if fa !== nothing a = fa @@ -126,8 +123,15 @@ end function pgf_marker(plotattributes, i = 1) shape = _cycle(plotattributes[:markershape], i) - cstr, a = pgf_color(plot_color(get_markercolor(plotattributes, i), get_markeralpha(plotattributes, i))) - cstr_stroke, a_stroke = pgf_color(plot_color(get_markerstrokecolor(plotattributes, i), get_markerstrokealpha(plotattributes, i))) + cstr, a = pgf_color( + plot_color(get_markercolor(plotattributes, i), get_markeralpha(plotattributes, i)), + ) + cstr_stroke, a_stroke = pgf_color( + plot_color( + get_markerstrokecolor(plotattributes, i), + get_markerstrokealpha(plotattributes, i), + ), + ) return string( "mark = $(get(_pgfplots_markers, shape, "*")),\n", "mark size = $(pgf_thickness_scaling(plotattributes) * 0.5 * _cycle(plotattributes[:markersize], i)),\n", @@ -138,22 +142,28 @@ function pgf_marker(plotattributes, i = 1) line width = $(pgf_thickness_scaling(plotattributes) * _cycle(plotattributes[:markerstrokewidth], i)), rotate = $(shape == :dtriangle ? 180 : 0), $(get(_pgfplots_linestyles, _cycle(plotattributes[:markerstrokestyle], i), "solid")) - }" - ) + }", + ) end function pgf_add_annotation!(o, x, y, val, thickness_scaling = 1) # Construct the style string. # Currently supports color and orientation - cstr,a = pgf_color(val.font.color) - push!(o, PGFPlots.Plots.Node(val.str, # Annotation Text - x, y, - style=""" - $(get(_pgf_annotation_halign,val.font.halign,"")), - color=$cstr, draw opacity=$(convert(Float16,a)), - rotate=$(val.font.rotation), - font=$(pgf_font(val.font.pointsize, thickness_scaling)) - """)) + cstr, a = pgf_color(val.font.color) + push!( + o, + PGFPlots.Plots.Node( + val.str, # Annotation Text + x, + y, + style = """ + $(get(_pgf_annotation_halign,val.font.halign,"")), + color=$cstr, draw opacity=$(convert(Float16,a)), + rotate=$(val.font.rotation), + font=$(pgf_font(val.font.pointsize, thickness_scaling)) + """, + ), + ) end # -------------------------------------------------------------------------------------- @@ -241,7 +251,15 @@ function pgf_series(sp::Subplot, series::Series) # add fillrange if series[:fillrange] !== nothing && st != :shape - push!(series_collection, pgf_fillrange_series(series, i, _cycle(series[:fillrange], rng), seg_args...)) + push!( + series_collection, + pgf_fillrange_series( + series, + i, + _cycle(series[:fillrange], rng), + seg_args..., + ), + ) end # build/return the series object @@ -313,7 +331,7 @@ end # ---------------------------------------------------------------- function pgf_axis(sp::Subplot, letter) - axis = sp[Symbol(letter,:axis)] + axis = sp[Symbol(letter, :axis)] style = [] kw = KW() @@ -324,7 +342,7 @@ function pgf_axis(sp::Subplot, letter) framestyle = pgf_framestyle(sp[:framestyle]) # axis guide - kw[Symbol(letter,:label)] = axis[:guide] + kw[Symbol(letter, :label)] = axis[:guide] # axis label position labelpos = "" @@ -336,7 +354,23 @@ function pgf_axis(sp::Subplot, letter) # Add label font cstr, α = pgf_color(plot_color(axis[:guidefontcolor])) - push!(style, string(letter, "label style = {", labelpos ,"font = ", pgf_font(axis[:guidefontsize], pgf_thickness_scaling(sp)), ", color = ", cstr, ", draw opacity = ", α, ", rotate = ", axis[:guidefontrotation], "}")) + push!( + style, + string( + letter, + "label style = {", + labelpos, + "font = ", + pgf_font(axis[:guidefontsize], pgf_thickness_scaling(sp)), + ", color = ", + cstr, + ", draw opacity = ", + α, + ", rotate = ", + axis[:guidefontrotation], + "}", + ), + ) # flip/reverse? axis[:flip] && push!(style, "$letter dir=reverse") @@ -344,7 +378,7 @@ function pgf_axis(sp::Subplot, letter) # scale scale = axis[:scale] if scale in (:log2, :ln, :log10) - kw[Symbol(letter,:mode)] = "log" + kw[Symbol(letter, :mode)] = "log" scale == :ln || push!(style, "log basis $letter=$(scale == :log2 ? 2 : 10)") end @@ -363,16 +397,20 @@ function pgf_axis(sp::Subplot, letter) # limits # TODO: support zlims if letter != :z - lims = ispolar(sp) && letter == :x ? rad2deg.(axis_limits(sp, :x)) : axis_limits(sp, letter) - kw[Symbol(letter,:min)] = lims[1] - kw[Symbol(letter,:max)] = lims[2] + lims = + ispolar(sp) && letter == :x ? rad2deg.(axis_limits(sp, :x)) : + axis_limits(sp, letter) + kw[Symbol(letter, :min)] = lims[1] + kw[Symbol(letter, :max)] = lims[2] end if !(axis[:ticks] in (nothing, false, :none, :native)) && framestyle != :none ticks = get_ticks(sp, axis) #pgf plot ignores ticks with angle below 90 when xmin = 90 so shift values - tick_values = ispolar(sp) && letter == :x ? [rad2deg.(ticks[1])[3:end]..., 360, 405] : ticks[1] - push!(style, string(letter, "tick = {", join(tick_values,","), "}")) + tick_values = + ispolar(sp) && letter == :x ? [rad2deg.(ticks[1])[3:end]..., 360, 405] : + ticks[1] + push!(style, string(letter, "tick = {", join(tick_values, ","), "}")) if axis[:showaxis] && axis[:scale] in (:ln, :log2, :log10) && axis[:ticks] == :auto # wrap the power part of label with } tick_labels = Vector{String}(undef, length(ticks[2])) @@ -381,21 +419,59 @@ function pgf_axis(sp::Subplot, letter) power = string("{", power, "}") tick_labels[i] = string(base, "^", power) end - push!(style, string(letter, "ticklabels = {\$", join(tick_labels,"\$,\$"), "\$}")) + push!( + style, + string(letter, "ticklabels = {\$", join(tick_labels, "\$,\$"), "\$}"), + ) elseif axis[:showaxis] - tick_labels = ispolar(sp) && letter == :x ? [ticks[2][3:end]..., "0", "45"] : ticks[2] + tick_labels = + ispolar(sp) && letter == :x ? [ticks[2][3:end]..., "0", "45"] : ticks[2] if axis[:formatter] in (:scientific, :auto) tick_labels = string.("\$", convert_sci_unicode.(tick_labels), "\$") tick_labels = replace.(tick_labels, Ref("×" => "\\times")) end - push!(style, string(letter, "ticklabels = {", join(tick_labels,","), "}")) + push!(style, string(letter, "ticklabels = {", join(tick_labels, ","), "}")) else push!(style, string(letter, "ticklabels = {}")) end - push!(style, string(letter, "tick align = ", (axis[:tick_direction] == :out ? "outside" : "inside"))) + push!( + style, + string( + letter, + "tick align = ", + (axis[:tick_direction] == :out ? "outside" : "inside"), + ), + ) cstr, α = pgf_color(plot_color(axis[:tickfontcolor])) - push!(style, string(letter, "ticklabel style = {font = ", pgf_font(axis[:tickfontsize], pgf_thickness_scaling(sp)), ", color = ", cstr, ", draw opacity = ", α, ", rotate = ", axis[:tickfontrotation], "}")) - push!(style, string(letter, " grid style = {", pgf_linestyle(pgf_thickness_scaling(sp) * axis[:gridlinewidth], axis[:foreground_color_grid], axis[:gridalpha], axis[:gridstyle]), "}")) + push!( + style, + string( + letter, + "ticklabel style = {font = ", + pgf_font(axis[:tickfontsize], pgf_thickness_scaling(sp)), + ", color = ", + cstr, + ", draw opacity = ", + α, + ", rotate = ", + axis[:tickfontrotation], + "}", + ), + ) + push!( + style, + string( + letter, + " grid style = {", + pgf_linestyle( + pgf_thickness_scaling(sp) * axis[:gridlinewidth], + axis[:foreground_color_grid], + axis[:gridalpha], + axis[:gridstyle], + ), + "}", + ), + ) end # framestyle @@ -412,7 +488,20 @@ function pgf_axis(sp::Subplot, letter) if framestyle == :zerolines push!(style, string("extra ", letter, " ticks = 0")) push!(style, string("extra ", letter, " tick labels = ")) - push!(style, string("extra ", letter, " tick style = {grid = major, major grid style = {", pgf_linestyle(pgf_thickness_scaling(sp), axis[:foreground_color_border], 1.0), "}}")) + push!( + style, + string( + "extra ", + letter, + " tick style = {grid = major, major grid style = {", + pgf_linestyle( + pgf_thickness_scaling(sp), + axis[:foreground_color_border], + 1.0, + ), + "}}", + ), + ) end if !axis[:showaxis] @@ -421,7 +510,19 @@ function pgf_axis(sp::Subplot, letter) if !axis[:showaxis] || framestyle in (:zerolines, :grid, :none) push!(style, string(letter, " axis line style = {draw opacity = 0}")) else - push!(style, string(letter, " axis line style = {", pgf_linestyle(pgf_thickness_scaling(sp), axis[:foreground_color_border], 1.0), "}")) + push!( + style, + string( + letter, + " axis line style = {", + pgf_linestyle( + pgf_thickness_scaling(sp), + axis[:foreground_color_border], + 1.0, + ), + "}", + ), + ) end # return the style list and KW args @@ -430,7 +531,6 @@ end # ---------------------------------------------------------------- - function _update_plot_object(plt::Plot{PGFPlotsBackend}) plt.o = PGFPlots.Axis[] # Obtain the total height of the plot by extracting the maximal bottom @@ -438,7 +538,7 @@ function _update_plot_object(plt::Plot{PGFPlotsBackend}) total_height = bottom(bbox(plt.layout)) for sp in plt.subplots - # first build the PGFPlots.Axis object + # first build the PGFPlots.Axis object style = ["unbounded coords=jump"] kw = KW() @@ -456,18 +556,34 @@ function _update_plot_object(plt::Plot{PGFPlotsBackend}) # A round on 2 decimal places should be enough precision for 300 dpi # plots. bb = bbox(sp) - push!(style, """ - xshift = $(left(bb).value)mm, - yshift = $(round((total_height - (bottom(bb))).value, digits=2))mm, - axis background/.style={fill=$(pgf_color(sp[:background_color_inside])[1])} - """) + push!( + style, + """ + xshift = $(left(bb).value)mm, + yshift = $(round((total_height - (bottom(bb))).value, digits=2))mm, + axis background/.style={fill=$(pgf_color(sp[:background_color_inside])[1])} +""", + ) kw[:width] = "$(width(bb).value)mm" kw[:height] = "$(height(bb).value)mm" if sp[:title] != "" kw[:title] = "$(sp[:title])" cstr, α = pgf_color(plot_color(sp[:titlefontcolor])) - push!(style, string("title style = {font = ", pgf_font(sp[:titlefontsize], pgf_thickness_scaling(sp)), ", color = ", cstr, ", draw opacity = ", α, ", rotate = ", sp[:titlefontrotation], "}")) + push!( + style, + string( + "title style = {font = ", + pgf_font(sp[:titlefontsize], pgf_thickness_scaling(sp)), + ", color = ", + cstr, + ", draw opacity = ", + α, + ", rotate = ", + sp[:titlefontrotation], + "}", + ), + ) end if get_aspect_ratio(sp) in (1, :equal) @@ -481,15 +597,25 @@ function _update_plot_object(plt::Plot{PGFPlotsBackend}) cstr, bg_alpha = pgf_color(plot_color(sp[:background_color_legend])) fg_alpha = alpha(plot_color(sp[:foreground_color_legend])) - push!(style, string( - "legend style = {", - pgf_linestyle(pgf_thickness_scaling(sp), sp[:foreground_color_legend], fg_alpha, "solid", ), ",", + push!( + style, + string( + "legend style = {", + pgf_linestyle( + pgf_thickness_scaling(sp), + sp[:foreground_color_legend], + fg_alpha, + "solid", + ), + ",", "fill = $cstr,", "fill opacity = $bg_alpha,", "text opacity = $(alpha(plot_color(sp[:legendfontcolor]))),", - "font = ", pgf_font(sp[:legendfontsize], pgf_thickness_scaling(sp)), - "}", - )) + "font = ", + pgf_font(sp[:legendfontsize], pgf_thickness_scaling(sp)), + "}", + ), + ) if any(s[:seriestype] == :contour for s in series_list(sp)) kw[:view] = "{0}{90}" @@ -520,7 +646,10 @@ function _update_plot_object(plt::Plot{PGFPlotsBackend}) for series in series_list(sp) for col in (:markercolor, :fillcolor, :linecolor) if typeof(series.plotattributes[col]) == ColorGradient - push!(style,"colormap={plots}{$(pgf_colormap(series.plotattributes[col]))}") + push!( + style, + "colormap={plots}{$(pgf_colormap(series.plotattributes[col]))}", + ) if sp[:colorbar] == :none kw[:colorbar] = "false" @@ -543,17 +672,26 @@ function _update_plot_object(plt::Plot{PGFPlotsBackend}) # add series annotations anns = series[:series_annotations] - for (xi,yi,str,fnt) in EachAnn(anns, series[:x], series[:y]) - pgf_add_annotation!(o, xi, yi, PlotText(str, fnt), pgf_thickness_scaling(series)) + for (xi, yi, str, fnt) in EachAnn(anns, series[:x], series[:y]) + pgf_add_annotation!( + o, + xi, + yi, + PlotText(str, fnt), + pgf_thickness_scaling(series), + ) end end # add the annotations for ann in sp[:annotations] - pgf_add_annotation!(o, locate_annotation(sp, ann...)..., pgf_thickness_scaling(sp)) + pgf_add_annotation!( + o, + locate_annotation(sp, ann...)..., + pgf_thickness_scaling(sp), + ) end - # add the PGFPlots.Axis to the list push!(plt.o, o) end @@ -568,7 +706,7 @@ function _show(io::IO, mime::MIME"application/pdf", plt::Plot{PGFPlotsBackend}) pgfplt = PGFPlots.plot(plt.o) # save a pdf - fn = tempname()*".pdf" + fn = tempname() * ".pdf" PGFPlots.save(PGFPlots.PDF(fn), pgfplt) # read it into io @@ -579,8 +717,12 @@ function _show(io::IO, mime::MIME"application/pdf", plt::Plot{PGFPlotsBackend}) end function _show(io::IO, mime::MIME"application/x-tex", plt::Plot{PGFPlotsBackend}) - fn = tempname()*".tex" - PGFPlots.save(fn, backend_object(plt), include_preamble=plt.attr[:tex_output_standalone]) + fn = tempname() * ".tex" + PGFPlots.save( + fn, + backend_object(plt), + include_preamble = plt.attr[:tex_output_standalone], + ) write(io, read(open(fn), String)) end diff --git a/src/backends/gaston.jl b/src/backends/gaston.jl index 5c6ddc0f..223ce4b7 100644 --- a/src/backends/gaston.jl +++ b/src/backends/gaston.jl @@ -31,11 +31,11 @@ function _before_layout_calcs(plt::Plot{GastonBackend}) plt.o.layout = gaston_init_subplots(plt, sps) # Then add the series (curves in gaston) - for series ∈ plt.series_list + for series in plt.series_list gaston_add_series(plt, series) end - - for sp ∈ plt.subplots + + for sp in plt.subplots sp === nothing && continue for ann in sp[:annotations] x, y, val = locate_annotation(sp, ann...) @@ -57,7 +57,7 @@ function _update_plot_object(plt::Plot{GastonBackend}) nothing end -for (mime, term) ∈ ( +for (mime, term) in ( "application/eps" => "epscairo", "image/eps" => "epslatex", "application/pdf" => "pdfcairo", @@ -69,12 +69,19 @@ for (mime, term) ∈ ( "text/plain" => "dumb", ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{GastonBackend}) - term = String($term); tmpfile = "$(Gaston.tempname()).$term" + term = String($term) + tmpfile = "$(Gaston.tempname()).$term" - Gaston.save(term=term, output=tmpfile, handle=plt.o.handle, saveopts=gaston_saveopts(plt)) - while !isfile(tmpfile) end # avoid race condition with read in next line + Gaston.save( + term = term, + output = tmpfile, + handle = plt.o.handle, + saveopts = gaston_saveopts(plt), + ) + while !isfile(tmpfile) + end # avoid race condition with read in next line write(io, read(tmpfile)) - rm(tmpfile, force=true) + rm(tmpfile, force = true) nothing end end @@ -88,7 +95,16 @@ _display(plt::Plot{GastonBackend}) = display(plt.o) function gaston_saveopts(plt::Plot{GastonBackend}) saveopts = String["size $(join(plt.attr[:size], ","))"] - push!(saveopts, gaston_font(plottitlefont(plt), rot=false, align=false, color=false, scale=1)) + push!( + saveopts, + gaston_font( + plottitlefont(plt), + rot = false, + align = false, + color = false, + scale = 1, + ), + ) push!(saveopts, "background $(gaston_color(plt.attr[:background_color]))") @@ -97,14 +113,14 @@ function gaston_saveopts(plt::Plot{GastonBackend}) # Scale all plot elements to match Plots.jl DPI standard scaling = plt.attr[:dpi] / Plots.DPI push!(saveopts, "fontscale $scaling lw $scaling dl $scaling ps $scaling") - + return join(saveopts, " ") end function gaston_get_subplots(n, plt_subplots, layout) nr, nc = size(layout) sps = Array{Any}(nothing, nr, nc) - for r ∈ 1:nr, c ∈ 1:nc # NOTE: col major + for r in 1:nr, c in 1:nc # NOTE: col major l = layout[r, c] if l isa GridLayout n, sub = gaston_get_subplots(n, plt_subplots, l) @@ -118,7 +134,7 @@ end function gaston_init_subplots(plt, sps) sz = nr, nc = size(sps) - for c ∈ 1:nc, r ∈ 1:nr # NOTE: row major + for c in 1:nc, r in 1:nr # NOTE: row major sp = sps[r, c] if sp isa Subplot || sp === nothing gaston_init_subplot(plt, sp) @@ -130,20 +146,28 @@ function gaston_init_subplots(plt, sps) return sz end -function gaston_init_subplot(plt::Plot{GastonBackend}, sp::Union{Nothing,Subplot{GastonBackend}}) +function gaston_init_subplot( + plt::Plot{GastonBackend}, + sp::Union{Nothing,Subplot{GastonBackend}}, +) if sp === nothing push!(plt.o.subplots, sp) else - dims = RecipesPipeline.is3d(sp) || sp.attr[:projection] == "3d" || needs_any_3d_axes(sp) ? 3 : 2 + dims = + RecipesPipeline.is3d(sp) || + sp.attr[:projection] == "3d" || + needs_any_3d_axes(sp) ? 3 : 2 any_label = false - for series ∈ series_list(sp) + for series in series_list(sp) if dims == 2 && series[:seriestype] ∈ (:heatmap, :contour) dims = 3 # we need heatmap/contour to use splot, not plot end any_label |= should_add_to_legend(series) end sp.o = Gaston.Plot( - dims=dims, curves=[], axesconf=gaston_parse_axes_args(plt, sp, dims, any_label), + dims = dims, + curves = [], + axesconf = gaston_parse_axes_args(plt, sp, dims, any_label), ) push!(plt.o.subplots, sp.o) end @@ -153,7 +177,7 @@ end function gaston_multiplot_pos_size(layout, parent_xy_wh) nr, nc = size(layout) dat = Array{Any}(nothing, nr, nc) - for r ∈ 1:nr, c ∈ 1:nc + for r in 1:nr, c in 1:nc l = layout[r, c] # width and height (pct) are multiplicative (parent) w = layout.widths[c].value * parent_xy_wh[3] @@ -181,7 +205,7 @@ end function gaston_multiplot_pos_size!(dat) nr, nc = size(dat) - for r ∈ 1:nr, c ∈ 1:nc + for r in 1:nr, c in 1:nc xy_wh_sp = dat[r, c] if xy_wh_sp isa Array gaston_multiplot_pos_size!(xy_wh_sp) @@ -197,15 +221,16 @@ function gaston_multiplot_pos_size!(dat) end function gaston_add_series(plt::Plot{GastonBackend}, series::Series) - sp = series[:subplot]; gsp = sp.o + sp = series[:subplot] + gsp = sp.o x, y, z = series[:x], series[:y], series[:z] st = series[:seriestype] curves = [] if gsp.dims == 2 && z === nothing - for (n, seg) ∈ enumerate(series_segments(series, st; check=true)) + for (n, seg) in enumerate(series_segments(series, st; check = true)) i, rng = seg.attr_index, seg.range - for sc ∈ gaston_seriesconf!(sp, series, i, n == 1) + for sc in gaston_seriesconf!(sp, series, i, n == 1) push!(curves, Gaston.Curve(x[rng], y[rng], nothing, nothing, sc)) end end @@ -213,35 +238,41 @@ function gaston_add_series(plt::Plot{GastonBackend}, series::Series) if z isa Surface z = z.surf if st == :image - z = reverse(Float32.(Gray.(z)), dims=1) # flip y axis + z = reverse(Float32.(Gray.(z)), dims = 1) # flip y axis nr, nc = size(z) if (ly = length(y)) == 2 && ly != nr - y = collect(range(y[1], y[2], length=nr)) + y = collect(range(y[1], y[2], length = nr)) end if (lx = length(x)) == 2 && lx != nc - x = collect(range(x[1], x[2], length=nc)) + x = collect(range(x[1], x[2], length = nc)) end elseif st == :heatmap - length(x) == size(z, 2) + 1 && (x = @view x[1:end-1]) - length(y) == size(z, 1) + 1 && (y = @view y[1:end-1]) + length(x) == size(z, 2) + 1 && (x = @view x[1:(end - 1)]) + length(y) == size(z, 1) + 1 && (y = @view y[1:(end - 1)]) end end if st == :mesh3d x, y, z = mesh3d_triangles(x, y, z, series[:connections]) end - for sc ∈ gaston_seriesconf!(sp, series, 1, true) + for sc in gaston_seriesconf!(sp, series, 1, true) push!(curves, Gaston.Curve(x, y, z, nothing, sc)) end end - for c ∈ curves - append = length(gsp.curves) > 0; push!(gsp.curves, c) - Gaston.write_data(c, gsp.dims, gsp.datafile, append=append) + for c in curves + append = length(gsp.curves) > 0 + push!(gsp.curves, c) + Gaston.write_data(c, gsp.dims, gsp.datafile, append = append) end nothing end -function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, add_to_legend::Bool) +function gaston_seriesconf!( + sp::Subplot{GastonBackend}, + series::Series, + i::Int, + add_to_legend::Bool, +) #= gnuplot abbreviations (see gnuplot/src/set.c) --------------------------------------------- @@ -261,7 +292,9 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, tc: textcolor w: with =# - gsp = sp.o; st = series[:seriestype]; extra = [] + gsp = sp.o + st = series[:seriestype] + extra = [] add_to_legend &= should_add_to_legend(series) curveconf = String[add_to_legend ? "title '$(series[:label])'" : "notitle"] @@ -320,18 +353,24 @@ function gaston_seriesconf!(sp::Subplot{GastonBackend}, series::Series, i::Int, end function gaston_parse_axes_args( - plt::Plot{GastonBackend}, sp::Subplot{GastonBackend}, dims::Int, any_label::Bool + plt::Plot{GastonBackend}, + sp::Subplot{GastonBackend}, + dims::Int, + any_label::Bool, ) # axesconf = String["set margins 2, 2, 2, 2"] # left, right, bottom, top axesconf = String[] polar = ispolar(sp) && dims == 2 # cannot splot in polar coordinates - for letter ∈ (:x, :y, :z) + for letter in (:x, :y, :z) (letter == :z && dims == 2) && continue axis = sp.attr[Symbol(letter, :axis)] # label names - push!(axesconf, "set $(letter)label '$(axis[:guide])' $(gaston_font(guidefont(axis)))") + push!( + axesconf, + "set $(letter)label '$(axis[:guide])' $(gaston_font(guidefont(axis)))", + ) mirror = axis[:mirror] ? "mirror" : "nomirror" if axis[:scale] == :identity @@ -349,7 +388,10 @@ function gaston_parse_axes_args( if polar push!(axesconf, "set size square\nunset $(letter)tics") else - push!(axesconf, "set $(letter)tics $(mirror) $(axis[:tick_direction]) $(gaston_font(tickfont(axis)))") + push!( + axesconf, + "set $(letter)tics $(mirror) $(axis[:tick_direction]) $(gaston_font(tickfont(axis)))", + ) # major tick locations if axis[:ticks] != :native @@ -372,7 +414,8 @@ function gaston_parse_axes_args( if axis[:grid] push!(axesconf, "set grid " * (polar ? "polar" : "$(letter)tics")) - axis[:minorgrid] && push!(axesconf, "set grid " * (polar ? "polar" : "m$(letter)tics")) + axis[:minorgrid] && + push!(axesconf, "set grid " * (polar ? "polar" : "m$(letter)tics")) end ratio = get_aspect_ratio(sp) @@ -399,12 +442,20 @@ function gaston_parse_axes_args( if (ttype = ticksType(rticks)) == :ticks gaston_ticks = string.(rticks) elseif ttype == :ticks_and_labels - gaston_ticks = String["'$l' $t" for (t, l) ∈ zip(rticks...)] + gaston_ticks = String["'$l' $t" for (t, l) in zip(rticks...)] end - push!(axesconf, "set rtics ( " * join(gaston_ticks, ", ") * " ) $(gaston_font(tickfont(sp.attr[:yaxis])))") + push!( + axesconf, + "set rtics ( " * + join(gaston_ticks, ", ") * + " ) $(gaston_font(tickfont(sp.attr[:yaxis])))", + ) push!(axesconf, "set trange [$(min(0, tmin)):$(max(2π, tmax))]") push!(axesconf, "set rrange [$rmin:$rmax]") - push!(axesconf, "set ttics 0,30 format \"%g\".GPVAL_DEGREE_SIGN $(gaston_font(tickfont(sp.attr[:xaxis])))") + push!( + axesconf, + "set ttics 0,30 format \"%g\".GPVAL_DEGREE_SIGN $(gaston_font(tickfont(sp.attr[:xaxis])))", + ) push!(axesconf, "set mttics 3") end @@ -421,7 +472,7 @@ function gaston_set_ticks!(axesconf, ticks, letter, maj_min, add) gaston_ticks = String[] if (ttype = ticksType(ticks)) == :ticks tick_locs = @view ticks[:] - for i ∈ eachindex(tick_locs) + for i in eachindex(tick_locs) tick = if maj_min == "m" "'' $(tick_locs[i]) 1" # see gnuplot manual 'Mxtics' else @@ -432,7 +483,7 @@ function gaston_set_ticks!(axesconf, ticks, letter, maj_min, add) elseif ttype == :ticks_and_labels tick_locs = @view ticks[1][:] tick_labels = @view ticks[2][:] - for i ∈ eachindex(tick_locs) + for i in eachindex(tick_locs) lab = gaston_enclose_tick_string(tick_labels[i]) push!(gaston_ticks, "'$lab' $(tick_locs[i])") end @@ -451,8 +502,11 @@ function gaston_set_legend!(axesconf, sp, any_label) if sp[:legend] ∉ (:none, :inline) && any_label leg == :best && (leg = :topright) - push!(axesconf, "set key " * (occursin("outer", string(leg)) ? "outside" : "inside")) - for position ∈ ("top", "bottom", "left", "right") + push!( + axesconf, + "set key " * (occursin("outer", string(leg)) ? "outside" : "inside"), + ) + for position in ("top", "bottom", "left", "right") occursin(position, string(leg)) && push!(axesconf, "set key $position") end push!(axesconf, "set key $(gaston_font(legendfont(sp), rot=false, align=false))") @@ -472,8 +526,8 @@ end # Helpers # -------------------------------------------- -gaston_halign(k) = (left=:left, hcenter=:center, right=:right)[k] -gaston_valign(k) = (top=:top, vcenter=:center, bottom=:bottom)[k] +gaston_halign(k) = (left = :left, hcenter = :center, right = :right)[k] +gaston_valign(k) = (top = :top, vcenter = :center, bottom = :bottom)[k] gaston_alpha(alpha) = alpha === nothing ? 0 : alpha @@ -489,7 +543,7 @@ gaston_mk_ms_mc(series::Series, clims, i::Int) = ( gaston_color(get_markercolor(series, clims, i), get_markeralpha(series, i)), ) -function gaston_font(f; rot=true, align=true, color=true, scale=1) +function gaston_font(f; rot = true, align = true, color = true, scale = 1) font = String["font '$(f.family),$(round(Int, scale * f.pointsize))'"] align && push!(font, "$(gaston_halign(f.halign))") rot && push!(font, "rotate by $(f.rotation)") @@ -498,8 +552,9 @@ function gaston_font(f; rot=true, align=true, color=true, scale=1) end function gaston_palette(gradient) - palette = String[]; n = -1 - for rgba ∈ gradient # FIXME: naive conversion, inefficient ? + palette = String[] + n = -1 + for rgba in gradient # FIXME: naive conversion, inefficient ? push!(palette, "$(n += 1) $(rgba.r) $(rgba.g) $(rgba.b)") end return '(' * join(palette, ", ") * ')' @@ -524,7 +579,7 @@ function gaston_marker(marker, alpha) return 1 end -function gaston_color(col, alpha=0) +function gaston_color(col, alpha = 0) col = single_color(col) # in case of gradients col = alphacolor(col, gaston_alpha(alpha)) # add a default alpha if non existent return "rgb '#$(hex(col, :aarrggbb))'" diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 49dace78..8a9cc952 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -6,7 +6,6 @@ import GR export GR - # -------------------------------------------------------------------------------------- gr_linetype(k) = (auto = 1, solid = 1, dash = 2, dot = 3, dashdot = 4, dashdotdot = -1)[k] @@ -92,14 +91,16 @@ const gr_font_family = Dict( gr_color(c) = gr_color(c, color_type(c)) -gr_color(c, ::Type{<:AbstractRGB}) = UInt32( round(UInt, clamp(alpha(c) * 255, 0, 255)) << 24 + - round(UInt, clamp(blue(c) * 255, 0, 255)) << 16 + - round(UInt, clamp(green(c) * 255, 0, 255)) << 8 + - round(UInt, clamp(red(c) * 255, 0, 255)) ) +gr_color(c, ::Type{<:AbstractRGB}) = UInt32( + round(UInt, clamp(alpha(c) * 255, 0, 255)) << 24 + + round(UInt, clamp(blue(c) * 255, 0, 255)) << 16 + + round(UInt, clamp(green(c) * 255, 0, 255)) << 8 + + round(UInt, clamp(red(c) * 255, 0, 255)), +) function gr_color(c, ::Type{<:AbstractGray}) g = round(UInt, clamp(gray(c) * 255, 0, 255)) α = round(UInt, clamp(alpha(c) * 255, 0, 255)) - rgba = UInt32( α<<24 + g<<16 + g<<8 + g ) + rgba = UInt32(α << 24 + g << 16 + g << 8 + g) end gr_color(c, ::Type) = gr_color(RGBA(c), RGB) @@ -108,43 +109,44 @@ function gr_getcolorind(c) convert(Int, GR.inqcolorfromrgb(red(c), green(c), blue(c))) end -gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(_cycle(c,1))) -gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(_cycle(c,1))) -gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(_cycle(c,1))) -gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(_cycle(c,1))) -gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(_cycle(c,1))) +gr_set_linecolor(c) = GR.setlinecolorind(gr_getcolorind(_cycle(c, 1))) +gr_set_fillcolor(c) = GR.setfillcolorind(gr_getcolorind(_cycle(c, 1))) +gr_set_markercolor(c) = GR.setmarkercolorind(gr_getcolorind(_cycle(c, 1))) +gr_set_bordercolor(c) = GR.setbordercolorind(gr_getcolorind(_cycle(c, 1))) +gr_set_textcolor(c) = GR.settextcolorind(gr_getcolorind(_cycle(c, 1))) gr_set_transparency(α::Real) = GR.settransparency(clamp(α, 0, 1)) gr_set_transparency(::Nothing) = GR.settransparency(1) gr_set_transparency(c, α) = gr_set_transparency(α) gr_set_transparency(c::Colorant, ::Nothing) = gr_set_transparency(c) gr_set_transparency(c::Colorant) = GR.settransparency(alpha(c)) -gr_set_arrowstyle(s::Symbol) = GR.setarrowstyle(get( - ( - simple = 1, - hollow = 3, - filled = 4, - triangle = 5, - filledtriangle = 6, - closed = 6, - open = 5, +gr_set_arrowstyle(s::Symbol) = GR.setarrowstyle( + get( + ( + simple = 1, + hollow = 3, + filled = 4, + triangle = 5, + filledtriangle = 6, + closed = 6, + open = 5, + ), + s, + 1, ), - s, - 1, -)) +) # -------------------------------------------------------------------------------------- - # draw line segments, splitting x/y into contiguous/finite segments # note: this can be used for shapes by passing func `GR.fillarea` function gr_polyline(x, y, func = GR.polyline; arrowside = :none, arrowstyle = :simple) iend = 0 n = length(x) - while iend < n-1 + while iend < n - 1 # set istart to the first index that is finite istart = -1 - for j = iend+1:n + for j in (iend + 1):n if isfinite(x[j]) && isfinite(y[j]) istart = j break @@ -154,7 +156,7 @@ function gr_polyline(x, y, func = GR.polyline; arrowside = :none, arrowstyle = : if istart > 0 # iend is the last finite index iend = -1 - for j = istart+1:n + for j in (istart + 1):n if isfinite(x[j]) && isfinite(y[j]) iend = j else @@ -166,13 +168,13 @@ function gr_polyline(x, y, func = GR.polyline; arrowside = :none, arrowstyle = : # if we found a start and end, draw the line segment, otherwise we're done if istart > 0 && iend > 0 func(x[istart:iend], y[istart:iend]) - if arrowside in (:head,:both) + if arrowside in (:head, :both) gr_set_arrowstyle(arrowstyle) - GR.drawarrow(x[iend-1], y[iend-1], x[iend], y[iend]) + GR.drawarrow(x[iend - 1], y[iend - 1], x[iend], y[iend]) end - if arrowside in (:tail,:both) + if arrowside in (:tail, :both) gr_set_arrowstyle(arrowstyle) - GR.drawarrow(x[istart+1], y[istart+1], x[istart], y[istart]) + GR.drawarrow(x[istart + 1], y[istart + 1], x[istart], y[istart]) end else break @@ -183,10 +185,10 @@ end function gr_polyline3d(x, y, z, func = GR.polyline3d) iend = 0 n = length(x) - while iend < n-1 + while iend < n - 1 # set istart to the first index that is finite istart = -1 - for j = iend+1:n + for j in (iend + 1):n if isfinite(x[j]) && isfinite(y[j]) && isfinite(z[j]) istart = j break @@ -196,7 +198,7 @@ function gr_polyline3d(x, y, z, func = GR.polyline3d) if istart > 0 # iend is the last finite index iend = -1 - for j = istart+1:n + for j in (istart + 1):n if isfinite(x[j]) && isfinite(y[j]) && isfinite(z[j]) iend = j else @@ -218,7 +220,7 @@ gr_inqtext(x, y, s) = gr_inqtext(x, y, string(s)) function gr_inqtext(x, y, s::AbstractString) if length(s) >= 2 && s[1] == '$' && s[end] == '$' - GR.inqmathtex(x, y, s[2:end-1]) + GR.inqmathtex(x, y, s[2:(end - 1)]) elseif occursin('\\', s) || occursin("10^{", s) GR.inqtextext(x, y, s) else @@ -230,7 +232,7 @@ gr_text(x, y, s) = gr_text(x, y, string(s)) function gr_text(x, y, s::AbstractString) if length(s) >= 2 && s[1] == '$' && s[end] == '$' - GR.mathtex(x, y, s[2:end-1]) + GR.mathtex(x, y, s[2:(end - 1)]) elseif occursin('\\', s) || occursin("10^{", s) GR.textext(x, y, s) else @@ -252,7 +254,10 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) #draw angular grid if xaxis[:grid] gr_set_line( - xaxis[:gridlinewidth], xaxis[:gridstyle], xaxis[:foreground_color_grid], sp + xaxis[:gridlinewidth], + xaxis[:gridstyle], + xaxis[:foreground_color_grid], + sp, ) gr_set_transparency(xaxis[:foreground_color_grid], xaxis[:gridalpha]) for i in eachindex(α) @@ -263,7 +268,10 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) #draw radial grid if yaxis[:grid] gr_set_line( - yaxis[:gridlinewidth], yaxis[:gridstyle], yaxis[:foreground_color_grid], sp + yaxis[:gridlinewidth], + yaxis[:gridstyle], + yaxis[:foreground_color_grid], + sp, ) gr_set_transparency(yaxis[:foreground_color_grid], yaxis[:gridalpha]) for i in eachindex(rtick_values) @@ -285,7 +293,7 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) GR.drawarc(-1, 1, -1, 1, 0, 359) for i in eachindex(α) x, y = GR.wctondc(1.1 * sinf[i], 1.1 * cosf[i]) - GR.textext(x, y, string((360-α[i])%360, "^o")) + GR.textext(x, y, string((360 - α[i]) % 360, "^o")) end end @@ -302,14 +310,12 @@ function gr_polaraxes(rmin::Real, rmax::Real, sp::Subplot) GR.restorestate() end - # using the axis extrema and limit overrides, return the min/max value for this axis gr_x_axislims(sp::Subplot) = axis_limits(sp, :x) gr_y_axislims(sp::Subplot) = axis_limits(sp, :y) gr_z_axislims(sp::Subplot) = axis_limits(sp, :z) gr_xy_axislims(sp::Subplot) = gr_x_axislims(sp)..., gr_y_axislims(sp)... - function gr_fill_viewport(vp::AVec{Float64}, c) GR.savestate() GR.selntran(0) @@ -365,7 +371,6 @@ function gr_draw_marker(series, xi, yi, clims, i, msize, strokewidth, shape::Sym GR.polymarker([xi], [yi]) end - # --------------------------------------------------------- function gr_set_line(lw, style, c, s) # s can be Subplot or Series @@ -374,7 +379,6 @@ function gr_set_line(lw, style, c, s) # s can be Subplot or Series gr_set_linecolor(c) end - function gr_set_fill(c) #, a) gr_set_fillcolor(c) #, a) GR.setfillintstyle(GR.INTSTYLE_SOLID) @@ -385,15 +389,21 @@ end gr_point_mult(s) = 1.5 * get_thickness_scaling(s) * px / pt / maximum(get_size(s)) # set the font attributes. -function gr_set_font(f::Font, s; halign = f.halign, valign = f.valign, - color = f.color, rotation = f.rotation) +function gr_set_font( + f::Font, + s; + halign = f.halign, + valign = f.valign, + color = f.color, + rotation = f.rotation, +) family = lowercase(f.family) GR.setcharheight(gr_point_mult(s) * f.pointsize) GR.setcharup(sind(-rotation), cosd(-rotation)) if haskey(gr_font_family, family) GR.settextfontprec( gr_font_family[family], - gr_font_family[family] >= 200 ? 3 : GR.TEXT_PRECISION_STRING + gr_font_family[family] >= 200 ? 3 : GR.TEXT_PRECISION_STRING, ) end gr_set_textcolor(color) @@ -408,7 +418,13 @@ end # -------------------------------------------------------------------------------------- # viewport plot area -function gr_viewport_from_bbox(sp::Subplot{GRBackend}, bb::BoundingBox, w, h, viewport_canvas) +function gr_viewport_from_bbox( + sp::Subplot{GRBackend}, + bb::BoundingBox, + w, + h, + viewport_canvas, +) viewport = zeros(4) viewport[1] = viewport_canvas[2] * (left(bb) / w) viewport[2] = viewport_canvas[2] * (right(bb) / w) @@ -426,7 +442,7 @@ function gr_set_viewport_cmap(sp::Subplot, viewport_plotarea) viewport_plotarea[2] + (RecipesPipeline.is3d(sp) ? 0.07 : 0.02), viewport_plotarea[2] + (RecipesPipeline.is3d(sp) ? 0.10 : 0.05), viewport_plotarea[3], - viewport_plotarea[4] + viewport_plotarea[4], ) end @@ -436,7 +452,7 @@ function gr_set_viewport_polar(viewport_plotarea) xcenter = 0.5 * (xmin + xmax) ycenter = 0.5 * (ymin + ymax) r = 0.5 * NaNMath.min(xmax - xmin, ymax - ymin) - GR.setviewport(xcenter -r, xcenter + r, ycenter - r, ycenter + r) + GR.setviewport(xcenter - r, xcenter + r, ycenter - r, ycenter + r) GR.setwindow(-1, 1, -1, 1) r end @@ -445,16 +461,16 @@ struct GRColorbar gradients fills lines - GRColorbar() = new([],[],[]) + GRColorbar() = new([], [], []) end function gr_update_colorbar!(cbar::GRColorbar, series::Series) style = colorbar_style(series) style === nothing && return - list = style == cbar_gradient ? cbar.gradients : - style == cbar_fill ? cbar.fills : - style == cbar_lines ? cbar.lines : - error("Unknown colorbar style: $style.") + list = + style == cbar_gradient ? cbar.gradients : + style == cbar_fill ? cbar.fills : + style == cbar_lines ? cbar.lines : error("Unknown colorbar style: $style.") push!(list, series) end @@ -462,7 +478,7 @@ function gr_contour_levels(series::Series, clims) levels = contour_levels(series, clims) if isfilledcontour(series) # GR implicitly uses the maximal z value as the highest level - levels = levels[1:end-1] + levels = levels[1:(end - 1)] end levels end @@ -481,10 +497,9 @@ function gr_colorbar_colors(series::Series, clims) else colors = 1000:1255 end - round.(Int,colors) + round.(Int, colors) end - function _cbar_unique(values, propname) out = last(values) if any(x != out for x in values) @@ -504,7 +519,7 @@ function gr_draw_colorbar(cbar::GRColorbar, sp::Subplot, clims, viewport_plotare GR.setwindow(xmin, xmax, zmin, zmax) if !isempty(cbar.gradients) series = cbar.gradients - gr_set_gradient(_cbar_unique(get_colorgradient.(series),"color")) + gr_set_gradient(_cbar_unique(get_colorgradient.(series), "color")) gr_set_transparency(_cbar_unique(get_fillalpha.(series), "fill alpha")) GR.cellarray(xmin, xmax, zmax, zmin, 1, 256, 1000:1255) end @@ -520,18 +535,18 @@ function gr_draw_colorbar(cbar::GRColorbar, sp::Subplot, clims, viewport_plotare @warn "GR: highest contour level less than maximal z value is not supported." # replace levels, rather than assign to levels[end], to ensure type # promotion in case levels is an integer array - levels = [levels[1:end-1]; clims[2]] + levels = [levels[1:(end - 1)]; clims[2]] end colors = gr_colorbar_colors(last(series), clims) - for (from, to, color) in zip(levels[1:end-1], levels[2:end], colors) + for (from, to, color) in zip(levels[1:(end - 1)], levels[2:end], colors) GR.setfillcolorind(color) - GR.fillrect( xmin, xmax, from, to ) + GR.fillrect(xmin, xmax, from, to) end end if !isempty(cbar.lines) series = cbar.lines - gr_set_gradient(_cbar_unique(get_colorgradient.(series),"color")) + gr_set_gradient(_cbar_unique(get_colorgradient.(series), "color")) gr_set_line( _cbar_unique(get_linewidth.(series), "line width"), _cbar_unique(get_linestyle.(series), "line style"), @@ -543,7 +558,7 @@ function gr_draw_colorbar(cbar::GRColorbar, sp::Subplot, clims, viewport_plotare colors = gr_colorbar_colors(last(series), clims) for (line, color) in zip(levels, colors) GR.setlinecolorind(color) - GR.polyline([xmin,xmax], [line,line] ) + GR.polyline([xmin, xmax], [line, line]) end end @@ -559,9 +574,7 @@ function gr_draw_colorbar(cbar::GRColorbar, sp::Subplot, clims, viewport_plotare gr_set_font(title.font, sp) GR.settextalign(GR.TEXT_HALIGN_CENTER, GR.TEXT_VALIGN_TOP) GR.setcharup(-1, 0) - gr_text( - viewport_plotarea[2] + 0.1, gr_view_ycenter(viewport_plotarea), title.str - ) + gr_text(viewport_plotarea[2] + 0.1, gr_view_ycenter(viewport_plotarea), title.str) GR.restorestate() end @@ -569,8 +582,10 @@ end gr_view_xcenter(viewport_plotarea) = 0.5 * (viewport_plotarea[1] + viewport_plotarea[2]) gr_view_ycenter(viewport_plotarea) = 0.5 * (viewport_plotarea[3] + viewport_plotarea[4]) -gr_view_xposition(viewport_plotarea, position) = viewport_plotarea[1] + position * (viewport_plotarea[2] - viewport_plotarea[1]) -gr_view_yposition(viewport_plotarea, position) = viewport_plotarea[3] + position * (viewport_plotarea[4] - viewport_plotarea[3]) +gr_view_xposition(viewport_plotarea, position) = + viewport_plotarea[1] + position * (viewport_plotarea[2] - viewport_plotarea[1]) +gr_view_yposition(viewport_plotarea, position) = + viewport_plotarea[3] + position * (viewport_plotarea[4] - viewport_plotarea[3]) function position(symb) if symb == :top || symb == :right @@ -594,9 +609,9 @@ end function gr_set_gradient(c) grad = _as_gradient(c) - for (i,z) in enumerate(range(0, stop=1, length=256)) + for (i, z) in enumerate(range(0, stop = 1, length = 256)) c = grad[z] - GR.setcolorrep(999+i, red(c), green(c), blue(c)) + GR.setcolorrep(999 + i, red(c), green(c), blue(c)) end grad end @@ -607,18 +622,19 @@ function gr_set_gradient(series::Series) end # this is our new display func... set up the viewport_canvas, compute bounding boxes, and display each subplot -function gr_display(plt::Plot, fmt="") +function gr_display(plt::Plot, fmt = "") GR.clearws() dpi_factor = fmt == "png" ? plt[:dpi] / Plots.DPI : 1 # collect some monitor/display sizes in meters and pixels - display_width_meters, display_height_meters, display_width_px, display_height_px = GR.inqdspsize() + display_width_meters, display_height_meters, display_width_px, display_height_px = + GR.inqdspsize() display_width_ratio = display_width_meters / display_width_px display_height_ratio = display_height_meters / display_height_px # compute the viewport_canvas, normalized to the larger dimension - viewport_canvas = Float64[0,1,0,1] + viewport_canvas = Float64[0, 1, 0, 1] w, h = get_size(plt) if w > h ratio = float(h) / w @@ -641,7 +657,7 @@ function gr_display(plt::Plot, fmt="") # subplots: for sp in plt.subplots - gr_display(sp, w*px, h*px, viewport_canvas) + gr_display(sp, w * px, h * px, viewport_canvas) end GR.updatews() @@ -718,7 +734,10 @@ function gr_axis_height(sp, axis) GR.savestate() ticks = get_ticks(sp, axis, update = false) gr_set_font(tickfont(axis), sp) - h = (ticks in (nothing, false, :none) ? 0 : last(gr_get_ticks_size(ticks, axis[:rotation]))) + h = ( + ticks in (nothing, false, :none) ? 0 : + last(gr_get_ticks_size(ticks, axis[:rotation])) + ) if axis[:guide] != "" gr_set_font(guidefont(axis), sp) h += last(gr_text_size(axis[:guide])) @@ -731,7 +750,10 @@ function gr_axis_width(sp, axis) GR.savestate() ticks = get_ticks(sp, axis, update = false) gr_set_font(tickfont(axis), sp) - w = (ticks in (nothing, false, :none) ? 0 : first(gr_get_ticks_size(ticks, axis[:rotation]))) + w = ( + ticks in (nothing, false, :none) ? 0 : + first(gr_get_ticks_size(ticks, axis[:rotation])) + ) if axis[:guide] != "" gr_set_font(guidefont(axis), sp) w += last(gr_text_size(axis[:guide])) @@ -749,10 +771,10 @@ function _update_min_padding!(sp::Subplot{GRBackend}) end end # Add margin given by the user - leftpad = 2mm + sp[:left_margin] - toppad = 2mm + sp[:top_margin] - rightpad = 2mm + sp[:right_margin] - bottompad = 2mm + sp[:bottom_margin] + leftpad = 2mm + sp[:left_margin] + toppad = 2mm + sp[:top_margin] + rightpad = 2mm + sp[:right_margin] + bottompad = 2mm + sp[:bottom_margin] # Add margin for title if sp[:title] != "" gr_set_font(titlefont(sp), sp) @@ -763,12 +785,14 @@ function _update_min_padding!(sp::Subplot{GRBackend}) if RecipesPipeline.is3d(sp) xaxis, yaxis, zaxis = sp[:xaxis], sp[:yaxis], sp[:zaxis] - xticks, yticks, zticks = get_ticks(sp, xaxis), get_ticks(sp, yaxis), get_ticks(sp, zaxis) + xticks, yticks, zticks = + get_ticks(sp, xaxis), get_ticks(sp, yaxis), get_ticks(sp, zaxis) # Add margin for x and y ticks h = 0mm if !isempty(first(xticks)) gr_set_font( - tickfont(xaxis), sp, + tickfont(xaxis), + sp, halign = (:left, :hcenter, :right)[sign(xaxis[:rotation]) + 2], valign = (xaxis[:mirror] ? :bottom : :top), rotation = xaxis[:rotation], @@ -778,7 +802,8 @@ function _update_min_padding!(sp::Subplot{GRBackend}) end if !isempty(first(yticks)) gr_set_font( - tickfont(yaxis), sp, + tickfont(yaxis), + sp, halign = (:left, :hcenter, :right)[sign(yaxis[:rotation]) + 2], valign = (yaxis[:mirror] ? :bottom : :top), rotation = yaxis[:rotation], @@ -797,7 +822,8 @@ function _update_min_padding!(sp::Subplot{GRBackend}) if !isempty(first(zticks)) gr_set_font( - tickfont(zaxis), sp, + tickfont(zaxis), + sp, halign = (zaxis[:mirror] ? :left : :right), valign = (:top, :vcenter, :bottom)[sign(zaxis[:rotation]) + 2], rotation = zaxis[:rotation], @@ -825,7 +851,10 @@ function _update_min_padding!(sp::Subplot{GRBackend}) h = max(h, 1mm + get_size(sp)[2] * l * px) end if h > 0mm - if xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + if ( + xaxis[:guide_position] == :top || + (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + ) toppad += h else bottompad += h @@ -836,7 +865,10 @@ function _update_min_padding!(sp::Subplot{GRBackend}) gr_set_font(guidefont(sp[:zaxis]), sp) l = last(gr_text_size(sp[:zaxis][:guide])) w = 1mm + get_size(sp)[2] * l * px - if zaxis[:guide_position] == :right || (zaxis[:guide_position] == :auto && zaxis[:mirror] == true) + if ( + zaxis[:guide_position] == :right || + (zaxis[:guide_position] == :auto && zaxis[:mirror] == true) + ) rightpad += w else leftpad += w @@ -871,7 +903,10 @@ function _update_min_padding!(sp::Subplot{GRBackend}) gr_set_font(guidefont(sp[:xaxis]), sp) l = last(gr_text_size(sp[:xaxis][:guide])) h = 1mm + get_size(sp)[2] * l * px - if sp[:xaxis][:guide_position] == :top || (sp[:xaxis][:guide_position] == :auto && sp[:xaxis][:mirror] == true) + if ( + sp[:xaxis][:guide_position] == :top || + (sp[:xaxis][:guide_position] == :auto && sp[:xaxis][:mirror] == true) + ) toppad += h else bottompad += h @@ -882,7 +917,10 @@ function _update_min_padding!(sp::Subplot{GRBackend}) gr_set_font(guidefont(sp[:yaxis]), sp) l = last(gr_text_size(sp[:yaxis][:guide])) w = 1mm + get_size(sp)[2] * l * px - if sp[:yaxis][:guide_position] == :right || (sp[:yaxis][:guide_position] == :auto && sp[:yaxis][:mirror] == true) + if ( + sp[:yaxis][:guide_position] == :right || + (sp[:yaxis][:guide_position] == :auto && sp[:yaxis][:mirror] == true) + ) rightpad += w else leftpad += w @@ -896,7 +934,7 @@ function _update_min_padding!(sp::Subplot{GRBackend}) end function is_equally_spaced(v) - d = collect(v[2:end] .- v[1:end-1]) + d = collect(v[2:end] .- v[1:(end - 1)]) all(d .≈ d[1]) end @@ -975,7 +1013,6 @@ function gr_display(sp::Subplot{GRBackend}, w, h, viewport_canvas) end end - ## Legend function gr_add_legend(sp, leg, viewport_plotarea) @@ -989,13 +1026,17 @@ function gr_add_legend(sp, leg, viewport_plotarea) GR.setfillintstyle(GR.INTSTYLE_SOLID) gr_set_fillcolor(sp[:background_color_legend]) GR.fillrect( - xpos - leg.leftw, xpos + leg.textw + leg.rightw, - ypos + leg.dy, ypos - leg.h + xpos - leg.leftw, + xpos + leg.textw + leg.rightw, + ypos + leg.dy, + ypos - leg.h, ) # Allocating white space for actual legend width here gr_set_line(1, :solid, sp[:foreground_color_legend], sp) GR.drawrect( - xpos - leg.leftw, xpos + leg.textw + leg.rightw, - ypos + leg.dy, ypos - leg.h + xpos - leg.leftw, + xpos + leg.textw + leg.rightw, + ypos + leg.dy, + ypos - leg.h, ) # Drawing actual legend width here i = 0 if sp[:legendtitle] !== nothing @@ -1012,7 +1053,10 @@ function gr_add_legend(sp, leg, viewport_plotarea) lc = get_linecolor(series, clims) gr_set_line(sp[:legendfontsize] / 8, get_linestyle(series), lc, sp) - if (st == :shape || series[:fillrange] !== nothing) && series[:ribbon] === nothing + if ( + (st == :shape || series[:fillrange] !== nothing) && + series[:ribbon] === nothing + ) fc = get_fillcolor(series, clims) gr_set_fill(fc) #, series[:fillalpha]) l, r = xpos - leg.width_factor * 3.5, xpos - leg.width_factor / 2 @@ -1074,14 +1118,18 @@ function gr_legend_pos(sp::Subplot, leg, viewport_plotarea) end xaxis, yaxis = sp[:xaxis], sp[:yaxis] - xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) - ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) + xmirror = + xaxis[:guide_position] == :top || + (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + ymirror = + yaxis[:guide_position] == :right || + (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) axisclearance = [ - !ymirror*gr_axis_width(sp, sp[:yaxis]), - ymirror*gr_axis_width(sp,sp[:yaxis]), - !xmirror*gr_axis_height(sp,sp[:xaxis]), - xmirror*gr_axis_height(sp,sp[:xaxis]), - ] + !ymirror * gr_axis_width(sp, sp[:yaxis]), + ymirror * gr_axis_width(sp, sp[:yaxis]), + !xmirror * gr_axis_height(sp, sp[:xaxis]), + xmirror * gr_axis_height(sp, sp[:xaxis]), + ] return gr_legend_pos(s[1], leg, viewport_plotarea; axisclearance) end s isa Symbol || return gr_legend_pos(s, viewport_plotarea) @@ -1091,53 +1139,73 @@ function gr_legend_pos(sp::Subplot, leg, viewport_plotarea) end if occursin("outer", str) xaxis, yaxis = sp[:xaxis], sp[:yaxis] - xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) - ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) + xmirror = + xaxis[:guide_position] == :top || + (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + ymirror = + yaxis[:guide_position] == :right || + (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) end if occursin("right", str) if occursin("outer", str) # As per https://github.com/jheinen/GR.jl/blob/master/src/jlgr.jl#L525 - xpos = viewport_plotarea[2] + leg.xoffset + leg.leftw + ymirror * gr_axis_width(sp, sp[:yaxis]) + xpos = + viewport_plotarea[2] + + leg.xoffset + + leg.leftw + + ymirror * gr_axis_width(sp, sp[:yaxis]) else xpos = viewport_plotarea[2] - leg.rightw - leg.textw - leg.xoffset end elseif occursin("left", str) if occursin("outer", str) - xpos = viewport_plotarea[1] - !ymirror * gr_axis_width(sp, sp[:yaxis]) - leg.xoffset * 2 - leg.rightw - leg.textw + xpos = + viewport_plotarea[1] - !ymirror * gr_axis_width(sp, sp[:yaxis]) - + leg.xoffset * 2 - leg.rightw - leg.textw else xpos = viewport_plotarea[1] + leg.leftw + leg.xoffset end else - xpos = (viewport_plotarea[2] - viewport_plotarea[1]) / 2 + viewport_plotarea[1] + leg.leftw - leg.rightw - leg.textw - leg.xoffset * 2 + xpos = + (viewport_plotarea[2] - viewport_plotarea[1]) / 2 + + viewport_plotarea[1] + + leg.leftw - leg.rightw - leg.textw - leg.xoffset * 2 end if occursin("top", str) if s == :outertop - ypos = viewport_plotarea[4] + leg.yoffset + leg.h + xmirror * gr_axis_height(sp, sp[:xaxis]) + ypos = + viewport_plotarea[4] + + leg.yoffset + + leg.h + + xmirror * gr_axis_height(sp, sp[:xaxis]) else ypos = viewport_plotarea[4] - leg.yoffset - leg.dy end elseif occursin("bottom", str) if s == :outerbottom - ypos = viewport_plotarea[3] - leg.yoffset - leg.dy - !xmirror * gr_axis_height(sp, sp[:xaxis]) + ypos = + viewport_plotarea[3] - leg.yoffset - leg.dy - + !xmirror * gr_axis_height(sp, sp[:xaxis]) else ypos = viewport_plotarea[3] + leg.yoffset + leg.h end else # Adding min y to shift legend pos to correct graph (#2377) - ypos = (viewport_plotarea[4] - viewport_plotarea[3] + leg.h) / 2 + viewport_plotarea[3] + ypos = + (viewport_plotarea[4] - viewport_plotarea[3] + leg.h) / 2 + viewport_plotarea[3] end return xpos, ypos end -function gr_legend_pos(v::Tuple{S,T}, viewport_plotarea) where {S<:Real, T<:Real} +function gr_legend_pos(v::Tuple{S,T}, viewport_plotarea) where {S<:Real,T<:Real} xpos = v[1] * (viewport_plotarea[2] - viewport_plotarea[1]) + viewport_plotarea[1] ypos = v[2] * (viewport_plotarea[4] - viewport_plotarea[3]) + viewport_plotarea[3] - (xpos,ypos) + (xpos, ypos) end -function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance=nothing) - xcenter = +(viewport_plotarea[1:2]...)/2 - ycenter = +(viewport_plotarea[3:4]...)/2 +function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance = nothing) + xcenter = +(viewport_plotarea[1:2]...) / 2 + ycenter = +(viewport_plotarea[3:4]...) / 2 if isnothing(axisclearance) # Inner @@ -1148,12 +1216,13 @@ function gr_legend_pos(theta::Real, leg, viewport_plotarea; axisclearance=nothin ymax = viewport_plotarea[4] - leg.yoffset - leg.dy else # Outer - xmin = viewport_plotarea[1] - leg.xoffset - leg.rightw - leg.textw - axisclearance[1] + xmin = + viewport_plotarea[1] - leg.xoffset - leg.rightw - leg.textw - axisclearance[1] xmax = viewport_plotarea[2] + leg.xoffset + leg.leftw + axisclearance[2] ymin = viewport_plotarea[3] - leg.yoffset - leg.dy - axisclearance[3] ymax = viewport_plotarea[4] + leg.yoffset + leg.h + axisclearance[4] end - return legend_pos_from_angle(theta,xmin,xcenter,xmax,ymin,ycenter,ymax) + return legend_pos_from_angle(theta, xmin, xcenter, xmax, ymin, ycenter, ymax) end function gr_get_legend_geometry(viewport_plotarea, sp) @@ -1209,26 +1278,35 @@ function gr_get_legend_geometry(viewport_plotarea, sp) ) end - ## Viewport, window and scale function gr_update_viewport_legend!(viewport_plotarea, sp, leg) s = sp[:legend] xaxis, yaxis = sp[:xaxis], sp[:yaxis] - xmirror = xaxis[:guide_position] == :top || (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) - ymirror = yaxis[:guide_position] == :right || (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) + xmirror = + xaxis[:guide_position] == :top || + (xaxis[:guide_position] == :auto && xaxis[:mirror] == true) + ymirror = + yaxis[:guide_position] == :right || + (yaxis[:guide_position] == :auto && yaxis[:mirror] == true) if s isa Tuple{<:Real,Symbol} if s[2] === :outer - (x,y) = gr_legend_pos(sp, leg, viewport_plotarea) # Dry run, to figure out + (x, y) = gr_legend_pos(sp, leg, viewport_plotarea) # Dry run, to figure out if x < viewport_plotarea[1] - viewport_plotarea[1] += leg.leftw + leg.textw + leg.rightw + leg.xoffset + !ymirror * gr_axis_width(sp, sp[:yaxis]) + viewport_plotarea[1] += + leg.leftw + + leg.textw + + leg.rightw + + leg.xoffset + + !ymirror * gr_axis_width(sp, sp[:yaxis]) elseif x > viewport_plotarea[2] viewport_plotarea[2] -= leg.leftw + leg.textw + leg.rightw + leg.xoffset end if y < viewport_plotarea[3] - viewport_plotarea[3] += leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) + viewport_plotarea[3] += + leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) elseif y > viewport_plotarea[4] viewport_plotarea[4] -= leg.h + leg.dy + leg.yoffset end @@ -1239,11 +1317,17 @@ function gr_update_viewport_legend!(viewport_plotarea, sp, leg) if occursin("right", leg_str) viewport_plotarea[2] -= leg.leftw + leg.textw + leg.rightw + leg.xoffset elseif occursin("left", leg_str) - viewport_plotarea[1] += leg.leftw + leg.textw + leg.rightw + leg.xoffset + !ymirror * gr_axis_width(sp, sp[:yaxis]) + viewport_plotarea[1] += + leg.leftw + + leg.textw + + leg.rightw + + leg.xoffset + + !ymirror * gr_axis_width(sp, sp[:yaxis]) elseif occursin("top", leg_str) viewport_plotarea[4] -= leg.h + leg.dy + leg.yoffset elseif occursin("bottom", leg_str) - viewport_plotarea[3] += leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) + viewport_plotarea[3] += + leg.h + leg.dy + leg.yoffset + !xmirror * gr_axis_height(sp, sp[:xaxis]) end end if s === :inline @@ -1262,16 +1346,22 @@ function gr_update_viewport_ratio!(viewport_plotarea, sp) if ratio == :equal ratio = 1 end - viewport_ratio = (viewport_plotarea[2] - viewport_plotarea[1]) / (viewport_plotarea[4] - viewport_plotarea[3]) + viewport_ratio = + (viewport_plotarea[2] - viewport_plotarea[1]) / + (viewport_plotarea[4] - viewport_plotarea[3]) window_ratio = (xmax - xmin) / (ymax - ymin) / ratio if window_ratio < viewport_ratio viewport_center = 0.5 * (viewport_plotarea[1] + viewport_plotarea[2]) - viewport_size = (viewport_plotarea[2] - viewport_plotarea[1]) * window_ratio / viewport_ratio + viewport_size = + (viewport_plotarea[2] - viewport_plotarea[1]) * window_ratio / + viewport_ratio viewport_plotarea[1] = viewport_center - 0.5 * viewport_size viewport_plotarea[2] = viewport_center + 0.5 * viewport_size elseif window_ratio > viewport_ratio viewport_center = 0.5 * (viewport_plotarea[3] + viewport_plotarea[4]) - viewport_size = (viewport_plotarea[4] - viewport_plotarea[3]) * viewport_ratio / window_ratio + viewport_size = + (viewport_plotarea[4] - viewport_plotarea[3]) * viewport_ratio / + window_ratio viewport_plotarea[3] = viewport_center - 0.5 * viewport_size viewport_plotarea[4] = viewport_center + 0.5 * viewport_size end @@ -1293,12 +1383,12 @@ function gr_set_window(sp, viewport_plotarea) scaleop = 0 if xmax > xmin && ymax > ymin && zok - sp[:xaxis][:scale] == :log10 && (scaleop |= GR.OPTION_X_LOG) - sp[:yaxis][:scale] == :log10 && (scaleop |= GR.OPTION_Y_LOG) + sp[:xaxis][:scale] == :log10 && (scaleop |= GR.OPTION_X_LOG) + sp[:yaxis][:scale] == :log10 && (scaleop |= GR.OPTION_Y_LOG) needs_3d && sp[:zaxis][:scale] == :log10 && (scaleop |= GR.OPTION_Z_LOG) - sp[:xaxis][:flip] && (scaleop |= GR.OPTION_FLIP_X) - sp[:yaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Y) - needs_3d && sp[:zaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Z) + sp[:xaxis][:flip] && (scaleop |= GR.OPTION_FLIP_X) + sp[:yaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Y) + needs_3d && sp[:zaxis][:flip] && (scaleop |= GR.OPTION_FLIP_Z) # NOTE: setwindow sets the "data coordinate" limits of the current "viewport" GR.setwindow(xmin, xmax, ymin, ymax) GR.setscale(scaleop) @@ -1312,7 +1402,6 @@ function gr_fill_plotarea(sp, viewport_plotarea) end end - ## Axes function gr_draw_axes(sp, viewport_plotarea) @@ -1325,7 +1414,10 @@ function gr_draw_axes(sp, viewport_plotarea) camera = round.(Int, sp[:camera]) - warn_invalid(val) = if val < 0 || val > 90 @warn "camera: $(val)° ∉ [0°, 90°]" end + warn_invalid(val) = + if val < 0 || val > 90 + @warn "camera: $(val)° ∉ [0°, 90°]" + end warn_invalid.(camera) GR.setspace(zmin, zmax, camera...) @@ -1335,7 +1427,8 @@ function gr_draw_axes(sp, viewport_plotarea) plot_area_x = [xmin, xmin, xmin, xmax, xmax, xmax, xmin] plot_area_y = [ymin, ymin, ymax, ymax, ymax, ymin, ymin] plot_area_z = [zmin, zmax, zmax, zmax, zmin, zmin, zmin] - x_bg, y_bg = RecipesPipeline.unzip(GR.wc3towc.(plot_area_x, plot_area_y, plot_area_z)) + x_bg, y_bg = + RecipesPipeline.unzip(GR.wc3towc.(plot_area_x, plot_area_y, plot_area_z)) GR.fillarea(x_bg, y_bg) for letter in (:x, :y, :z) @@ -1393,7 +1486,7 @@ function gr_draw_grid(sp, axis, segments, func = gr_polyline) axis[:gridlinewidth], axis[:gridstyle], axis[:foreground_color_grid], - sp + sp, ) gr_set_transparency(axis[:foreground_color_grid], axis[:gridalpha]) func(coords(segments)...) @@ -1406,7 +1499,7 @@ function gr_draw_minorgrid(sp, axis, segments, func = gr_polyline) axis[:minorgridlinewidth], axis[:minorgridstyle], axis[:foreground_color_minor_grid], - sp + sp, ) gr_set_transparency(axis[:foreground_color_minor_grid], axis[:minorgridalpha]) func(coords(segments)...) @@ -1485,7 +1578,6 @@ function gr_label_ticks_3d(sp, letter, ticks) famin, famax = axis_limits(sp, far_letter) n0, n1 = letter === :y ? (namax, namin) : (namin, namax) - # find out which axes we are dealing with i = findfirst(==(letter), (:x, :y, :z)) letters = axes_shift((:x, :y, :z), 1 - i) @@ -1535,7 +1627,7 @@ function gr_label_axis(sp, letter, viewport_plotarea) guide_position = axis[:guide_position] angle = float(axis[:guidefontrotation]) # github.com/JuliaPlots/Plots.jl/issues/3089 if letter === :y - angle += 180. # default angle = 0. should yield GR.setcharup(-1, 0) i.e. 180° + angle += 180.0 # default angle = 0. should yield GR.setcharup(-1, 0) i.e. 180° GR.setcharup(cosd(angle), sind(angle)) ypos = gr_view_yposition(viewport_plotarea, position(axis[:guidefontvalign])) yalign = alignment(axis[:guidefontvalign]) @@ -1547,16 +1639,21 @@ function gr_label_axis(sp, letter, viewport_plotarea) xpos = viewport_plotarea[1] - 0.03 - !mirror * gr_axis_width(sp, axis) end else - angle += 90. # default angle = 0. should yield GR.setcharup(0, 1) i.e. 90° + angle += 90.0 # default angle = 0. should yield GR.setcharup(0, 1) i.e. 90° GR.setcharup(cosd(angle), sind(angle)) xpos = gr_view_xposition(viewport_plotarea, position(axis[:guidefonthalign])) xalign = alignment(axis[:guidefonthalign]) if guide_position === :top || (guide_position == :auto && mirror) GR.settextalign(xalign, GR.TEXT_VALIGN_TOP) - ypos = viewport_plotarea[4] + 0.015 + (mirror ? gr_axis_height(sp, axis) : 0.015) + ypos = + viewport_plotarea[4] + + 0.015 + + (mirror ? gr_axis_height(sp, axis) : 0.015) else GR.settextalign(xalign, GR.TEXT_VALIGN_BOTTOM) - ypos = viewport_plotarea[3] - 0.015 - (mirror ? 0.015 : gr_axis_height(sp, axis)) + ypos = + viewport_plotarea[3] - 0.015 - + (mirror ? 0.015 : gr_axis_height(sp, axis)) end end gr_text(xpos, ypos, axis[:guide]) @@ -1627,7 +1724,6 @@ function gr_add_title(sp, viewport_plotarea, viewport_subplot) end end - ## Series function gr_add_series(sp, series) @@ -1693,7 +1789,7 @@ function gr_add_series(sp, series) # this is all we need to add the series_annotations text anns = series[:series_annotations] - for (xi,yi,str,fnt) in EachAnn(anns, x, y) + for (xi, yi, str, fnt) in EachAnn(anns, x, y) gr_set_font(fnt, sp) gr_text(GR.wctondc(xi, yi)..., str) end @@ -1702,16 +1798,16 @@ function gr_add_series(sp, series) gr_set_font(legendfont(sp), sp) gr_set_textcolor(plot_color(sp[:legendfontcolor])) if sp[:yaxis][:mirror] - (_,i) = sp[:xaxis][:flip] ? findmax(x) : findmin(x) + (_, i) = sp[:xaxis][:flip] ? findmax(x) : findmin(x) GR.settextalign(GR.TEXT_HALIGN_RIGHT, GR.TEXT_VALIGN_HALF) offset = -0.01 else - (_,i) = sp[:xaxis][:flip] ? findmin(x) : findmax(x) + (_, i) = sp[:xaxis][:flip] ? findmin(x) : findmax(x) GR.settextalign(GR.TEXT_HALIGN_LEFT, GR.TEXT_VALIGN_HALF) offset = 0.01 end - (x_l,y_l) = GR.wctondc(x[i],y[i]) - gr_text(x_l+offset,y_l,series[:label]) + (x_l, y_l) = GR.wctondc(x[i], y[i]) + gr_text(x_l + offset, y_l, series[:label]) end GR.restorestate() end @@ -1719,7 +1815,7 @@ end function gr_draw_segments(series, x, y, fillrange, clims) st = series[:seriestype] if x !== nothing && length(x) > 1 - segments = series_segments(series, st; check=true) + segments = series_segments(series, st; check = true) # do area fill if fillrange !== nothing GR.setfillintstyle(GR.INTSTYLE_SOLID) @@ -1740,9 +1836,7 @@ function gr_draw_segments(series, x, y, fillrange, clims) for segment in segments i, rng = segment.attr_index, segment.range lc = get_linecolor(series, clims, i) - gr_set_line( - get_linewidth(series, i), get_linestyle(series, i), lc, series - ) + gr_set_line(get_linewidth(series, i), get_linestyle(series, i), lc, series) arrowside = isa(series[:arrow], Arrow) ? series[:arrow].side : :none arrowstyle = isa(series[:arrow], Arrow) ? series[:arrow].style : :simple gr_set_fillcolor(lc) @@ -1756,13 +1850,11 @@ end function gr_draw_segments_3d(series, x, y, z, clims) if series[:seriestype] === :path3d && length(x) > 1 lz = series[:line_z] - segments = series_segments(series, :path3d; check=true) + segments = series_segments(series, :path3d; check = true) for segment in segments i, rng = segment.attr_index, segment.range lc = get_linecolor(series, clims, i) - gr_set_line( - get_linewidth(series, i), get_linestyle(series, i), lc, series - ) + gr_set_line(get_linewidth(series, i), get_linestyle(series, i), lc, series) gr_set_transparency(lc, get_linealpha(series, i)) GR.polyline3d(x[rng], y[rng], z[rng]) end @@ -1777,7 +1869,6 @@ function gr_draw_markers( msize = series[:markersize], strokewidth = series[:markerstrokewidth], ) - isempty(x) && return GR.setfillintstyle(GR.INTSTYLE_SOLID) @@ -1791,7 +1882,16 @@ function gr_draw_markers( msw = get_thickness_scaling(series) * _cycle(strokewidth, i) shape = _cycle(shapes, i) for j in rng - gr_draw_marker(series, _cycle(x, j), _cycle(y, j), clims, i, ms, msw, shape) + gr_draw_marker( + series, + _cycle(x, j), + _cycle(y, j), + clims, + i, + ms, + msw, + shape, + ) end end end @@ -1828,8 +1928,8 @@ function gr_draw_contour(series, x, y, z, clims) GR.setspace(clims[1], clims[2], 0, 90) gr_set_line(get_linewidth(series), get_linestyle(series), get_linecolor(series), series) gr_set_transparency(get_fillalpha(series)) - is_lc_black = let black=plot_color(:black) - plot_color(series[:linecolor]) in (black,[black]) + is_lc_black = let black = plot_color(:black) + plot_color(series[:linecolor]) in (black, [black]) end h = gr_contour_levels(series, clims) if series[:fillrange] !== nothing @@ -1866,7 +1966,12 @@ function gr_draw_surface(series, x, y, z, clims) GR.surface(x, y, z, get(e_kwargs, :display_option, GR.OPTION_FILLED_MESH)) elseif st === :mesh3d @warn "GR: mesh3d is experimental (no face colors)" - gr_set_line(get_linewidth(series), get_linestyle(series), get_linecolor(series), series) + gr_set_line( + get_linewidth(series), + get_linestyle(series), + get_linecolor(series), + series, + ) GR.polyline3d(mesh3d_triangles(x, y, z, series[:connections])...) else throw(ArgumentError("Not handled !")) @@ -1913,7 +2018,6 @@ function gr_draw_image(series, x, y, z, clims) GR.drawimage(xmin, xmax, ymax, ymin, w, h, rgba) end - # ---------------------------------------------------------------- for (mime, fmt) in ( @@ -1950,7 +2054,11 @@ function _display(plt::Plot{GRBackend}) ENV["GKS_FILEPATH"] = filepath gr_display(plt) GR.emergencyclosegks() - content = string("\033]1337;File=inline=1;preserveAspectRatio=0:", base64encode(open(read, filepath)), "\a") + content = string( + "\033]1337;File=inline=1;preserveAspectRatio=0:", + base64encode(open(read, filepath)), + "\a", + ) println(content) rm(filepath) else diff --git a/src/backends/hdf5.jl b/src/backends/hdf5.jl index 050992aa..9959a683 100644 --- a/src/backends/hdf5.jl +++ b/src/backends/hdf5.jl @@ -13,7 +13,6 @@ Read from .hdf5 file using: display(pread) ==# - #==TODO =============================================================================== 1. Support more features. @@ -56,7 +55,8 @@ import ..HDF5PLOT_MAP_STR2TELEM, ..HDF5PLOT_MAP_TELEM2STR import ..HDF5Plot_PlotRef, ..HDF5PLOT_PLOTREF import ..BoundingBox, ..Extrema, ..Length import ..RecipesPipeline.datetimeformatter -import ..PlotUtils.ColorPalette, ..PlotUtils.CategoricalColorGradient, ..PlotUtils.ContinuousColorGradient +import ..PlotUtils.ColorPalette, + ..PlotUtils.CategoricalColorGradient, ..PlotUtils.ContinuousColorGradient import ..Surface, ..Shape, ..Arrow import ..GridLayout, ..RootLayout import ..Font, ..PlotText, ..SeriesAnnotations @@ -66,14 +66,13 @@ import .._axis_defaults import ..plot, ..plot! #Types that already have built-in HDF5 support (just write out natively): -const HDF5_SupportedTypes = Union{Number, String} +const HDF5_SupportedTypes = Union{Number,String} #TODO: Types_HDF5Support #Dispatch types: -struct CplxTuple; end #Identifies a "complex" tuple structure (not merely numbers) +struct CplxTuple end #Identifies a "complex" tuple structure (not merely numbers) #HDF5 reader will auto-detect type correctly: -struct HDF5_AutoDetect; end #See HDF5_SupportedTypes - +struct HDF5_AutoDetect end #See HDF5_SupportedTypes #== ===============================================================================# @@ -82,13 +81,12 @@ if length(HDF5PLOT_MAP_TELEM2STR) < 1 #Possible element types of high-level data types: #(Used to add type information as an HDF5 string attribute) #(Also used to dispatch appropriate read function through _read_typed()) - _telem2str = Dict{String, Type}( + _telem2str = Dict{String,Type}( "NOTHING" => Nothing, "SYMBOL" => Symbol, "RGBA" => Colorant, #Write out any Colorant to an #RRGGBBAA string "TUPLE" => Tuple, - "CTUPLE" => CplxTuple, #Tuple of complex structures - + "CTUPLE" => CplxTuple, "EXTREMA" => Extrema, "LENGTH" => Length, "ARRAY" => Array, #Array{Any} (because Array{T<:Union{Number, String}} natively supported by HDF5) @@ -115,10 +113,12 @@ if length(HDF5PLOT_MAP_TELEM2STR) < 1 "SUBPLOT" => Subplot, ) merge!(HDF5PLOT_MAP_STR2TELEM, _telem2str) #Faster to create than push!()?? - merge!(HDF5PLOT_MAP_TELEM2STR, Dict{Type, String}(v=>k for (k,v) in HDF5PLOT_MAP_STR2TELEM)) + merge!( + HDF5PLOT_MAP_TELEM2STR, + Dict{Type,String}(v => k for (k, v) in HDF5PLOT_MAP_STR2TELEM), + ) end - #==Helper functions ===============================================================================# @@ -151,19 +151,18 @@ function _hdf5_merge!(dest::AKW, src::AKW) end #_type_for_map returns the type to use with HDF5PLOT_MAP_TELEM2STR[], in case it is not concrete: -_type_for_map(::Type{T}) where T = T #Catch-all -_type_for_map(::Type{T}) where T<:BoundingBox = BoundingBox -_type_for_map(::Type{T}) where T<:ColorScheme = ColorScheme -_type_for_map(::Type{T}) where T<:Surface = Surface - +_type_for_map(::Type{T}) where {T} = T #Catch-all +_type_for_map(::Type{T}) where {T<:BoundingBox} = BoundingBox +_type_for_map(::Type{T}) where {T<:ColorScheme} = ColorScheme +_type_for_map(::Type{T}) where {T<:Surface} = Surface #==Read/write things like type name in attributes ===============================================================================# -function _write_datatype_attr(ds::Union{Group, Dataset}, ::Type{T}) where T +function _write_datatype_attr(ds::Union{Group,Dataset}, ::Type{T}) where {T} typestr = HDF5PLOT_MAP_TELEM2STR[T] HDF5.attributes(ds)["TYPE"] = typestr end -function _read_datatype_attr(ds::Union{Group, Dataset}) +function _read_datatype_attr(ds::Union{Group,Dataset}) if !Base.haskey(HDF5.attributes(ds), "TYPE") return HDF5_AutoDetect end @@ -173,7 +172,7 @@ function _read_datatype_attr(ds::Union{Group, Dataset}) end #Type parameter attributes: -function _write_typeparam_attr(ds::Dataset, v::Length{T}) where T +function _write_typeparam_attr(ds::Dataset, v::Length{T}) where {T} HDF5.attributes(ds)["TYPEPARAM"] = string(T) #Need to add units for Length end _read_typeparam_attr(ds::Dataset) = HDF5.read(HDF5.attributes(ds)["TYPEPARAM"]) @@ -186,8 +185,8 @@ _read_length_attr(::Type{Vector}, grp::Group) = HDF5.read(HDF5.attributes(grp)[" function _write_size_attr(grp::Group, v::Array) #of an array HDF5.attributes(grp)["SIZE"] = [size(v)...] end -_read_size_attr(::Type{Array}, grp::Group) = tuple(HDF5.read(HDF5.attributes(grp)["SIZE"])...) - +_read_size_attr(::Type{Array}, grp::Group) = + tuple(HDF5.read(HDF5.attributes(grp)["SIZE"])...) #==_write_typed(): Simple (leaf) datatypes. (Labels with type name.) ===============================================================================# @@ -228,9 +227,9 @@ function _write_typed(grp::Group, name::String, v::Length) end function _write_typed(grp::Group, name::String, v::typeof(datetimeformatter)) grp[name] = string(v) #Just write something that helps reader - _write_datatype_attr(grp[name], typeof(datetimeformatter)) + _write_datatype_attr(grp[name], typeof(datetimeformatter)) end -function _write_typed(grp::Group, name::String, v::Array{T}) where T<:Number #Default for arrays +function _write_typed(grp::Group, name::String, v::Array{T}) where {T<:Number} #Default for arrays grp[name] = v return #No need to _write_datatype_attr end @@ -238,8 +237,6 @@ function _write_typed(grp::Group, name::String, v::AbstractRange) _write_typed(grp, name, collect(v)) #For now end - - #== Helper functions for writing complex data structures ===============================================================================# @@ -270,20 +267,19 @@ function _write(grp::Group, name::String, d::AbstractDict) end #Write out arbitrary `struct`s: -function _writestructgeneric(grp::Group, obj::T) where T +function _writestructgeneric(grp::Group, obj::T) where {T} for fname in fieldnames(T) - v = getfield(obj, fname) - _write_typed(grp, String(fname), v) + v = getfield(obj, fname) + _write_typed(grp, String(fname), v) end return end - #==_write_typed(): More complex structures. (Labels with type name.) ===============================================================================# #Catch-all (default behaviour for `struct`s): -function _write_typed(grp::Group, name::String, v::T) where T +function _write_typed(grp::Group, name::String, v::T) where {T} #NOTE: need "name" parameter so that call signature is same with built-ins MT = _type_for_map(T) try #Check to see if type is supported @@ -299,12 +295,12 @@ function _write_typed(grp::Group, name::String, v::T) where T _writestructgeneric(objgrp, v) end -function _write_typed(grp::Group, name::String, v::Array{T}) where T +function _write_typed(grp::Group, name::String, v::Array{T}) where {T} _write_harray(grp, name, v) _write_datatype_attr(grp[name], Array) #{Any} end -function _write_typed(grp::Group, name::String, v::Tuple, ::Type{ELT}) where ELT<: Number #Basic Tuple +function _write_typed(grp::Group, name::String, v::Tuple, ::Type{ELT}) where {ELT<:Number} #Basic Tuple _write_typed(grp, name, [v...]) _write_datatype_attr(grp[name], Tuple) end @@ -315,12 +311,12 @@ end _write_typed(grp::Group, name::String, v::Tuple) = _write_typed(grp, name, v, eltype(v)) function _write_typed(grp::Group, name::String, v::Dict) -#= - tstr = string(Dict) - path = HDF5.name(grp) * "/" * name - @info("Type not supported: $tstr\npath: $path") - return -=# + #= + tstr = string(Dict) + path = HDF5.name(grp) * "/" * name + @info("Type not supported: $tstr\npath: $path") + return + =# #No support for structures with Dicts yet end function _write_typed(grp::Group, name::String, d::DefaultsDict) #Typically for plot attributes @@ -347,7 +343,6 @@ function _write_typed(grp::Group, name::String, v::Plot) #Don't write plot references end - #==_write(): Write out more complex structures NOTE: No need to write out type information (inferred from hierarchy) ===============================================================================# @@ -378,7 +373,11 @@ function _write(grp::Group, plt::Plot{HDF5Backend}) return end -function hdf5plot_write(plt::Plot{HDF5Backend}, path::AbstractString; name::String="_unnamed") +function hdf5plot_write( + plt::Plot{HDF5Backend}, + path::AbstractString; + name::String = "_unnamed", +) HDF5.h5open(path, "w") do file HDF5.write_dataset(file, "VERSION_INFO", _get_Plots_versionstr()) grp = HDF5.create_group(file, h5plotpath(name)) @@ -386,7 +385,6 @@ function hdf5plot_write(plt::Plot{HDF5Backend}, path::AbstractString; name::Stri end end - #== _read(): Read data, but not type information. ===============================================================================# @@ -417,7 +415,6 @@ function _read(::Type{Length}, ds::Dataset) end _read(::Type{typeof(datetimeformatter)}, ds::Dataset) = datetimeformatter - #== Helper functions for reading in complex data structures ===============================================================================# @@ -429,7 +426,7 @@ function _read_typed(grp::Group, name::String) end #_readstructgeneric: Needs object values to be written out with _write_typed(): -function _readstructgeneric(::Type{T}, grp::Group) where T +function _readstructgeneric(::Type{T}, grp::Group) where {T} vlist = Array{Any}(nothing, fieldcount(T)) for (i, fname) in enumerate(fieldnames(T)) vlist[i] = _read_typed(grp, String(fname)) @@ -454,7 +451,6 @@ function _read(::Type{KW}, grp::Group) return d end - #== _read(): More complex structures. ===============================================================================# @@ -463,7 +459,9 @@ _read(T::Type, grp::Group) = _readstructgeneric(T, grp) function _read(::Type{Array}, grp::Group) #Array{Any} sz = _read_size_attr(Array, grp) - if tuple(0) == sz; return []; end + if tuple(0) == sz + return [] + end result = Array{Any}(undef, sz) lidx = LinearIndices(sz) @@ -498,7 +496,9 @@ function _read(::Type{DefaultsDict}, grp::Group) #User should set DefaultsDict.defaults to one of: # _plot_defaults, _subplot_defaults, _axis_defaults, _series_defaults path = HDF5.name(ds) - @warn("Cannot yet read DefaultsDict using _read_typed():\n $path\nCannot fully reconstruct plot.") + @warn( + "Cannot yet read DefaultsDict using _read_typed():\n $path\nCannot fully reconstruct plot." + ) end function _read(::Type{Axis}, grp::Group) #1st arg appears to be ref to subplots. Seems to work without it. @@ -510,7 +510,6 @@ function _read(::Type{Subplot}, grp::Group) return HDF5PLOT_PLOTREF.ref.subplots[idx] end - #== _read(): Main plot structures ===============================================================================# @@ -538,7 +537,7 @@ function _read_plot(grp::Group) n = _read_length_attr(Vector, listgrp) #Construct new plot, +allocate subplots: - plt = plot(layout=n) + plt = plot(layout = n) HDF5PLOT_PLOTREF.ref = plt #Used when reading "layout" agrp = HDF5.open_group(grp, "attr") @@ -552,17 +551,15 @@ function _read_plot(grp::Group) return plt end -function hdf5plot_read(path::AbstractString; name::String="_unnamed") +function hdf5plot_read(path::AbstractString; name::String = "_unnamed") HDF5.h5open(path, "r") do file grp = HDF5.open_group(file, h5plotpath("_unnamed")) return _read_plot(grp) end end - end #module _hdf5_implementation - #==Implement Plots.jl backend interface for HDF5Backend ===============================================================================# @@ -640,7 +637,8 @@ end #==Interface actually required to use HDF5Backend ===============================================================================# -hdf5plot_write(plt::Plot{HDF5Backend}, path::AbstractString) = _hdf5_implementation.hdf5plot_write(plt, path) +hdf5plot_write(plt::Plot{HDF5Backend}, path::AbstractString) = + _hdf5_implementation.hdf5plot_write(plt, path) hdf5plot_write(path::AbstractString) = _hdf5_implementation.hdf5plot_write(current(), path) hdf5plot_read(path::AbstractString) = _hdf5_implementation.hdf5plot_read(path) diff --git a/src/backends/inspectdr.jl b/src/backends/inspectdr.jl index ac362838..e5db6d2b 100644 --- a/src/backends/inspectdr.jl +++ b/src/backends/inspectdr.jl @@ -44,16 +44,16 @@ _inspectdr_mapcolor(v::Colorant) = v function _inspectdr_mapcolor(g::PlotUtils.ColorGradient) @warn("Color gradients are currently unsupported in InspectDR.") #Pick middle color: - _inspectdr_mapcolor(g.colors[div(1+end,2)]) + _inspectdr_mapcolor(g.colors[div(1 + end, 2)]) end function _inspectdr_mapcolor(v::AVec) @warn("Vectors of colors are currently unsupported in InspectDR.") #Pick middle color: - _inspectdr_mapcolor(v[div(1+end,2)]) + _inspectdr_mapcolor(v[div(1 + end, 2)]) end #Hack: suggested point size does not seem adequate relative to plot size, for some reason. -_inspectdr_mapptsize(v) = 1.5*v +_inspectdr_mapptsize(v) = 1.5 * v function _inspectdr_add_annotations(plot, x, y, val) #What kind of annotation is this? @@ -61,14 +61,21 @@ end #plot::InspectDR.Plot2D function _inspectdr_add_annotations(plot, x, y, val::PlotText) - vmap = Dict{Symbol, Symbol}(:top=>:t, :bottom=>:b) #:vcenter - hmap = Dict{Symbol, Symbol}(:left=>:l, :right=>:r) #:hcenter + vmap = Dict{Symbol,Symbol}(:top => :t, :bottom => :b) #:vcenter + hmap = Dict{Symbol,Symbol}(:left => :l, :right => :r) #:hcenter align = Symbol(get(vmap, val.font.valign, :c), get(hmap, val.font.halign, :c)) - fnt = InspectDR.Font(val.font.family, val.font.pointsize, - color =_inspectdr_mapcolor(val.font.color) + fnt = InspectDR.Font( + val.font.family, + val.font.pointsize, + color = _inspectdr_mapcolor(val.font.color), ) - ann = InspectDR.atext(val.str, x=x, y=y, - font=fnt, angle=val.font.rotation, align=align + ann = InspectDR.atext( + val.str, + x = x, + y = y, + font = fnt, + angle = val.font.rotation, + align = align, ) InspectDR.add(plot, ann) return @@ -84,7 +91,9 @@ function _inspectdr_getaxisticks(ticks, gridlines, xfrm) if ticks == :native #keep current elseif ttype == :ticks_and_labels - pos = ticks[1]; labels = ticks[2]; nticks = length(ticks[1]) + pos = ticks[1] + labels = ticks[2] + nticks = length(ticks[1]) newticks = TickCustom[TickCustom(_xfrm(pos[i]), labels[i]) for i in 1:nticks] gridlines = InspectDR.GridLinesCustom(gridlines) gridlines.major = newticks @@ -129,8 +138,8 @@ end # --------------------------------------------------------------------------- function _inspectdr_getscale(s::Symbol, yaxis::Bool) -#TODO: Support :asinh, :sqrt - kwargs = yaxis ? (:tgtmajor=>8, :tgtminor=>2) : () #More grid lines on y-axis + #TODO: Support :asinh, :sqrt + kwargs = yaxis ? (:tgtmajor => 8, :tgtminor => 2) : () #More grid lines on y-axis if :log2 == s return InspectDR.AxisScale(:log2; kwargs...) elseif :log10 == s @@ -145,13 +154,12 @@ end # --------------------------------------------------------------------------- #Glyph used when plotting "Shape"s: -INSPECTDR_GLYPH_SHAPE = InspectDR.GlyphPolyline( - 2*InspectDR.GLYPH_SQUARE.x, InspectDR.GLYPH_SQUARE.y -) +INSPECTDR_GLYPH_SHAPE = + InspectDR.GlyphPolyline(2 * InspectDR.GLYPH_SQUARE.x, InspectDR.GLYPH_SQUARE.y) mutable struct InspecDRPlotRef - mplot::Union{Nothing, InspectDR.Multiplot} - gui::Union{Nothing, InspectDR.GtkPlot} + mplot::Union{Nothing,InspectDR.Multiplot} + gui::Union{Nothing,InspectDR.GtkPlot} end _inspectdr_getmplot(::Any) = nothing @@ -200,7 +208,9 @@ end function _initialize_subplot(plt::Plot{InspectDRBackend}, sp::Subplot{InspectDRBackend}) plot = sp.o #Don't do anything without a "subplot" object: Will process later. - if nothing == plot; return; end + if nothing == plot + return + end plot.data = [] plot.userannot = [] #Clear old markers/text annotation/polyline "annotation" return plot @@ -219,7 +229,9 @@ function _series_added(plt::Plot{InspectDRBackend}, series::Series) clims = get_clims(sp, series) #Don't do anything without a "subplot" object: Will process later. - if nothing == plot; return; end + if nothing == plot + return + end _vectorize(v) = isa(v, Vector) ? v : collect(v) #InspectDR only supports vectors x, y = if st == :straightline @@ -230,30 +242,33 @@ function _series_added(plt::Plot{InspectDRBackend}, series::Series) #No support for polar grid... but can still perform polar transformation: if ispolar(sp) - Θ = x; r = y - x = r.*cos.(Θ); y = r.*sin.(Θ) + Θ = x + r = y + x = r .* cos.(Θ) + y = r .* sin.(Θ) end # doesn't handle mismatched x/y - wrap data (pyplot behaviour): - nx = length(x); ny = length(y) + nx = length(x) + ny = length(y) if nx < ny - series[:x] = Float64[x[mod1(i,nx)] for i=1:ny] + series[:x] = Float64[x[mod1(i, nx)] for i in 1:ny] elseif ny > nx - series[:y] = Float64[y[mod1(i,ny)] for i=1:nx] + series[:y] = Float64[y[mod1(i, ny)] for i in 1:nx] end -#= TODO: Eventually support - series[:fillcolor] #I think this is fill under line - zorder = series[:series_plotindex] + #= TODO: Eventually support + series[:fillcolor] #I think this is fill under line + zorder = series[:series_plotindex] -For st in :shape: - zorder = series[:series_plotindex], -=# + For st in :shape: + zorder = series[:series_plotindex], + =# if st in (:shape,) x, y = shape_data(series) nmax = 0 - for (i,rng) in enumerate(iter_segments(x, y)) + for (i, rng) in enumerate(iter_segments(x, y)) nmax = i if length(rng) > 1 linewidth = series[:linewidth] @@ -261,11 +276,12 @@ For st in :shape: linecolor = _inspectdr_mapcolor(_cycle(c, i)) c = plot_color(get_fillcolor(series), get_fillalpha(series)) fillcolor = _inspectdr_mapcolor(_cycle(c, i)) - line = InspectDR.line( - style=:solid, width=linewidth, color=linecolor - ) + line = InspectDR.line(style = :solid, width = linewidth, color = linecolor) apline = InspectDR.PolylineAnnotation( - x[rng], y[rng], line=line, fillcolor=fillcolor + x[rng], + y[rng], + line = line, + fillcolor = fillcolor, ) InspectDR.add(plot, apline) end @@ -278,21 +294,24 @@ For st in :shape: linecolor = _inspectdr_mapcolor(_cycle(c, i)) c = plot_color(get_fillcolor(series), get_fillalpha(series)) fillcolor = _inspectdr_mapcolor(_cycle(c, i)) - wfrm = InspectDR.add(plot, Float64[], Float64[], id=series[:label]) + wfrm = InspectDR.add(plot, Float64[], Float64[], id = series[:label]) wfrm.line = InspectDR.line( - style=:none, width=linewidth, #linewidth affects glyph + style = :none, + width = linewidth, #linewidth affects glyph ) wfrm.glyph = InspectDR.glyph( - shape = INSPECTDR_GLYPH_SHAPE, size = 8, - color = linecolor, fillcolor = fillcolor + shape = INSPECTDR_GLYPH_SHAPE, + size = 8, + color = linecolor, + fillcolor = fillcolor, ) end - elseif st in (:path, :scatter, :straightline) #, :steppre, :stepmid, :steppost) + elseif st in (:path, :scatter, :straightline) #, :steppre, :stepmid, :steppost) #NOTE: In Plots.jl, :scatter plots have 0-linewidths (I think). linewidth = series[:linewidth] #More efficient & allows some support for markerstrokewidth: - _style = (0==linewidth ? :none : series[:linestyle]) - wfrm = InspectDR.add(plot, x, y, id=series[:label]) + _style = (0 == linewidth ? :none : series[:linestyle]) + wfrm = InspectDR.add(plot, x, y, id = series[:label]) wfrm.line = InspectDR.line( style = _style, width = series[:linewidth], @@ -306,14 +325,18 @@ For st in :shape: wfrm.glyph = InspectDR.glyph( shape = _inspectdr_mapglyph(series[:markershape]), size = _inspectdr_mapglyphsize(series[:markersize]), - color = _inspectdr_mapcolor(plot_color(get_markerstrokecolor(series), get_markerstrokealpha(series))), - fillcolor = _inspectdr_mapcolor(plot_color(get_markercolor(series, clims), get_markeralpha(series))), + color = _inspectdr_mapcolor( + plot_color(get_markerstrokecolor(series), get_markerstrokealpha(series)), + ), + fillcolor = _inspectdr_mapcolor( + plot_color(get_markercolor(series, clims), get_markeralpha(series)), + ), ) end # this is all we need to add the series_annotations text anns = series[:series_annotations] - for (xi,yi,str,fnt) in EachAnn(anns, x, y) + for (xi, yi, str, fnt) in EachAnn(anns, x, y) _inspectdr_add_annotations(plot, xi, yi, PlotText(str, fnt)) end return @@ -333,66 +356,72 @@ function _inspectdr_setupsubplot(sp::Subplot{InspectDRBackend}) plot = sp.o strip = plot.strips[1] #Only 1 strip supported with Plots.jl - xaxis = sp[:xaxis]; yaxis = sp[:yaxis] + xaxis = sp[:xaxis] + yaxis = sp[:yaxis] xgrid_show = xaxis[:grid] ygrid_show = yaxis[:grid] strip.grid = InspectDR.GridRect( - vmajor=xgrid_show, # vminor=xgrid_show, - hmajor=ygrid_show, # hminor=ygrid_show, + vmajor = xgrid_show, # vminor=xgrid_show, + hmajor = ygrid_show, # hminor=ygrid_show, ) - plot.xscale = _inspectdr_getscale(xaxis[:scale], false) - strip.yscale = _inspectdr_getscale(yaxis[:scale], true) - xmin, xmax = axis_limits(sp, :x) - ymin, ymax = axis_limits(sp, :y) - if ispolar(sp) - #Plots.jl appears to give (xmin,xmax) ≜ (Θmin,Θmax) & (ymin,ymax) ≜ (rmin,rmax) - rmax = NaNMath.max(abs(ymin), abs(ymax)) - xmin, xmax = -rmax, rmax - ymin, ymax = -rmax, rmax - end - plot.xext_full = InspectDR.PExtents1D(xmin, xmax) - strip.yext_full = InspectDR.PExtents1D(ymin, ymax) - #Set current extents = full extents (needed for _eval(strip.grid,...)) - plot.xext = plot.xext_full - strip.yext = strip.yext_full - _inspectdr_setticks(sp, plot, strip, xaxis, yaxis) + plot.xscale = _inspectdr_getscale(xaxis[:scale], false) + strip.yscale = _inspectdr_getscale(yaxis[:scale], true) + xmin, xmax = axis_limits(sp, :x) + ymin, ymax = axis_limits(sp, :y) + if ispolar(sp) + #Plots.jl appears to give (xmin,xmax) ≜ (Θmin,Θmax) & (ymin,ymax) ≜ (rmin,rmax) + rmax = NaNMath.max(abs(ymin), abs(ymax)) + xmin, xmax = -rmax, rmax + ymin, ymax = -rmax, rmax + end + plot.xext_full = InspectDR.PExtents1D(xmin, xmax) + strip.yext_full = InspectDR.PExtents1D(ymin, ymax) + #Set current extents = full extents (needed for _eval(strip.grid,...)) + plot.xext = plot.xext_full + strip.yext = strip.yext_full + _inspectdr_setticks(sp, plot, strip, xaxis, yaxis) a = plot.annotation - a.title = sp[:title] - a.xlabel = xaxis[:guide]; a.ylabels = [yaxis[:guide]] + a.title = sp[:title] + a.xlabel = xaxis[:guide] + a.ylabels = [yaxis[:guide]] #Modify base layout of new object: l = plot.layout.defaults = deepcopy(InspectDR.defaults.plotlayout) - #IMPORTANT: Must deepcopy to ensure we don't change layouts of other plots. - #Works because plot uses defaults (not user-overwritten `layout.values`) - l.frame_canvas.fillcolor = _inspectdr_mapcolor(sp[:background_color_subplot]) - l.frame_data.fillcolor = _inspectdr_mapcolor(sp[:background_color_inside]) - l.frame_data.line.color = _inspectdr_mapcolor(xaxis[:foreground_color_axis]) - l.font_title = InspectDR.Font(sp[:titlefontfamily], - _inspectdr_mapptsize(sp[:titlefontsize]), - color = _inspectdr_mapcolor(sp[:titlefontcolor]) - ) - #Cannot independently control fonts of axes with InspectDR: - l.font_axislabel = InspectDR.Font(xaxis[:guidefontfamily], - _inspectdr_mapptsize(xaxis[:guidefontsize]), - color = _inspectdr_mapcolor(xaxis[:guidefontcolor]) - ) - l.font_ticklabel = InspectDR.Font(xaxis[:tickfontfamily], - _inspectdr_mapptsize(xaxis[:tickfontsize]), - color = _inspectdr_mapcolor(xaxis[:tickfontcolor]) - ) - l.enable_legend = (sp[:legend] != :none) - #l.halloc_legend = 150 #TODO: compute??? - l.font_legend = InspectDR.Font(sp[:legendfontfamily], - _inspectdr_mapptsize(sp[:legendfontsize]), - color = _inspectdr_mapcolor(sp[:legendfontcolor]) - ) - l.frame_legend.fillcolor = _inspectdr_mapcolor(sp[:background_color_legend]) + #IMPORTANT: Must deepcopy to ensure we don't change layouts of other plots. + #Works because plot uses defaults (not user-overwritten `layout.values`) + l.frame_canvas.fillcolor = _inspectdr_mapcolor(sp[:background_color_subplot]) + l.frame_data.fillcolor = _inspectdr_mapcolor(sp[:background_color_inside]) + l.frame_data.line.color = _inspectdr_mapcolor(xaxis[:foreground_color_axis]) + l.font_title = InspectDR.Font( + sp[:titlefontfamily], + _inspectdr_mapptsize(sp[:titlefontsize]), + color = _inspectdr_mapcolor(sp[:titlefontcolor]), + ) + #Cannot independently control fonts of axes with InspectDR: + l.font_axislabel = InspectDR.Font( + xaxis[:guidefontfamily], + _inspectdr_mapptsize(xaxis[:guidefontsize]), + color = _inspectdr_mapcolor(xaxis[:guidefontcolor]), + ) + l.font_ticklabel = InspectDR.Font( + xaxis[:tickfontfamily], + _inspectdr_mapptsize(xaxis[:tickfontsize]), + color = _inspectdr_mapcolor(xaxis[:tickfontcolor]), + ) + l.enable_legend = (sp[:legend] != :none) + #l.halloc_legend = 150 #TODO: compute??? + l.font_legend = InspectDR.Font( + sp[:legendfontfamily], + _inspectdr_mapptsize(sp[:legendfontsize]), + color = _inspectdr_mapcolor(sp[:legendfontcolor]), + ) + l.frame_legend.fillcolor = _inspectdr_mapcolor(sp[:background_color_legend]) - #_round!() ensures values use integer spacings (looks better on screen): - InspectDR._round!(InspectDR.autofit2font!(l, legend_width=10.0)) #10 "em"s wide + #_round!() ensures values use integer spacings (looks better on screen): + InspectDR._round!(InspectDR.autofit2font!(l, legend_width = 10.0)) #10 "em"s wide return end @@ -400,7 +429,9 @@ end # for the calcs function _before_layout_calcs(plt::Plot{InspectDRBackend}) mplot = _inspectdr_getmplot(plt.o) - if nothing == mplot; return; end + if nothing == mplot + return + end mplot.title = plt[:plot_title] if "" == mplot.title @@ -409,7 +440,7 @@ function _before_layout_calcs(plt::Plot{InspectDRBackend}) end mplot.layout[:frame].fillcolor = _inspectdr_mapcolor(plt[:background_color_outside]) - mplot.layout[:frame] = mplot.layout[:frame] #register changes + mplot.layout[:frame] = mplot.layout[:frame] #register changes resize!(mplot.subplots, length(plt.subplots)) nsubplots = length(plt.subplots) for (i, sp) in enumerate(plt.subplots) @@ -453,17 +484,19 @@ end # to fit ticks, tick labels, guides, colorbars, etc. function _update_min_padding!(sp::Subplot{InspectDRBackend}) plot = sp.o - if !isa(plot, InspectDR.Plot2D); return sp.minpad; end + if !isa(plot, InspectDR.Plot2D) + return sp.minpad + end #Computing plotbounds with 0-BoundingBox returns required padding: - bb = InspectDR.plotbounds(plot.layout.values, InspectDR.BoundingBox(0,0,0,0)) + bb = InspectDR.plotbounds(plot.layout.values, InspectDR.BoundingBox(0, 0, 0, 0)) #NOTE: plotbounds always pads for titles, legends, etc. even if not in use. #TODO: possibly zero-out items not in use?? # add in the user-specified margin to InspectDR padding: - leftpad = abs(bb.xmin)*px + sp[:left_margin] - toppad = abs(bb.ymin)*px + sp[:top_margin] - rightpad = abs(bb.xmax)*px + sp[:right_margin] - bottompad = abs(bb.ymax)*px + sp[:bottom_margin] + leftpad = abs(bb.xmin) * px + sp[:left_margin] + toppad = abs(bb.ymin) * px + sp[:top_margin] + rightpad = abs(bb.xmax) * px + sp[:right_margin] + bottompad = abs(bb.ymax) * px + sp[:bottom_margin] sp.minpad = (leftpad, toppad, rightpad, bottompad) end @@ -472,21 +505,25 @@ end # Override this to update plot items (title, xlabel, etc), and add annotations (plotattributes[:annotations]) function _update_plot_object(plt::Plot{InspectDRBackend}) mplot = _inspectdr_getmplot(plt.o) - if nothing == mplot; return; end + if nothing == mplot + return + end mplot.bblist = InspectDR.BoundingBox[] for (i, sp) in enumerate(plt.subplots) figw, figh = sp.plt[:size] - pcts = bbox_to_pcts(sp.bbox, figw*px, figh*px) + pcts = bbox_to_pcts(sp.bbox, figw * px, figh * px) _left, _bottom, _width, _height = pcts - ymax = 1.0-_bottom + ymax = 1.0 - _bottom ymin = ymax - _height - bb = InspectDR.BoundingBox(_left, _left+_width, ymin, ymax) + bb = InspectDR.BoundingBox(_left, _left + _width, ymin, ymax) push!(mplot.bblist, bb) end gplot = _inspectdr_getgui(plt.o) - if nothing == gplot; return; end + if nothing == gplot + return + end gplot.src = mplot #Ensure still references current plot InspectDR.refresh(gplot) @@ -522,7 +559,9 @@ end # Display/show the plot (open a GUI window, or browser page, for example). function _display(plt::Plot{InspectDRBackend}) mplot = _inspectdr_getmplot(plt.o) - if nothing == mplot; return; end + if nothing == mplot + return + end gplot = _inspectdr_getgui(plt.o) if nothing == gplot diff --git a/src/backends/pgfplotsx.jl b/src/backends/pgfplotsx.jl index cde7fd9b..e63bd9ae 100644 --- a/src/backends/pgfplotsx.jl +++ b/src/backends/pgfplotsx.jl @@ -8,23 +8,11 @@ Base.@kwdef mutable struct PGFPlotsXPlot function PGFPlotsXPlot(is_created, was_shown, the_plot) pgfx_plot = new(is_created, was_shown, the_plot) # tikz libraries - PGFPlotsX.push_preamble!( - pgfx_plot.the_plot, - "\\usetikzlibrary{arrows.meta}", - ) - PGFPlotsX.push_preamble!( - pgfx_plot.the_plot, - "\\usetikzlibrary{backgrounds}", - ) + PGFPlotsX.push_preamble!(pgfx_plot.the_plot, "\\usetikzlibrary{arrows.meta}") + PGFPlotsX.push_preamble!(pgfx_plot.the_plot, "\\usetikzlibrary{backgrounds}") # pgfplots libraries - PGFPlotsX.push_preamble!( - pgfx_plot.the_plot, - "\\usepgfplotslibrary{patchplots}", - ) - PGFPlotsX.push_preamble!( - pgfx_plot.the_plot, - "\\usepgfplotslibrary{fillbetween}", - ) + PGFPlotsX.push_preamble!(pgfx_plot.the_plot, "\\usepgfplotslibrary{patchplots}") + PGFPlotsX.push_preamble!(pgfx_plot.the_plot, "\\usepgfplotslibrary{fillbetween}") # compatibility fixes # add background layer to standard layers PGFPlotsX.push_preamble!( @@ -89,7 +77,7 @@ function Base.push!(pgfx_plot::PGFPlotsXPlot, item) end function pgfx_split_extra_opts(extra) - return (get(extra, :add, nothing), filter( x-> first(x) != :add, extra)) + return (get(extra, :add, nothing), filter(x -> first(x) != :add, extra)) end function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) if !pgfx_plot.is_created || pgfx_plot.was_shown @@ -101,8 +89,9 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) extra_plot = wraptuple(extra_plot) push!(the_plot, extra_plot...) end - bgc = plt.attr[:background_color_outside] == :match ? - plt.attr[:background_color] : plt.attr[:background_color_outside] + bgc = + plt.attr[:background_color_outside] == :match ? plt.attr[:background_color] : + plt.attr[:background_color_outside] if bgc isa Colors.Colorant cstr = plot_color(bgc) a = alpha(cstr) @@ -125,9 +114,14 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) if sp[:subplot_index] == plt[:plot_titleindex] x = dx + sp_width / 2 - 10mm # FIXME: get rid of magic constant y = dy + sp_height / 2 - pgfx_add_annotation!(the_plot, x, y, PlotText(plt[:plot_title], plottitlefont(plt)), pgfx_thickness_scaling(plt); + pgfx_add_annotation!( + the_plot, + x, + y, + PlotText(plt[:plot_title], plottitlefont(plt)), + pgfx_thickness_scaling(plt); cs = "", - options = PGFPlotsX.Options("anchor" => "center") + options = PGFPlotsX.Options("anchor" => "center"), ) continue end @@ -152,29 +146,22 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) "point meta min" => get_clims(sp)[1], "title" => sp[:title], "title style" => PGFPlotsX.Options( - pgfx_get_title_pos(title_loc)..., - "font" => pgfx_font( - sp[:titlefontsize], - pgfx_thickness_scaling(sp), - ), + pgfx_get_title_pos(title_loc)..., + "font" => pgfx_font(sp[:titlefontsize], pgfx_thickness_scaling(sp)), "color" => title_cstr, "draw opacity" => title_a, "rotate" => sp[:titlefontrotation], ), "legend style" => pgfx_get_legend_style(sp), - "axis background/.style" => PGFPlotsX.Options( - "fill" => bgc_inside, - "opacity" => bgc_inside_a, - ), + "axis background/.style" => + PGFPlotsX.Options("fill" => bgc_inside, "opacity" => bgc_inside_a), # These are for layouting "anchor" => "north west", "xshift" => string(dx), "yshift" => string(-dy), ) - sp_width > 0 * mm ? push!(axis_opt, "width" => string(axis_width)) : - nothing - sp_height > 0 * mm ? push!(axis_opt, "height" => string(axis_height)) : - nothing + sp_width > 0 * mm ? push!(axis_opt, "width" => string(axis_width)) : nothing + sp_height > 0 * mm ? push!(axis_opt, "height" => string(axis_height)) : nothing for letter in (:x, :y, :z) if letter != :z || RecipesPipeline.is3d(sp) pgfx_axis!(axis_opt, sp, letter) @@ -216,11 +203,10 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) if hascolorbar(sp) cticks = get_colorbar_ticks(sp)[2] - colorbar_style = PGFPlotsX.Options( - "title" => sp[:colorbar_title], - ) + colorbar_style = PGFPlotsX.Options("title" => sp[:colorbar_title]) if sp[:colorbar] === :top - push!(colorbar_style, + push!( + colorbar_style, "at" => string((0.5, 1.05)), "anchor" => "south", "xtick" => string("{", join(cticks, ","), "}"), @@ -228,7 +214,8 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) "xticklabel style" => pgfx_get_colorbar_ticklabel_style(sp), ) else - push!(colorbar_style, + push!( + colorbar_style, "ytick" => string("{", join(cticks, ","), "}"), "yticklabel style" => pgfx_get_colorbar_ticklabel_style(sp), ) @@ -279,15 +266,19 @@ function (pgfx_plot::PGFPlotsXPlot)(plt::Plot{PGFPlotsXBackend}) "color" => single_color(opt[:linecolor]), "name path" => string(series_id), ) - extra_series, extra_series_opt = pgfx_split_extra_opts(series[:extra_kwargs]) + extra_series, extra_series_opt = + pgfx_split_extra_opts(series[:extra_kwargs]) series_opt = merge(series_opt, PGFPlotsX.Options(extra_series_opt...)) - if RecipesPipeline.is3d(series) || st in (:heatmap, :contour) || (st == :quiver && opt[:z] !== nothing) + if ( + RecipesPipeline.is3d(series) || + st in (:heatmap, :contour) || + (st == :quiver && opt[:z] !== nothing) + ) series_func = PGFPlotsX.Plot3 else series_func = PGFPlotsX.Plot end - if sf !== nothing && - !isfilledcontour(series) && series[:ribbon] === nothing + if sf !== nothing && !isfilledcontour(series) && series[:ribbon] === nothing push!(series_opt, "area legend" => nothing) end pgfx_add_series!(Val(st), axis, series_opt, series, series_func, opt) @@ -337,7 +328,7 @@ end function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, opt) # treat segments - segments = collect(series_segments(series, series[:seriestype]; check=true)) + segments = collect(series_segments(series, series[:seriestype]; check = true)) sf = opt[:fillrange] for (k, segment) in enumerate(segments) i, rng = segment.attr_index, segment.range @@ -351,10 +342,7 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o 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) - ], + ["($(x[i] * mark_size), $(y[i] * mark_size))" for i in eachindex(x)], " -- ", ) c = get_markercolor(series, i) @@ -372,31 +360,26 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o segment_opt = merge(segment_opt, pgfx_marker(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, - ) + 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, - ) + pgfx_fillrange_series!( + axis, + series, + series_func, + i, + _cycle(sfi, rng), + rng, + ) end end - if k == 1 && - series[:subplot][:legend] != :none && pgfx_should_add_to_legend(series) + if ( + k == 1 && + series[:subplot][:legend] != :none && + pgfx_should_add_to_legend(series) + ) pgfx_filllegend!(series_opt, opt) end end @@ -405,46 +388,44 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o if arrow isa Arrow arrow_opt = merge( segment_opt, - PGFPlotsX.Options("quiver" => PGFPlotsX.Options( - "u" => "\\thisrow{u}", - "v" => "\\thisrow{v}", - pgfx_arrow(arrow, :head) => nothing, - ) - ) + PGFPlotsX.Options( + "quiver" => PGFPlotsX.Options( + "u" => "\\thisrow{u}", + "v" => "\\thisrow{v}", + pgfx_arrow(arrow, :head) => nothing, + ), + ), ) if arrow.side == :head - x_arrow = opt[:x][rng][end-1:end] - y_arrow = opt[:y][rng][end-1:end] - x_path = opt[:x][rng][1:end-1] - y_path = opt[:y][rng][1:end-1] + x_arrow = opt[:x][rng][(end - 1):end] + y_arrow = opt[:y][rng][(end - 1):end] + x_path = opt[:x][rng][1:(end - 1)] + y_path = opt[:y][rng][1:(end - 1)] elseif arrow.side == :tail x_arrow = opt[:x][rng][2:-1:1] y_arrow = opt[:y][rng][2:-1:1] x_path = opt[:x][rng][2:end] y_path = opt[:y][rng][2:end] elseif arrow.side == :both - x_arrow = opt[:x][rng][[2,1,end-1,end]] - y_arrow = opt[:y][rng][[2,1,end-1,end]] - x_path = opt[:x][rng][2:end-1] - y_path = opt[:y][rng][2:end-1] + x_arrow = opt[:x][rng][[2, 1, end - 1, end]] + y_arrow = opt[:y][rng][[2, 1, end - 1, end]] + x_path = opt[:x][rng][2:(end - 1)] + y_path = opt[:y][rng][2:(end - 1)] end coordinates = PGFPlotsX.Table([ - :x => x_arrow[1:2:end-1], - :y => y_arrow[1:2:end-1], - :u => [x_arrow[i] - x_arrow[i-1] for i in 2:2:lastindex(x_arrow)], - :v => [y_arrow[i] - y_arrow[i-1] for i in 2:2:lastindex(y_arrow)], - ]) - arrow_plot = - series_func(merge(series_opt, arrow_opt), coordinates) + :x => x_arrow[1:2:(end - 1)], + :y => y_arrow[1:2:(end - 1)], + :u => [x_arrow[i] - x_arrow[i - 1] for i in 2:2:lastindex(x_arrow)], + :v => [y_arrow[i] - y_arrow[i - 1] for i in 2:2:lastindex(y_arrow)], + ]) + arrow_plot = series_func(merge(series_opt, arrow_opt), coordinates) push!(axis, arrow_plot) coordinates = PGFPlotsX.Table(x_path, y_path) - segment_plot = - series_func(merge(series_opt, segment_opt), coordinates) + segment_plot = series_func(merge(series_opt, segment_opt), coordinates) push!(axis, segment_plot) else coordinates = PGFPlotsX.Table(pgfx_series_arguments(series, opt, rng)...) - segment_plot = - series_func(merge(series_opt, segment_opt), coordinates) + segment_plot = series_func(merge(series_opt, segment_opt), coordinates) push!(axis, segment_plot) end # fill between functions @@ -466,7 +447,10 @@ function pgfx_add_series!(::Val{:path}, axis, series_opt, series, series_func, o end # for segments # get that last marker if !isnothing(opt[:y]) && !any(isnan, opt[:y]) && opt[:markershape] isa AVec - additional_plot = PGFPlotsX.PlotInc(pgfx_marker(opt, length(segments) + 1), PGFPlotsX.Coordinates(tuple((last(opt[:x]), last(opt[:y]))))) + additional_plot = PGFPlotsX.PlotInc( + pgfx_marker(opt, length(segments) + 1), + PGFPlotsX.Coordinates(tuple((last(opt[:x]), last(opt[:y])))), + ) push!(axis, additional_plot) end end @@ -503,9 +487,7 @@ function pgfx_add_series!(::Val{:surface}, axis, series_opt, series, series_func end function pgfx_add_series!(::Val{:wireframe}, axis, series_opt, series, series_func, opt) - push!(series_opt, "mesh" => nothing, - "mesh/rows" => length(opt[:x]) - ) + push!(series_opt, "mesh" => nothing, "mesh/rows" => length(opt[:x])) pgfx_add_series!(axis, series_opt, series, series_func, opt) end @@ -530,12 +512,15 @@ function pgfx_add_series!(::Val{:heatmap}, axis, series_opt, series, series_func end function pgfx_add_series!(::Val{:mesh3d}, axis, series_opt, series, series_func, opt) - ptable = join([ string(i, " ", j, " ", k, "\\\\") for (i, j, k) in zip(opt[:connections]...) ], "\n ") + ptable = join( + [string(i, " ", j, " ", k, "\\\\") for (i, j, k) in zip(opt[:connections]...)], + "\n ", + ) push!( series_opt, "patch" => nothing, "table/row sep" => "\\\\", - "patch table" => ptable + "patch table" => ptable, ) pgfx_add_series!(axis, series_opt, series, series_func, opt) end @@ -570,9 +555,10 @@ function pgfx_add_series!(::Val{:contour3d}, axis, series_opt, series, series_fu series_opt, "contour prepared" => PGFPlotsX.Options("labels" => opt[:contour_labels]), ) - series_opt = merge( series_opt, pgfx_linestyle(opt) ) + series_opt = merge(series_opt, pgfx_linestyle(opt)) args = pgfx_series_arguments(series, opt) - series_plot = series_func(series_opt, PGFPlotsX.Table(Contour.contours(args..., opt[:levels]))) + series_plot = + series_func(series_opt, PGFPlotsX.Table(Contour.contours(args..., opt[:levels]))) push!(axis, series_plot) pgfx_add_legend!(axis, series, opt) end @@ -670,7 +656,8 @@ function pgfx_add_legend!(axis, series, opt, i = 1) return nothing end -pgfx_series_arguments(series, opt, range) = (arg[range] for arg in pgfx_series_arguments(series, opt)) +pgfx_series_arguments(series, opt, range) = + (arg[range] for arg in pgfx_series_arguments(series, opt)) function pgfx_series_arguments(series, opt) st = series[:seriestype] return if st in (:contour, :contour3d) @@ -734,7 +721,7 @@ pgfx_get_xguide_pos(k) = get( left = "at={(ticklabel* cs:-0.02)}, anchor=east,", ), k, - "at={(ticklabel cs:0.5)}, anchor=near ticklabel" + "at={(ticklabel cs:0.5)}, anchor=near ticklabel", ) pgfx_get_yguide_pos(k) = get( @@ -744,7 +731,7 @@ pgfx_get_yguide_pos(k) = get( bottom = "at={(ticklabel* cs:-0.02)}, anchor=north,", ), k, - "at={(ticklabel cs:0.5)}, anchor=near ticklabel" + "at={(ticklabel cs:0.5)}, anchor=near ticklabel", ) pgfx_get_legend_pos(k) = get( @@ -769,25 +756,27 @@ pgfx_get_legend_pos(k) = get( Symbol(k), ("at" => string((1.02, 1)), "anchor" => "north west"), ) -pgfx_get_legend_pos(t::Tuple{S,T}) where {S<:Real,T<:Real} = ("at" => "{$(string(t))}", "anchor" => "north west") -pgfx_get_legend_pos(nt::NamedTuple) = ("at" => "{$(string(nt.at))}", "anchor" => string(nt.anchor)) -pgfx_get_legend_pos(theta::Real) = pgfx_get_legend_pos((theta,:inner)) -function pgfx_get_legend_pos(v::Tuple{S,Symbol}) where S <: Real - (s,c) = sincosd(v[1]) +pgfx_get_legend_pos(t::Tuple{S,T}) where {S<:Real,T<:Real} = + ("at" => "{$(string(t))}", "anchor" => "north west") +pgfx_get_legend_pos(nt::NamedTuple) = + ("at" => "{$(string(nt.at))}", "anchor" => string(nt.anchor)) +pgfx_get_legend_pos(theta::Real) = pgfx_get_legend_pos((theta, :inner)) +function pgfx_get_legend_pos(v::Tuple{S,Symbol}) where {S<:Real} + (s, c) = sincosd(v[1]) anchors = [ - "south west" "south" "south east"; - "west" "center" "east"; - "north west" "north" "north east"; - ] + "south west" "south" "south east" + "west" "center" "east" + "north west" "north" "north east" + ] if v[2] === :inner - rect = (0.07,0.5,1.0,0.07,0.52,1.0) - anchor = anchors[legend_anchor_index(s),legend_anchor_index(c)] + rect = (0.07, 0.5, 1.0, 0.07, 0.52, 1.0) + anchor = anchors[legend_anchor_index(s), legend_anchor_index(c)] else - rect = (-0.15,0.5,1.05,-0.15,0.52,1.1) - anchor = anchors[4-legend_anchor_index(s),4-legend_anchor_index(c)] + rect = (-0.15, 0.5, 1.05, -0.15, 0.52, 1.1) + anchor = anchors[4 - legend_anchor_index(s), 4 - legend_anchor_index(c)] end - return ("at"=>"$(string(legend_pos_from_angle(v[1],rect...)))", "anchor"=>anchor) + return ("at" => "$(string(legend_pos_from_angle(v[1],rect...)))", "anchor" => anchor) end function pgfx_get_legend_style(sp) @@ -805,12 +794,15 @@ function pgfx_get_legend_style(sp) "fill" => cstr, "fill opacity" => a, "text opacity" => alpha(plot_color(sp[:legendfontcolor])), - "font" => pgfx_font( - sp[:legendfontsize], - pgfx_thickness_scaling(sp), - ), + "font" => pgfx_font(sp[:legendfontsize], pgfx_thickness_scaling(sp)), "text" => plot_color(sp[:legendfontcolor]), - "cells" => PGFPlotsX.Options("anchor" => get((left = "west", right = "east", hcenter = "center"), legfont.halign, "west")), + "cells" => PGFPlotsX.Options( + "anchor" => get( + (left = "west", right = "east", hcenter = "center"), + legfont.halign, + "west", + ), + ), pgfx_get_legend_pos(sp[:legend])..., ) end @@ -819,21 +811,23 @@ pgfx_get_colorbar_pos(s) = get((left = " left", bottom = " horizontal", top = " horizontal"), s, "") pgfx_get_colorbar_pos(b::Bool) = "" -pgfx_get_title_pos(s) = - get(( +pgfx_get_title_pos(s) = get( + ( left = ("at" => "{(0,1)}", "anchor" => "south west"), right = ("at" => "{(1,1)}", "anchor" => "south east"), - ), s, - ("at" => "{(0.5,1)}", "anchor" => "south")) + ), + s, + ("at" => "{(0.5,1)}", "anchor" => "south"), +) pgfx_get_title_pos(t::Tuple) = ("at" => "{$(string(t))}", "anchor" => "south") -pgfx_get_title_pos(nt::NamedTuple) = ("at" => "{$(string(nt.at))}", "anchor" => string(nt.anchor)) +pgfx_get_title_pos(nt::NamedTuple) = + ("at" => "{$(string(nt.at))}", "anchor" => string(nt.anchor)) function pgfx_get_ticklabel_style(sp, axis) cstr = plot_color(axis[:tickfontcolor]) return PGFPlotsX.Options( - "font" => pgfx_font( - axis[:tickfontsize], pgfx_thickness_scaling(sp) - ), "color" => cstr, + "font" => pgfx_font(axis[:tickfontsize], pgfx_thickness_scaling(sp)), + "color" => cstr, "draw opacity" => alpha(cstr), "rotate" => axis[:tickfontrotation], ) @@ -842,9 +836,8 @@ end function pgfx_get_colorbar_ticklabel_style(sp) cstr = plot_color(sp[:colorbar_tickfontcolor]) return PGFPlotsX.Options( - "font" => pgfx_font( - sp[:colorbar_tickfontsize], pgfx_thickness_scaling(sp) - ), "color" => cstr, + "font" => pgfx_font(sp[:colorbar_tickfontsize], pgfx_thickness_scaling(sp)), + "color" => cstr, "draw opacity" => alpha(cstr), "rotate" => sp[:colorbar_tickfontrotation], ) @@ -888,12 +881,20 @@ function pgfx_colormap(v::Vector{<:Colorant}) end, "\n") end function pgfx_colormap(cg::ColorGradient) - join(map(1:length(cg)) do i - @sprintf("rgb(%.8f)=(%.8f,%.8f,%.8f)", cg.values[i], red(cg.colors[i]), green(cg.colors[i]), blue(cg.colors[i])) - end, "\n") + join( + map(1:length(cg)) do i + @sprintf( + "rgb(%.8f)=(%.8f,%.8f,%.8f)", + cg.values[i], + red(cg.colors[i]), + green(cg.colors[i]), + blue(cg.colors[i]) + ) + end, + "\n", + ) end - function pgfx_framestyle(style::Symbol) if style in (:box, :axes, :origin, :zerolines, :grid, :none) return style @@ -950,20 +951,20 @@ end function pgfx_should_add_to_legend(series::Series) series.plotattributes[:primary] && - !( - series.plotattributes[:seriestype] in ( - :hexbin, - :bins2d, - :histogram2d, - :hline, - :vline, - :contour, - :contourf, - :contour3d, - :heatmap, - :image, + !( + series.plotattributes[:seriestype] in ( + :hexbin, + :bins2d, + :histogram2d, + :hline, + :vline, + :contour, + :contourf, + :contour3d, + :heatmap, + :image, + ) ) - ) end function pgfx_marker(plotattributes, i = 1) @@ -980,8 +981,9 @@ function pgfx_marker(plotattributes, i = 1) pgfx_thickness_scaling(plotattributes) * 0.75 * _cycle(plotattributes[:markersize], i) - mark_freq = !any(isnan, plotattributes[:y]) && plotattributes[:markershape] isa AVec ? - length(plotattributes[:markershape]) : 1 + mark_freq = + !any(isnan, plotattributes[:y]) && plotattributes[:markershape] isa AVec ? + length(plotattributes[:markershape]) : 1 return PGFPlotsX.Options( "mark" => shape isa Shape ? "PlotsShape$i" : pgfx_get_marker(shape), "mark size" => "$mark_size pt", @@ -1004,12 +1006,21 @@ function pgfx_marker(plotattributes, i = 1) else 0 end, - pgfx_get_linestyle(_cycle(plotattributes[:markerstrokestyle], i)) => nothing, + pgfx_get_linestyle(_cycle(plotattributes[:markerstrokestyle], i)) => + nothing, ), ) end -function pgfx_add_annotation!(o, x, y, val, thickness_scaling = 1; cs = "axis cs:", options = PGFPlotsX.Options()) +function pgfx_add_annotation!( + o, + x, + y, + val, + thickness_scaling = 1; + cs = "axis cs:", + options = PGFPlotsX.Options(), +) # Construct the style string. cstr = val.font.color a = alpha(cstr) @@ -1017,17 +1028,23 @@ function pgfx_add_annotation!(o, x, y, val, thickness_scaling = 1; cs = "axis cs o, join([ "\\node", - sprint(PGFPlotsX.print_tex, merge( - PGFPlotsX.Options( - get((hcenter = "", left = "right", right = "left"), val.font.halign, "") => - nothing, - "color" => cstr, - "draw opacity" => convert(Float16, a), - "rotate" => val.font.rotation, - "font" => pgfx_font(val.font.pointsize, thickness_scaling), + sprint( + PGFPlotsX.print_tex, + merge( + PGFPlotsX.Options( + get( + (hcenter = "", left = "right", right = "left"), + val.font.halign, + "", + ) => nothing, + "color" => cstr, + "draw opacity" => convert(Float16, a), + "rotate" => val.font.rotation, + "font" => pgfx_font(val.font.pointsize, thickness_scaling), + ), + options, ), - options - )), + ), string(" at (", cs, x, ",", y, ") {", val.str, "};"), ]), ) @@ -1097,12 +1114,10 @@ function pgfx_fillrange_series!(axis, series, series_func, i, fillrange, rng) push!(fillrange_opt, "mark" => "none") # no markers on fillranges push!(fillrange_opt, "forget plot" => nothing) opt = series.plotattributes - args = RecipesPipeline.is3d(series) ? (opt[:x][rng], opt[:y][rng], opt[:z][rng]) : + args = + RecipesPipeline.is3d(series) ? (opt[:x][rng], opt[:y][rng], opt[:z][rng]) : (opt[:x][rng], opt[:y][rng]) - push!( - axis, - PGFPlotsX.PlotInc(fillrange_opt, pgfx_fillrange_args(fillrange, args...)), - ) + push!(axis, PGFPlotsX.PlotInc(fillrange_opt, pgfx_fillrange_args(fillrange, args...))) return axis end @@ -1132,8 +1147,8 @@ function pgfx_sanitize_string(s::AbstractString) s = replace(s, r"\\?\{" => "\\{") s = replace(s, r"\\?\}" => "\\}") s = map(split(s, "")) do s - isascii(s) ? s : latexify(s) - end |> join + isascii(s) ? s : latexify(s) + end |> join end @require LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" begin using .LaTeXStrings @@ -1144,60 +1159,58 @@ end end end function pgfx_sanitize_plot!(plt) - for (key, value) in plt.attr - if value isa Union{AbstractString, AbstractVector{<:AbstractString}} - plt.attr[key] = pgfx_sanitize_string.(value) - end + for (key, value) in plt.attr + if value isa Union{AbstractString,AbstractVector{<:AbstractString}} + plt.attr[key] = pgfx_sanitize_string.(value) end - for subplot in plt.subplots - for (key, value) in subplot.attr - if key == :annotations && subplot.attr[:annotations] !== nothing - old_ann = subplot.attr[key] - for i in eachindex(old_ann) - subplot.attr[key][i] = (old_ann[i][1], old_ann[i][2], pgfx_sanitize_string(old_ann[i][3])) - end - elseif value isa Union{AbstractString, AbstractVector{<:AbstractString}} - subplot.attr[key] = pgfx_sanitize_string.(value) + end + for subplot in plt.subplots + for (key, value) in subplot.attr + if key == :annotations && subplot.attr[:annotations] !== nothing + old_ann = subplot.attr[key] + for i in eachindex(old_ann) + subplot.attr[key][i] = + (old_ann[i][1], old_ann[i][2], pgfx_sanitize_string(old_ann[i][3])) end + elseif value isa Union{AbstractString,AbstractVector{<:AbstractString}} + subplot.attr[key] = pgfx_sanitize_string.(value) end end - for series in plt.series_list - for (key, value) in series.plotattributes - if key == :series_annotations && series.plotattributes[:series_annotations] !== nothing - old_ann = series.plotattributes[key].strs - for i in eachindex(old_ann) - series.plotattributes[key].strs[i] = pgfx_sanitize_string(old_ann[i]) - end - elseif value isa Union{AbstractString, AbstractVector{<:AbstractString}} - series.plotattributes[key] = pgfx_sanitize_string.(value) + end + for series in plt.series_list + for (key, value) in series.plotattributes + if key == :series_annotations && + series.plotattributes[:series_annotations] !== nothing + old_ann = series.plotattributes[key].strs + for i in eachindex(old_ann) + series.plotattributes[key].strs[i] = pgfx_sanitize_string(old_ann[i]) end + elseif value isa Union{AbstractString,AbstractVector{<:AbstractString}} + series.plotattributes[key] = pgfx_sanitize_string.(value) end end - ## + end + ## end # -------------------------------------------------------------------------------------- function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) axis = sp[Symbol(letter, :axis)] # turn off scaled ticks + push!(opt, "scaled $(letter) ticks" => "false", string(letter, :label) => axis[:guide]) + tick_color = plot_color(axis[:foreground_color_axis]) push!( opt, - "scaled $(letter) ticks" => "false", - string(letter, :label) => axis[:guide], - ) - tick_color = plot_color(axis[:foreground_color_axis]) - push!(opt, - "$(letter) tick style" => PGFPlotsX.Options( - "color" => color(tick_color), - "opacity" => alpha(tick_color), - ), + "$(letter) tick style" => + PGFPlotsX.Options("color" => color(tick_color), "opacity" => alpha(tick_color)), ) tick_label_color = plot_color(axis[:tickfontcolor]) - push!(opt, + push!( + opt, "$(letter) tick label style" => PGFPlotsX.Options( "color" => color(tick_color), "opacity" => alpha(tick_color), - "rotate" => axis[:rotation] + "rotate" => axis[:rotation], ), ) @@ -1219,7 +1232,7 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) opt, string(letter, "label style") => PGFPlotsX.Options( labelpos => nothing, - "font" => pgfx_font(axis[:guidefontsize], pgfx_thickness_scaling(sp)), + "font" => pgfx_font(axis[:guidefontsize], pgfx_thickness_scaling(sp)), "color" => cstr, "draw opacity" => α, "rotate" => axis[:guidefontrotation], @@ -1233,8 +1246,7 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) scale = axis[:scale] if scale in (:log2, :ln, :log10) push!(opt, string(letter, :mode) => "log") - scale == :ln || - push!(opt, "log basis $letter" => "$(scale == :log2 ? 2 : 10)") + scale == :ln || push!(opt, "log basis $letter" => "$(scale == :log2 ? 2 : 10)") end # ticks on or off @@ -1252,7 +1264,8 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) end # limits - lims = ispolar(sp) && letter == :x ? rad2deg.(axis_limits(sp, :x)) : + lims = + ispolar(sp) && letter == :x ? rad2deg.(axis_limits(sp, :x)) : axis_limits(sp, letter) push!(opt, string(letter, :min) => lims[1], string(letter, :max) => lims[2]) @@ -1263,12 +1276,8 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) tick_values = ispolar(sp) && letter == :x ? [rad2deg.(ticks[1])[3:end]..., 360, 405] : ticks[1] - push!( - opt, - string(letter, "tick") => string("{", join(tick_values, ","), "}"), - ) - if axis[:showaxis] && - axis[:scale] in (:ln, :log2, :log10) && axis[:ticks] == :auto + push!(opt, string(letter, "tick") => string("{", join(tick_values, ","), "}")) + if axis[:showaxis] && axis[:scale] in (:ln, :log2, :log10) && axis[:ticks] == :auto # wrap the power part of label with } tick_labels = Vector{String}(undef, length(ticks[2])) for (i, label) in enumerate(ticks[2]) @@ -1283,25 +1292,20 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) ) elseif axis[:showaxis] tick_labels = - ispolar(sp) && letter == :x ? [ticks[2][3:end]..., "0", "45"] : - ticks[2] + ispolar(sp) && letter == :x ? [ticks[2][3:end]..., "0", "45"] : ticks[2] if axis[:formatter] in (:scientific, :auto) tick_labels = string.("\$", convert_sci_unicode.(tick_labels), "\$") tick_labels = replace.(tick_labels, Ref("×" => "\\times")) end push!( opt, - string(letter, "ticklabels") => - string("{", join(tick_labels, ","), "}"), + string(letter, "ticklabels") => string("{", join(tick_labels, ","), "}"), ) else push!(opt, string(letter, "ticklabels") => "{}") end if axis[:tick_direction] === :none - push!( - opt, - string(letter, "tick style") => "draw=none", - ) + push!(opt, string(letter, "tick style") => "draw=none") else push!( opt, @@ -1309,9 +1313,7 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) (axis[:tick_direction] == :out ? "outside" : "inside"), ) end - push!( - opt, string(letter, "ticklabel style") => pgfx_get_ticklabel_style(sp, axis) - ) + push!(opt, string(letter, "ticklabel style") => pgfx_get_ticklabel_style(sp, axis)) push!( opt, string(letter, " grid style") => pgfx_linestyle( @@ -1335,7 +1337,8 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) minor_ticks push!( opt, - string("extra ", letter, " ticks") => string("{", join(minor_ticks, ","), "}"), + string("extra ", letter, " ticks") => + string("{", join(minor_ticks, ","), "}"), ) push!(opt, string("extra ", letter, " tick labels") => "") push!( @@ -1348,7 +1351,9 @@ function pgfx_axis!(opt::PGFPlotsX.Options, sp::Subplot, letter) axis[:minorgridalpha], axis[:minorgridstyle], ), - "major tick length" => typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 || axis[:minorticks] ? "0.1cm" : "0" + "major tick length" => + typeof(axis[:minorticks]) <: Integer && axis[:minorticks] > 1 || + axis[:minorticks] ? "0.1cm" : "0", ), ) end @@ -1405,7 +1410,8 @@ end # to fit ticks, tick labels, guides, colorbars, etc. function _update_min_padding!(sp::Subplot{PGFPlotsXBackend}) leg = sp[:legend] - if leg in (:best, :outertopright, :outerright, :outerbottomright) || (leg isa Tuple && leg[1] >= 1) + if leg in (:best, :outertopright, :outerright, :outerbottomright) || + (leg isa Tuple && leg[1] >= 1) sp.minpad = (0mm, 0mm, 5mm, 0mm) else sp.minpad = (0mm, 0mm, 0mm, 0mm) @@ -1425,33 +1431,21 @@ function _update_plot_object(plt::Plot{PGFPlotsXBackend}) end for mime in ("application/pdf", "image/svg+xml") - @eval function _show( - io::IO, - mime::MIME{Symbol($mime)}, - plt::Plot{PGFPlotsXBackend}, - ) + @eval function _show(io::IO, mime::MIME{Symbol($mime)}, plt::Plot{PGFPlotsXBackend}) plt.o.was_shown = true show(io, mime, plt.o.the_plot) end end - function _show( - io::IO, - mime::MIME{Symbol("image/png")}, - plt::Plot{PGFPlotsXBackend}, - ) - plt.o.was_shown = true - plt_file = tempname() * ".png" - PGFPlotsX.pgfsave(plt_file, plt.o.the_plot; dpi=plt[:dpi]) - write(io, read(plt_file)) - rm(plt_file; force = true) - end +function _show(io::IO, mime::MIME{Symbol("image/png")}, plt::Plot{PGFPlotsXBackend}) + plt.o.was_shown = true + plt_file = tempname() * ".png" + PGFPlotsX.pgfsave(plt_file, plt.o.the_plot; dpi = plt[:dpi]) + write(io, read(plt_file)) + rm(plt_file; force = true) +end -function _show( - io::IO, - mime::MIME{Symbol("application/x-tex")}, - plt::Plot{PGFPlotsXBackend}, -) +function _show(io::IO, mime::MIME{Symbol("application/x-tex")}, plt::Plot{PGFPlotsXBackend}) plt.o.was_shown = true PGFPlotsX.print_tex( io, diff --git a/src/backends/plotly.jl b/src/backends/plotly.jl index edc9ced9..8a47fc1b 100644 --- a/src/backends/plotly.jl +++ b/src/backends/plotly.jl @@ -7,12 +7,13 @@ function _plotly_framestyle(style::Symbol) return style else default_style = get((semi = :box, origin = :zerolines), style, :axes) - @warn("Framestyle :$style is not supported by Plotly and PlotlyJS. :$default_style was chosen instead.") + @warn( + "Framestyle :$style is not supported by Plotly and PlotlyJS. :$default_style was chosen instead." + ) default_style end end - # -------------------------------------------------------------------------------------- using UUIDs @@ -23,7 +24,7 @@ function labelfunc(scale::Symbol, backend::PlotlyBackend) texfunc = labelfunc_tex(scale) function (x) tex_x = texfunc(x) - sup_x = replace( tex_x, r"\^{(.*)}"=>s"\1" ) + sup_x = replace(tex_x, r"\^{(.*)}" => s"\1") # replace dash with \minus (U+2212) replace(sup_x, "-" => "−") end @@ -32,30 +33,25 @@ end function plotly_font(font::Font, color = font.color) KW( :family => font.family, - :size => round(Int, font.pointsize*1.4), + :size => round(Int, font.pointsize * 1.4), :color => rgba_string(color), ) end - -function plotly_annotation_dict(x, y, val; xref="paper", yref="paper") - KW( - :text => val, - :xref => xref, - :x => x, - :yref => yref, - :y => y, - :showarrow => false, - ) +function plotly_annotation_dict(x, y, val; xref = "paper", yref = "paper") + KW(:text => val, :xref => xref, :x => x, :yref => yref, :y => y, :showarrow => false) end -function plotly_annotation_dict(x, y, ptxt::PlotText; xref="paper", yref="paper") - merge(plotly_annotation_dict(x, y, ptxt.str; xref=xref, yref=yref), KW( - :font => plotly_font(ptxt.font), - :xanchor => ptxt.font.halign == :hcenter ? :center : ptxt.font.halign, - :yanchor => ptxt.font.valign == :vcenter ? :middle : ptxt.font.valign, - :rotation => -ptxt.font.rotation, - )) +function plotly_annotation_dict(x, y, ptxt::PlotText; xref = "paper", yref = "paper") + merge( + plotly_annotation_dict(x, y, ptxt.str; xref = xref, yref = yref), + KW( + :font => plotly_font(ptxt.font), + :xanchor => ptxt.font.halign == :hcenter ? :center : ptxt.font.halign, + :yanchor => ptxt.font.valign == :vcenter ? :middle : ptxt.font.valign, + :rotation => -ptxt.font.rotation, + ), + ) end # function get_annotation_dict_for_arrow(plotattributes::KW, xyprev::Tuple, xy::Tuple, a::Arrow) @@ -100,9 +96,9 @@ function plotly_apply_aspect_ratio(sp::Subplot, plotarea, pcts) if aspect_ratio == :equal aspect_ratio = 1.0 end - xmin,xmax = axis_limits(sp, :x) - ymin,ymax = axis_limits(sp, :y) - want_ratio = ((xmax-xmin) / (ymax-ymin)) / aspect_ratio + xmin, xmax = axis_limits(sp, :x) + ymin, ymax = axis_limits(sp, :y) + want_ratio = ((xmax - xmin) / (ymax - ymin)) / aspect_ratio parea_ratio = width(plotarea) / height(plotarea) if want_ratio > parea_ratio # need to shrink y @@ -118,34 +114,34 @@ function plotly_apply_aspect_ratio(sp::Subplot, plotarea, pcts) pcts end - # this method gets the start/end in percentage of the canvas for this axis direction function plotly_domain(sp::Subplot) figw, figh = sp.plt[:size] - pcts = bbox_to_pcts(sp.plotarea, figw*px, figh*px) + pcts = bbox_to_pcts(sp.plotarea, figw * px, figh * px) pcts = plotly_apply_aspect_ratio(sp, sp.plotarea, pcts) x_domain = [pcts[1], pcts[1] + pcts[3]] y_domain = [pcts[2], pcts[2] + pcts[4]] return x_domain, y_domain end - function plotly_axis(axis, sp, anchor = nothing, domain = nothing) letter = axis[:letter] framestyle = sp[:framestyle] ax = KW( - :visible => framestyle != :none, - :title => axis[:guide], - :showgrid => axis[:grid], - :gridcolor => rgba_string(plot_color(axis[:foreground_color_grid], axis[:gridalpha])), - :gridwidth => axis[:gridlinewidth], - :zeroline => framestyle == :zerolines, + :visible => framestyle != :none, + :title => axis[:guide], + :showgrid => axis[:grid], + :gridcolor => + rgba_string(plot_color(axis[:foreground_color_grid], axis[:gridalpha])), + :gridwidth => axis[:gridlinewidth], + :zeroline => framestyle == :zerolines, :zerolinecolor => rgba_string(axis[:foreground_color_axis]), - :showline => framestyle in (:box, :axes) && axis[:showaxis], - :linecolor => rgba_string(plot_color(axis[:foreground_color_axis])), - :ticks => axis[:tick_direction] === :out ? "outside" : - axis[:tick_direction] === :in ? "inside" : "", - :mirror => framestyle == :box, + :showline => framestyle in (:box, :axes) && axis[:showaxis], + :linecolor => rgba_string(plot_color(axis[:foreground_color_axis])), + :ticks => + axis[:tick_direction] === :out ? "outside" : + axis[:tick_direction] === :in ? "inside" : "", + :mirror => framestyle == :box, :showticklabels => axis[:showaxis], ) if anchor !== nothing @@ -166,7 +162,9 @@ function plotly_axis(axis, sp, anchor = nothing, domain = nothing) if !(axis[:ticks] in (nothing, :none, false)) ax[:titlefont] = plotly_font(guidefont(axis)) ax[:tickfont] = plotly_font(tickfont(axis)) - ax[:tickcolor] = framestyle in (:zerolines, :grid) || !axis[:showaxis] ? rgba_string(invisible()) : rgb_string(axis[:foreground_color_axis]) + ax[:tickcolor] = + framestyle in (:zerolines, :grid) || !axis[:showaxis] ? + rgba_string(invisible()) : rgb_string(axis[:foreground_color_axis]) ax[:linecolor] = rgba_string(axis[:foreground_color_axis]) # ticks @@ -195,10 +193,7 @@ function plotly_axis(axis, sp, anchor = nothing, domain = nothing) end function plotly_polaraxis(sp::Subplot, axis::Axis) - ax = KW( - :visible => axis[:showaxis], - :showline => axis[:grid], - ) + ax = KW(:visible => axis[:showaxis], :showline => axis[:grid]) if axis[:letter] == :x ax[:range] = rad2deg.(axis_limits(sp, :x)) @@ -216,7 +211,7 @@ function plotly_layout(plt::Plot) w, h = plt[:size] plotattributes_out[:width], plotattributes_out[:height] = w, h plotattributes_out[:paper_bgcolor] = rgba_string(plt[:background_color_outside]) - plotattributes_out[:margin] = KW(:l=>0, :b=>20, :r=>0, :t=>20) + plotattributes_out[:margin] = KW(:l => 0, :b => 20, :r => 0, :t => 20) plotattributes_out[:annotations] = KW[] @@ -237,9 +232,12 @@ function plotly_layout(plt::Plot) else 0.5 * (left(bb) + right(bb)) end - titlex, titley = xy_mm_to_pcts(xmm, top(bbox(sp)), w*px, h*px) + titlex, titley = xy_mm_to_pcts(xmm, top(bbox(sp)), w * px, h * px) title_font = font(titlefont(sp), :top) - push!(plotattributes_out[:annotations], plotly_annotation_dict(titlex, titley, text(sp[:title], title_font))) + push!( + plotattributes_out[:annotations], + plotly_annotation_dict(titlex, titley, text(sp[:title], title_font)), + ) end plotattributes_out[:plot_bgcolor] = rgba_string(sp[:background_color_inside]) @@ -248,8 +246,10 @@ function plotly_layout(plt::Plot) sp[:framestyle] = _plotly_framestyle(sp[:framestyle]) if ispolar(sp) - plotattributes_out[Symbol("angularaxis$(spidx)")] = plotly_polaraxis(sp, sp[:xaxis]) - plotattributes_out[Symbol("radialaxis$(spidx)")] = plotly_polaraxis(sp, sp[:yaxis]) + plotattributes_out[Symbol("angularaxis$(spidx)")] = + plotly_polaraxis(sp, sp[:xaxis]) + plotattributes_out[Symbol("radialaxis$(spidx)")] = + plotly_polaraxis(sp, sp[:yaxis]) else x_domain, y_domain = plotly_domain(sp) if RecipesPipeline.is3d(sp) @@ -264,15 +264,15 @@ function plotly_layout(plt::Plot) #2.6 multiplier set camera eye such that whole plot can be seen :camera => KW( :eye => KW( - :x => cosd(azim)*sind(theta)*2.6, - :y => sind(azim)*sind(theta)*2.6, - :z => cosd(theta)*2.6, + :x => cosd(azim) * sind(theta) * 2.6, + :y => sind(azim) * sind(theta) * 2.6, + :z => cosd(theta) * 2.6, ), ), ) else plotattributes_out[Symbol("xaxis$(x_idx)")] = - plotly_axis(sp[:xaxis], sp, string("y", y_idx) , x_domain) + plotly_axis(sp[:xaxis], sp, string("y", y_idx), x_domain) # don't allow yaxis to be reupdated/reanchored in a linked subplot if spidx == y_idx plotattributes_out[Symbol("yaxis$(y_idx)")] = @@ -286,16 +286,28 @@ function plotly_layout(plt::Plot) # annotations for ann in sp[:annotations] - append!(plotattributes_out[:annotations], KW[plotly_annotation_dict(locate_annotation(sp, ann...)...; xref = "x$(x_idx)", yref = "y$(y_idx)")]) + append!( + plotattributes_out[:annotations], + KW[plotly_annotation_dict( + locate_annotation(sp, ann...)...; + xref = "x$(x_idx)", + yref = "y$(y_idx)", + )], + ) end # series_annotations for series in series_list(sp) anns = series[:series_annotations] - for (xi,yi,str,fnt) in EachAnn(anns, series[:x], series[:y]) - push!(plotattributes_out[:annotations], plotly_annotation_dict( - xi, - yi, - PlotText(str,fnt); xref = "x$(x_idx)", yref = "y$(y_idx)") + for (xi, yi, str, fnt) in EachAnn(anns, series[:x], series[:y]) + push!( + plotattributes_out[:annotations], + plotly_annotation_dict( + xi, + yi, + PlotText(str, fnt); + xref = "x$(x_idx)", + yref = "y$(y_idx)", + ), ) end end @@ -318,26 +330,25 @@ function plotly_layout(plt::Plot) end # turn off hover if nothing's using it - if all(series -> series.plotattributes[:hover] in (false,:none), plt.series_list) + if all(series -> series.plotattributes[:hover] in (false, :none), plt.series_list) plotattributes_out[:hovermode] = "none" end plotattributes_out = recursive_merge(plotattributes_out, plt.attr[:extra_plot_kwargs]) end - function plotly_add_legend!(plotattributes_out::KW, sp::Subplot) plotattributes_out[:showlegend] = sp[:legend] != :none legend_position = plotly_legend_pos(sp[:legend]) if sp[:legend] != :none plotattributes_out[:legend] = KW( - :bgcolor => rgba_string(sp[:background_color_legend]), + :bgcolor => rgba_string(sp[:background_color_legend]), :bordercolor => rgba_string(sp[:foreground_color_legend]), :borderwidth => 1, :traceorder => "normal", :xanchor => legend_position.xanchor, :yanchor => legend_position.yanchor, - :font => plotly_font(legendfont(sp)), + :font => plotly_font(legendfont(sp)), :tracegroupgap => 0, :x => legend_position.coords[1], :y => legend_position.coords[2], @@ -361,55 +372,71 @@ function plotly_legend_pos(pos::Symbol) xouterright = 1.05 xouterleft = -0.15 plotly_legend_position_mapping = ( - right = (coords = [1.0, ycenter], xanchor = "right", yanchor = "middle"), - left = (coords = [xleft, ycenter], xanchor = "left", yanchor = "middle"), - top = (coords = [xcenter, ytop], xanchor = "center", yanchor = "top"), - bottom = (coords = [xcenter, ybot], xanchor = "center", yanchor = "bottom"), - bottomleft = (coords = [xleft, ybot], xanchor = "left", yanchor = "bottom"), + right = (coords = [1.0, ycenter], xanchor = "right", yanchor = "middle"), + left = (coords = [xleft, ycenter], xanchor = "left", yanchor = "middle"), + top = (coords = [xcenter, ytop], xanchor = "center", yanchor = "top"), + bottom = (coords = [xcenter, ybot], xanchor = "center", yanchor = "bottom"), + bottomleft = (coords = [xleft, ybot], xanchor = "left", yanchor = "bottom"), bottomright = (coords = [1.0, ybot], xanchor = "right", yanchor = "bottom"), - topright = (coords = [1.0, 1.0], xanchor = "right", yanchor = "top"), - topleft = (coords = [xleft, 1.0], xanchor = "left", yanchor = "top"), - outertop =(coords = [center, youtertop ], xanchor = "upper", yanchor = "middle"), - outerbottom =(coords = [center, youterbot], xanchor = "lower", yanchor = "middle"), - outerleft =(coords = [xouterleft, center], xanchor = "left", yanchor = "top"), - outerright =(coords = [xouterright, center], xanchor = "right", yanchor = "top"), - outertopleft =(coords = [xouterleft, ytop], xanchor = "upper", yanchor = "left"), - outertopright = (coords = [xouterright, ytop], xanchor = "upper", yanchor = "right"), - outerbottomleft =(coords = [xouterleft, ybot], xanchor = "lower", yanchor = "left"), - outerbottomright =(coords = [xouterright, ybot], xanchor = "lower", yanchor = "right"), - default = (coords = [1.0, 1.0], xanchor = "auto", yanchor = "auto") + topright = (coords = [1.0, 1.0], xanchor = "right", yanchor = "top"), + topleft = (coords = [xleft, 1.0], xanchor = "left", yanchor = "top"), + outertop = (coords = [center, youtertop], xanchor = "upper", yanchor = "middle"), + outerbottom = (coords = [center, youterbot], xanchor = "lower", yanchor = "middle"), + outerleft = (coords = [xouterleft, center], xanchor = "left", yanchor = "top"), + outerright = (coords = [xouterright, center], xanchor = "right", yanchor = "top"), + outertopleft = (coords = [xouterleft, ytop], xanchor = "upper", yanchor = "left"), + outertopright = ( + coords = [xouterright, ytop], + xanchor = "upper", + yanchor = "right", + ), + outerbottomleft = ( + coords = [xouterleft, ybot], + xanchor = "lower", + yanchor = "left", + ), + outerbottomright = ( + coords = [xouterright, ybot], + xanchor = "lower", + yanchor = "right", + ), + default = (coords = [1.0, 1.0], xanchor = "auto", yanchor = "auto"), ) - legend_position = get(plotly_legend_position_mapping, pos, plotly_legend_position_mapping.default) + legend_position = + get(plotly_legend_position_mapping, pos, plotly_legend_position_mapping.default) end -plotly_legend_pos(v::Tuple{S,T}) where {S<:Real, T<:Real} = (coords=v, xanchor="left", yanchor="top") +plotly_legend_pos(v::Tuple{S,T}) where {S<:Real,T<:Real} = + (coords = v, xanchor = "left", yanchor = "top") plotly_legend_pos(theta::Real) = plotly_legend_pos((theta, :inner)) -function plotly_legend_pos(v::Tuple{S,Symbol}) where S<:Real - (s,c) = sincosd(v[1]) +function plotly_legend_pos(v::Tuple{S,Symbol}) where {S<:Real} + (s, c) = sincosd(v[1]) xanchors = ["left", "center", "right"] yanchors = ["bottom", "middle", "top"] if v[2] === :inner - rect = (0.07,0.5,1.0,0.07,0.52,1.0) + rect = (0.07, 0.5, 1.0, 0.07, 0.52, 1.0) xanchor = xanchors[legend_anchor_index(c)] yanchor = yanchors[legend_anchor_index(s)] else - rect = (-0.15,0.5,1.05,-0.15,0.52,1.1) - xanchor = xanchors[4-legend_anchor_index(c)] - yanchor = yanchors[4-legend_anchor_index(s)] + rect = (-0.15, 0.5, 1.05, -0.15, 0.52, 1.1) + xanchor = xanchors[4 - legend_anchor_index(c)] + yanchor = yanchors[4 - legend_anchor_index(s)] end - return (coords=legend_pos_from_angle(v[1],rect...), xanchor=xanchor, yanchor=yanchor) + return ( + coords = legend_pos_from_angle(v[1], rect...), + xanchor = xanchor, + yanchor = yanchor, + ) end - function plotly_layout_json(plt::Plot) JSON.json(plotly_layout(plt), 4) end - plotly_colorscale(cg::ColorGradient, α = nothing) = [[v, rgba_string(plot_color(cg.colors[v], α))] for v in cg.values] function plotly_colorscale(c::AbstractVector{<:Colorant}, α = nothing) @@ -428,13 +455,12 @@ function plotly_colorscale(cg::PlotUtils.CategoricalColorGradient, α = nothing) cinds = repeat(1:n, inner = 2) vinds = vcat((i:(i + 1) for i in 1:n)...) return [ - [cg.values[vinds[i]], rgba_string(plot_color(color_list(cg)[cinds[i]], α))] - for i in eachindex(cinds) + [cg.values[vinds[i]], rgba_string(plot_color(color_list(cg)[cinds[i]], α))] for + i in eachindex(cinds) ] end plotly_colorscale(c, α = nothing) = plotly_colorscale(_as_gradient(c), α) - get_plotly_marker(k, def) = get( ( rect = "square", @@ -461,12 +487,11 @@ function plotly_link_indicies(plt::Plot, sp::Subplot) x_idx, y_idx end - # the Shape contructor will automatically close the shape. since we need it closed, # we split by NaNs and then construct/destruct the shapes to get the closed coords function plotly_close_shapes(x, y) xs, ys = nansplit(x), nansplit(y) - for i=eachindex(xs) + for i in eachindex(xs) shape = Shape(xs[i], ys[i]) xs[i], ys[i] = coords(shape) end @@ -479,7 +504,7 @@ function plotly_data(series::Series, letter::Symbol, data) data = if axis[:ticks] == :native && data !== nothing plotly_native_data(axis, data) else - data + data end if series[:seriestype] in (:heatmap, :contour, :surface, :wireframe, :mesh3d) @@ -512,7 +537,9 @@ function plotly_convert_to_datetime(x::AbstractArray, formatter::Function) elseif formatter == timeformatter map(xi -> string(Dates.Date(Dates.now()), " ", formatter(xi)), x) else - error("Invalid DateTime formatter. Expected Plots.datetime/date/time formatter but got $formatter") + error( + "Invalid DateTime formatter. Expected Plots.datetime/date/time formatter but got $formatter", + ) end end #ensures that a gradient is called if a single color is supplied where a gradient is needed (e.g. if a series recipe defines marker_z) @@ -550,11 +577,12 @@ function plotly_series(plt::Plot, series::Series) x, y = straightline_data(series, 100) z = series[:z] else - x, y, z = series[:x], series[:y], series[:z] + x, y, z = series[:x], series[:y], series[:z] end - x, y, z = (plotly_data(series, letter, data) - for (letter, data) in zip((:x, :y, :z), (x, y, z)) + x, y, z = ( + plotly_data(series, letter, data) for + (letter, data) in zip((:x, :y, :z), (x, y, z)) ) plotattributes_out[:name] = series[:label] @@ -562,7 +590,8 @@ function plotly_series(plt::Plot, series::Series) isscatter = st in (:scatter, :scatter3d, :scattergl) hasmarker = isscatter || series[:markershape] != :none hasline = st in (:path, :path3d, :straightline) - hasfillrange = st in (:path, :scatter, :scattergl, :straightline) && + hasfillrange = + st in (:path, :scatter, :scattergl, :straightline) && (isa(series[:fillrange], AbstractVector) || isa(series[:fillrange], Tuple)) plotattributes_out[:colorbar] = KW(:title => sp[:colorbar_title]) @@ -580,7 +609,8 @@ function plotly_series(plt::Plot, series::Series) y = heatmap_edges(y, sp[:yaxis][:scale]) plotattributes_out[:type] = "heatmap" plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = x, y, z - plotattributes_out[:colorscale] = plotly_colorscale(series[:fillcolor], series[:fillalpha]) + plotattributes_out[:colorscale] = + plotly_colorscale(series[:fillcolor], series[:fillalpha]) plotattributes_out[:showscale] = hascolorbar(sp) elseif st == :contour @@ -588,24 +618,31 @@ function plotly_series(plt::Plot, series::Series) plotattributes_out[:type] = "contour" plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = x, y, z plotattributes_out[:ncontours] = series[:levels] + 2 - plotattributes_out[:contours] = KW(:coloring => filled ? "fill" : "lines", :showlabels => series[:contour_labels] == true) - plotattributes_out[:colorscale] = plotly_colorscale(series[:linecolor], series[:linealpha]) + plotattributes_out[:contours] = KW( + :coloring => filled ? "fill" : "lines", + :showlabels => series[:contour_labels] == true, + ) + plotattributes_out[:colorscale] = + plotly_colorscale(series[:linecolor], series[:linealpha]) plotattributes_out[:showscale] = hascolorbar(sp) && hascolorbar(series) elseif st in (:surface, :wireframe) - plotattributes_out[:type] = "surface" + plotattributes_out[:type] = "surface" plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = x, y, z if st == :wireframe plotattributes_out[:hidesurface] = true wirelines = KW( :show => true, - :color => rgba_string(plot_color(series[:linecolor], series[:linealpha])), + :color => + rgba_string(plot_color(series[:linecolor], series[:linealpha])), :highlightwidth => series[:linewidth], ) - plotattributes_out[:contours] = KW(:x => wirelines, :y => wirelines, :z => wirelines) + plotattributes_out[:contours] = + KW(:x => wirelines, :y => wirelines, :z => wirelines) plotattributes_out[:showscale] = false else - plotattributes_out[:colorscale] = plotly_colorscale(series[:fillcolor], series[:fillalpha]) + plotattributes_out[:colorscale] = + plotly_colorscale(series[:fillcolor], series[:fillalpha]) plotattributes_out[:opacity] = series[:fillalpha] if series[:fill_z] !== nothing plotattributes_out[:surfacecolor] = handle_surface(series[:fill_z]) @@ -613,24 +650,34 @@ function plotly_series(plt::Plot, series::Series) plotattributes_out[:showscale] = hascolorbar(sp) end elseif st == :mesh3d - plotattributes_out[:type] = "mesh3d" + plotattributes_out[:type] = "mesh3d" plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = x, y, z - if series[:connections] !== nothing - if typeof(series[:connections]) <: Tuple{Array,Array,Array} - i,j,k = series[:connections] - if !(length(i) == length(j) == length(k)) - throw(ArgumentError("Argument connections must consist of equally sized arrays.")) - end - plotattributes_out[:i] = i - plotattributes_out[:j] = j - plotattributes_out[:k] = k - else - throw(ArgumentError("Argument connections has to be a tuple of three arrays.")) - end - end - plotattributes_out[:colorscale] = plotly_colorscale(series[:fillcolor], series[:fillalpha]) - plotattributes_out[:color] = rgba_string(plot_color(series[:fillcolor], series[:fillalpha])) + if series[:connections] !== nothing + if typeof(series[:connections]) <: Tuple{Array,Array,Array} + i, j, k = series[:connections] + if !(length(i) == length(j) == length(k)) + throw( + ArgumentError( + "Argument connections must consist of equally sized arrays.", + ), + ) + end + plotattributes_out[:i] = i + plotattributes_out[:j] = j + plotattributes_out[:k] = k + else + throw( + ArgumentError( + "Argument connections has to be a tuple of three arrays.", + ), + ) + end + end + plotattributes_out[:colorscale] = + plotly_colorscale(series[:fillcolor], series[:fillalpha]) + plotattributes_out[:color] = + rgba_string(plot_color(series[:fillcolor], series[:fillalpha])) plotattributes_out[:opacity] = series[:fillalpha] if series[:fill_z] !== nothing plotattributes_out[:surfacecolor] = handle_surface(series[:fill_z]) @@ -645,12 +692,25 @@ function plotly_series(plt::Plot, series::Series) if hasmarker inds = eachindex(x) plotattributes_out[:marker] = KW( - :symbol => get_plotly_marker(series[:markershape], string(series[:markershape])), + :symbol => + get_plotly_marker(series[:markershape], string(series[:markershape])), # :opacity => series[:markeralpha], :size => 2 * _cycle(series[:markersize], inds), - :color => rgba_string.(plot_color.(get_markercolor.(series, inds), get_markeralpha.(series, inds))), + :color => + rgba_string.( + plot_color.( + get_markercolor.(series, inds), + get_markeralpha.(series, inds), + ), + ), :line => KW( - :color => rgba_string.(plot_color.(get_markerstrokecolor.(series, inds), get_markerstrokealpha.(series, inds))), + :color => + rgba_string.( + plot_color.( + get_markerstrokecolor.(series, inds), + get_markerstrokealpha.(series, inds), + ), + ), :width => _cycle(series[:markerstrokewidth], inds), ), ) @@ -663,7 +723,7 @@ function plotly_series(plt::Plot, series::Series) end function plotly_series_shapes(plt::Plot, series::Series, clims) - segments = series_segments(series; check=true) + segments = series_segments(series; check = true) plotattributes_outs = Vector{KW}(undef, length(segments)) # TODO: create a plotattributes_out for each polygon @@ -678,8 +738,9 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) :legendgroup => series[:label], ) - x, y = (plotly_data(series, letter, data) - for (letter, data) in zip((:x, :y), shape_data(series, 100)) + x, y = ( + plotly_data(series, letter, data) for + (letter, data) in zip((:x, :y), shape_data(series, 100)) ) for (k, segment) in enumerate(segments) @@ -687,22 +748,29 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) length(rng) < 2 && continue # to draw polygons, we actually draw lines with fill - plotattributes_out = merge(plotattributes_base, KW( - :type => "scatter", - :mode => "lines", - :x => vcat(x[rng], x[rng[1]]), - :y => vcat(y[rng], y[rng[1]]), - :fill => "tozeroy", - :fillcolor => rgba_string(plot_color(get_fillcolor(series, clims, i), get_fillalpha(series, i))), - )) + plotattributes_out = merge( + plotattributes_base, + KW( + :type => "scatter", + :mode => "lines", + :x => vcat(x[rng], x[rng[1]]), + :y => vcat(y[rng], y[rng[1]]), + :fill => "tozeroy", + :fillcolor => rgba_string( + plot_color(get_fillcolor(series, clims, i), get_fillalpha(series, i)), + ), + ), + ) if series[:markerstrokewidth] > 0 plotattributes_out[:line] = KW( - :color => rgba_string(plot_color(get_linecolor(series, clims, i), get_linealpha(series, i))), + :color => rgba_string( + plot_color(get_linecolor(series, clims, i), get_linealpha(series, i)), + ), :width => get_linewidth(series, i), :dash => string(get_linestyle(series, i)), ) end - plotattributes_out[:showlegend] = k==1 ? should_add_to_legend(series) : false + plotattributes_out[:showlegend] = k == 1 ? should_add_to_legend(series) : false plotly_polar!(plotattributes_out, series) plotly_hover!(plotattributes_out, _cycle(series[:hover], i)) plotattributes_outs[k] = plotattributes_out @@ -712,7 +780,10 @@ function plotly_series_shapes(plt::Plot, series::Series, clims) elseif series[:line_z] !== nothing push!(plotattributes_outs, plotly_colorbar_hack(series, plotattributes_base, :line)) elseif series[:marker_z] !== nothing - push!(plotattributes_outs, plotly_colorbar_hack(series, plotattributes_base, :marker)) + push!( + plotattributes_outs, + plotly_colorbar_hack(series, plotattributes_base, :marker), + ) end plotattributes_outs end @@ -723,37 +794,46 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z isscatter = st in (:scatter, :scatter3d, :scattergl) hasmarker = isscatter || series[:markershape] != :none hasline = st in (:path, :path3d, :straightline) - hasfillrange = st in (:path, :scatter, :scattergl, :straightline) && + hasfillrange = + st in (:path, :scatter, :scattergl, :straightline) && (isa(series[:fillrange], AbstractVector) || isa(series[:fillrange], Tuple)) segments = collect(series_segments(series, st)) - plotattributes_outs = fill(KW(), (hasfillrange ? 2 : 1 ) * length(segments)) + plotattributes_outs = fill(KW(), (hasfillrange ? 2 : 1) * length(segments)) - needs_scatter_fix = !isscatter && hasmarker && !any(isnan,y) && length(segments) > 1 + needs_scatter_fix = !isscatter && hasmarker && !any(isnan, y) && length(segments) > 1 for (k, segment) in enumerate(segments) i, rng = segment.attr_index, segment.range - + plotattributes_out = deepcopy(plotattributes_base) - plotattributes_out[:showlegend] = k==1 ? should_add_to_legend(series) : false + plotattributes_out[:showlegend] = k == 1 ? should_add_to_legend(series) : false plotattributes_out[:legendgroup] = series[:label] # set the type if st in (:path, :scatter, :scattergl, :straightline) - plotattributes_out[:type] = st==:scattergl ? "scattergl" : "scatter" + plotattributes_out[:type] = st == :scattergl ? "scattergl" : "scatter" plotattributes_out[:mode] = if hasmarker hasline ? "lines+markers" : "markers" else hasline ? "lines" : "none" end - if series[:fillrange] == true || series[:fillrange] == 0 || isa(series[:fillrange], Tuple) + if series[:fillrange] == true || + series[:fillrange] == 0 || + isa(series[:fillrange], Tuple) plotattributes_out[:fill] = "tozeroy" - plotattributes_out[:fillcolor] = rgba_string(plot_color(get_fillcolor(series, clims, i), get_fillalpha(series, i))) - elseif typeof(series[:fillrange]) <: Union{AbstractVector{<:Real}, Real} + plotattributes_out[:fillcolor] = rgba_string( + plot_color(get_fillcolor(series, clims, i), get_fillalpha(series, i)), + ) + elseif typeof(series[:fillrange]) <: Union{AbstractVector{<:Real},Real} plotattributes_out[:fill] = "tonexty" - plotattributes_out[:fillcolor] = rgba_string(plot_color(get_fillcolor(series, clims, i), get_fillalpha(series, i))) + plotattributes_out[:fillcolor] = rgba_string( + plot_color(get_fillcolor(series, clims, i), get_fillalpha(series, i)), + ) elseif !(series[:fillrange] in (false, nothing)) - @warn("fillrange ignored... plotly only supports filling to zero and to a vector of values. fillrange: $(series[:fillrange])") + @warn( + "fillrange ignored... plotly only supports filling to zero and to a vector of values. fillrange: $(series[:fillrange])" + ) end plotattributes_out[:x], plotattributes_out[:y] = x[rng], y[rng] @@ -764,20 +844,32 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z else hasline ? "lines" : "none" end - plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = x[rng], y[rng], z[rng] + plotattributes_out[:x], plotattributes_out[:y], plotattributes_out[:z] = + x[rng], y[rng], z[rng] end # add "marker" if hasmarker - mcolor = rgba_string(plot_color(get_markercolor(series, clims, i), get_markeralpha(series, i))) - lcolor = rgba_string(plot_color(get_markerstrokecolor(series, i), get_markerstrokealpha(series, i))) + mcolor = rgba_string( + plot_color(get_markercolor(series, clims, i), get_markeralpha(series, i)), + ) + lcolor = rgba_string( + plot_color( + get_markerstrokecolor(series, i), + get_markerstrokealpha(series, i), + ), + ) plotattributes_out[:marker] = KW( - :symbol => get_plotly_marker(_cycle(series[:markershape], i), string(_cycle(series[:markershape], i))), + :symbol => get_plotly_marker( + _cycle(series[:markershape], i), + string(_cycle(series[:markershape], i)), + ), # :opacity => needs_scatter_fix ? [1, 0] : 1, :size => 2 * _cycle(series[:markersize], i), :color => needs_scatter_fix ? [mcolor, "rgba(0, 0, 0, 0.000)"] : mcolor, :line => KW( - :color => needs_scatter_fix ? [lcolor, "rgba(0, 0, 0, 0.000)"] : lcolor, + :color => + needs_scatter_fix ? [lcolor, "rgba(0, 0, 0, 0.000)"] : lcolor, :width => _cycle(series[:markerstrokewidth], i), ), ) @@ -786,7 +878,9 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z # add "line" if hasline plotattributes_out[:line] = KW( - :color => rgba_string(plot_color(get_linecolor(series, clims, i), get_linealpha(series, i))), + :color => rgba_string( + plot_color(get_linecolor(series, clims, i), get_linealpha(series, i)), + ), :width => get_linewidth(series, i), :shape => if st == :steppre "vh" @@ -813,8 +907,12 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z if typeof(series[:fillrange]) <: Real series[:fillrange] = fill(series[:fillrange], length(rng)) elseif typeof(series[:fillrange]) <: Tuple - f1 = typeof(series[:fillrange][1]) <: Real ? fill(series[:fillrange][1], length(rng)) : series[:fillrange][1][rng] - f2 = typeof(series[:fillrange][2]) <: Real ? fill(series[:fillrange][2], length(rng)) : series[:fillrange][2][rng] + f1 = + typeof(series[:fillrange][1]) <: Real ? + fill(series[:fillrange][1], length(rng)) : series[:fillrange][1][rng] + f2 = + typeof(series[:fillrange][2]) <: Real ? + fill(series[:fillrange][2], length(rng)) : series[:fillrange][2][rng] series[:fillrange] = (f1, f2) end if isa(series[:fillrange], AbstractVector) @@ -824,13 +922,15 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z else # if fillrange is a tuple with upper and lower limit, plotattributes_out_fillrange # is the series that will do the filling - plotattributes_out_fillrange[:x], plotattributes_out_fillrange[:y] = concatenate_fillrange(x[rng], series[:fillrange]) + plotattributes_out_fillrange[:x], plotattributes_out_fillrange[:y] = + concatenate_fillrange(x[rng], series[:fillrange]) plotattributes_out_fillrange[:line][:width] = 0 delete!(plotattributes_out, :fill) delete!(plotattributes_out, :fillcolor) end - plotattributes_outs[(2k-1):(2k)] = [plotattributes_out_fillrange, plotattributes_out] + plotattributes_outs[(2k - 1):(2k)] = + [plotattributes_out_fillrange, plotattributes_out] else plotattributes_outs[k] = plotattributes_out end @@ -841,7 +941,10 @@ function plotly_series_segments(series::Series, plotattributes_base::KW, x, y, z elseif series[:fill_z] !== nothing push!(plotattributes_outs, plotly_colorbar_hack(series, plotattributes_base, :fill)) elseif series[:marker_z] !== nothing - push!(plotattributes_outs, plotly_colorbar_hack(series, plotattributes_base, :marker)) + push!( + plotattributes_outs, + plotly_colorbar_hack(series, plotattributes_base, :marker), + ) end plotattributes_outs @@ -871,7 +974,6 @@ function plotly_colorbar_hack(series::Series, plotattributes_base::KW, sym::Symb return plotattributes_out end - function plotly_polar!(plotattributes_out::KW, series::Series) # convert polar plots x/y to theta/radius if ispolar(series[:subplot]) @@ -910,11 +1012,15 @@ html_body(plt::Plot{PlotlyBackend}) = plotly_html_body(plt) function plotly_html_head(plt::Plot) plotly = - use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : + "https://cdn.plot.ly/$(_plotly_min_js_filename)" include_mathjax = get(plt[:extra_plot_kwargs], :include_mathjax, "") - mathjax_file = include_mathjax != "cdn" ? ("file://" * include_mathjax) : "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" - mathjax_head = include_mathjax == "" ? "" : "\n\t\t" + mathjax_file = + include_mathjax != "cdn" ? ("file://" * include_mathjax) : + "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML" + mathjax_head = + include_mathjax == "" ? "" : "\n\t\t" if isijulia() mathjax_head @@ -934,8 +1040,9 @@ function plotly_html_body(plt, style = nothing) if isijulia() # require.js adds .js automatically plotly_no_ext = - use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : "https://cdn.plot.ly/$(_plotly_min_js_filename)" - plotly_no_ext = plotly_no_ext[1:end-3] + use_local_dependencies[] ? ("file:///" * plotly_local_file_path[]) : + "https://cdn.plot.ly/$(_plotly_min_js_filename)" + plotly_no_ext = plotly_no_ext[1:(end - 3)] requirejs_prefix = """ requirejs.config({ @@ -984,12 +1091,10 @@ function _show(io::IO, ::MIME"application/vnd.plotly.v1+json", plot::Plot{Plotly plotly_show_js(io, plot) end - function _show(io::IO, ::MIME"text/html", plt::Plot{PlotlyBackend}) write(io, embeddable_html(plt)) end - function _display(plt::Plot{PlotlyBackend}) standalone_html_window(plt) end diff --git a/src/backends/plotlyjs.jl b/src/backends/plotlyjs.jl index 374bc58f..8dfc373e 100644 --- a/src/backends/plotlyjs.jl +++ b/src/backends/plotlyjs.jl @@ -25,16 +25,19 @@ for (mime, fmt) in ( "image/svg+xml" => "svg", "image/eps" => "eps", ) - @eval _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{PlotlyJSBackend}) = PlotlyJS.savefig(io, plotlyjs_syncplot(plt), format = $fmt) + @eval _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{PlotlyJSBackend}) = + PlotlyJS.savefig(io, plotlyjs_syncplot(plt), format = $fmt) end # Use the Plotly implementation for json and html: -_show(io::IO, mime::MIME"application/vnd.plotly.v1+json", plt::Plot{PlotlyJSBackend}) = plotly_show_js(io, plt) +_show(io::IO, mime::MIME"application/vnd.plotly.v1+json", plt::Plot{PlotlyJSBackend}) = + plotly_show_js(io, plt) html_head(plt::Plot{PlotlyJSBackend}) = plotly_html_head(plt) html_body(plt::Plot{PlotlyJSBackend}) = plotly_html_body(plt) -_show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = write(io, embeddable_html(plt)) +_show(io::IO, ::MIME"text/html", plt::Plot{PlotlyJSBackend}) = + write(io, embeddable_html(plt)) _display(plt::Plot{PlotlyJSBackend}) = display(plotlyjs_syncplot(plt)) diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index f46de620..2ef25820 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -3,7 +3,6 @@ is_marker_supported(::PyPlotBackend, shape::Shape) = true - # -------------------------------------------------------------------------------------- # problem: https://github.com/tbreloff/Plots.jl/issues/308 @@ -19,16 +18,17 @@ pyfont = PyPlot.pyimport("matplotlib.font_manager") pyticker = PyPlot.pyimport("matplotlib.ticker") pycmap = PyPlot.pyimport("matplotlib.cm") pynp = PyPlot.pyimport("numpy") -pynp."seterr"(invalid="ignore") +pynp."seterr"(invalid = "ignore") pytransforms = PyPlot.pyimport("matplotlib.transforms") pycollections = PyPlot.pyimport("matplotlib.collections") pyart3d = PyPlot.art3D pyrcparams = PyPlot.PyDict(PyPlot.matplotlib."rcParams") - # "support" matplotlib v1.5 set_facecolor_sym = if PyPlot.version < v"2" - @warn("You are using Matplotlib $(PyPlot.version), which is no longer officialy supported by the Plots community. To ensure smooth Plots.jl integration update your Matplotlib library to a version >= 2.0.0") + @warn( + "You are using Matplotlib $(PyPlot.version), which is no longer officialy supported by the Plots community. To ensure smooth Plots.jl integration update your Matplotlib library to a version >= 2.0.0" + ) :set_axis_bgcolor else :set_facecolor @@ -39,7 +39,6 @@ if !isdefined(PyPlot.PyCall, :_setproperty!) @warn "Plots no longer supports PyCall < 1.90.0 and PyPlot < 2.8.0. Either update PyCall and PyPlot or pin Plots to a version <= 0.23.2." end - # # convert colorant to 4-tuple RGBA # py_color(c::Colorant, α=nothing) = map(f->float(f(convertColor(c,α))), (red, green, blue, alpha)) # py_color(cvec::ColorVector, α=nothing) = map(py_color, convertColor(cvec, α).v) @@ -73,23 +72,22 @@ py_color(c::Colorant, α) = py_color(plot_color(c, α)) function py_colormap(cg::ColorGradient) pyvals = collect(zip(cg.values, py_color(PlotUtils.color_list(cg)))) cm = pycolors."LinearSegmentedColormap"."from_list"("tmp", pyvals) - cm."set_bad"(color=(0,0,0,0.0), alpha=0.0) + cm."set_bad"(color = (0, 0, 0, 0.0), alpha = 0.0) cm end function py_colormap(cg::PlotUtils.CategoricalColorGradient) r = range(0, stop = 1, length = 256) pyvals = collect(zip(r, py_color(cg[r]))) cm = pycolors."LinearSegmentedColormap"."from_list"("tmp", pyvals) - cm."set_bad"(color=(0,0,0,0.0), alpha=0.0) + cm."set_bad"(color = (0, 0, 0, 0.0), alpha = 0.0) cm end py_colormap(c) = py_colormap(_as_gradient(c)) - function py_shading(c, z) cmap = py_colormap(c) - ls = pycolors."LightSource"(270,45) - ls."shade"(z, cmap, vert_exag=0.1, blend_mode="soft") + ls = pycolors."LightSource"(270, 45) + ls."shade"(z, cmap, vert_exag = 0.1, blend_mode = "soft") end # get the style (solid, dashed, etc) @@ -106,12 +104,12 @@ end function py_marker(marker::Shape) x, y = coords(marker) n = length(x) - mat = zeros(n+1,2) - for i=1:n - mat[i,1] = x[i] - mat[i,2] = y[i] + mat = zeros(n + 1, 2) + for i in 1:n + mat[i, 1] = x[i] + mat[i, 2] = y[i] end - mat[n+1,:] = mat[1,:] + mat[n + 1, :] = mat[1, :] pypath."Path"(mat) end @@ -199,22 +197,22 @@ function fix_xy_lengths!(plt::Plot{PyPlotBackend}, series::Series) nx, ny = length(x), length(y) if !isa(get(series.plotattributes, :z, nothing), Surface) && nx != ny if nx < ny - series[:x] = Float64[x[mod1(i,nx)] for i=1:ny] + series[:x] = Float64[x[mod1(i, nx)] for i in 1:ny] else - series[:y] = Float64[y[mod1(i,ny)] for i=1:nx] + series[:y] = Float64[y[mod1(i, ny)] for i in 1:nx] end end end end function py_linecolormap(series::Series) - py_colormap(cgrad(series[:linecolor], alpha=get_linealpha(series))) + py_colormap(cgrad(series[:linecolor], alpha = get_linealpha(series))) end function py_markercolormap(series::Series) - py_colormap(cgrad(series[:markercolor], alpha=get_markeralpha(series))) + py_colormap(cgrad(series[:markercolor], alpha = get_markeralpha(series))) end function py_fillcolormap(series::Series) - py_colormap(cgrad(series[:fillcolor], alpha=get_fillalpha(series))) + py_colormap(cgrad(series[:fillcolor], alpha = get_fillalpha(series))) end # --------------------------------------------------------------------------- @@ -246,12 +244,11 @@ py_drawfig(fig) = fig."draw"(py_renderer(fig)) # get a vector [left, right, bottom, top] in PyPlot coords (origin is bottom-left!) py_extents(obj) = obj."get_window_extent"()."get_points"() - # compute a bounding box (with origin top-left), however pyplot gives coords with origin bottom-left function py_bbox(obj) fl, fr, fb, ft = py_extents(obj."get_figure"()) l, r, b, t = py_extents(obj) - BoundingBox(l*px, (ft-t)*px, (r-l)*px, (t-b)*px) + BoundingBox(l * px, (ft - t) * px, (r - l) * px, (t - b) * px) end py_bbox(::Nothing) = BoundingBox(0mm, 0mm) @@ -267,13 +264,13 @@ end # bounding box: union of axis tick labels function py_bbox_ticks(ax, letter) - labels = getproperty(ax, Symbol("get_"*letter*"ticklabels"))() + labels = getproperty(ax, Symbol("get_" * letter * "ticklabels"))() py_bbox(labels) end # bounding box: axis guide function py_bbox_axislabel(ax, letter) - pyaxis_label = getproperty(ax, Symbol("get_"*letter*"axis"))().label + pyaxis_label = getproperty(ax, Symbol("get_" * letter * "axis"))().label py_bbox(pyaxis_label) end @@ -304,7 +301,7 @@ end # Create the window/figure for this backend. function _create_backend_figure(plt::Plot{PyPlotBackend}) - w,h = map(px2inch, Tuple(s * plt[:dpi] / Plots.DPI for s in plt[:size])) + w, h = map(px2inch, Tuple(s * plt[:dpi] / Plots.DPI for s in plt[:size])) # # reuse the current figure? fig = if plt[:overwrite_figure] @@ -326,21 +323,15 @@ end function py_init_subplot(plt::Plot{PyPlotBackend}, sp::Subplot{PyPlotBackend}) fig = plt.o proj = sp[:projection] - proj = (proj in (nothing,:none) ? nothing : string(proj)) + proj = (proj in (nothing, :none) ? nothing : string(proj)) # add a new axis, and force it to create a new one by setting a distinct label - ax = fig."add_axes"( - [0,0,1,1], - label = string(gensym()), - projection = proj - ) + ax = fig."add_axes"([0, 0, 1, 1], label = string(gensym()), projection = proj) sp.o = ax end - # --------------------------------------------------------------------------- - # function _series_added(pkg::PyPlotBackend, plt::Plot, plotattributes::KW) # TODO: change this to accept Subplot?? # function _series_added(plt::Plot{PyPlotBackend}, series::Series) @@ -373,7 +364,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end end - xyargs = (st in _3dTypes ? (x,y,z) : (x,y)) + xyargs = (st in _3dTypes ? (x, y, z) : (x, y)) # handle zcolor and get c/cmap needs_colorbar = hascolorbar(sp) @@ -392,7 +383,6 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) handles = [] discrete_colorbar_values = nothing - # pass in an integer value as an arg, but a levels list as a keyword arg levels = series[:levels] levelargs = if isscalar(levels) @@ -442,18 +432,22 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # end # push!(handles, handle) # else - for (k, segment) in enumerate(series_segments(series, st; check=true)) + for (k, segment) in enumerate(series_segments(series, st; check = true)) i, rng = segment.attr_index, segment.range - handle = ax."plot"((arg[rng] for arg in xyargs)...; - label = k == 1 ? series[:label] : "", - zorder = series[:series_plotindex], - color = py_color(single_color(get_linecolor(series, clims, i)), get_linealpha(series, i)), - linewidth = py_thickness_scale(plt, get_linewidth(series, i)), - linestyle = py_linestyle(st, get_linestyle(series, i)), - solid_capstyle = "butt", - dash_capstyle = "butt", - drawstyle = py_stepstyle(st) - )[1] + handle = ax."plot"( + (arg[rng] for arg in xyargs)...; + label = k == 1 ? series[:label] : "", + zorder = series[:series_plotindex], + color = py_color( + single_color(get_linecolor(series, clims, i)), + get_linealpha(series, i), + ), + linewidth = py_thickness_scale(plt, get_linewidth(series, i)), + linestyle = py_linestyle(st, get_linestyle(series, i)), + solid_capstyle = "butt", + dash_capstyle = "butt", + drawstyle = py_stepstyle(st), + )[1] push!(handles, handle) end # end @@ -473,11 +467,15 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) :linestyle => py_linestyle(st, get_linestyle(series)), ) add_arrows(x, y) do xyprev, xy - ax."annotate"("", - xytext = (0.001xyprev[1] + 0.999xy[1], 0.001xyprev[2] + 0.999xy[2]), + ax."annotate"( + "", + xytext = ( + 0.001xyprev[1] + 0.999xy[1], + 0.001xyprev[2] + 0.999xy[2], + ), xy = xy, arrowprops = arrowprops, - zorder = 999 + zorder = 999, ) end end @@ -486,9 +484,8 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end # add markers? - if series[:markershape] != :none && st in ( - :path, :scatter, :path3d, :scatter3d, :steppre, :stepmid, :steppost, :bar - ) + if series[:markershape] != :none && + st in (:path, :scatter, :path3d, :scatter3d, :steppre, :stepmid, :steppost, :bar) for segment in series_segments(series, :scatter) i, rng = segment.attr_index, segment.range xyargs = if st == :bar && !isvertical(series) @@ -505,15 +502,22 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end end - handle = ax."scatter"(xyargs...; + handle = ax."scatter"( + xyargs...; label = series[:label], zorder = series[:series_plotindex] + 0.5, marker = py_marker(_cycle(series[:markershape], i)), - s = py_thickness_scale(plt, _cycle(series[:markersize], i)).^ 2, - facecolors = py_color(get_markercolor(series, i), get_markeralpha(series, i)), - edgecolors = py_color(get_markerstrokecolor(series, i), get_markerstrokealpha(series, i)), + s = py_thickness_scale(plt, _cycle(series[:markersize], i)) .^ 2, + facecolors = py_color( + get_markercolor(series, i), + get_markeralpha(series, i), + ), + edgecolors = py_color( + get_markerstrokecolor(series, i), + get_markerstrokealpha(series, i), + ), linewidths = py_thickness_scale(plt, get_markerstrokewidth(series, i)), - extrakw... + extrakw..., ) push!(handles, handle) end @@ -521,16 +525,19 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) if st == :hexbin extrakw[:mincnt] = get(series[:extra_kwargs], :mincnt, nothing) - extrakw[:edgecolors] = get(series[:extra_kwargs], :edgecolors, py_color(get_linecolor(series))) - handle = ax."hexbin"(x, y; + extrakw[:edgecolors] = + get(series[:extra_kwargs], :edgecolors, py_color(get_linecolor(series))) + handle = ax."hexbin"( + x, + y; label = series[:label], C = series[:weights], - gridsize = series[:bins]==:auto ? 100 : series[:bins], # 100 is the default value + gridsize = series[:bins] == :auto ? 100 : series[:bins], # 100 is the default value linewidths = py_thickness_scale(plt, series[:linewidth]), alpha = series[:fillalpha], cmap = py_fillcolormap(series), # applies to the pcolorfast object zorder = series[:series_plotindex], - extrakw... + extrakw..., ) push!(handles, handle) end @@ -550,12 +557,16 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) end # contour lines - handle = ax."contour"(x, y, z, levelargs...; + handle = ax."contour"( + x, + y, + z, + levelargs...; label = series[:label], zorder = series[:series_plotindex], linewidths = py_thickness_scale(plt, series[:linewidth]), linestyles = py_linestyle(st, series[:linestyle]), - extrakw... + extrakw..., ) if series[:contour_labels] == true ax."clabel"(handle, handle.levels) @@ -564,11 +575,15 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # contour fills if series[:fillrange] !== nothing - handle = ax."contourf"(x, y, z, levelargs...; + handle = ax."contourf"( + x, + y, + z, + levelargs...; label = series[:label], zorder = series[:series_plotindex] + 0.5, alpha = series[:fillalpha], - extrakw... + extrakw..., ) push!(handles, handle) end @@ -582,49 +597,56 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) if st == :surface if series[:fill_z] !== nothing # the surface colors are different than z-value - extrakw[:facecolors] = py_shading( - series[:fillcolor], - py_handle_surface(series[:fill_z]), - ) + extrakw[:facecolors] = + py_shading(series[:fillcolor], py_handle_surface(series[:fill_z])) extrakw[:shade] = false else extrakw[:cmap] = py_fillcolormap(series) end end - handle = getproperty(ax, st == :surface ? :plot_surface : :plot_wireframe)(x, y, z; + handle = getproperty(ax, st == :surface ? :plot_surface : :plot_wireframe)( + x, + y, + z; label = series[:label], zorder = series[:series_plotindex], rstride = series[:stride][1], cstride = series[:stride][2], linewidth = py_thickness_scale(plt, series[:linewidth]), edgecolor = py_color(get_linecolor(series)), - extrakw... + extrakw..., ) push!(handles, handle) # contours on the axis planes if series[:contours] - for (zdir,mat) in (("x",x), ("y",y), ("z",z)) + for (zdir, mat) in (("x", x), ("y", y), ("z", z)) offset = (zdir == "y" ? ignorenan_maximum : ignorenan_minimum)(mat) - handle = ax."contourf"(x, y, z, levelargs...; + handle = ax."contourf"( + x, + y, + z, + levelargs...; zdir = zdir, cmap = py_fillcolormap(series), - offset = (zdir == "y" ? ignorenan_maximum : ignorenan_minimum)(mat) # where to draw the contour plane + offset = (zdir == "y" ? ignorenan_maximum : ignorenan_minimum)(mat), # where to draw the contour plane ) push!(handles, handle) end end - elseif typeof(z) <: AbstractVector # tri-surface plot (http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#tri-surface-plots) - handle = ax."plot_trisurf"(x, y, z; + handle = ax."plot_trisurf"( + x, + y, + z; label = series[:label], zorder = series[:series_plotindex], cmap = py_fillcolormap(series), linewidth = py_thickness_scale(plt, series[:linewidth]), edgecolor = py_color(get_linecolor(series)), - extrakw... + extrakw..., ) push!(handles, handle) else @@ -640,7 +662,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) z = if eltype(z) <: Colors.AbstractGray float(z) elseif eltype(z) <: Colorant - map(c -> Float64[red(c),green(c),blue(c),alpha(c)], z) + map(c -> Float64[red(c), green(c), blue(c), alpha(c)], z) else z # hopefully it's in a data format that will "just work" with imshow end @@ -650,7 +672,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) cmap = py_colormap(cgrad(plot_color([:black, :white]))), vmin = 0.0, vmax = 1.0, - extent = (xmin - dx, xmax + dx, ymax + dy, ymin - dy) + extent = (xmin - dx, xmax + dx, ymax + dy, ymin - dy), ) push!(handles, handle) @@ -670,13 +692,16 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) discrete_colorbar_values = dvals end - handle = ax."pcolormesh"(x, y, py_mask_nans(z); + handle = ax."pcolormesh"( + x, + y, + py_mask_nans(z); label = series[:label], zorder = series[:series_plotindex], cmap = py_fillcolormap(series), alpha = series[:fillalpha], # edgecolors = (series[:linewidth] > 0 ? py_linecolor(series) : "face"), - extrakw... + extrakw..., ) push!(handles, handle) end @@ -691,11 +716,17 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) path; label = series[:label], zorder = series[:series_plotindex], - edgecolor = py_color(get_linecolor(series, clims, i), get_linealpha(series, i)), - facecolor = py_color(get_fillcolor(series, clims, i), get_fillalpha(series, i)), + edgecolor = py_color( + get_linecolor(series, clims, i), + get_linealpha(series, i), + ), + facecolor = py_color( + get_fillcolor(series, clims, i), + get_fillalpha(series, i), + ), linewidth = py_thickness_scale(plt, get_linewidth(series, i)), linestyle = py_linestyle(st, get_linestyle(series, i)), - fill = true + fill = true, ) push!(handle, ax."add_patch"(patches)) end @@ -719,16 +750,23 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) :fill_betweenx, y[rng], x[rng] end n = length(dim1) - args = if typeof(fillrange) <: Union{Real, AVec} + args = if typeof(fillrange) <: Union{Real,AVec} dim1, _cycle(fillrange, rng), dim2 elseif is_2tuple(fillrange) dim1, _cycle(fillrange[1], rng), _cycle(fillrange[2], rng) end - handle = getproperty(ax, f)(args..., trues(n), false, py_fillstepstyle(st); + handle = getproperty(ax, f)( + args..., + trues(n), + false, + py_fillstepstyle(st); zorder = series[:series_plotindex], - facecolor = py_color(get_fillcolor(series, clims, i), get_fillalpha(series, i)), - linewidths = 0 + facecolor = py_color( + get_fillcolor(series, clims, i), + get_fillalpha(series, i), + ), + linewidths = 0, ) push!(handles, handle) end @@ -736,7 +774,7 @@ function py_add_series(plt::Plot{PyPlotBackend}, series::Series) # this is all we need to add the series_annotations text anns = series[:series_annotations] - for (xi,yi,str,fnt) in EachAnn(anns, x, y) + for (xi, yi, str, fnt) in EachAnn(anns, x, y) py_add_annotations(sp, xi, yi, PlotText(str, fnt)) end end @@ -751,23 +789,22 @@ end function py_surround_latextext(latexstring, env) if !isempty(latexstring) && latexstring[1] == '$' && latexstring[end] == '$' - unenclosed = latexstring[2:end-1] + unenclosed = latexstring[2:(end - 1)] else unenclosed = latexstring end PyPlot.LaTeXStrings.latexstring(env, "{", unenclosed, "}") end - function py_set_ticks(sp, ax, ticks, letter, env) ticks == :auto && return - axis = getproperty(ax, Symbol(letter,"axis")) + axis = getproperty(ax, Symbol(letter, "axis")) if ticks == :none || ticks === nothing || ticks == false kw = KW() - for dir in (:top,:bottom,:left,:right) - kw[dir] = kw[Symbol(:label,dir)] = false + for dir in (:top, :bottom, :left, :right) + kw[dir] = kw[Symbol(:label, dir)] = false end - axis."set_tick_params"(;which="both", kw...) + axis."set_tick_params"(; which = "both", kw...) return end @@ -829,7 +866,8 @@ function py_set_scale(ax, sp::Subplot, scale::Symbol, letter::Symbol) 10 end axis = sp[Symbol(letter, :axis)] - kw[Symbol(:linthresh, pyletter)] = NaNMath.max(1e-16, py_compute_axis_minval(sp, axis)) + kw[Symbol(:linthresh, pyletter)] = + NaNMath.max(1e-16, py_compute_axis_minval(sp, axis)) "symlog" end func(arg; kw...) @@ -857,25 +895,29 @@ function py_set_axis_colors(sp, ax, a::Axis) py_set_spine_color(ax.spines, py_color(a[:foreground_color_border])) axissym = Symbol(a[:letter], :axis) if PyPlot.PyCall.hasproperty(ax, axissym) - tickcolor = sp[:framestyle] in (:zerolines, :grid) ? py_color(plot_color(a[:foreground_color_grid], a[:gridalpha])) : py_color(a[:foreground_color_axis]) - ax."tick_params"(axis=string(a[:letter]), which="both", - colors=tickcolor, - labelcolor=py_color(a[:tickfontcolor])) + tickcolor = + sp[:framestyle] in (:zerolines, :grid) ? + py_color(plot_color(a[:foreground_color_grid], a[:gridalpha])) : + py_color(a[:foreground_color_axis]) + ax."tick_params"( + axis = string(a[:letter]), + which = "both", + colors = tickcolor, + labelcolor = py_color(a[:tickfontcolor]), + ) getproperty(ax, axissym).label.set_color(py_color(a[:guidefontcolor])) end end - # -------------------------------------------------------------------------- - function _before_layout_calcs(plt::Plot{PyPlotBackend}) # update the fig w, h = plt[:size] fig = plt.o fig."clear"() dpi = plt[:dpi] - fig."set_size_inches"(w/DPI, h/DPI, forward = true) + fig."set_size_inches"(w / DPI, h / DPI, forward = true) getproperty(fig, set_facecolor_sym)(py_color(plt[:background_color_outside])) fig."set_dpi"(plt[:dpi]) @@ -915,7 +957,9 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) :title end getproperty(ax, func)."set_text"(sp[:title]) - getproperty(ax, func)."set_fontsize"(py_thickness_scale(plt, sp[:titlefontsize])) + getproperty(ax, func)."set_fontsize"( + py_thickness_scale(plt, sp[:titlefontsize]), + ) getproperty(ax, func)."set_family"(sp[:titlefontfamily]) getproperty(ax, func)."set_color"(py_color(sp[:titlefontcolor])) # ax[:set_title](sp[:title], loc = loc) @@ -928,14 +972,17 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) colorbar_series = slist[findfirst(hascolorbar.(slist))] handle = colorbar_series[:serieshandle][end] kw = KW() - if !isempty(sp[:zaxis][:discrete_values]) && colorbar_series[:seriestype] == :heatmap + if !isempty(sp[:zaxis][:discrete_values]) && + colorbar_series[:seriestype] == :heatmap locator, formatter = get_locator_and_formatter(sp[:zaxis][:discrete_values]) # kw[:values] = eachindex(sp[:zaxis][:discrete_values]) kw[:values] = sp[:zaxis][:continuous_values] kw[:ticks] = locator kw[:format] = formatter kw[:boundaries] = vcat(0, kw[:values] + 0.5) - elseif any(colorbar_series[attr] !== nothing for attr in (:line_z, :fill_z, :marker_z)) + elseif any( + colorbar_series[attr] !== nothing for attr in (:line_z, :fill_z, :marker_z) + ) cmin, cmax = get_clims(sp) norm = pycolors."Normalize"(vmin = cmin, vmax = cmax) f = if colorbar_series[:line_z] !== nothing @@ -952,8 +999,11 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) kw[:spacing] = "proportional" if RecipesPipeline.is3d(sp) || ispolar(sp) - cbax = fig."add_axes"([0.9, 0.1, 0.03, 0.8], label=string("cbar", sp[:subplot_index])) - cb = fig."colorbar"(handle; cax=cbax, kw...) + cbax = fig."add_axes"( + [0.9, 0.1, 0.03, 0.8], + label = string("cbar", sp[:subplot_index]), + ) + cb = fig."colorbar"(handle; cax = cbax, kw...) else # divider approach works only with 2d plots divider = axes_grid1.make_axes_locatable(ax) @@ -962,7 +1012,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) # cbax = divider.append_axes("right", size=width, pad=pad) # This approach does not work well in subplots colorbar_position = "right" colorbar_pad = "2.5%" - colorbar_orientation="vertical" + colorbar_orientation = "vertical" if sp[:colorbar] == :left colorbar_position = string(sp[:colorbar]) @@ -970,15 +1020,25 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) elseif sp[:colorbar] == :top colorbar_position = string(sp[:colorbar]) colorbar_pad = "2.5%" - colorbar_orientation="horizontal" + colorbar_orientation = "horizontal" elseif sp[:colorbar] == :bottom colorbar_position = string(sp[:colorbar]) colorbar_pad = "5%" - colorbar_orientation="horizontal" + colorbar_orientation = "horizontal" end - cbax = divider.append_axes(colorbar_position, size="5%", pad=colorbar_pad, label=string("cbar", sp[:subplot_index])) # Reasonable value works most of the usecases - cb = fig."colorbar"(handle; cax=cbax, orientation = colorbar_orientation, kw...) + cbax = divider.append_axes( + colorbar_position, + size = "5%", + pad = colorbar_pad, + label = string("cbar", sp[:subplot_index]), + ) # Reasonable value works most of the usecases + cb = fig."colorbar"( + handle; + cax = cbax, + orientation = colorbar_orientation, + kw..., + ) if sp[:colorbar] == :left cbax.yaxis.set_ticks_position("left") @@ -987,10 +1047,14 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) elseif sp[:colorbar] == :bottom cbax.xaxis.set_ticks_position("bottom") end - end - cb."set_label"(sp[:colorbar_title],size=py_thickness_scale(plt, sp[:colorbar_titlefontsize]),family=sp[:colorbar_titlefontfamily], color = py_color(sp[:colorbar_titlefontcolor])) + cb."set_label"( + sp[:colorbar_title], + size = py_thickness_scale(plt, sp[:colorbar_titlefontsize]), + family = sp[:colorbar_titlefontfamily], + color = py_color(sp[:colorbar_titlefontcolor]), + ) # cb."formatter".set_useOffset(false) # This for some reason does not work, must be a pyplot bug, instead this is a workaround: cb."formatter".set_powerlimits((-Inf, Inf)) @@ -1002,38 +1066,37 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) if sp[:colorbar] in (:top, :bottom) axis = sp[:xaxis] # colorbar inherits from x axis cbar_axis = cb."ax"."xaxis" - ticks_letter=:x + ticks_letter = :x else axis = sp[:yaxis] # colorbar inherits from y axis cbar_axis = cb."ax"."yaxis" - ticks_letter=:y + ticks_letter = :y end py_set_scale(cb.ax, sp, sp[:colorbar_scale], ticks_letter) - sp[:colorbar_ticks] == :native ? nothing : py_set_ticks(sp, cb.ax, ticks, ticks_letter, env) + sp[:colorbar_ticks] == :native ? nothing : + py_set_ticks(sp, cb.ax, ticks, ticks_letter, env) for lab in cbar_axis."get_ticklabels"() - lab."set_fontsize"(py_thickness_scale(plt, sp[:colorbar_tickfontsize])) - lab."set_family"(sp[:colorbar_tickfontfamily]) - lab."set_color"(py_color(sp[:colorbar_tickfontcolor])) + lab."set_fontsize"(py_thickness_scale(plt, sp[:colorbar_tickfontsize])) + lab."set_family"(sp[:colorbar_tickfontfamily]) + lab."set_color"(py_color(sp[:colorbar_tickfontcolor])) end # Adjust thickness of the cbar ticks intensity = 0.5 cbar_axis."set_tick_params"( direction = axis[:tick_direction] == :out ? "out" : "in", - width=py_thickness_scale(plt, intensity), - length = axis[:tick_direction] == :none ? 0 : 5 * py_thickness_scale(plt, intensity) + width = py_thickness_scale(plt, intensity), + length = axis[:tick_direction] == :none ? 0 : + 5 * py_thickness_scale(plt, intensity), ) - - cb.outline."set_linewidth"(py_thickness_scale(plt, 1)) sp.attr[:cbar_handle] = cb sp.attr[:cbar_ax] = cbax end - # framestyle if !ispolar(sp) && !RecipesPipeline.is3d(sp) for pos in ("left", "right", "top", "bottom") @@ -1053,11 +1116,13 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) ax.spines[spine]."set_linewidth"(py_thickness_scale(plt, intensity)) ax.spines[spine]."set_alpha"(intensity) elseif sp[:framestyle] == :box - ax.tick_params(top=true) # Add ticks too - ax.tick_params(right=true) # Add ticks too + ax.tick_params(top = true) # Add ticks too + ax.tick_params(right = true) # Add ticks too elseif sp[:framestyle] in (:axes, :origin) - sp[:xaxis][:mirror] ? ax.spines["bottom"]."set_visible"(false) : ax.spines["top"]."set_visible"(false) - sp[:yaxis][:mirror] ? ax.spines["left"]."set_visible"(false) : ax.spines["right"]."set_visible"(false) + sp[:xaxis][:mirror] ? ax.spines["bottom"]."set_visible"(false) : + ax.spines["top"]."set_visible"(false) + sp[:yaxis][:mirror] ? ax.spines["left"]."set_visible"(false) : + ax.spines["right"]."set_visible"(false) if sp[:framestyle] == :origin ax.spines["bottom"]."set_position"("zero") ax.spines["left"]."set_position"("zero") @@ -1073,8 +1138,16 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) end end if sp[:framestyle] == :zerolines - ax."axhline"(y = 0, color = py_color(sp[:xaxis][:foreground_color_axis]), lw = py_thickness_scale(plt, 0.75)) - ax."axvline"(x = 0, color = py_color(sp[:yaxis][:foreground_color_axis]), lw = py_thickness_scale(plt, 0.75)) + ax."axhline"( + y = 0, + color = py_color(sp[:xaxis][:foreground_color_axis]), + lw = py_thickness_scale(plt, 0.75), + ) + ax."axvline"( + x = 0, + color = py_color(sp[:yaxis][:foreground_color_axis]), + lw = py_thickness_scale(plt, 0.75), + ) end end @@ -1117,20 +1190,20 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) "family" => axis[:tickfontfamily], "size" => py_thickness_scale(plt, axis[:tickfontsize]), "rotation" => axis[:tickfontrotation], - ) + ), ) - positions = getproperty(ax, Symbol("get_",letter,"ticks"))() + positions = getproperty(ax, Symbol("get_", letter, "ticks"))() pyaxis.set_major_locator(pyticker.FixedLocator(positions)) if RecipesPipeline.is3d(sp) - getproperty(ax, Symbol("set_",letter,"ticklabels"))( + getproperty(ax, Symbol("set_", letter, "ticklabels"))( positions; - (Symbol(k) => v for (k, v) in fontProperties)... + (Symbol(k) => v for (k, v) in fontProperties)..., ) else - getproperty(ax, Symbol("set_",letter,"ticklabels"))( + getproperty(ax, Symbol("set_", letter, "ticklabels"))( positions, - fontdict=fontProperties, + fontdict = fontProperties, ) end @@ -1142,9 +1215,10 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) intensity = 0.5 # This value corresponds to scaling of other grid elements pyaxis."set_tick_params"( direction = axis[:tick_direction] == :out ? "out" : "in", - width=py_thickness_scale(plt, intensity), - length = axis[:tick_direction] == :none ? 0 : 5 * py_thickness_scale(plt, intensity) - ) + width = py_thickness_scale(plt, intensity), + length = axis[:tick_direction] == :none ? 0 : + 5 * py_thickness_scale(plt, intensity), + ) getproperty(ax, Symbol("set_", letter, "label"))(axis[:guide]) if get(axis.plotattributes, :flip, false) @@ -1163,14 +1237,15 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) pyaxis."label"."set_rotation"(axis[:guidefontrotation]) end - if axis[:grid] && !(ticks in (:none, nothing, false)) fgcolor = py_color(axis[:foreground_color_grid]) - pyaxis."grid"(true, + pyaxis."grid"( + true, color = fgcolor, linestyle = py_linestyle(:line, axis[:gridstyle]), linewidth = py_thickness_scale(plt, axis[:gridlinewidth]), - alpha = axis[:gridalpha]) + alpha = axis[:gridalpha], + ) ax."set_axisbelow"(true) else pyaxis."grid"(false) @@ -1178,11 +1253,14 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) # if axis[:minorticks] > 1 - pyaxis."set_minor_locator"(PyPlot.matplotlib.ticker.AutoMinorLocator(axis[:minorticks])) + pyaxis."set_minor_locator"( + PyPlot.matplotlib.ticker.AutoMinorLocator(axis[:minorticks]), + ) pyaxis."set_tick_params"( which = "minor", direction = axis[:tick_direction] == :out ? "out" : "in", - length = axis[:tick_direction] == :none ? 0 : py_thickness_scale(plt, intensity), + length = axis[:tick_direction] == :none ? 0 : + py_thickness_scale(plt, intensity), ) end @@ -1193,19 +1271,20 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) pyaxis."set_tick_params"( which = "minor", direction = axis[:tick_direction] == :out ? "out" : "in", - length = axis[:tick_direction] == :none ? 0 : py_thickness_scale(plt, intensity) + length = axis[:tick_direction] == :none ? 0 : + py_thickness_scale(plt, intensity), ) - pyaxis."grid"(true, + pyaxis."grid"( + true, which = "minor", color = fgcolor, linestyle = py_linestyle(:line, axis[:minorgridstyle]), linewidth = py_thickness_scale(plt, axis[:minorgridlinewidth]), - alpha = axis[:minorgridalpha]) + alpha = axis[:minorgridalpha], + ) end - - py_set_axis_colors(sp, ax, axis) end @@ -1219,9 +1298,9 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) if !ispolar(sp) ax.spines[string(dir)].set_visible(false) end - kw[dir] = kw[Symbol(:label,dir)] = false + kw[dir] = kw[Symbol(:label, dir)] = false end - ax."xaxis"."set_tick_params"(; which="both", kw...) + ax."xaxis"."set_tick_params"(; which = "both", kw...) end if !sp[:yaxis][:showaxis] kw = KW() @@ -1229,9 +1308,9 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) if !ispolar(sp) ax.spines[string(dir)].set_visible(false) end - kw[dir] = kw[Symbol(:label,dir)] = false + kw[dir] = kw[Symbol(:label, dir)] = false end - ax."yaxis"."set_tick_params"(; which="both", kw...) + ax."yaxis"."set_tick_params"(; which = "both", kw...) end # aspect ratio @@ -1244,7 +1323,7 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) if RecipesPipeline.is3d(sp) #convert azimuthal to match GR behaviour #view_init(elevation, azimuthal) so reverse :camera args - ax."view_init"((sp[:camera].-(90,0))[end:-1:1]...) + ax."view_init"((sp[:camera] .- (90, 0))[end:-1:1]...) end # legend @@ -1261,7 +1340,6 @@ function _before_layout_calcs(plt::Plot{PyPlotBackend}) py_drawfig(fig) end - # Set the (left, top, right, bottom) minimum padding around the plot area # to fit ticks, tick labels, guides, colorbars, etc. function _update_min_padding!(sp::Subplot{PyPlotBackend}) @@ -1277,28 +1355,32 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) rightpad = 0mm bottompad = 0mm - for bb in (py_bbox_axis(ax, "x"), py_bbox_axis(ax, "y"), py_bbox_title(ax), py_bbox_legend(ax)) + for bb in ( + py_bbox_axis(ax, "x"), + py_bbox_axis(ax, "y"), + py_bbox_title(ax), + py_bbox_legend(ax), + ) if ispositive(width(bb)) && ispositive(height(bb)) - leftpad = max(leftpad, left(plotbb) - left(bb)) - toppad = max(toppad, top(plotbb) - top(bb)) - rightpad = max(rightpad, right(bb) - right(plotbb)) - bottompad = max(bottompad, bottom(bb) - bottom(plotbb)) + leftpad = max(leftpad, left(plotbb) - left(bb)) + toppad = max(toppad, top(plotbb) - top(bb)) + rightpad = max(rightpad, right(bb) - right(plotbb)) + bottompad = max(bottompad, bottom(bb) - bottom(plotbb)) end end if haskey(sp.attr, :cbar_ax) # Treat colorbar the same way ax = sp.attr[:cbar_handle]."ax" - for bb in (py_bbox_axis(ax, "x"), py_bbox_axis(ax, "y"), py_bbox_title(ax), ) + for bb in (py_bbox_axis(ax, "x"), py_bbox_axis(ax, "y"), py_bbox_title(ax)) if ispositive(width(bb)) && ispositive(height(bb)) - leftpad = max(leftpad, left(plotbb) - left(bb)) - toppad = max(toppad, top(plotbb) - top(bb)) - rightpad = max(rightpad, right(bb) - right(plotbb)) - bottompad = max(bottompad, bottom(bb) - bottom(plotbb)) + leftpad = max(leftpad, left(plotbb) - left(bb)) + toppad = max(toppad, top(plotbb) - top(bb)) + rightpad = max(rightpad, right(bb) - right(plotbb)) + bottompad = max(bottompad, bottom(bb) - bottom(plotbb)) end end end - # optionally add the width of colorbar labels and colorbar to rightpad if RecipesPipeline.is3d(sp) && haskey(sp.attr, :cbar_ax) bb = py_bbox(sp.attr[:cbar_handle]."ax"."get_yticklabels"()) @@ -1316,27 +1398,28 @@ function _update_min_padding!(sp::Subplot{PyPlotBackend}) sp.minpad = Tuple(dpi_factor .* [leftpad, toppad, rightpad, bottompad]) end - # ----------------------------------------------------------------- function py_add_annotations(sp::Subplot{PyPlotBackend}, x, y, val) ax = sp.o - ax."annotate"(val, xy = (x,y), zorder = 999, annotation_clip = false) + ax."annotate"(val, xy = (x, y), zorder = 999, annotation_clip = false) end - function py_add_annotations(sp::Subplot{PyPlotBackend}, x, y, val::PlotText) ax = sp.o - ax."annotate"(val.str, - xy = (x,y), + ax."annotate"( + val.str, + xy = (x, y), family = val.font.family, color = py_color(val.font.color), - horizontalalignment = val.font.halign == :hcenter ? "center" : string(val.font.halign), - verticalalignment = val.font.valign == :vcenter ? "center" : string(val.font.valign), + horizontalalignment = val.font.halign == :hcenter ? "center" : + string(val.font.halign), + verticalalignment = val.font.valign == :vcenter ? "center" : + string(val.font.valign), rotation = val.font.rotation, size = py_thickness_scale(sp.plt, val.font.pointsize), zorder = 999, - annotation_clip = false + annotation_clip = false, ) end @@ -1345,21 +1428,21 @@ end py_legend_pos(pos::Tuple{S,T}) where {S<:Real,T<:Real} = "lower left" function py_legend_pos(pos::Tuple{<:Real,Symbol}) - (s,c) = sincosd(pos[1]) + (s, c) = sincosd(pos[1]) if pos[2] === :outer s = -s c = -c end - yanchors = ["lower","center","upper"] - xanchors = ["left","center","right"] + yanchors = ["lower", "center", "upper"] + xanchors = ["left", "center", "right"] return join([yanchors[legend_anchor_index(s)], xanchors[legend_anchor_index(c)]], ' ') end -function py_legend_bbox(pos::Tuple{T,Symbol}) where T<:Real +function py_legend_bbox(pos::Tuple{T,Symbol}) where {T<:Real} if pos[2] === :outer - return legend_pos_from_angle(pos[1],-0.15,0.5,1.0,-0.15,0.5,1.0) + return legend_pos_from_angle(pos[1], -0.15, 0.5, 1.0, -0.15, 0.5, 1.0) end - legend_pos_from_angle(pos[1],0.0,0.5,1.0,0.0,0.5,1.0) + legend_pos_from_angle(pos[1], 0.0, 0.5, 1.0, 0.0, 0.5, 1.0) end py_legend_bbox(pos) = pos @@ -1374,32 +1457,66 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) if should_add_to_legend(series) clims = get_clims(sp, series) # add a line/marker and a label - push!(handles, + push!( + handles, if series[:seriestype] == :shape || series[:fillrange] !== nothing pypatches."Patch"( - edgecolor = py_color(single_color(get_linecolor(series, clims)), get_linealpha(series)), - facecolor = py_color(single_color(get_fillcolor(series, clims)), get_fillalpha(series)), - linewidth = py_thickness_scale(plt, clamp(get_linewidth(series), 0, 5)), - linestyle = py_linestyle(series[:seriestype], get_linestyle(series)), - capstyle = "butt" + edgecolor = py_color( + single_color(get_linecolor(series, clims)), + get_linealpha(series), + ), + facecolor = py_color( + single_color(get_fillcolor(series, clims)), + get_fillalpha(series), + ), + linewidth = py_thickness_scale( + plt, + clamp(get_linewidth(series), 0, 5), + ), + linestyle = py_linestyle( + series[:seriestype], + get_linestyle(series), + ), + capstyle = "butt", ) - elseif series[:seriestype] in (:path, :straightline, :scatter, :steppre, :stepmid, :steppost) + elseif series[:seriestype] in + (:path, :straightline, :scatter, :steppre, :stepmid, :steppost) hasline = get_linewidth(series) > 0 - PyPlot.plt."Line2D"((0, 1),(0,0), - color = py_color(single_color(get_linecolor(series, clims)), get_linealpha(series)), - linewidth = py_thickness_scale(plt, hasline * sp[:legendfontsize] / 8), + PyPlot.plt."Line2D"( + (0, 1), + (0, 0), + color = py_color( + single_color(get_linecolor(series, clims)), + get_linealpha(series), + ), + linewidth = py_thickness_scale( + plt, + hasline * sp[:legendfontsize] / 8, + ), linestyle = py_linestyle(:path, get_linestyle(series)), - solid_capstyle = "butt", solid_joinstyle = "miter", - dash_capstyle = "butt", dash_joinstyle = "miter", + solid_capstyle = "butt", + solid_joinstyle = "miter", + dash_capstyle = "butt", + dash_joinstyle = "miter", marker = py_marker(_cycle(series[:markershape], 1)), markersize = py_thickness_scale(plt, 0.8 * sp[:legendfontsize]), - markeredgecolor = py_color(single_color(get_markerstrokecolor(series)), get_markerstrokealpha(series)), - markerfacecolor = py_color(single_color(get_markercolor(series, clims)), get_markeralpha(series)), - markeredgewidth = py_thickness_scale(plt, 0.8 * get_markerstrokewidth(series) * sp[:legendfontsize] / first(series[:markersize])) # retain the markersize/markerstroke ratio from the markers on the plot + markeredgecolor = py_color( + single_color(get_markerstrokecolor(series)), + get_markerstrokealpha(series), + ), + markerfacecolor = py_color( + single_color(get_markercolor(series, clims)), + get_markeralpha(series), + ), + markeredgewidth = py_thickness_scale( + plt, + 0.8 * get_markerstrokewidth(series) * sp[:legendfontsize] / + first(series[:markersize]), + ), # retain the markersize/markerstroke ratio from the markers on the plot ) else series[:serieshandle][1] - end + end, ) push!(labels, series[:label]) end @@ -1408,7 +1525,8 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) # if anything was added, call ax.legend and set the colors if !isempty(handles) leg = legend_angle(leg) - leg = ax."legend"(handles, + leg = ax."legend"( + handles, labels, loc = py_legend_pos(leg), bbox_to_anchor = py_legend_bbox(leg), @@ -1418,18 +1536,28 @@ function py_add_legend(plt::Plot, sp::Subplot, ax) edgecolor = py_color(sp[:foreground_color_legend]), framealpha = alpha(plot_color(sp[:background_color_legend])), fancybox = false, # makes the legend box square - borderpad = 0.8 # to match GR legendbox + borderpad = 0.8, # to match GR legendbox ) frame = leg."get_frame"() frame."set_linewidth"(py_thickness_scale(plt, 1)) leg."set_zorder"(1000) if sp[:legendtitle] !== nothing leg."set_title"(sp[:legendtitle]) - PyPlot.plt."setp"(leg."get_title"(), color = py_color(sp[:legendtitlefontcolor]), family = sp[:legendtitlefontfamily], fontsize = py_thickness_scale(plt, sp[:legendtitlefontsize])) + PyPlot.plt."setp"( + leg."get_title"(), + color = py_color(sp[:legendtitlefontcolor]), + family = sp[:legendtitlefontfamily], + fontsize = py_thickness_scale(plt, sp[:legendtitlefontsize]), + ) end for txt in leg."get_texts"() - PyPlot.plt."setp"(txt, color = py_color(sp[:legendfontcolor]), family = sp[:legendfontfamily], fontsize = py_thickness_scale(plt, sp[:legendfontsize])) + PyPlot.plt."setp"( + txt, + color = py_color(sp[:legendfontcolor]), + family = sp[:legendfontfamily], + fontsize = py_thickness_scale(plt, sp[:legendfontsize]), + ) end end end @@ -1437,7 +1565,6 @@ end # ----------------------------------------------------------------- - # Use the bounding boxes (and methods left/top/right/bottom/width/height) `sp.bbox` and `sp.plotarea` to # position the subplot in the backend. function _update_plot_object(plt::Plot{PyPlotBackend}) @@ -1445,14 +1572,19 @@ function _update_plot_object(plt::Plot{PyPlotBackend}) ax = sp.o ax === nothing && return figw, figh = sp.plt[:size] - figw, figh = figw*px, figh*px + figw, figh = figw * px, figh * px pcts = bbox_to_pcts(sp.plotarea, figw, figh) ax."set_position"(pcts) if haskey(sp.attr, :cbar_ax) && RecipesPipeline.is3d(sp) # 2D plots are completely handled by axis dividers cbw = sp.attr[:cbar_width] # this is the bounding box of just the colors of the colorbar (not labels) - cb_bbox = BoundingBox(right(sp.bbox)-cbw - 2mm, top(sp.bbox) + 2mm, _cbar_width-1mm, height(sp.bbox) - 4mm) + cb_bbox = BoundingBox( + right(sp.bbox) - cbw - 2mm, + top(sp.bbox) + 2mm, + _cbar_width - 1mm, + height(sp.bbox) - 4mm, + ) pcts = bbox_to_pcts(cb_bbox, figw, figh) sp.attr[:cbar_ax]."set_position"(pcts) end @@ -1465,26 +1597,25 @@ end _display(plt::Plot{PyPlotBackend}) = plt.o."show"() - for (mime, fmt) in ( - "application/eps" => "eps", - "image/eps" => "eps", - "application/pdf" => "pdf", - "image/png" => "png", - "application/postscript" => "ps", - "image/svg+xml" => "svg", - "application/x-tex" => "pgf" + "application/eps" => "eps", + "image/eps" => "eps", + "application/pdf" => "pdf", + "image/png" => "png", + "application/postscript" => "ps", + "image/svg+xml" => "svg", + "application/x-tex" => "pgf", ) @eval function _show(io::IO, ::MIME{Symbol($mime)}, plt::Plot{PyPlotBackend}) fig = plt.o fig."canvas"."print_figure"( io, - format=$fmt, + format = $fmt, # bbox_inches = "tight", # figsize = map(px2inch, plt[:size]), facecolor = fig."get_facecolor"(), edgecolor = "none", - dpi = plt[:dpi] + dpi = plt[:dpi], ) end end diff --git a/src/backends/unicodeplots.jl b/src/backends/unicodeplots.jl index f0042436..74e5bce6 100644 --- a/src/backends/unicodeplots.jl +++ b/src/backends/unicodeplots.jl @@ -1,7 +1,6 @@ # https://github.com/Evizero/UnicodePlots.jl - # don't warn on unsupported... there's just too many warnings!! warn_on_unsupported_args(::UnicodePlotsBackend, plotattributes::KW) = nothing @@ -17,7 +16,6 @@ function _canvas_map() ) end - # do all the magic here... build it all at once, since we need to know about all the series at the very beginning function rebuildUnicodePlot!(plt::Plot, width, height) plt.o = [] @@ -25,8 +23,8 @@ function rebuildUnicodePlot!(plt::Plot, width, height) for sp in plt.subplots xaxis = sp[:xaxis] yaxis = sp[:yaxis] - xlim = axis_limits(sp, :x) - ylim = axis_limits(sp, :y) + xlim = axis_limits(sp, :x) + ylim = axis_limits(sp, :y) # make vectors xlim = [xlim[1], xlim[2]] @@ -49,13 +47,16 @@ function rebuildUnicodePlot!(plt::Plot, width, height) if length(sp.series_list) == 1 series = sp.series_list[1] if series[:seriestype] == :spy - push!(plt.o, UnicodePlots.spy( - series[:z].surf, - width = width, - height = height, - title = sp[:title], - canvas = canvas_type - )) + push!( + plt.o, + UnicodePlots.spy( + series[:z].surf, + width = width, + height = height, + title = sp[:title], + canvas = canvas_type, + ), + ) continue end end @@ -65,13 +66,16 @@ function rebuildUnicodePlot!(plt::Plot, width, height) # canvas_type = UnicodePlots.BarplotGraphics # end - o = UnicodePlots.Plot(x, y, canvas_type; + o = UnicodePlots.Plot( + x, + y, + canvas_type; width = width, height = height, title = sp[:title], xlim = xlim, ylim = ylim, - border = isijulia() ? :ascii : :solid + border = isijulia() ? :ascii : :solid, ) # set the axis labels @@ -88,7 +92,6 @@ function rebuildUnicodePlot!(plt::Plot, width, height) end end - # add a single series function addUnicodeSeries!(o, plotattributes, addlegend::Bool, xlim, ylim) # get the function, or special handling for step/bar/hist @@ -102,8 +105,8 @@ function addUnicodeSeries!(o, plotattributes, addlegend::Bool, xlim, ylim) func = UnicodePlots.lineplot! elseif st == :scatter || plotattributes[:markershape] != :none func = UnicodePlots.scatterplot! - # elseif st == :bar - # func = UnicodePlots.barplot! + # elseif st == :bar + # func = UnicodePlots.barplot! elseif st == :shape func = UnicodePlots.lineplot! else @@ -121,10 +124,14 @@ function addUnicodeSeries!(o, plotattributes, addlegend::Bool, xlim, ylim) label = addlegend ? plotattributes[:label] : "" # if we happen to pass in allowed color symbols, great... otherwise let UnicodePlots decide - color = plotattributes[:linecolor] in UnicodePlots.color_cycle ? plotattributes[:linecolor] : :auto + color = + plotattributes[:linecolor] in UnicodePlots.color_cycle ? + plotattributes[:linecolor] : :auto # add the series - x, y = RecipesPipeline.unzip(collect(Base.Iterators.filter(xy->isfinite(xy[1])&&isfinite(xy[2]), zip(x,y)))) + x, y = RecipesPipeline.unzip( + collect(Base.Iterators.filter(xy -> isfinite(xy[1]) && isfinite(xy[2]), zip(x, y))), + ) func(o, x, y; color = color, name = label) end @@ -162,7 +169,7 @@ end function unicodeplots_rebuild(plt::Plot{UnicodePlotsBackend}) w, h = plt[:size] - plt.attr[:color_palette] = [RGB(0,0,0)] + plt.attr[:color_palette] = [RGB(0, 0, 0)] rebuildUnicodePlot!(plt, div(w, 10), div(h, 20)) end @@ -172,7 +179,6 @@ function _show(io::IO, ::MIME"text/plain", plt::Plot{UnicodePlotsBackend}) nothing end - function _display(plt::Plot{UnicodePlotsBackend}) unicodeplots_rebuild(plt) map(show, plt.o) diff --git a/src/backends/web.jl b/src/backends/web.jl index 876858cf..92b6b185 100644 --- a/src/backends/web.jl +++ b/src/backends/web.jl @@ -3,7 +3,10 @@ # CREDIT: parts of this implementation were inspired by @joshday's PlotlyLocal.jl -function standalone_html(plt::AbstractPlot; title::AbstractString = get(plt.attr, :window_title, "Plots.jl")) +function standalone_html( + plt::AbstractPlot; + title::AbstractString = get(plt.attr, :window_title, "Plots.jl"), +) """ @@ -49,7 +52,8 @@ function standalone_html_window(plt::AbstractPlot) old = use_local_dependencies[] # save state to restore afterwards # if we open a browser ourself, we can host local files, so # when we have a local plotly downloaded this is the way to go! - use_local_dependencies[] = plotly_local_file_path[] === nothing ? false : isfile(plotly_local_file_path[]) + use_local_dependencies[] = + plotly_local_file_path[] === nothing ? false : isfile(plotly_local_file_path[]) filename = write_temp_html(plt) open_browser_window(filename) # restore for other backends @@ -58,7 +62,9 @@ end # uses wkhtmltopdf/wkhtmltoimage: http://wkhtmltopdf.org/downloads.html function html_to_png(html_fn, png_fn, w, h) - run(`wkhtmltoimage -f png -q --width $w --height $h --disable-smart-width $html_fn $png_fn`) + run( + `wkhtmltoimage -f png -q --width $w --height $h --disable-smart-width $html_fn $png_fn`, + ) end function show_png_from_html(io::IO, plt::AbstractPlot) diff --git a/src/colorbars.jl b/src/colorbars.jl index b0f9996a..db59c7ef 100644 --- a/src/colorbars.jl +++ b/src/colorbars.jl @@ -1,10 +1,11 @@ # These functions return an operator for use in `get_clims(::Seres, op)` -process_clims(lims::Tuple{<:Number,<:Number}) = (zlims -> ifelse.(isfinite.(lims), lims, zlims)) ∘ ignorenan_extrema +process_clims(lims::Tuple{<:Number,<:Number}) = + (zlims -> ifelse.(isfinite.(lims), lims, zlims)) ∘ ignorenan_extrema process_clims(s::Union{Symbol,Nothing,Missing}) = ignorenan_extrema # don't specialize on ::Function otherwise python functions won't work process_clims(f) = f -function get_clims(sp::Subplot, op=process_clims(sp[:clims])) +function get_clims(sp::Subplot, op = process_clims(sp[:clims])) zmin, zmax = Inf, -Inf for series in series_list(sp) if series[:colorbar_entry] @@ -14,7 +15,7 @@ function get_clims(sp::Subplot, op=process_clims(sp[:clims])) return zmin <= zmax ? (zmin, zmax) : (NaN, NaN) end -function get_clims(sp::Subplot, series::Series, op=process_clims(sp[:clims])) +function get_clims(sp::Subplot, series::Series, op = process_clims(sp[:clims])) zmin, zmax = if series[:colorbar_entry] get_clims(sp, op) else @@ -30,13 +31,18 @@ Finds the limits for the colorbar by taking the "z-values" for the series and pa which must return the tuple `(zmin, zmax)`. The default op is the extrema of the finite values of the input. """ -function get_clims(series::Series, op=ignorenan_extrema) +function get_clims(series::Series, op = ignorenan_extrema) zmin, zmax = Inf, -Inf z_colored_series = (:contour, :contour3d, :heatmap, :histogram2d, :surface, :hexbin) - for vals in (series[:seriestype] in z_colored_series ? series[:z] : nothing, series[:line_z], series[:marker_z], series[:fill_z]) - if (typeof(vals) <: AbstractSurface) && (eltype(vals.surf) <: Union{Missing, Real}) + for vals in ( + series[:seriestype] in z_colored_series ? series[:z] : nothing, + series[:line_z], + series[:marker_z], + series[:fill_z], + ) + if (typeof(vals) <: AbstractSurface) && (eltype(vals.surf) <: Union{Missing,Real}) zmin, zmax = _update_clims(zmin, zmax, op(vals.surf)...) - elseif (vals !== nothing) && (eltype(vals) <: Union{Missing, Real}) + elseif (vals !== nothing) && (eltype(vals) <: Union{Missing,Real}) zmin, zmax = _update_clims(zmin, zmax, op(vals)...) end end @@ -60,8 +66,8 @@ function colorbar_style(series::Series) cbar_fill elseif iscontour(series) cbar_lines - elseif series[:seriestype] ∈ (:heatmap,:surface) || - any(series[z] !== nothing for z ∈ [:marker_z,:line_z,:fill_z]) + elseif series[:seriestype] ∈ (:heatmap, :surface) || + any(series[z] !== nothing for z in [:marker_z, :line_z, :fill_z]) cbar_gradient else nothing @@ -69,7 +75,8 @@ function colorbar_style(series::Series) end hascolorbar(series::Series) = colorbar_style(series) !== nothing -hascolorbar(sp::Subplot) = sp[:colorbar] != :none && any(hascolorbar(s) for s in series_list(sp)) +hascolorbar(sp::Subplot) = + sp[:colorbar] != :none && any(hascolorbar(s) for s in series_list(sp)) function get_colorbar_ticks(sp::Subplot; update = true) if update || !haskey(sp.attr, :colorbar_optimized_ticks) diff --git a/src/components.jl b/src/components.jl index b6a8feb3..e8eadc72 100644 --- a/src/components.jl +++ b/src/components.jl @@ -12,7 +12,7 @@ compute_angle(v::P2) = (angle = atan(v[2], v[1]); angle < 0 ? 2π - angle : angl # ------------------------------------------------------------- -struct Shape{X<:Number, Y<:Number} +struct Shape{X<:Number,Y<:Number} x::Vector{X} y::Vector{Y} # function Shape(x::AVec, y::AVec) @@ -52,75 +52,83 @@ function coords(shapes::AVec{<:Shape}) end "get an array of tuples of points on a circle with radius `r`" -partialcircle(start_θ, end_θ, n=20, r=1) = [ - (r*cos(u), r*sin(u)) for u in range(start_θ, stop=end_θ, length=n) -] +partialcircle(start_θ, end_θ, n = 20, r = 1) = + [(r * cos(u), r * sin(u)) for u in range(start_θ, stop = end_θ, length = n)] "interleave 2 vectors into each other (like a zipper's teeth)" -function weave(x, y; ordering=Vector[x, y]) - ret = eltype(x)[] - done = false - while !done - for o in ordering - try - push!(ret, popfirst!(o)) - catch - end +function weave(x, y; ordering = Vector[x, y]) + ret = eltype(x)[] + done = false + while !done + for o in ordering + try + push!(ret, popfirst!(o)) + catch + end + end + done = isempty(x) && isempty(y) end - done = isempty(x) && isempty(y) - end - ret + ret end "create a star by weaving together points from an outer and inner circle. `n` is the number of arms" -function makestar(n; offset=-0.5, radius=1.0) +function makestar(n; offset = -0.5, radius = 1.0) z1 = offset * π z2 = z1 + π / (n) - outercircle = partialcircle(z1, z1 + 2π, n+1, radius) - innercircle = partialcircle(z2, z2 + 2π, n+1, 0.4radius) + outercircle = partialcircle(z1, z1 + 2π, n + 1, radius) + innercircle = partialcircle(z2, z2 + 2π, n + 1, 0.4radius) Shape(weave(outercircle, innercircle)) end "create a shape by picking points around the unit circle. `n` is the number of point/sides, `offset` is the starting angle" -makeshape(n; offset=-0.5, radius=1.0) = Shape( - partialcircle(offset * π, offset * π + 2π, n+1, radius) -) +makeshape(n; offset = -0.5, radius = 1.0) = + Shape(partialcircle(offset * π, offset * π + 2π, n + 1, radius)) -function makecross(; offset=-0.5, radius=1.0) +function makecross(; offset = -0.5, radius = 1.0) z2 = offset * π - z1 = z2 - π/8 + z1 = z2 - π / 8 outercircle = partialcircle(z1, z1 + 2π, 9, radius) innercircle = partialcircle(z2, z2 + 2π, 5, 0.5radius) - Shape(weave(outercircle, innercircle, - ordering=Vector[outercircle, innercircle, outercircle])) + Shape( + weave( + outercircle, + innercircle, + ordering = Vector[outercircle, innercircle, outercircle], + ), + ) end -from_polar(angle, dist) = P2(dist*cos(angle), dist*sin(angle)) +from_polar(angle, dist) = P2(dist * cos(angle), dist * sin(angle)) -makearrowhead(angle; h=2.0, w=0.4, tip=from_polar(angle, h)) = Shape( - P2[(0, 0), from_polar(angle - 0.5π, w) - tip, from_polar(angle + 0.5π, w) - tip, (0, 0)] +makearrowhead(angle; h = 2.0, w = 0.4, tip = from_polar(angle, h)) = Shape( + P2[ + (0, 0), + from_polar(angle - 0.5π, w) - tip, + from_polar(angle + 0.5π, w) - tip, + (0, 0), + ], ) const _shapes = KW( :circle => makeshape(20), - :rect => makeshape(4, offset=-0.25), - :diamond => makeshape(4), - :utriangle => makeshape(3, offset=0.5), - :dtriangle => makeshape(3, offset=-0.5), - :rtriangle => makeshape(3, offset=0.0), - :ltriangle => makeshape(3, offset=1.0), - :pentagon => makeshape(5), - :hexagon => makeshape(6), - :heptagon => makeshape(7), - :octagon => makeshape(8), - :cross => makecross(offset=-0.25), - :xcross => makecross(), - :vline => Shape([(0, 1), (0, -1)]), - :hline => Shape([(1, 0), (-1, 0)]), - ) + :rect => makeshape(4, offset = -0.25), + :diamond => makeshape(4), + :utriangle => makeshape(3, offset = 0.5), + :dtriangle => makeshape(3, offset = -0.5), + :rtriangle => makeshape(3, offset = 0.0), + :ltriangle => makeshape(3, offset = 1.0), + :pentagon => makeshape(5), + :hexagon => makeshape(6), + :heptagon => makeshape(7), + :octagon => makeshape(8), + :cross => makecross(offset = -0.25), + :xcross => makecross(), + :vline => Shape([(0, 1), (0, -1)]), + :hline => Shape([(1, 0), (-1, 0)]), +) for n in 4:8 - _shapes[Symbol("star$n")] = makestar(n) + _shapes[Symbol("star$n")] = makestar(n) end Shape(k::Symbol) = deepcopy(_shapes[k]) @@ -133,13 +141,13 @@ function center(shape::Shape) x, y = coords(shape) n = length(x) A, Cx, Cy = 0, 0, 0 - for i ∈ 1:n - ip1 = i == n ? 1 : i+1 + for i in 1:n + ip1 = i == n ? 1 : i + 1 A += x[i] * y[ip1] - x[ip1] * y[i] end A *= 0.5 - for i ∈ 1:n - ip1 = i == n ? 1 : i+1 + for i in 1:n + ip1 = i == n ? 1 : i + 1 m = (x[i] * y[ip1] - x[ip1] * y[i]) Cx += (x[i] + x[ip1]) * m Cy += (y[i] + y[ip1]) * m @@ -147,47 +155,43 @@ function center(shape::Shape) Cx / 6A, Cy / 6A end -function scale!(shape::Shape, x::Real, y::Real=x, c=center(shape)) +function scale!(shape::Shape, x::Real, y::Real = x, c = center(shape)) sx, sy = coords(shape) cx, cy = c - for i ∈ eachindex(sx) + for i in eachindex(sx) sx[i] = (sx[i] - cx) * x + cx sy[i] = (sy[i] - cy) * y + cy end shape end -scale(shape::Shape, x::Real, y::Real=x, c=center(shape)) = scale!(deepcopy(shape), x, y, c) - +scale(shape::Shape, x::Real, y::Real = x, c = center(shape)) = + scale!(deepcopy(shape), x, y, c) "translate a Shape in space" -function translate!(shape::Shape, x::Real, y::Real=x) +function translate!(shape::Shape, x::Real, y::Real = x) sx, sy = coords(shape) - for i ∈ eachindex(sx) + for i in eachindex(sx) sx[i] += x sy[i] += y end shape end -translate(shape::Shape, x::Real, y::Real=x) = translate!(deepcopy(shape), x, y) +translate(shape::Shape, x::Real, y::Real = x) = translate!(deepcopy(shape), x, y) -rotate_x(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) = ( - (x - centerx) * cos(Θ) - (y - centery) * sin(Θ) + centerx -) +rotate_x(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) = + ((x - centerx) * cos(Θ) - (y - centery) * sin(Θ) + centerx) -rotate_y(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) = ( - (y - centery) * cos(Θ) + (x - centerx) * sin(Θ) + centery -) +rotate_y(x::Real, y::Real, Θ::Real, centerx::Real, centery::Real) = + ((y - centery) * cos(Θ) + (x - centerx) * sin(Θ) + centery) -rotate(x::Real, y::Real, θ::Real, c=center(shape)) = ( - rotate_x(x, y, Θ, c...), - rotate_y(x, y, Θ, c...), -) +rotate(x::Real, y::Real, θ::Real, c = center(shape)) = + (rotate_x(x, y, Θ, c...), rotate_y(x, y, Θ, c...)) -function rotate!(shape::Shape, Θ::Real, c=center(shape)) +function rotate!(shape::Shape, Θ::Real, c = center(shape)) x, y = coords(shape) - for i ∈ eachindex(x) + for i in eachindex(x) xi = rotate_x(x[i], y[i], Θ, c...) yi = rotate_y(x[i], y[i], Θ, c...) x[i], y[i] = xi, yi @@ -196,7 +200,7 @@ function rotate!(shape::Shape, Θ::Real, c=center(shape)) end "rotate an object in space" -function rotate(shape::Shape, θ::Real, c=center(shape)) +function rotate(shape::Shape, θ::Real, c = center(shape)) x, y = coords(shape) x_new = rotate_x.(x, y, θ, c...) y_new = rotate_y.(x, y, θ, c...) @@ -206,12 +210,12 @@ end # ----------------------------------------------------------------------- mutable struct Font - family::AbstractString - pointsize::Int - halign::Symbol - valign::Symbol - rotation::Float64 - color::Colorant + family::AbstractString + pointsize::Int + halign::Symbol + valign::Symbol + rotation::Float64 + color::Colorant end """ @@ -232,71 +236,71 @@ julia> font(family="serif", halign=:center, rotation=45.0) ``` """ function font(args...; kw...) - # defaults - family = "sans-serif" - pointsize = 14 - halign = :hcenter - valign = :vcenter - rotation = 0 - color = colorant"black" + # defaults + family = "sans-serif" + pointsize = 14 + halign = :hcenter + valign = :vcenter + rotation = 0 + color = colorant"black" - for arg in args - T = typeof(arg) + for arg in args + T = typeof(arg) - if T == Font - family = arg.family - pointsize = arg.pointsize - halign = arg.halign - valign = arg.valign - rotation = arg.rotation - color = arg.color - elseif arg == :center - halign = :hcenter - valign = :vcenter - elseif arg ∈ _haligns - halign = arg - elseif arg ∈ _valigns - valign = arg - elseif T <: Colorant - color = arg - elseif T <: Symbol || T <: AbstractString - try - color = parse(Colorant, string(arg)) - catch - family = string(arg) - end - elseif typeof(arg) <: Integer - pointsize = arg - elseif typeof(arg) <: Real - rotation = convert(Float64, arg) - else - @warn "Unused font arg: $arg ($(typeof(arg)))" + if T == Font + family = arg.family + pointsize = arg.pointsize + halign = arg.halign + valign = arg.valign + rotation = arg.rotation + color = arg.color + elseif arg == :center + halign = :hcenter + valign = :vcenter + elseif arg ∈ _haligns + halign = arg + elseif arg ∈ _valigns + valign = arg + elseif T <: Colorant + color = arg + elseif T <: Symbol || T <: AbstractString + try + color = parse(Colorant, string(arg)) + catch + family = string(arg) + end + elseif typeof(arg) <: Integer + pointsize = arg + elseif typeof(arg) <: Real + rotation = convert(Float64, arg) + else + @warn "Unused font arg: $arg ($(typeof(arg)))" + end end - end - for sym in keys(kw) - if sym == :family - family = string(kw[sym]) - elseif sym == :pointsize - pointsize = kw[sym] - elseif sym == :halign - halign = kw[sym] - halign == :center && (halign = :hcenter) - @assert halign ∈ _haligns - elseif sym == :valign - valign = kw[sym] - valign == :center && (valign = :vcenter) - @assert valign ∈ _valigns - elseif sym == :rotation - rotation = kw[sym] - elseif sym == :color - color = parse(Colorant, kw[sym]) - else - @warn "Unused font kwarg: $sym" + for sym in keys(kw) + if sym == :family + family = string(kw[sym]) + elseif sym == :pointsize + pointsize = kw[sym] + elseif sym == :halign + halign = kw[sym] + halign == :center && (halign = :hcenter) + @assert halign ∈ _haligns + elseif sym == :valign + valign = kw[sym] + valign == :center && (valign = :vcenter) + @assert valign ∈ _valigns + elseif sym == :rotation + rotation = kw[sym] + elseif sym == :color + color = parse(Colorant, kw[sym]) + else + @warn "Unused font kwarg: $sym" + end end - end - Font(family, pointsize, halign, valign, rotation, color) + Font(family, pointsize, halign, valign, rotation, color) end function scalefontsize(k::Symbol, factor::Number) @@ -332,7 +336,7 @@ function scalefontsizes() f = default(k) if k in keys(_initial_fontsizes) factor = f / _initial_fontsizes[k] - scalefontsize(k, 1.0/factor) + scalefontsize(k, 1.0 / factor) end end @@ -341,7 +345,7 @@ function scalefontsizes() if k in keys(_initial_fontsizes) f = default(Symbol(letter, k)) factor = f / _initial_fontsizes[k] - scalefontsize(Symbol(letter, k), 1.0/factor) + scalefontsize(Symbol(letter, k), 1.0 / factor) end end end @@ -351,8 +355,8 @@ resetfontsizes() = scalefontsizes() "Wrap a string with font info" struct PlotText - str::AbstractString - font::Font + str::AbstractString + font::Font end PlotText(str) = PlotText(string(str), font()) @@ -372,10 +376,10 @@ Base.length(t::PlotText) = length(t.str) # ----------------------------------------------------------------------- struct Stroke - width - color - alpha - style + width + color + alpha + style end """ @@ -383,67 +387,66 @@ end Define the properties of the stroke used in plotting lines """ -function stroke(args...; alpha=nothing) - width = 1 - color = :black - style = :solid +function stroke(args...; alpha = nothing) + width = 1 + color = :black + style = :solid - for arg in args - T = typeof(arg) + for arg in args + T = typeof(arg) - # if arg in _allStyles - if allStyles(arg) - style = arg - elseif T <: Colorant - color = arg - elseif T <: Symbol || T <: AbstractString - try - color = parse(Colorant, string(arg)) - catch - end - elseif allAlphas(arg) - alpha = arg - elseif allReals(arg) - width = arg - else - @warn "Unused stroke arg: $arg ($(typeof(arg)))" + # if arg in _allStyles + if allStyles(arg) + style = arg + elseif T <: Colorant + color = arg + elseif T <: Symbol || T <: AbstractString + try + color = parse(Colorant, string(arg)) + catch + end + elseif allAlphas(arg) + alpha = arg + elseif allReals(arg) + width = arg + else + @warn "Unused stroke arg: $arg ($(typeof(arg)))" + end end - end - Stroke(width, color, alpha, style) + Stroke(width, color, alpha, style) end - struct Brush - size # fillrange, markersize, or any other sizey attribute - color - alpha + size # fillrange, markersize, or any other sizey attribute + color + alpha end -function brush(args...; alpha=nothing) - size = 1 - color = :black +function brush(args...; alpha = nothing) + size = 1 + color = :black - for arg in args - T = typeof(arg) + for arg in args + T = typeof(arg) - if T <: Colorant - color = arg - elseif T <: Symbol || T <: AbstractString - try - color = parse(Colorant, string(arg)) - catch - end - elseif allAlphas(arg) - alpha = arg - elseif allReals(arg) - size = arg - else - @warn "Unused brush arg: $arg ($(typeof(arg)))" + if T <: Colorant + color = arg + elseif T <: Symbol || T <: AbstractString + try + color = parse(Colorant, string(arg)) + catch + end + elseif allAlphas(arg) + alpha = arg + elseif allReals(arg) + size = arg + else + @warn "Unused brush arg: $arg ($(typeof(arg)))" + end end - end - Brush(size, color, alpha) + Brush(size, color, alpha) end # ----------------------------------------------------------------------- @@ -451,7 +454,7 @@ end mutable struct SeriesAnnotations strs::AVec # the labels/names font::Font - baseshape::Union{Shape, AVec{Shape}, Nothing} + baseshape::Union{Shape,AVec{Shape},Nothing} scalefactor::Tuple end @@ -490,10 +493,10 @@ function series_annotations(strs::AVec, args...) # scale!(s, scalefactor, scalefactor, (0, 0)) # end # end - SeriesAnnotations([_text_label(s, fnt) for s ∈ strs], fnt, shp, scalefactor) + SeriesAnnotations([_text_label(s, fnt) for s in strs], fnt, shp, scalefactor) end -function series_annotations_shapes!(series::Series, scaletype::Symbol=:pixels) +function series_annotations_shapes!(series::Series, scaletype::Symbol = :pixels) anns = series[:series_annotations] # msw, msh = anns.scalefactor # ms = series[:markersize] @@ -512,7 +515,7 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol=:pixels) msw, msh = anns.scalefactor msize = Float64[] shapes = Vector{Shape}(undef, length(anns.strs)) - for i ∈ eachindex(anns.strs) + for i in eachindex(anns.strs) str = _cycle(anns.strs, i) # get the width and height of the string (in mm) @@ -530,7 +533,8 @@ function series_annotations_shapes!(series::Series, scaletype::Symbol=:pixels) maxscale = max(xscale, yscale) push!(msize, maxscale) baseshape = _cycle(anns.baseshape, i) - shapes[i] = scale(baseshape, msw*xscale/maxscale, msh*yscale/maxscale, (0, 0)) + shapes[i] = + scale(baseshape, msw * xscale / maxscale, msh * yscale / maxscale, (0, 0)) end series[:markershape] = shapes series[:markersize] = msize @@ -544,7 +548,7 @@ mutable struct EachAnn y end -function Base.iterate(ea::EachAnn, i=1) +function Base.iterate(ea::EachAnn, i = 1) if ea.anns === nothing || isempty(ea.anns.strs) || i > length(ea.y) return end @@ -555,7 +559,7 @@ function Base.iterate(ea::EachAnn, i=1) else tmp, ea.anns.font end - ((_cycle(ea.x, i), _cycle(ea.y, i), str, fnt), i+1) + ((_cycle(ea.x, i), _cycle(ea.y, i), str, fnt), i + 1) end # ----------------------------------------------------------------------- @@ -566,36 +570,41 @@ annotations(anns) = Any[anns] annotations(::Nothing) = [] _annotationfont(sp::Subplot) = Plots.font(; - family=sp[:annotationfontfamily], - pointsize=sp[:annotationfontsize], - halign=sp[:annotationhalign], - valign=sp[:annotationvalign], - rotation=sp[:annotationrotation], - color=sp[:annotationcolor], + family = sp[:annotationfontfamily], + pointsize = sp[:annotationfontsize], + halign = sp[:annotationhalign], + valign = sp[:annotationvalign], + rotation = sp[:annotationrotation], + color = sp[:annotationcolor], ) -_annotation(sp::Subplot, font, lab, pos...; alphabet="abcdefghijklmnopqrstuvwxyz") = ( - pos..., - lab == :auto ? text("($(alphabet[sp[:subplot_index]]))", font) : _text_label(lab, font) +_annotation(sp::Subplot, font, lab, pos...; alphabet = "abcdefghijklmnopqrstuvwxyz") = ( + pos..., + lab == :auto ? text("($(alphabet[sp[:subplot_index]]))", font) : _text_label(lab, font), ) # Expand arrays of coordinates, positions and labels into individual annotations # and make sure labels are of type PlotText -function process_annotation(sp::Subplot, xs, ys, labs, font=_annotationfont(sp)) +function process_annotation(sp::Subplot, xs, ys, labs, font = _annotationfont(sp)) anns = [] labs = makevec(labs) xlength = length(methods(length, (typeof(xs),))) == 0 ? 1 : length(xs) ylength = length(methods(length, (typeof(ys),))) == 0 ? 1 : length(ys) for i in 1:max(xlength, ylength, length(labs)) - x, y, lab = _cycle(xs, i), _cycle(ys, i), _cycle(labs, i) - x = typeof(x) <: TimeType ? Dates.value(x) : x - y = typeof(y) <: TimeType ? Dates.value(y) : y - push!(anns, _annotation(sp, font, lab, x, y)) + x, y, lab = _cycle(xs, i), _cycle(ys, i), _cycle(labs, i) + x = typeof(x) <: TimeType ? Dates.value(x) : x + y = typeof(y) <: TimeType ? Dates.value(y) : y + push!(anns, _annotation(sp, font, lab, x, y)) end anns end -function process_annotation(sp::Subplot, positions::Union{AVec{Symbol}, Symbol, Tuple}, labs, font=_annotationfont(sp)) +function process_annotation( + sp::Subplot, + positions::Union{AVec{Symbol},Symbol,Tuple}, + labs, + font = _annotationfont(sp), +) anns = [] positions, labs = makevec(positions), makevec(labs) for i in 1:max(length(positions), length(labs)) @@ -609,47 +618,52 @@ _relative_position(xmin, xmax, pos::Length{:pct}) = xmin + pos.value * (xmax - x # Give each annotation coordinates based on specified position function locate_annotation( - sp::Subplot, pos::Symbol, label::PlotText; - position_multiplier=Dict{Symbol, Tuple{Float64, Float64}}( - :topleft => (0.1pct, 0.9pct), - :topcenter => (0.5pct, 0.9pct), - :topright => (0.9pct, 0.9pct), - :bottomleft => (0.1pct, 0.1pct), - :bottomcenter => (0.5pct, 0.1pct), - :bottomright => (0.9pct, 0.1pct), - ) + sp::Subplot, + pos::Symbol, + label::PlotText; + position_multiplier = Dict{Symbol,Tuple{Float64,Float64}}( + :topleft => (0.1pct, 0.9pct), + :topcenter => (0.5pct, 0.9pct), + :topright => (0.9pct, 0.9pct), + :bottomleft => (0.1pct, 0.1pct), + :bottomcenter => (0.5pct, 0.1pct), + :bottomright => (0.9pct, 0.1pct), + ), ) x, y = position_multiplier[pos] ( - _relative_position(axis_limits(sp, :x)..., x), - _relative_position(axis_limits(sp, :y)..., y), - label + _relative_position(axis_limits(sp, :x)..., x), + _relative_position(axis_limits(sp, :y)..., y), + label, ) end locate_annotation(sp::Subplot, x, y, label::PlotText) = (x, y, label) locate_annotation(sp::Subplot, x, y, z, label::PlotText) = (x, y, z, label) -locate_annotation(sp::Subplot, rel::NTuple{2, <:Number}, label::PlotText) = ( - _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), - _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), - label +locate_annotation(sp::Subplot, rel::NTuple{2,<:Number}, label::PlotText) = ( + _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), + _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), + label, ) -locate_annotation(sp::Subplot, rel::NTuple{3, <:Number}, label::PlotText) = ( - _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), - _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), - _relative_position(axis_limits(sp, :z)..., rel[3] * Plots.pct), - label +locate_annotation(sp::Subplot, rel::NTuple{3,<:Number}, label::PlotText) = ( + _relative_position(axis_limits(sp, :x)..., rel[1] * Plots.pct), + _relative_position(axis_limits(sp, :y)..., rel[2] * Plots.pct), + _relative_position(axis_limits(sp, :z)..., rel[3] * Plots.pct), + label, ) # ----------------------------------------------------------------------- "type which represents z-values for colors and sizes (and anything else that might come up)" struct ZValues - values::Vector{Float64} - zrange::Tuple{Float64, Float64} + values::Vector{Float64} + zrange::Tuple{Float64,Float64} end -function zvalues(values::AVec{T}, zrange::Tuple{T, T}=(ignorenan_minimum(values), ignorenan_maximum(values))) where T<:Real - ZValues(collect(float(values)), map(Float64, zrange)) +function zvalues( + values::AVec{T}, + zrange::Tuple{T,T} = (ignorenan_minimum(values), ignorenan_maximum(values)), +) where {T<:Real} + ZValues(collect(float(values)), map(Float64, zrange)) end # ----------------------------------------------------------------------- @@ -667,7 +681,6 @@ struct SurfaceFunction <: AbstractSurface f::Function end - # ----------------------------------------------------------------------- # # I don't want to clash with ValidatedNumerics, but this would be nice: @@ -718,15 +731,14 @@ function arrow(args...) Arrow(style, side, headlength, headwidth) end - # allow for do-block notation which gets called on every valid start/end pair which # we need to draw an arrow function add_arrows(func::Function, x::AVec, y::AVec) - for i ∈ 2:length(x) - xyprev = (x[i-1], y[i-1]) + for i in 2:length(x) + xyprev = (x[i - 1], y[i - 1]) xy = (x[i], y[i]) if ok(xyprev) && ok(xy) - if i == length(x) || !ok(x[i+1], y[i+1]) + if i == length(x) || !ok(x[i + 1], y[i + 1]) # add the arrow from xyprev to xy func(xyprev, xy) end @@ -736,28 +748,27 @@ end # ----------------------------------------------------------------------- "create a BezierCurve for plotting" -mutable struct BezierCurve{T <: GeometryBasics.Point} +mutable struct BezierCurve{T<:GeometryBasics.Point} control_points::Vector{T} end function (bc::BezierCurve)(t::Real) p = zero(P2) - n = length(bc.control_points)-1 + n = length(bc.control_points) - 1 for i in 0:n - p += bc.control_points[i+1] * binomial(n, i) * (1-t)^(n-i) * t^i + p += bc.control_points[i + 1] * binomial(n, i) * (1 - t)^(n - i) * t^i end p end @deprecate curve_points coords -coords(curve::BezierCurve, n::Integer=30; range=[0, 1]) = map( - curve, Base.range(first(range), stop=last(range), length=n) -) +coords(curve::BezierCurve, n::Integer = 30; range = [0, 1]) = + map(curve, Base.range(first(range), stop = last(range), length = n)) -function extrema_plus_buffer(v, buffmult=0.2) +function extrema_plus_buffer(v, buffmult = 0.2) vmin, vmax = ignorenan_extrema(v) - vdiff = vmax-vmin + vdiff = vmax - vmin buffer = vdiff * buffmult vmin - buffer, vmax + buffer end diff --git a/src/examples.jl b/src/examples.jl index 2f165f98..6cd1e9b3 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -28,35 +28,33 @@ const _examples = PlotExample[ to generate the animation.) Use command `gif(anim, filename, fps=15)` to save the animation. """, - [:( - begin - p = plot([sin, cos], zeros(0), leg = false, xlims = (0, 2π), ylims = (-1, 1)) - anim = Animation() - for x in range(0, stop = 2π, length = 20) - push!(p, x, Float64[sin(x), cos(x)]) - frame(anim) + [ + :( + begin + p = plot( + [sin, cos], + zeros(0), + leg = false, + xlims = (0, 2π), + ylims = (-1, 1), + ) + anim = Animation() + for x in range(0, stop = 2π, length = 20) + push!(p, x, Float64[sin(x), cos(x)]) + frame(anim) + end end - end - )], + ), + ], ), PlotExample( # 3 "Parametric plots", "Plot function pair (x(u), y(u)).", - [ - :( + [:( begin - plot( - sin, - x -> sin(2x), - 0, - 2π, - line = 4, - leg = false, - fill = (0, :orange), - ) + plot(sin, x -> sin(2x), 0, 2π, line = 4, leg = false, fill = (0, :orange)) end - ), - ], + )], ), PlotExample( # 4 "Colors", @@ -120,7 +118,6 @@ const _examples = PlotExample[ ), ], ), - PlotExample( # 6 "Images", "Plot an image. y-axis is set to flipped", @@ -128,7 +125,9 @@ const _examples = PlotExample[ :( begin import FileIO - path = download("http://juliaplots.org/PlotReferenceImages.jl/Plots/pyplot/0.7.0/ref1.png") + path = download( + "http://juliaplots.org/PlotReferenceImages.jl/Plots/pyplot/0.7.0/ref1.png", + ) img = FileIO.load(path) plot(img) end @@ -189,12 +188,11 @@ const _examples = PlotExample[ PlotExample( # 11 "Line types", "", - [ - :( + [:( begin linetypes = [:path :steppre :steppost :sticks :scatter] n = length(linetypes) - x = Vector[sort(rand(20)) for i = 1:n] + x = Vector[sort(rand(20)) for i in 1:n] y = rand(20, n) plot( x, @@ -204,8 +202,7 @@ const _examples = PlotExample[ ms = 15, ) end - ), - ], + )], ), PlotExample( # 12 "Line styles", @@ -236,10 +233,8 @@ const _examples = PlotExample[ [ :( begin - markers = filter( - m -> m in Plots.supported_markers(), - Plots._shape_keys, - ) + markers = + filter(m -> m in Plots.supported_markers(), Plots._shape_keys) markers = permutedims(markers) n = length(markers) x = range(0, stop = 10, length = n + 2)[2:(end - 1)] @@ -270,17 +265,11 @@ const _examples = PlotExample[ PlotExample( # 15 "Histogram", "", - [ - :( + [:( begin - histogram( - randn(1000), - bins = :scott, - weights = repeat(1:5, outer = 200), - ) + histogram(randn(1000), bins = :scott, weights = repeat(1:5, outer = 200)) end - ), - ], + )], ), PlotExample( # 16 "Subplots", @@ -326,15 +315,13 @@ const _examples = PlotExample[ PlotExample( # 18 "", "", - [ - :( - begin - using Random - Random.seed!(111) - plot!(Plots.fakedata(100, 10)) - end - ) - ] + [:( + begin + using Random + Random.seed!(111) + plot!(Plots.fakedata(100, 10)) + end + )], ), PlotExample( # 19 "Open/High/Low/Close", @@ -357,8 +344,7 @@ const _examples = PlotExample[ bot[i] + hgt[i], bot[i], closepct[i] * hgt[i] + bot[i], - ) - for i = 1:n + ) for i in 1:n ] ohlc(y) end @@ -396,11 +382,7 @@ const _examples = PlotExample[ ) annotate!([ (5, y[5], ("this is #5", 16, :red, :center)), - ( - 10, - y[10], - ("this is #10", :right, 20, "courier"), - ), + (10, y[10], ("this is #10", :right, 20, "courier")), ]) scatter!( range(2, stop = 8, length = 6), @@ -579,8 +561,8 @@ const _examples = PlotExample[ "", [:( begin - xs = [string("x", i) for i = 1:10] - ys = [string("y", i) for i = 1:4] + xs = [string("x", i) for i in 1:10] + ys = [string("y", i) for i in 1:4] z = float((1:4) * reshape(1:10, 1, :)) heatmap(xs, ys, z, aspect_ratio = 1) end @@ -615,12 +597,7 @@ const _examples = PlotExample[ begin import RDatasets singers = RDatasets.dataset("lattice", "singer") - @df singers violin( - :VoicePart, - :Height, - line = 0, - fill = (0.2, :blue), - ) + @df singers violin(:VoicePart, :Height, line = 0, fill = (0.2, :blue)) @df singers boxplot!( :VoicePart, :Height, @@ -648,11 +625,7 @@ const _examples = PlotExample[ anim = Animation() for x in range(1, stop = 2π, length = 20) - plot(push!( - p, - x, - Float64[sin(x), cos(x), atan(x), cos(x), log(x)], - )) + plot(push!(p, x, Float64[sin(x), cos(x), atan(x), cos(x), log(x)])) frame(anim) end end @@ -677,18 +650,8 @@ const _examples = PlotExample[ 10 => ones(40), -10 => ones(40), ) - b = spdiagm( - 0 => 1:50, - 1 => 1:49, - -1 => 1:49, - 10 => 1:40, - -10 => 1:40, - ) - plot( - spy(a), - spy(b), - title = ["Unique nonzeros" "Different nonzeros"], - ) + b = spdiagm(0 => 1:50, 1 => 1:49, -1 => 1:49, 10 => 1:40, -10 => 1:40) + plot(spy(a), spy(b), title = ["Unique nonzeros" "Different nonzeros"]) end ), ], @@ -753,51 +716,37 @@ const _examples = PlotExample[ You can use the `line_z` and `marker_z` properties to associate a color with each line segment or marker in the plot. """, - [ - :( - begin - t = range(0, stop = 1, length = 100) - θ = 6π .* t - x = t .* cos.(θ) - y = t .* sin.(θ) - p1 = plot(x, y, line_z = t, linewidth = 3, legend = false) - p2 = scatter( - x, - y, - marker_z = +, - color = :bluesreds, - legend = false, - ) - plot(p1, p2) - end - ), - ], + [:( + begin + t = range(0, stop = 1, length = 100) + θ = 6π .* t + x = t .* cos.(θ) + y = t .* sin.(θ) + p1 = plot(x, y, line_z = t, linewidth = 3, legend = false) + p2 = scatter(x, y, marker_z = +, color = :bluesreds, legend = false) + plot(p1, p2) + end + )], ), PlotExample( # 36 "Portfolio Composition maps", """ see: http://stackoverflow.com/a/37732384/5075246 """, - [ - :( - begin - using Random - Random.seed!(111) - tickers = ["IBM", "Google", "Apple", "Intel"] - N = 10 - D = length(tickers) - weights = rand(N, D) - weights ./= sum(weights, dims = 2) - returns = sort!((1:N) + D * randn(N)) + [:( + begin + using Random + Random.seed!(111) + tickers = ["IBM", "Google", "Apple", "Intel"] + N = 10 + D = length(tickers) + weights = rand(N, D) + weights ./= sum(weights, dims = 2) + returns = sort!((1:N) + D * randn(N)) - portfoliocomposition( - weights, - returns, - labels = permutedims(tickers), - ) - end - ), - ], + portfoliocomposition(weights, returns, labels = permutedims(tickers)) + end + )], ), PlotExample( # 37 "Ribbons", @@ -810,10 +759,7 @@ const _examples = PlotExample[ :( begin plot( - plot( - 0:10; - ribbon = (LinRange(0, 2, 11), LinRange(0, 1, 11)), - ), + plot(0:10; ribbon = (LinRange(0, 2, 11), LinRange(0, 1, 11))), plot(0:10; ribbon = 0:0.5:5), plot(0:10; ribbon = sqrt), plot(0:10; ribbon = 1), @@ -878,11 +824,7 @@ const _examples = PlotExample[ plot!([(0, 0), (0, 0.9), (2, 0.9), (3, 1), (4, 0.9), (80, 0)]) plot!([(0, 0), (0, 0.9), (3, 0.9), (4, 1), (5, 0.9), (80, 0)]) plot!([(0, 0), (0, 0.9), (4, 0.9), (5, 1), (6, 0.9), (80, 0)]) - lens!( - [1, 6], - [0.9, 1.1], - inset = (1, bbox(0.5, 0.0, 0.4, 0.4)), - ) + lens!([1, 6], [0.9, 1.1], inset = (1, bbox(0.5, 0.0, 0.4, 0.4))) end end, ], @@ -890,17 +832,15 @@ const _examples = PlotExample[ PlotExample( # 41 "Array Types", "Plots supports different `Array` types that follow the `AbstractArray` interface, like `StaticArrays` and `OffsetArrays.`", - [ - quote - begin - using StaticArrays, OffsetArrays - sv = SVector{10}(rand(10)) - ov = OffsetVector(rand(10), -2) - plot([sv, ov], label = ["StaticArray" "OffsetArray"]) - plot!(3ov, ribbon=ov, label="OffsetArray ribbon") - end - end, - ], + [quote + begin + using StaticArrays, OffsetArrays + sv = SVector{10}(rand(10)) + ov = OffsetVector(rand(10), -2) + plot([sv, ov], label = ["StaticArray" "OffsetArray"]) + plot!(3ov, ribbon = ov, label = "OffsetArray ribbon") + end + end], ), PlotExample( # 42 "Setting defaults and font arguments", @@ -916,7 +856,7 @@ const _examples = PlotExample[ tickfont = (12, :orange), guide = "x", framestyle = :zerolines, - yminorgrid = true + yminorgrid = true, ) plot( [sin, cos], @@ -935,29 +875,25 @@ const _examples = PlotExample[ PlotExample( # 43 "Heatmap with DateTime axis", "", - [ - quote - begin - using Dates - z = rand(5, 5) - x = DateTime.(2016:2020) - y = 1:5 - heatmap(x, y, z) - end - end, - ], + [quote + begin + using Dates + z = rand(5, 5) + x = DateTime.(2016:2020) + y = 1:5 + heatmap(x, y, z) + end + end], ), PlotExample( # 44 "Linked axes", "", - [ - quote - begin - x = -5:0.1:5 - plot(plot(x, x->x^2), plot(x, x->sin(x)), layout = 2, link = :y) - end - end, - ], + [quote + begin + x = -5:0.1:5 + plot(plot(x, x -> x^2), plot(x, x -> sin(x)), layout = 2, link = :y) + end + end], ), PlotExample( # 45 "Error bars and array type recipes", @@ -972,8 +908,21 @@ const _examples = PlotExample[ value(m::Measurement) = m.val uncertainty(m::Measurement) = m.err - @recipe function f(::Type{T}, m::T) where T <: AbstractArray{<:Measurement} - if !(get(plotattributes, :seriestype, :path) in [:contour, :contourf, :contour3d, :heatmap, :surface, :wireframe, :image]) + @recipe function f( + ::Type{T}, + m::T, + ) where {T<:AbstractArray{<:Measurement}} + if !( + get(plotattributes, :seriestype, :path) in [ + :contour, + :contourf, + :contour3d, + :heatmap, + :surface, + :wireframe, + :image, + ] + ) error_sym = Symbol(plotattributes[:letter], :error) plotattributes[error_sym] = uncertainty.(m) end @@ -983,14 +932,14 @@ const _examples = PlotExample[ x = Measurement.(10sort(rand(10)), rand(10)) y = Measurement.(10sort(rand(10)), rand(10)) z = Measurement.(10sort(rand(10)), rand(10)) - surf = Measurement.((1:10) .* (1:10)', rand(10,10)) + surf = Measurement.((1:10) .* (1:10)', rand(10, 10)) plot( scatter(x, [x y]), scatter(x, y, z), heatmap(x, y, surf), wireframe(x, y, surf), - legend = :topleft + legend = :topleft, ) end end, @@ -1003,9 +952,9 @@ const _examples = PlotExample[ using GeometryBasics using Distributions d = MvNormal([1.0 0.75; 0.75 2.0]) - plot([(1,2),(3,2),(2,1),(2,3)]) - scatter!(Point2.(eachcol(rand(d,1000))), alpha=0.25) - end] + plot([(1, 2), (3, 2), (2, 1), (2, 3)]) + scatter!(Point2.(eachcol(rand(d, 1000))), alpha = 0.25) + end], ), PlotExample( # 47 "Mesh3d", @@ -1019,22 +968,29 @@ const _examples = PlotExample[ :( begin # specify the vertices - x=[0, 1, 2, 0] - y=[0, 0, 1, 2] - z=[0, 2, 0, 1] + x = [0, 1, 2, 0] + y = [0, 0, 1, 2] + z = [0, 2, 0, 1] # specify the triangles # every column is one triangle, # where the values denote the indices of the vertices of the triangle - i=[0, 0, 0, 1] - j=[1, 2, 3, 2] - k=[2, 3, 1, 3] + i = [0, 0, 0, 1] + j = [1, 2, 3, 2] + k = [2, 3, 1, 3] # the four triangles gives above give a tetrahedron mesh3d( - x, y, z; connections=(i, j, k), - title="triangles", xlabel="x", ylabel="y", zlabel="z", - legend=:none, margin=2Plots.mm + x, + y, + z; + connections = (i, j, k), + title = "triangles", + xlabel = "x", + ylabel = "y", + zlabel = "z", + legend = :none, + margin = 2Plots.mm, ) end ), @@ -1043,75 +999,90 @@ const _examples = PlotExample[ PlotExample( # 48 "Vectors of markershapes and segments", "", - [quote - using Base.Iterators: cycle, take + [ + quote + using Base.Iterators: cycle, take - yv = ones(9) - ys = [1; 1; NaN; ones(6)] - y = 5 .- [yv 2ys 3yv 4ys] + yv = ones(9) + ys = [1; 1; NaN; ones(6)] + y = 5 .- [yv 2ys 3yv 4ys] - plt_color_rows = plot( - y, - seriestype = [:path :path :scatter :scatter], - markershape = collect(take(cycle((:utriangle, :rect)), 9)), - markersize = 8, - color = collect(take(cycle((:red, :black)), 9)) - ) + plt_color_rows = plot( + y, + seriestype = [:path :path :scatter :scatter], + markershape = collect(take(cycle((:utriangle, :rect)), 9)), + markersize = 8, + color = collect(take(cycle((:red, :black)), 9)), + ) - plt_z_cols = plot( - y, - markershape = [:utriangle :x :circle :square], - markersize = [5 10 10 5], - marker_z = [5 4 3 2], - line_z = [1 3 3 1], - linewidth = [1 10 5 1] - ) + plt_z_cols = plot( + y, + markershape = [:utriangle :x :circle :square], + markersize = [5 10 10 5], + marker_z = [5 4 3 2], + line_z = [1 3 3 1], + linewidth = [1 10 5 1], + ) - plot(plt_color_rows, plt_z_cols) - end] + plot(plt_color_rows, plt_z_cols) + end, + ], ), PlotExample( # 49 "Polar heatmaps", "", [quote - x = range(0, 2π, length=9) - y = 0:4 - z = (1:4) .+ (1:8)' - heatmap(x, y, z, projection = :polar) - end] + x = range(0, 2π, length = 9) + y = 0:4 + z = (1:4) .+ (1:8)' + heatmap(x, y, z, projection = :polar) + end], ), PlotExample( # 50 "3D surface with axis guides", "", - [quote - f(x,a) = 1/x + a*x^2 - xs = collect(0.1:0.05:2.0); - as = collect(0.2:0.1:2.0); + [ + quote + f(x, a) = 1 / x + a * x^2 + xs = collect(0.1:0.05:2.0) + as = collect(0.2:0.1:2.0) - x_grid = [x for x in xs for y in as]; - a_grid = [y for x in xs for y in as]; + x_grid = [x for x in xs for y in as] + a_grid = [y for x in xs for y in as] - plot(x_grid, a_grid, f.(x_grid,a_grid), - st = :surface, - xlabel = "longer xlabel", - ylabel = "longer ylabel", - zlabel = "longer zlabel", - ) - end] + plot( + x_grid, + a_grid, + f.(x_grid, a_grid), + st = :surface, + xlabel = "longer xlabel", + ylabel = "longer ylabel", + zlabel = "longer zlabel", + ) + end, + ], ), PlotExample( # 51 "Images with custom axes", "", - [quote - using Plots - using TestImages - img = testimage("lighthouse") + [ + quote + using Plots + using TestImages + img = testimage("lighthouse") - # plot the image reversing the first dimension and setting yflip = false - plot([-π, π], [-1, 1], reverse(img, dims=1), yflip=false, aspect_ratio=:none) - # plot other data - plot!(sin, -π, π, lw=3, color=:red) - end] + # plot the image reversing the first dimension and setting yflip = false + plot( + [-π, π], + [-1, 1], + reverse(img, dims = 1), + yflip = false, + aspect_ratio = :none, + ) + # plot other data + plot!(sin, -π, π, lw = 3, color = :red) + end, + ], ), PlotExample( # 52 "3d quiver", @@ -1119,9 +1090,9 @@ const _examples = PlotExample[ [quote using Plots - ϕs = range(-π, π, length=50) - θs = range(0, π, length=25) - θqs = range(1, π-1, length=25) + ϕs = range(-π, π, length = 50) + θs = range(0, π, length = 25) + θqs = range(1, π - 1, length = 25) x = vec([sin(θ) * cos(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) y = vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θs)]) @@ -1131,25 +1102,43 @@ const _examples = PlotExample[ v = 0.1 * vec([sin(θ) * sin(ϕ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) w = 0.1 * vec([cos(θ) for (ϕ, θ) in Iterators.product(ϕs, θqs)]) - quiver(x,y,z, quiver=(u,v,w)) - end] + quiver(x, y, z, quiver = (u, v, w)) + end], ), PlotExample( # 53 "Step Types", "A comparison of the various step-like `seriestype`s", [ :( - begin - x = 1:5 - y = [1, 2, 3, 2, 1] - default(shape=:circle) - plot( - plot(x, y, markershape=:circle, seriestype=:steppre, label="steppre"), - plot(x, y, markershape=:circle, seriestype=:stepmid, label="stepmid"), - plot(x, y, markershape=:circle, seriestype=:steppost, label="steppost"), - layout=(3,1) - ) - end + begin + x = 1:5 + y = [1, 2, 3, 2, 1] + default(shape = :circle) + plot( + plot( + x, + y, + markershape = :circle, + seriestype = :steppre, + label = "steppre", + ), + plot( + x, + y, + markershape = :circle, + seriestype = :stepmid, + label = "stepmid", + ), + plot( + x, + y, + markershape = :circle, + seriestype = :steppost, + label = "steppost", + ), + layout = (3, 1), + ) + end ), ], ), @@ -1158,22 +1147,22 @@ const _examples = PlotExample[ "", [ :( - begin - plot( - rand(10, 4), - layout=4, - xguide="x guide", - yguide="y guide", - xguidefonthalign=[:left :right :right :left], - yguidefontvalign=[:top :bottom :bottom :top], - xguideposition=:top, - yguideposition=[:right :left :right :left], - ymirror=[false true true false], - xmirror=[false false true true], - legend=false, - seriestype=[:bar :scatter :path :stepmid] - ) - end + begin + plot( + rand(10, 4), + layout = 4, + xguide = "x guide", + yguide = "y guide", + xguidefonthalign = [:left :right :right :left], + yguidefontvalign = [:top :bottom :bottom :top], + xguideposition = :top, + yguideposition = [:right :left :right :left], + ymirror = [false true true false], + xmirror = [false false true true], + legend = false, + seriestype = [:bar :scatter :path :stepmid], + ) + end ), ], ), @@ -1182,44 +1171,60 @@ const _examples = PlotExample[ "", [ :( - begin - using LinearAlgebra - scalefontsizes(.4) + begin + using LinearAlgebra + scalefontsizes(0.4) - x, y = collect(-6:0.5:10), collect(-8:0.5:8) + x, y = collect(-6:0.5:10), collect(-8:0.5:8) - args = x, y, (x, y) -> sinc(norm([x, y]) / π) - kwargs = Dict(:xlabel=>"x", :ylabel=>"y", :zlabel=>"z", :grid=>true, :minorgrid=>true) + args = x, y, (x, y) -> sinc(norm([x, y]) / π) + kwargs = Dict( + :xlabel => "x", + :ylabel => "y", + :zlabel => "z", + :grid => true, + :minorgrid => true, + ) - plots = [wireframe(args..., title = "wire"; kwargs...)] + plots = [wireframe(args..., title = "wire"; kwargs...)] - for ax ∈ (:x, :y, :z) - push!(plots, wireframe( - args..., - title = "wire-flip-$ax", - xflip = ax == :x, - yflip = ax == :y, - zflip = ax == :z; - kwargs..., - )) + for ax in (:x, :y, :z) + push!( + plots, + wireframe( + args..., + title = "wire-flip-$ax", + xflip = ax == :x, + yflip = ax == :y, + zflip = ax == :z; + kwargs..., + ), + ) + end + + for ax in (:x, :y, :z) + push!( + plots, + wireframe( + args..., + title = "wire-mirror-$ax", + xmirror = ax == :x, + ymirror = ax == :y, + zmirror = ax == :z; + kwargs..., + ), + ) + end + + plt = plot( + plots..., + layout = (@layout [_ ° _; ° ° °; ° ° °]), + margin = 0Plots.px, + ) + + resetfontsizes() + plt end - - for ax ∈ (:x, :y, :z) - push!(plots, wireframe( - args..., - title = "wire-mirror-$ax", - xmirror = ax == :x, - ymirror = ax == :y, - zmirror = ax == :z; - kwargs..., - )) - end - - plt = plot(plots..., layout=(@layout [_ ° _; ° ° °; ° ° °]), margin=0Plots.px) - - resetfontsizes() - plt - end ), ], ), @@ -1252,8 +1257,6 @@ _backend_skips = Dict( ], ) - - # --------------------------------------------------------------------------------- # make and display one plot diff --git a/src/fileio.jl b/src/fileio.jl index dbb0469e..624eeff5 100644 --- a/src/fileio.jl +++ b/src/fileio.jl @@ -1,8 +1,10 @@ # --------------------------------------------------------- # A backup, if no PNG generation is defined, is to try to make a PDF and use FileIO to convert -_fileio_load(@nospecialize(filename::AbstractString)) = FileIO.load(filename::AbstractString) -_fileio_save(@nospecialize(filename::AbstractString), @nospecialize(x)) = FileIO.save(filename::AbstractString, x) +_fileio_load(@nospecialize(filename::AbstractString)) = + FileIO.load(filename::AbstractString) +_fileio_save(@nospecialize(filename::AbstractString), @nospecialize(x)) = + FileIO.save(filename::AbstractString, x) function _show_pdfbackends(io::IO, ::MIME"image/png", plt::Plot) fn = tempname() @@ -21,4 +23,5 @@ function _show_pdfbackends(io::IO, ::MIME"image/png", plt::Plot) write(io, read(open(pngfn), String)) end -const PDFBackends = Union{PGFPlotsBackend,PlotlyJSBackend,PyPlotBackend,InspectDRBackend,GRBackend} +const PDFBackends = + Union{PGFPlotsBackend,PlotlyJSBackend,PyPlotBackend,InspectDRBackend,GRBackend} diff --git a/src/ijulia.jl b/src/ijulia.jl index 7d2786ee..3cf8da78 100644 --- a/src/ijulia.jl +++ b/src/ijulia.jl @@ -1,15 +1,14 @@ const use_local_dependencies = Ref(false) const use_local_plotlyjs = Ref(false) - function _init_ijulia_plotting() # IJulia is more stable with local file - use_local_plotlyjs[] = plotly_local_file_path[] === nothing ? false : isfile(plotly_local_file_path[]) + use_local_plotlyjs[] = + plotly_local_file_path[] === nothing ? false : isfile(plotly_local_file_path[]) ENV["MPLBACKEND"] = "Agg" end - """ Add extra jupyter mimetypes to display_dict based on the plot backed. @@ -20,22 +19,17 @@ frontends like jupyterlab and nteract. _ijulia__extra_mime_info!(plt::Plot, out::Dict) = out function _ijulia__extra_mime_info!(plt::Plot{PlotlyJSBackend}, out::Dict) - out["application/vnd.plotly.v1+json"] = Dict( - :data => plotly_series(plt), - :layout => plotly_layout(plt) - ) + out["application/vnd.plotly.v1+json"] = + Dict(:data => plotly_series(plt), :layout => plotly_layout(plt)) out end function _ijulia__extra_mime_info!(plt::Plot{PlotlyBackend}, out::Dict) - out["application/vnd.plotly.v1+json"] = Dict( - :data => plotly_series(plt), - :layout => plotly_layout(plt) - ) + out["application/vnd.plotly.v1+json"] = + Dict(:data => plotly_series(plt), :layout => plotly_layout(plt)) out end - function _ijulia_display_dict(plt::Plot) output_type = Symbol(plt.attr[:html_output_format]) if output_type == :auto diff --git a/src/init.jl b/src/init.jl index 8b17f5b9..8f8303a6 100644 --- a/src/init.jl +++ b/src/init.jl @@ -1,8 +1,7 @@ using REPL using Scratch -const plotly_local_file_path = Ref{Union{Nothing, String}}(nothing) - +const plotly_local_file_path = Ref{Union{Nothing,String}}(nothing) function _plots_defaults() if isdefined(Main, :PLOTS_DEFAULTS) @@ -12,7 +11,6 @@ function _plots_defaults() end end - function __init__() user_defaults = _plots_defaults() if haskey(user_defaults, :theme) @@ -21,14 +19,27 @@ function __init__() default(; user_defaults...) end - insert!(Base.Multimedia.displays, findlast(x -> x isa Base.TextDisplay || x isa REPL.REPLDisplay, Base.Multimedia.displays) + 1, PlotsDisplay()) + insert!( + Base.Multimedia.displays, + findlast( + x -> x isa Base.TextDisplay || x isa REPL.REPLDisplay, + Base.Multimedia.displays, + ) + 1, + PlotsDisplay(), + ) - atreplinit(i -> begin - while PlotsDisplay() in Base.Multimedia.displays - popdisplay(PlotsDisplay()) - end - insert!(Base.Multimedia.displays, findlast(x -> x isa REPL.REPLDisplay, Base.Multimedia.displays) + 1, PlotsDisplay()) - end) + atreplinit( + i -> begin + while PlotsDisplay() in Base.Multimedia.displays + popdisplay(PlotsDisplay()) + end + insert!( + Base.Multimedia.displays, + findlast(x -> x isa REPL.REPLDisplay, Base.Multimedia.displays) + 1, + PlotsDisplay(), + ) + end, + ) @require HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" begin fn = joinpath(@__DIR__, "backends", "hdf5.jl") @@ -84,9 +95,13 @@ function __init__() end if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true" - global plotly_local_file_path[] = joinpath(@get_scratch!("plotly"), _plotly_min_js_filename) + global plotly_local_file_path[] = + joinpath(@get_scratch!("plotly"), _plotly_min_js_filename) if !isfile(plotly_local_file_path[]) - download("https://cdn.plot.ly/$(_plotly_min_js_filename)", plotly_local_file_path[]) + download( + "https://cdn.plot.ly/$(_plotly_min_js_filename)", + plotly_local_file_path[], + ) end use_local_plotlyjs[] = true @@ -94,8 +109,8 @@ function __init__() use_local_dependencies[] = use_local_plotlyjs[] - @require FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" begin - _show(io::IO, mime::MIME"image/png", plt::Plot{<:PDFBackends}) = _show_pdfbackends(io, mime, plt) + _show(io::IO, mime::MIME"image/png", plt::Plot{<:PDFBackends}) = + _show_pdfbackends(io, mime, plt) end end diff --git a/src/layouts.jl b/src/layouts.jl index 5b79b8f6..3d620fd1 100644 --- a/src/layouts.jl +++ b/src/layouts.jl @@ -18,16 +18,16 @@ ispositive(m::Measure) = m.value > 0 # union together bounding boxes function Base.:+(bb1::BoundingBox, bb2::BoundingBox) # empty boxes don't change the union - ispositive(width(bb1)) || return bb2 + ispositive(width(bb1)) || return bb2 ispositive(height(bb1)) || return bb2 - ispositive(width(bb2)) || return bb1 + ispositive(width(bb2)) || return bb1 ispositive(height(bb2)) || return bb1 l = min(left(bb1), left(bb2)) t = min(top(bb1), top(bb2)) r = max(right(bb1), right(bb2)) b = max(bottom(bb1), bottom(bb2)) - BoundingBox(l, t, r-l, b-t) + BoundingBox(l, t, r - l, b - t) end # this creates a bounding box in the parent's scope, where the child bounding box @@ -53,7 +53,7 @@ end # convert a bounding box from absolute coords to percentages... # returns an array of percentages of figure size: [left, bottom, width, height] function bbox_to_pcts(bb::BoundingBox, figw, figh, flipy = true) - mms = Float64[f(bb).value for f in (left,bottom,width,height)] + mms = Float64[f(bb).value for f in (left, bottom, width, height)] if flipy mms[2] = figh.value - mms[2] # flip y when origin in bottom-left end @@ -61,7 +61,10 @@ function bbox_to_pcts(bb::BoundingBox, figw, figh, flipy = true) end function Base.show(io::IO, bbox::BoundingBox) - print(io, "BBox{l,t,r,b,w,h = $(left(bbox)),$(top(bbox)), $(right(bbox)),$(bottom(bbox)), $(width(bbox)),$(height(bbox))}") + print( + io, + "BBox{l,t,r,b,w,h = $(left(bbox)),$(top(bbox)), $(right(bbox)),$(bottom(bbox)), $(width(bbox)),$(height(bbox))}", + ) end # ----------------------------------------------------------- @@ -83,12 +86,11 @@ function resolve_mixed(mix::MixedMeasures, sp::Subplot, letter::Symbol) end if pct != 0 amin, amax = axis_limits(sp, letter) - xy += pct * (amax-amin) + xy += pct * (amax - amin) end xy end - # ----------------------------------------------------------- # AbstractLayout @@ -160,7 +162,8 @@ parent_bbox(layout::AbstractLayout) = bbox(parent(layout)) # padding(layout::AbstractLayout) = (padding_w(layout), padding_h(layout)) update_position!(layout::AbstractLayout) = nothing -update_child_bboxes!(layout::AbstractLayout, minimum_perimeter = [0mm,0mm,0mm,0mm]) = nothing +update_child_bboxes!(layout::AbstractLayout, minimum_perimeter = [0mm, 0mm, 0mm, 0mm]) = + nothing left(layout::AbstractLayout) = left(bbox(layout)) top(layout::AbstractLayout) = top(bbox(layout)) @@ -206,7 +209,7 @@ mutable struct EmptyLayout <: AbstractLayout end EmptyLayout(parent = RootLayout(); kw...) = EmptyLayout(parent, defaultbox, KW(kw)) -Base.size(layout::EmptyLayout) = (0,0) +Base.size(layout::EmptyLayout) = (0, 0) Base.length(layout::EmptyLayout) = 0 Base.getindex(layout::EmptyLayout, r::Int, c::Int) = nothing @@ -235,22 +238,25 @@ columns of different width. """ grid(args...; kw...) = GridLayout(args...; kw...) -function GridLayout(dims...; - parent = RootLayout(), - widths = zeros(dims[2]), - heights = zeros(dims[1]), - kw...) +function GridLayout( + dims...; + parent = RootLayout(), + widths = zeros(dims[2]), + heights = zeros(dims[1]), + kw..., +) grid = Matrix{AbstractLayout}(undef, dims...) layout = GridLayout( parent, (20mm, 5mm, 2mm, 10mm), defaultbox, grid, - Measure[w*pct for w in widths], - Measure[h*pct for h in heights], + Measure[w * pct for w in widths], + Measure[h * pct for h in heights], # convert(Vector{Float64}, widths), # convert(Vector{Float64}, heights), - KW(kw)) + KW(kw), + ) for i in eachindex(grid) grid[i] = EmptyLayout(layout) end @@ -259,9 +265,9 @@ end Base.size(layout::GridLayout) = size(layout.grid) Base.length(layout::GridLayout) = length(layout.grid) -Base.getindex(layout::GridLayout, r::Int, c::Int) = layout.grid[r,c] +Base.getindex(layout::GridLayout, r::Int, c::Int) = layout.grid[r, c] function Base.setindex!(layout::GridLayout, v, r::Int, c::Int) - layout.grid[r,c] = v + layout.grid[r, c] = v end leftpad(layout::GridLayout) = layout.minpad[1] @@ -269,7 +275,6 @@ toppad(layout::GridLayout) = layout.minpad[2] rightpad(layout::GridLayout) = layout.minpad[3] bottompad(layout::GridLayout) = layout.minpad[4] - # here's how this works... first we recursively "update the minimum padding" (which # means to calculate the minimum size needed from the edge of the subplot to plot area) # for the whole layout tree. then we can compute the "padding borders" of this @@ -281,14 +286,13 @@ bottompad(layout::GridLayout) = layout.minpad[4] function _update_min_padding!(layout::GridLayout) map(_update_min_padding!, layout.grid) layout.minpad = ( - maximum(map(leftpad, layout.grid[:,1])), - maximum(map(toppad, layout.grid[1,:])), - maximum(map(rightpad, layout.grid[:,end])), - maximum(map(bottompad, layout.grid[end,:])) + maximum(map(leftpad, layout.grid[:, 1])), + maximum(map(toppad, layout.grid[1, :])), + maximum(map(rightpad, layout.grid[:, end])), + maximum(map(bottompad, layout.grid[end, :])), ) end - function update_position!(layout::GridLayout) map(update_position!, layout.grid) end @@ -307,7 +311,9 @@ function recompute_lengths(v) end leftover = 1.0pct - tot if cnt > 1 && leftover.value <= 0 - error("Not enough length left over in layout! v = $v, cnt = $cnt, leftover = $leftover") + error( + "Not enough length left over in layout! v = $v, cnt = $cnt, leftover = $leftover", + ) end # now fill in the blanks @@ -315,21 +321,21 @@ function recompute_lengths(v) end # recursively compute the bounding boxes for the layout and plotarea (relative to canvas!) -function update_child_bboxes!(layout::GridLayout, minimum_perimeter = [0mm,0mm,0mm,0mm]) +function update_child_bboxes!(layout::GridLayout, minimum_perimeter = [0mm, 0mm, 0mm, 0mm]) nr, nc = size(layout) # # create a matrix for each minimum padding direction # _update_min_padding!(layout) - minpad_left = map(leftpad, layout.grid) - minpad_top = map(toppad, layout.grid) - minpad_right = map(rightpad, layout.grid) + minpad_left = map(leftpad, layout.grid) + minpad_top = map(toppad, layout.grid) + minpad_right = map(rightpad, layout.grid) minpad_bottom = map(bottompad, layout.grid) # get the max horizontal (left and right) padding over columns, # and max vertical (bottom and top) padding over rows # TODO: add extra padding here - pad_left = maximum(minpad_left, dims = 1) - pad_top = maximum(minpad_top, dims = 2) - pad_right = maximum(minpad_right, dims = 1) + pad_left = maximum(minpad_left, dims = 1) + pad_top = maximum(minpad_top, dims = 2) + pad_right = maximum(minpad_right, dims = 1) pad_bottom = maximum(minpad_bottom, dims = 2) # make sure the perimeter match the parent @@ -343,7 +349,7 @@ function update_child_bboxes!(layout::GridLayout, minimum_perimeter = [0mm,0mm,0 total_pad_vertical = sum(pad_top + pad_bottom) # now we can compute the total plot area in each direction - total_plotarea_horizontal = width(layout) - total_pad_horizontal + total_plotarea_horizontal = width(layout) - total_pad_horizontal total_plotarea_vertical = height(layout) - total_pad_vertical # recompute widths/heights @@ -355,19 +361,22 @@ function update_child_bboxes!(layout::GridLayout, minimum_perimeter = [0mm,0mm,0 # denom_h = sum(layout.heights) # we have all the data we need... lets compute the plot areas and set the bounding boxes - for r=1:nr, c=1:nc - child = layout[r,c] + for r in 1:nr, c in 1:nc + child = layout[r, c] # get the top-left corner of this child... the first one is top-left of the parent (i.e. layout) - child_left = (c == 1 ? left(layout.bbox) : right(layout[r, c-1].bbox)) - child_top = (r == 1 ? top(layout.bbox) : bottom(layout[r-1, c].bbox)) + child_left = (c == 1 ? left(layout.bbox) : right(layout[r, c - 1].bbox)) + child_top = (r == 1 ? top(layout.bbox) : bottom(layout[r - 1, c].bbox)) # compute plot area plotarea_left = child_left + pad_left[c] plotarea_top = child_top + pad_top[r] plotarea_width = total_plotarea_horizontal * layout.widths[c] plotarea_height = total_plotarea_vertical * layout.heights[r] - plotarea!(child, BoundingBox(plotarea_left, plotarea_top, plotarea_width, plotarea_height)) + plotarea!( + child, + BoundingBox(plotarea_left, plotarea_top, plotarea_width, plotarea_height), + ) # compute child bbox child_width = pad_left[c] + plotarea_width + pad_right[c] @@ -377,10 +386,10 @@ function update_child_bboxes!(layout::GridLayout, minimum_perimeter = [0mm,0mm,0 # this is the minimum perimeter as decided by this child's parent, so that # all children on this border have the same value min_child_perimeter = [ - c == 1 ? layout.minpad[1] : pad_left[c], - r == 1 ? layout.minpad[2] : pad_top[r], + c == 1 ? layout.minpad[1] : pad_left[c], + r == 1 ? layout.minpad[2] : pad_top[r], c == nc ? layout.minpad[3] : pad_right[c], - r == nr ? layout.minpad[4] : pad_bottom[r] + r == nr ? layout.minpad[4] : pad_bottom[r], ] # recursively update the child's children @@ -395,12 +404,15 @@ function update_inset_bboxes!(plt::Plot) p_area = Measures.resolve(plotarea(sp.parent), sp[:relative_bbox]) plotarea!(sp, p_area) - bbox!(sp, bbox( - left(p_area) - leftpad(sp), - top(p_area) - toppad(sp), - width(p_area) + leftpad(sp) + rightpad(sp), - height(p_area) + toppad(sp) + bottompad(sp) - )) + bbox!( + sp, + bbox( + left(p_area) - leftpad(sp), + top(p_area) - toppad(sp), + width(p_area) + leftpad(sp) + rightpad(sp), + height(p_area) + toppad(sp) + bottompad(sp), + ), + ) end end @@ -441,7 +453,9 @@ end function layout_args(plotattributes::AKW, n_override::Integer) layout, n = layout_args(n_override, get(plotattributes, :layout, n_override)) if n != n_override - error("When doing layout, n ($n) != n_override ($(n_override)). You're probably trying to force existing plots into a layout that doesn't fit them.") + error( + "When doing layout, n ($n) != n_override ($(n_override)). You're probably trying to force existing plots into a layout that doesn't fit them.", + ) end layout, n end @@ -451,27 +465,27 @@ function layout_args(n::Integer) GridLayout(nr, nc), n end -function layout_args(sztup::NTuple{2, Integer}) +function layout_args(sztup::NTuple{2,Integer}) nr, nc = sztup - GridLayout(nr, nc), nr*nc + GridLayout(nr, nc), nr * nc end layout_args(n_override::Integer, n::Integer) = layout_args(n) -layout_args(n, sztup::NTuple{2, Integer}) = layout_args(sztup) +layout_args(n, sztup::NTuple{2,Integer}) = layout_args(sztup) -function layout_args(n, sztup::Tuple{Colon, Integer}) +function layout_args(n, sztup::Tuple{Colon,Integer}) nc = sztup[2] nr = ceil(Int, n / nc) GridLayout(nr, nc), n end -function layout_args(n, sztup::Tuple{Integer, Colon}) +function layout_args(n, sztup::Tuple{Integer,Colon}) nr = sztup[1] nc = ceil(Int, n / nr) GridLayout(nr, nc), n end -function layout_args(sztup::NTuple{3, Integer}) +function layout_args(sztup::NTuple{3,Integer}) n, nr, nc = sztup nr, nc = compute_gridsize(n, nr, nc) GridLayout(nr, nc), n @@ -488,16 +502,13 @@ layout_args(n_override::Integer, layout::GridLayout) = layout_args(layout) layout_args(huh) = error("unhandled layout type $(typeof(huh)): $huh") - # ---------------------------------------------------------------------- - function build_layout(args...) layout, n = layout_args(args...) build_layout(layout, n, Array{Plot}(undef, 0)) end - # n is the number of subplots... function build_layout(layout::GridLayout, n::Integer, plts::AVec{Plot}) nr, nc = size(layout) @@ -505,15 +516,15 @@ function build_layout(layout::GridLayout, n::Integer, plts::AVec{Plot}) spmap = SubplotMap() empty = isempty(plts) i = 0 - for r = 1:nr, c = 1:nc + for r in 1:nr, c in 1:nc l = layout[r, c] if isa(l, EmptyLayout) && !get(l.attr, :blank, false) if empty # initialize the inner subplots recursively - sp = Subplot(backend(), parent=layout) + sp = Subplot(backend(), parent = layout) layout[r, c] = sp push!(subplots, sp) - spmap[attr(l,:label,gensym())] = sp + spmap[attr(l, :label, gensym())] = sp inc = 1 else # build a layout from a list of existing Plot objects @@ -524,19 +535,19 @@ function build_layout(layout::GridLayout, n::Integer, plts::AVec{Plot}) inc = length(plt.subplots) end if get(l.attr, :width, :auto) != :auto - layout.widths[c] = attr(l,:width) + layout.widths[c] = attr(l, :width) end if get(l.attr, :height, :auto) != :auto - layout.heights[r] = attr(l,:height) + layout.heights[r] = attr(l, :height) end i += inc elseif isa(l, GridLayout) # sub-grid if get(l.attr, :width, :auto) != :auto - layout.widths[c] = attr(l,:width) + layout.widths[c] = attr(l, :width) end if get(l.attr, :height, :auto) != :auto - layout.heights[r] = attr(l,:height) + layout.heights[r] = attr(l, :height) end l, sps, m = build_layout(l, n - i, plts) append!(subplots, sps) @@ -551,7 +562,6 @@ function build_layout(layout::GridLayout, n::Integer, plts::AVec{Plot}) layout, subplots, spmap end - # ---------------------------------------------------------------------- # @layout macro @@ -563,9 +573,9 @@ function add_layout_pct!(kw::AKW, v::Expr, idx::Integer, nidx::Integer) if length(v.args) == 3 && isa(num, Number) units = v.args[3] if units == :h - return kw[:h] = num*pct + return kw[:h] = num * pct elseif units == :w - return kw[:w] = num*pct + return kw[:w] = num * pct elseif units in (:pct, :px, :mm, :cm, :inch) idx == 1 && (kw[:w] = v) (idx == 2 || nidx == 1) && (kw[:h] = v) @@ -578,23 +588,29 @@ end function add_layout_pct!(kw::AKW, v::Number, idx::Integer) # kw[idx == 1 ? :w : :h] = v*pct - idx == 1 && (kw[:w] = v*pct) - (idx == 2 || nidx == 1) && (kw[:h] = v*pct) + idx == 1 && (kw[:w] = v * pct) + (idx == 2 || nidx == 1) && (kw[:h] = v * pct) end -isrow(v) = isa(v, Expr) && v.head in (:hcat,:row) +isrow(v) = isa(v, Expr) && v.head in (:hcat, :row) iscol(v) = isa(v, Expr) && v.head == :vcat rowsize(v) = isrow(v) ? length(v.args) : 1 - function create_grid(expr::Expr) if iscol(expr) create_grid_vcat(expr) elseif isrow(expr) - :(let cell = GridLayout(1, $(length(expr.args))) - $([:(cell[1,$i] = $(create_grid(v))) for (i,v) in enumerate(expr.args)]...) - cell - end) + :( + let cell = GridLayout(1, $(length(expr.args))) + $( + [ + :(cell[1, $i] = $(create_grid(v))) for + (i, v) in enumerate(expr.args) + ]... + ) + cell + end + ) elseif expr.head == :curly create_grid_curly(expr) @@ -613,39 +629,58 @@ function create_grid_vcat(expr::Expr) nr = length(expr.args) nc = rmin body = Expr(:block) - for r=1:nr + for r in 1:nr arg = expr.args[r] if isrow(arg) - for (c,item) in enumerate(arg.args) - push!(body.args, :(cell[$r,$c] = $(create_grid(item)))) + for (c, item) in enumerate(arg.args) + push!(body.args, :(cell[$r, $c] = $(create_grid(item)))) end else - push!(body.args, :(cell[$r,1] = $(create_grid(arg)))) + push!(body.args, :(cell[$r, 1] = $(create_grid(arg)))) end end - :(let cell = GridLayout($nr, $nc) - $body - cell - end) + :( + let cell = GridLayout($nr, $nc) + $body + cell + end + ) else # otherwise just build one row at a time - :(let cell = GridLayout($(length(expr.args)), 1) - $([:(cell[$i,1] = $(create_grid(v))) for (i,v) in enumerate(expr.args)]...) - cell - end) + :( + let cell = GridLayout($(length(expr.args)), 1) + $( + [ + :(cell[$i, 1] = $(create_grid(v))) for + (i, v) in enumerate(expr.args) + ]... + ) + cell + end + ) end end function create_grid_curly(expr::Expr) kw = KW() - for (i,arg) in enumerate(expr.args[2:end]) - add_layout_pct!(kw, arg, i, length(expr.args)-1) + for (i, arg) in enumerate(expr.args[2:end]) + add_layout_pct!(kw, arg, i, length(expr.args) - 1) end s = expr.args[1] if isa(s, Expr) && s.head == :call && s.args[1] == :grid - create_grid(:(grid($(s.args[2:end]...), width = $(get(kw, :w, QuoteNode(:auto))), height = $(get(kw, :h, QuoteNode(:auto)))))) + create_grid( + :(grid( + $(s.args[2:end]...), + width = $(get(kw, :w, QuoteNode(:auto))), + height = $(get(kw, :h, QuoteNode(:auto))), + )), + ) elseif isa(s, Symbol) - :(EmptyLayout(label = $(QuoteNode(s)), width = $(get(kw, :w, QuoteNode(:auto))), height = $(get(kw, :h, QuoteNode(:auto))))) + :(EmptyLayout( + label = $(QuoteNode(s)), + width = $(get(kw, :w, QuoteNode(:auto))), + height = $(get(kw, :h, QuoteNode(:auto))), + )) else error("Unknown use of curly brackets: $expr") end @@ -659,14 +694,13 @@ macro layout(mat::Expr) create_grid(mat) end - # ------------------------------------------------------------------------- # make all reference the same axis extrema/values. # merge subplot lists. function link_axes!(axes::Axis...) a1 = axes[1] - for i=2:length(axes) + for i in 2:length(axes) a2 = axes[i] expand_extrema!(a1, ignorenan_extrema(a2)) for k in (:extrema, :discrete_values, :continuous_values, :discrete_map) @@ -688,8 +722,8 @@ function link_subplots(a::AbstractArray{AbstractLayout}, axissym::Symbol) for l in a if isa(l, Subplot) push!(subplots, l) - elseif isa(l, GridLayout) && size(l) == (1,1) - push!(subplots, l[1,1]) + elseif isa(l, GridLayout) && size(l) == (1, 1) + push!(subplots, l[1, 1]) end end subplots @@ -705,20 +739,19 @@ function link_axes!(a::AbstractArray{AbstractLayout}, axissym::Symbol) end # don't do anything for most layout types -function link_axes!(l::AbstractLayout, link::Symbol) -end +function link_axes!(l::AbstractLayout, link::Symbol) end # process a GridLayout, recursively linking axes according to the link symbol function link_axes!(layout::GridLayout, link::Symbol) nr, nc = size(layout) if link in (:x, :both) - for c=1:nc - link_axes!(layout.grid[:,c], :xaxis) + for c in 1:nc + link_axes!(layout.grid[:, c], :xaxis) end end if link in (:y, :both) - for r=1:nr - link_axes!(layout.grid[r,:], :yaxis) + for r in 1:nr + link_axes!(layout.grid[r, :], :yaxis) end end if link == :square @@ -744,8 +777,9 @@ end "Adds a new, empty subplot overlayed on top of `sp`, with a mirrored y-axis and linked x-axis." function twinx(sp::Subplot) - plot!(sp.plt, - inset = (sp[:subplot_index], bbox(0,0,1,1)), + plot!( + sp.plt, + inset = (sp[:subplot_index], bbox(0, 0, 1, 1)), right_margin = sp[:right_margin], left_margin = sp[:left_margin], top_margin = sp[:top_margin], @@ -756,7 +790,7 @@ function twinx(sp::Subplot) twinsp[:yaxis][:grid] = false twinsp[:xaxis][:showaxis] = false twinsp[:yaxis][:mirror] = true - twinsp[:background_color_inside] = RGBA{Float64}(0,0,0,0) + twinsp[:background_color_inside] = RGBA{Float64}(0, 0, 0, 0) link_axes!(sp[:xaxis], twinsp[:xaxis]) twinsp end diff --git a/src/legend.jl b/src/legend.jl index 0b996619..0d3c3def 100644 --- a/src/legend.jl +++ b/src/legend.jl @@ -8,20 +8,19 @@ Return `(x,y)` at an angle `theta` degrees from `xmax`, `ymin`, `ymax`). """ function legend_pos_from_angle(theta, xmin, xcenter, xmax, ymin, ycenter, ymax) - (s,c) = sincosd(theta) - x = c < 0 ? (xmin-xcenter)/c : (xmax-xcenter)/c - y = s < 0 ? (ymin-ycenter)/s : (ymax-ycenter)/s - A = min(x,y) - return (xcenter + A*c, ycenter + A*s) + (s, c) = sincosd(theta) + x = c < 0 ? (xmin - xcenter) / c : (xmax - xcenter) / c + y = s < 0 ? (ymin - ycenter) / s : (ymax - ycenter) / s + A = min(x, y) + return (xcenter + A * c, ycenter + A * s) end - """ Split continuous range `[-1,1]` evenly into an integer `[1,2,3]` """ function legend_anchor_index(x) - x<-1//3 && return 1 - x<1//3 && return 2 + x < -1 // 3 && return 1 + x < 1 // 3 && return 2 return 3 end @@ -32,28 +31,28 @@ so :topleft exactly corresponds to (45, :inner) etc. If `leg` is a (::Real,::Real) tuple, keep it as is. """ -legend_angle(leg::Real) = (leg,:inner) +legend_angle(leg::Real) = (leg, :inner) legend_angle(leg::Tuple{S,T}) where {S<:Real,T<:Real} = leg -legend_angle(leg::Tuple{S,Symbol}) where S<:Real = leg +legend_angle(leg::Tuple{S,Symbol}) where {S<:Real} = leg legend_angle(leg::Symbol) = get( - ( - topleft = (135,:inner), - top = (90, :inner), - topright = (45, :inner), - left = (180,:inner), - right = (0, :inner), - bottomleft = (225,:inner), - bottom = (270,:inner), - bottomright = (315,:inner), - outertopleft = (135,:outer), - outertop = (90, :outer), - outertopright = (45, :outer), - outerleft = (180,:outer), - outerright = (0, :outer), - outerbottomleft = (225,:outer), - outerbottom = (270,:outer), - outerbottomright = (315,:outer), - ), - leg, - (45, :inner) - ) + ( + topleft = (135, :inner), + top = (90, :inner), + topright = (45, :inner), + left = (180, :inner), + right = (0, :inner), + bottomleft = (225, :inner), + bottom = (270, :inner), + bottomright = (315, :inner), + outertopleft = (135, :outer), + outertop = (90, :outer), + outertopright = (45, :outer), + outerleft = (180, :outer), + outerright = (0, :outer), + outerbottomleft = (225, :outer), + outerbottom = (270, :outer), + outerbottomright = (315, :outer), + ), + leg, + (45, :inner), +) diff --git a/src/output.jl b/src/output.jl index 92f7ec01..785a7cc7 100644 --- a/src/output.jl +++ b/src/output.jl @@ -73,7 +73,6 @@ function txt(plt::Plot, fn::AbstractString) end txt(fn::AbstractString) = txt(current(), fn) - # ---------------------------------------------------------------- const _savemap = Dict( @@ -128,7 +127,6 @@ function savefig(plt::Plot, fn::AbstractString) end savefig(fn::AbstractString) = savefig(current(), fn) - # --------------------------------------------------------- """ @@ -186,8 +184,8 @@ function _show(io::IO, ::MIME"text/html", plt::Plot) end # delegate showable to _show instead -function Base.showable(m::M, plt::P) where {M <: MIME, P <: Plot} - return hasmethod(_show, Tuple{IO, M, P}) +function Base.showable(m::M, plt::P) where {M<:MIME,P<:Plot} + return hasmethod(_show, Tuple{IO,M,P}) end function _display(plt::Plot) @@ -224,7 +222,6 @@ Base.show(io::IO, m::MIME"application/prs.juno.plotpane+html", plt::Plot) = "Close all open gui windows of the current backend" closeall() = closeall(backend()) - # function html_output_format(fmt) # if fmt == "png" # @eval function Base.show(io::IO, ::MIME"text/html", plt::Plot) @@ -241,7 +238,6 @@ closeall() = closeall(backend()) # # html_output_format("svg") - # --------------------------------------------------------- # Atom PlotPane # --------------------------------------------------------- diff --git a/src/pipeline.jl b/src/pipeline.jl index 88305e31..bb87a69e 100644 --- a/src/pipeline.jl +++ b/src/pipeline.jl @@ -30,7 +30,6 @@ function RecipesPipeline.warn_on_recipe_aliases!( end end - ## Grouping RecipesPipeline.splittable_attribute(plt::Plot, key, val::SeriesAnnotations, len) = @@ -41,7 +40,6 @@ function RecipesPipeline.split_attribute(plt::Plot, key, val::SeriesAnnotations, return SeriesAnnotations(split_strs, val.font, val.baseshape, val.scalefactor) end - ## Preprocessing attributes function RecipesPipeline.preprocess_axis_args!(plt::Plot, plotattributes, letter) # Fix letter for seriestypes that are x only but data gets passed as y @@ -62,7 +60,6 @@ RecipesPipeline.is_axis_attribute(plt::Plot, attr) = is_axis_attr_noletter(attr) RecipesPipeline.is_subplot_attribute(plt::Plot, attr) = is_subplot_attr(attr) # in src/args.jl - ## User recipes function RecipesPipeline.process_userrecipe!(plt::Plot, kw_list, kw) @@ -84,13 +81,15 @@ function _preprocess_userrecipe(kw::AKW) # map marker_z if it's a Function if isa(get(kw, :marker_z, nothing), Function) # TODO: should this take y and/or z as arguments? - kw[:marker_z] = isa(kw[:z], Nothing) ? map(kw[:marker_z], kw[:x], kw[:y]) : + kw[:marker_z] = + isa(kw[:z], Nothing) ? map(kw[:marker_z], kw[:x], kw[:y]) : map(kw[:marker_z], kw[:x], kw[:y], kw[:z]) end # map line_z if it's a Function if isa(get(kw, :line_z, nothing), Function) - kw[:line_z] = isa(kw[:z], Nothing) ? map(kw[:line_z], kw[:x], kw[:y]) : + kw[:line_z] = + isa(kw[:z], Nothing) ? map(kw[:line_z], kw[:x], kw[:y]) : map(kw[:line_z], kw[:x], kw[:y], kw[:z]) end @@ -140,15 +139,12 @@ function _add_smooth_kw(kw_list::Vector{KW}, kw::AKW) end end - RecipesPipeline.get_axis_limits(plt::Plot, letter) = axis_limits(plt[1], letter, false) - ## Plot recipes RecipesPipeline.type_alias(plt::Plot) = get(_typeAliases, st, st) - ## Plot setup function RecipesPipeline.plot_setup!(plt::Plot, plotattributes, kw_list) @@ -159,18 +155,18 @@ end function RecipesPipeline.process_sliced_series_attributes!(plt::Plots.Plot, kw_list) # swap errors - err_inds = findall(kw -> get(kw, :seriestype, :path) in (:xerror, :yerror, :zerror), kw_list) + err_inds = + findall(kw -> get(kw, :seriestype, :path) in (:xerror, :yerror, :zerror), kw_list) for ind in err_inds - if get(kw_list[ind-1],:seriestype,:path) == :scatter + if get(kw_list[ind - 1], :seriestype, :path) == :scatter tmp = copy(kw_list[ind]) - kw_list[ind] = copy(kw_list[ind-1]) - kw_list[ind-1] = tmp + kw_list[ind] = copy(kw_list[ind - 1]) + kw_list[ind - 1] = tmp end end return nothing end - # TODO: Should some of this logic be moved to RecipesPipeline? function _plot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) # merge in anything meant for the Plot @@ -193,7 +189,6 @@ function _plot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) plt.init = true end - # handle inset subplots insets = plt[:inset_subplots] if insets !== nothing @@ -226,7 +221,7 @@ function _subplot_setup(plt::Plot, plotattributes::AKW, kw_list::Vector{KW}) # Subplot/Axis attributes set by a user/series recipe apply only to the # Subplot object which they belong to. # TODO: allow matrices to still apply to all subplots - sp_attrs = Dict{Subplot, Any}() + sp_attrs = Dict{Subplot,Any}() for kw in kw_list # get the Subplot object to which the series belongs. sps = get(kw, :subplot, :auto) @@ -294,13 +289,13 @@ function _add_plot_title!(plt) if plot_title != "" the_layout = plt.layout vspan = plt[:plot_titlevspan] - plt.layout = grid(2, 1, heights=(vspan, 1 - vspan)) - plt.layout.grid[1, 1] = subplot = Subplot(plt.backend, parent=plt.layout[1, 1]) + plt.layout = grid(2, 1, heights = (vspan, 1 - vspan)) + plt.layout.grid[1, 1] = subplot = Subplot(plt.backend, parent = plt.layout[1, 1]) plt.layout.grid[2, 1] = the_layout subplot.plt = plt # propagate arguments plt[:plot_titleXXX] --> subplot[:titleXXX] - for sym ∈ filter(x -> startswith(string(x), "plot_title"), keys(_plot_defaults)) - subplot[Symbol(string(sym)[length("plot_") + 1:end])] = plt[sym] + for sym in filter(x -> startswith(string(x), "plot_title"), keys(_plot_defaults)) + subplot[Symbol(string(sym)[(length("plot_") + 1):end])] = plt[sym] end top = plt.backend isa PyPlotBackend ? nothing : 0mm bot = 0mm @@ -346,7 +341,10 @@ function _prepare_subplot(plt::Plot{T}, plotattributes::AKW) where {T} st = _override_seriestype_check(plotattributes, st) # change to a 3d projection for this subplot? - if RecipesPipeline.needs_3d_axes(st) || (st == :quiver && plotattributes[:z] !== nothing) + if ( + RecipesPipeline.needs_3d_axes(st) || + (st == :quiver && plotattributes[:z] !== nothing) + ) sp.attr[:projection] = "3d" end @@ -362,8 +360,10 @@ function _override_seriestype_check(plotattributes::AKW, st::Symbol) # do we want to override the series type? if !RecipesPipeline.is3d(st) && !(st in (:contour, :contour3d, :quiver)) z = plotattributes[:z] - if z !== nothing && - (size(plotattributes[:x]) == size(plotattributes[:y]) == size(z)) + if ( + z !== nothing && + (size(plotattributes[:x]) == size(plotattributes[:y]) == size(z)) + ) st = (st == :scatter ? :scatter3d : :path3d) plotattributes[:seriestype] = st end @@ -374,7 +374,7 @@ end function needs_any_3d_axes(sp::Subplot) any( RecipesPipeline.needs_3d_axes( - _override_seriestype_check(s.plotattributes, s.plotattributes[:seriestype]) + _override_seriestype_check(s.plotattributes, s.plotattributes[:seriestype]), ) for s in series_list(sp) ) end @@ -399,9 +399,9 @@ end function _add_the_series(plt, sp, plotattributes) extra_kwargs = warn_on_unsupported_args(plt.backend, plotattributes) if (kw = plt[:extra_kwargs]) isa AbstractDict - plt[:extra_plot_kwargs] = get(kw,:plot,KW()) - sp[:extra_kwargs] = get(kw,:subplot, KW()) - plotattributes[:extra_kwargs] = get(kw,:series,KW()) + plt[:extra_plot_kwargs] = get(kw, :plot, KW()) + sp[:extra_kwargs] = get(kw, :subplot, KW()) + plotattributes[:extra_kwargs] = get(kw, :series, KW()) elseif plt[:extra_kwargs] == :plot plt[:extra_plot_kwargs] = extra_kwargs elseif plt[:extra_kwargs] == :subplot diff --git a/src/plot.jl b/src/plot.jl index fe614a67..ba689a0b 100644 --- a/src/plot.jl +++ b/src/plot.jl @@ -1,6 +1,6 @@ mutable struct CurrentPlot - nullableplot::Union{AbstractPlot, Nothing} + nullableplot::Union{AbstractPlot,Nothing} end const CURRENT_PLOT = CurrentPlot(nothing) @@ -20,17 +20,20 @@ current(plot::AbstractPlot) = (CURRENT_PLOT.nullableplot = plot) # --------------------------------------------------------- - Base.string(plt::Plot) = "Plot{$(plt.backend) n=$(plt.n)}" Base.print(io::IO, plt::Plot) = print(io, string(plt)) function Base.show(io::IO, plt::Plot) print(io, string(plt)) sp_ekwargs = getindex.(plt.subplots, :extra_kwargs) s_ekwargs = getindex.(plt.series_list, :extra_kwargs) - if isempty(plt[:extra_plot_kwargs]) && all(isempty, sp_ekwargs) && all(isempty, s_ekwargs) + if ( + isempty(plt[:extra_plot_kwargs]) && + all(isempty, sp_ekwargs) && + all(isempty, s_ekwargs) + ) return end - print(io,"\nCaptured extra kwargs:\n") + print(io, "\nCaptured extra kwargs:\n") do_show = true for (key, value) in plt[:extra_plot_kwargs] do_show && println(io, " Plot:") @@ -62,7 +65,6 @@ convertSeriesIndex(plt::Plot, n::Int) = n # --------------------------------------------------------- - """ The main plot command. Use `plot` to create a new plot object, and `plot!` to add to an existing one: @@ -91,7 +93,8 @@ end # build a new plot from existing plots # note: we split into plt1, plt2 and plts_tail so we can dispatch correctly -plot(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) = plot!(deepcopy(plt1), deepcopy(plt2), deepcopy.(plts_tail)...; kw...) +plot(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) = + plot!(deepcopy(plt1), deepcopy(plt2), deepcopy.(plts_tail)...; kw...) function plot!(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) @nospecialize plotattributes = KW(kw) @@ -102,8 +105,8 @@ function plot!(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) plts = Array{Plot}(undef, n) plts[1] = plt1 plts[2] = plt2 - for (i,plt) in enumerate(plts_tail) - plts[i+2] = plt + for (i, plt) in enumerate(plts_tail) + plts[i + 2] = plt end # compute the layout @@ -130,9 +133,9 @@ function plot!(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) plt.init = true series_attr = KW() - for (k,v) in plotattributes + for (k, v) in plotattributes if is_series_attr(k) - series_attr[k] = pop!(plotattributes,k) + series_attr[k] = pop!(plotattributes, k) end end @@ -163,7 +166,7 @@ function plot!(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) _add_plot_title!(plt) # first apply any args for the subplots - for (idx,sp) in enumerate(plt.subplots) + for (idx, sp) in enumerate(plt.subplots) _update_subplot_args(plt, sp, plotattributes, idx, false) end @@ -173,8 +176,6 @@ function plot!(plt1::Plot, plt2::Plot, plts_tail::Plot...; kw...) plt end - - # this adds to the current plot, or creates a new plot if none are current function plot!(args...; kw...) @nospecialize @@ -210,14 +211,13 @@ function _plot!(plt::Plot, plotattributes, args) return plt end - # we're getting ready to display/output. prep for layout calcs, then update # the plot object after function prepare_output(plt::Plot) _before_layout_calcs(plt) w, h = plt.attr[:size] - plt.layout.bbox = BoundingBox(0mm, 0mm, w*px, h*px) + plt.layout.bbox = BoundingBox(0mm, 0mm, w * px, h * px) # One pass down and back up the tree to compute the minimum padding # of the children on the perimeter. This is an backend callback. @@ -229,9 +229,10 @@ function prepare_output(plt::Plot) # spedific to :plot_title see _add_plot_title! force_minpad = get(plt, :force_minpad, ()) if !isempty(force_minpad) - for i ∈ eachindex(plt.layout.grid) + for i in eachindex(plt.layout.grid) plt.layout.grid[i].minpad = Tuple( - i === nothing ? j : i for (i, j) ∈ zip(force_minpad, plt.layout.grid[i].minpad) + i === nothing ? j : i for + (i, j) in zip(force_minpad, plt.layout.grid[i].minpad) ) end end diff --git a/src/plotattr.jl b/src/plotattr.jl index d695d16e..c9449830 100644 --- a/src/plotattr.jl +++ b/src/plotattr.jl @@ -1,8 +1,10 @@ -const _attribute_defaults = Dict(:Series => _series_defaults, - :Subplot => _subplot_defaults, - :Plot => _plot_defaults, - :Axis => _axis_defaults) +const _attribute_defaults = Dict( + :Series => _series_defaults, + :Subplot => _subplot_defaults, + :Plot => _plot_defaults, + :Axis => _axis_defaults, +) attrtypes() = join(keys(_attribute_defaults), ", ") attributes(attrtype::Symbol) = sort(collect(keys(_attribute_defaults[attrtype]))) @@ -21,7 +23,9 @@ Look up the properties of a Plots attribute, or specify an attribute type. Call The information is the same as that given on https://docs.juliaplots.org/latest/attributes/. """ function plotattr() - println("Specify an attribute type to get a list of supported attributes. Options are $(attrtypes())") + println( + "Specify an attribute type to get a list of supported attributes. Options are $(attrtypes())", + ) end function plotattr(attrtype::Symbol) @@ -44,27 +48,32 @@ printnothing(x) = x printnothing(x::Nothing) = "nothing" function plotattr(attrtype::Symbol, attribute::AbstractString) - in(attrtype, keys(_attribute_defaults)) || ArgumentError("`attrtype` must match one of $(attrtypes())") + in(attrtype, keys(_attribute_defaults)) || + ArgumentError("`attrtype` must match one of $(attrtypes())") attribute = Symbol(lookup_aliases(attrtype, attribute)) desc = get(_arg_desc, attribute, "") first_period_idx = findfirst(isequal('.'), desc) - if isnothing(first_period_idx) + if isnothing(first_period_idx) typedesc = "" desc = strip(desc) else - typedesc = desc[1:first_period_idx-1] - desc = strip(desc[first_period_idx+1:end]) + typedesc = desc[1:(first_period_idx - 1)] + desc = strip(desc[(first_period_idx + 1):end]) end - als = keys(filter(x->x[2]==attribute, _keyAliases)) |> collect |> sort - als = join(map(string,als), ", ") + als = keys(filter(x -> x[2] == attribute, _keyAliases)) |> collect |> sort + als = join(map(string, als), ", ") def = _attribute_defaults[attrtype][attribute] - # Looks up the different elements and plots them - println("$(printnothing(attribute)) ", typedesc == "" ? "" : "{$(printnothing(typedesc))}", "\n", + println( + "$(printnothing(attribute)) ", + typedesc == "" ? "" : "{$(printnothing(typedesc))}", + "\n", als == "" ? "" : "$(printnothing(als))\n", "\n$(printnothing(desc))\n", - "$(printnothing(attrtype)) attribute, ", def == "" ? "" : " default: $(printnothing(def))") + "$(printnothing(attrtype)) attribute, ", + def == "" ? "" : " default: $(printnothing(def))", + ) end diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index ed5fe1c5..2a19fe91 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -1,6 +1,5 @@ should_precompile = true - # Don't edit the following! Instead change the script for `snoop_bot`. ismultios = false ismultiversion = false @@ -8,13 +7,11 @@ ismultiversion = false @static if !should_precompile # nothing elseif !ismultios && !ismultiversion - @static if isfile(joinpath( - @__DIR__, - "../deps/SnoopCompile/precompile/precompile_Plots.jl", - )) + @static if isfile( + joinpath(@__DIR__, "../deps/SnoopCompile/precompile/precompile_Plots.jl"), + ) include("../deps/SnoopCompile/precompile/precompile_Plots.jl") _precompile_() end else - end # precompile_enclosure diff --git a/src/recipes.jl b/src/recipes.jl index cd1dce43..0466d66c 100644 --- a/src/recipes.jl +++ b/src/recipes.jl @@ -41,17 +41,16 @@ function all_seriestypes() sort(collect(sts)) end - # ---------------------------------------------------------------------------------- num_series(x::AMat) = size(x, 2) num_series(x) = 1 -RecipesBase.apply_recipe(plotattributes::AKW, ::Type{T}, plt::AbstractPlot) where {T} = throw(MethodError(T, "Unmatched plot recipe: $T")) +RecipesBase.apply_recipe(plotattributes::AKW, ::Type{T}, plt::AbstractPlot) where {T} = + throw(MethodError(T, "Unmatched plot recipe: $T")) # --------------------------------------------------------------------------- - # for seriestype `line`, need to sort by x values const POTENTIAL_VECTOR_ARGUMENTS = [ @@ -114,8 +113,8 @@ end @recipe function f(::Type{Val{:hline}}, x, y, z) n = length(y) - newx = repeat(Float64[1, 2, NaN], n) - newy = vec(Float64[yi for i = 1:3, yi in y]) + newx = repeat(Float64[1, 2, NaN], n) + newy = vec(Float64[yi for i in 1:3, yi in y]) x := newx y := newy seriestype := :straightline @@ -125,7 +124,7 @@ end @recipe function f(::Type{Val{:vline}}, x, y, z) n = length(y) - newx = vec(Float64[yi for i = 1:3, yi in y]) + newx = vec(Float64[yi for i in 1:3, yi in y]) x := newx y := repeat(Float64[1, 2, NaN], n) seriestype := :straightline @@ -136,7 +135,7 @@ end @recipe function f(::Type{Val{:hspan}}, x, y, z) n = div(length(y), 2) newx = repeat([-Inf, Inf, Inf, -Inf, NaN], outer = n) - newy = vcat([[y[2i - 1], y[2i - 1], y[2i], y[2i], NaN] for i = 1:n]...) + newy = vcat([[y[2i - 1], y[2i - 1], y[2i], y[2i], NaN] for i in 1:n]...) linewidth --> 0 x := newx y := newy @@ -147,7 +146,7 @@ end @recipe function f(::Type{Val{:vspan}}, x, y, z) n = div(length(y), 2) - newx = vcat([[y[2i - 1], y[2i - 1], y[2i], y[2i], NaN] for i = 1:n]...) + newx = vcat([[y[2i - 1], y[2i - 1], y[2i], y[2i], NaN] for i in 1:n]...) newy = repeat([-Inf, Inf, Inf, -Inf, NaN], outer = n) linewidth --> 0 x := newx @@ -179,7 +178,6 @@ end end @deps scatterpath path scatter - # --------------------------------------------------------------------------- # regression line and scatter @@ -202,10 +200,8 @@ end () end - @specialize - # --------------------------------------------------------------------------- # steps @@ -215,10 +211,10 @@ function make_steps(x::AbstractArray, st, even) n == 0 && return zeros(0) newx = zeros(2n - (even ? 0 : 1)) newx[1] = x[1] - for i = 2:n + for i in 2:n idx = 2i - 1 if st == :mid - newx[idx] = newx[idx-1] = (x[i] + x[i-1]) / 2 + newx[idx] = newx[idx - 1] = (x[i] + x[i - 1]) / 2 else newx[idx] = x[i] newx[idx - 1] = x[st == :pre ? i : i - 1] @@ -229,7 +225,6 @@ function make_steps(x::AbstractArray, st, even) end make_steps(t::Tuple, st, even) = Tuple(make_steps(ti, st, even) for ti in t) - @nospecialize # create a path from steps @@ -307,7 +302,6 @@ end end @deps steppost path scatter - # --------------------------------------------------------------------------- # sticks @@ -326,7 +320,7 @@ end end newx, newy = zeros(3n), zeros(3n) newz = z !== nothing ? zeros(3n) : nothing - for (i, (xi, yi, zi)) = enumerate(zip(x, y, z !== nothing ? z : 1:n)) + for (i, (xi, yi, zi)) in enumerate(zip(x, y, z !== nothing ? z : 1:n)) rng = (3i - 2):(3i) newx[rng] = [xi, xi, NaN] if z !== nothing @@ -343,7 +337,11 @@ end end fillrange := nothing seriestype := :path - if plotattributes[:linecolor] == :auto && plotattributes[:marker_z] !== nothing && plotattributes[:line_z] === nothing + if ( + plotattributes[:linecolor] == :auto && + plotattributes[:marker_z] !== nothing && + plotattributes[:line_z] === nothing + ) line_z := plotattributes[:marker_z] end @@ -368,7 +366,6 @@ end @specialize - # --------------------------------------------------------------------------- # bezier curves @@ -438,8 +435,7 @@ end # create a bar plot as a filled step function @recipe function f(::Type{Val{:bar}}, x, y, z) - procx, procy, xscale, yscale, baseline = - _preprocess_barlike(plotattributes, x, y) + procx, procy, xscale, yscale, baseline = _preprocess_barlike(plotattributes, x, y) nx, ny = length(procx), length(procy) axis = plotattributes[:subplot][isvertical(plotattributes) ? :xaxis : :yaxis] cv = [discrete_value!(axis, xi)[1] for xi in procx] @@ -448,7 +444,9 @@ end elseif nx == ny + 1 0.5 * diff(cv) + cv[1:(end - 1)] else - error("bar recipe: x must be same length as y (centers), or one more than y (edges).\n\t\tlength(x)=$(length(x)), length(y)=$(length(y))") + error( + "bar recipe: x must be same length as y (centers), or one more than y (edges).\n\t\tlength(x)=$(length(x)), length(y)=$(length(y))", + ) end # compute half-width of bars @@ -473,7 +471,7 @@ end end xseg, yseg = Segments(), Segments() - for i = 1:ny + for i in 1:ny yi = procy[i] if !isnan(yi) center = procx[i] @@ -497,7 +495,7 @@ end # switch back if !isvertical(plotattributes) xseg, yseg = yseg, xseg - x, y = y, x + x, y = y, x end # reset orientation @@ -532,8 +530,8 @@ end m, n = size(z.surf) x_pts, y_pts = fill(NaN, 6 * m * n), fill(NaN, 6 * m * n) fz = zeros(m * n) - for i = 1:m # y - for j = 1:n # x + for i in 1:m # y + for j in 1:n # x k = (j - 1) * m + i inds = (6 * (k - 1) + 1):(6 * k - 1) x_pts[inds] .= [xe[j], xe[j + 1], xe[j + 1], xe[j], xe[j]] @@ -580,7 +578,6 @@ function _scale_adjusted_values( end end - function _binbarlike_baseline(min_value::T, scale::Symbol) where {T<:Real} if (scale in _logScales) !isnan(min_value) ? min_value / T(_logScaleBases[scale]^log10(2)) : T(1E-3) @@ -589,7 +586,6 @@ function _binbarlike_baseline(min_value::T, scale::Symbol) where {T<:Real} end end - function _preprocess_binbarlike_weights( ::Type{T}, w, @@ -618,12 +614,10 @@ function _preprocess_binlike(plotattributes, x, y) edge, weights, xscale, yscale, baseline end - @nospecialize @recipe function f(::Type{Val{:barbins}}, x, y, z) - edge, weights, xscale, yscale, baseline = - _preprocess_binlike(plotattributes, x, y) + edge, weights, xscale, yscale, baseline = _preprocess_binlike(plotattributes, x, y) if (plotattributes[:bar_width] === nothing) bar_width := diff(edge) end @@ -634,10 +628,8 @@ end end @deps barbins bar - @recipe function f(::Type{Val{:scatterbins}}, x, y, z) - edge, weights, xscale, yscale, baseline = - _preprocess_binlike(plotattributes, x, y) + edge, weights, xscale, yscale, baseline = _preprocess_binlike(plotattributes, x, y) @series begin x := _bin_centers(edge) xerror := diff(edge) / 2 @@ -654,13 +646,7 @@ end @specialize -function _stepbins_path( - edge, - weights, - baseline::Real, - xscale::Symbol, - yscale::Symbol, -) +function _stepbins_path(edge, weights, baseline::Real, xscale::Symbol, yscale::Symbol) log_scale_x = xscale in _logScales log_scale_y = yscale in _logScales @@ -722,11 +708,9 @@ end @recipe function f(::Type{Val{:stepbins}}, x, y, z) @nospecialize - axis = - plotattributes[:subplot][Plots.isvertical(plotattributes) ? :xaxis : :yaxis] + axis = plotattributes[:subplot][Plots.isvertical(plotattributes) ? :xaxis : :yaxis] - edge, weights, xscale, yscale, baseline = - _preprocess_binlike(plotattributes, x, y) + edge, weights, xscale, yscale, baseline = _preprocess_binlike(plotattributes, x, y) xpts, ypts = _stepbins_path(edge, weights, baseline, xscale, yscale) if !isvertical(plotattributes) @@ -778,12 +762,9 @@ function _auto_binning_nbins( # The nd estimator is the key to most automatic binning methods, and is modified for twodimensional histograms to include correlation nd = n_samples^(1 / (2 + N)) - nd = N == 2 ? - min( - n_samples^(1 / (2 + N)), - nd / (1 - cor(first(vs), last(vs))^2)^(3 // 8), - ) : - nd # the >2-dimensional case does not have a nice solution to correlations + nd = + N == 2 ? + min(n_samples^(1 / (2 + N)), nd / (1 - cor(first(vs), last(vs))^2)^(3 // 8)) : nd # the >2-dimensional case does not have a nice solution to correlations v = vs[dim] @@ -812,11 +793,8 @@ _hist_edge(vs::NTuple{N,AbstractVector}, dim::Integer, binning::Integer) where { StatsBase.histrange(vs[dim], binning, :left) _hist_edge(vs::NTuple{N,AbstractVector}, dim::Integer, binning::Symbol) where {N} = _hist_edge(vs, dim, _auto_binning_nbins(vs, dim, mode = binning)) -_hist_edge( - vs::NTuple{N,AbstractVector}, - dim::Integer, - binning::AbstractVector, -) where {N} = binning +_hist_edge(vs::NTuple{N,AbstractVector}, dim::Integer, binning::AbstractVector) where {N} = + binning _hist_edges(vs::NTuple{N,AbstractVector}, binning::NTuple{N,Any}) where {N} = map(dim -> _hist_edge(vs, dim, binning[dim]), (1:N...,)) @@ -846,8 +824,8 @@ function _make_hist( edges = _hist_edges(localvs, binning) h = float( weights === nothing ? - StatsBase.fit(StatsBase.Histogram, localvs, edges, closed = :left) : - StatsBase.fit( + StatsBase.fit(StatsBase.Histogram, localvs, edges, closed = :left) : + StatsBase.fit( StatsBase.Histogram, localvs, StatsBase.Weights(weights), @@ -908,7 +886,6 @@ end end @deps scatterhist scatterbins - @recipe function f(h::StatsBase.Histogram{T,1,E}) where {T,E} seriestype --> :barbins @@ -918,8 +895,7 @@ end :step => :stepbins, :steppost => :stepbins, # :step can be mapped to :steppost in pre-processing ) - seriestype := - get(st_map, plotattributes[:seriestype], plotattributes[:seriestype]) + seriestype := get(st_map, plotattributes[:seriestype], plotattributes[:seriestype]) if plotattributes[:seriestype] == :scatterbins # Workaround, error bars currently not set correctly by scatterbins @@ -933,7 +909,6 @@ end end end - @recipe function f(hv::AbstractVector{H}) where {H<:StatsBase.Histogram} for h in hv @series begin @@ -942,7 +917,6 @@ end end end - # --------------------------------------------------------------------------- # Histogram 2D @@ -969,7 +943,6 @@ end end Plots.@deps bins2d heatmap - @recipe function f(::Type{Val{:histogram2d}}, x, y, z) h = _make_hist( (x, y), @@ -985,13 +958,11 @@ Plots.@deps bins2d heatmap end @deps histogram2d bins2d - @recipe function f(h::StatsBase.Histogram{T,2,E}) where {T,E} seriestype --> :bins2d (h.edges[1], h.edges[2], Surface(h.weights)) end - # --------------------------------------------------------------------------- # pie @recipe function f(::Type{Val{:pie}}, x, y, z) @@ -1013,7 +984,6 @@ end end @deps pie shape - # --------------------------------------------------------------------------- # mesh 3d replacement for non-plotly backends @@ -1021,12 +991,15 @@ end # As long as no i,j,k are supplied this should work with PyPlot and GR seriestype := :surface if plotattributes[:connections] !== nothing - throw(ArgumentError("Giving triangles using the connections argument is only supported on Plotly backend.")) + throw( + ArgumentError( + "Giving triangles using the connections argument is only supported on Plotly backend.", + ), + ) end () end - # --------------------------------------------------------------------------- # scatter 3d @@ -1044,7 +1017,7 @@ end # --------------------------------------------------------------------------- # lens! - magnify a region of a plot -lens!(args...;kwargs...) = plot!(args...; seriestype=:lens, kwargs...) +lens!(args...; kwargs...) = plot!(args...; seriestype = :lens, kwargs...) export lens! @recipe function f(::Type{Val{:lens}}, plt::AbstractPlot) sp_index, inset_bbox = plotattributes[:inset_subplots] @@ -1072,11 +1045,12 @@ export lens! linecolor := :lightgray bbx_mag = (x1 + x2) / 2 bby_mag = (y1 + y2) / 2 - xi_lens, yi_lens = intersection_point(bbx_mag, bby_mag, bbx, bby, abs(bby2 - bby1), abs(bbx2 - bbx1)) - xi_mag, yi_mag = intersection_point(bbx, bby, bbx_mag, bby_mag, abs(y2 - y1), abs(x2 - x1)) + xi_lens, yi_lens = + intersection_point(bbx_mag, bby_mag, bbx, bby, abs(bby2 - bby1), abs(bbx2 - bbx1)) + xi_mag, yi_mag = + intersection_point(bbx, bby, bbx_mag, bby_mag, abs(y2 - y1), abs(x2 - x1)) # add lines - if xl1 < xi_lens < xl2 && - yl1 < yi_lens < yl2 + if xl1 < xi_lens < xl2 && yl1 < yi_lens < yl2 @series begin primary := false subplot := sp_index @@ -1121,14 +1095,14 @@ function intersection_point(xA, yA, xB, yB, h, w) else # left return xB - hw, yB - s * hw end - # top or bot? - elseif -hw <= hh/s <= hw + # top or bot? + elseif -hw <= hh / s <= hw if yA > yB # top - return xB + hh/s, yB + hh + return xB + hh / s, yB + hh else # bottom - return xB - hh/s, yB - hh + return xB - hh / s, yB - hh end end end @@ -1268,15 +1242,15 @@ function quiver_using_arrows(plotattributes::AKW) if !isa(plotattributes[:arrow], Arrow) plotattributes[:arrow] = arrow() end - is_3d = haskey(plotattributes,:z) && !isnothing(plotattributes[:z]) + is_3d = haskey(plotattributes, :z) && !isnothing(plotattributes[:z]) velocity = error_zipit(plotattributes[:quiver]) xorig, yorig = plotattributes[:x], plotattributes[:y] zorig = is_3d ? plotattributes[:z] : [] # for each point, we create an arrow of velocity vi, translated to the x/y coordinates x, y = zeros(0), zeros(0) - is_3d && ( z = zeros(0)) - for i = 1:max(length(xorig), length(yorig), is_3d ? 0 : length(zorig)) + is_3d && (z = zeros(0)) + for i in 1:max(length(xorig), length(yorig), is_3d ? 0 : length(zorig)) # get the starting position xi = _cycle(xorig, i) yi = _cycle(yorig, i) @@ -1326,7 +1300,7 @@ function quiver_using_hack(plotattributes::AKW) # for each point, we create an arrow of velocity vi, translated to the x/y coordinates pts = P2[] - for i = 1:max(length(xorig), length(yorig)) + for i in 1:max(length(xorig), length(yorig)) # get the starting position xi = _cycle(xorig, i) @@ -1355,10 +1329,7 @@ function quiver_using_hack(plotattributes::AKW) U2 *= arrow_w ppv = p + v - nanappend!( - pts, - P2[p, ppv - U1, ppv - U1 + U2, ppv, ppv - U1 - U2, ppv - U1], - ) + nanappend!(pts, P2[p, ppv - U1, ppv - U1 + U2, ppv, ppv - U1 - U2, ppv - U1]) end plotattributes[:x], plotattributes[:y] = RecipesPipeline.unzip(pts[2:end]) @@ -1377,7 +1348,6 @@ end end @deps quiver shape path - # -------------------------------------------------------------------- # 1 argument # -------------------------------------------------------------------- @@ -1409,7 +1379,7 @@ end @nospecialize # images - colors -@recipe function f(mat::AMat{T}) where {T <: Colorant} +@recipe function f(mat::AMat{T}) where {T<:Colorant} n, m = axes(mat) if is_seriestype_supported(:image) @@ -1439,9 +1409,9 @@ end # interpreted as having one element per shape for attr in union(_segmenting_array_attributes, _segmenting_vector_attributes) v = get(plotattributes, attr, nothing) - if v isa AVec || v isa AMat && size(v,2) == 1 + if v isa AVec || v isa AMat && size(v, 2) == 1 @warn "Column vector attribute `$attr` reinterpreted as row vector (one value per shape).\n" * - "Pass a row vector instead (e.g. using `permutedims`) to suppress this warning." + "Pass a row vector instead (e.g. using `permutedims`) to suppress this warning." plotattributes[attr] = permutedims(v) end end @@ -1455,13 +1425,12 @@ end end end - # -------------------------------------------------------------------- # 3 arguments # -------------------------------------------------------------------- # images - grays -@recipe function f(x::AVec, y::AVec, mat::AMat{T}) where {T <: Gray} +@recipe function f(x::AVec, y::AVec, mat::AMat{T}) where {T<:Gray} if is_seriestype_supported(:image) seriestype := :image yflip --> true @@ -1476,7 +1445,7 @@ end end # images - colors -@recipe function f(x::AVec, y::AVec, mat::AMat{T}) where {T <: Colorant} +@recipe function f(x::AVec, y::AVec, mat::AMat{T}) where {T<:Colorant} if is_seriestype_supported(:image) seriestype := :image yflip --> true @@ -1497,7 +1466,7 @@ end @recipe f(p::GeometryBasics.Point) = [p] # Special case for 4-tuples in :ohlc series -@recipe f(xyuv::AVec{<:Tuple{R1, R2, R3, R4}}) where {R1, R2, R3, R4} = +@recipe f(xyuv::AVec{<:Tuple{R1,R2,R3,R4}}) where {R1,R2,R3,R4} = get(plotattributes, :seriestype, :path) == :ohlc ? OHLC[OHLC(t...) for t in xyuv] : RecipesPipeline.unzip(xyuv) @@ -1554,8 +1523,7 @@ end @recipe f( x::AVec, ohlc::AVec{Tuple{R1,R2,R3,R4}}, -) where {R1<:Number,R2<:Number,R3<:Number,R4<:Number} = - x, OHLC[OHLC(t...) for t in ohlc] +) where {R1<:Number,R2<:Number,R3<:Number,R4<:Number} = x, OHLC[OHLC(t...) for t in ohlc] @recipe function f(x::AVec, v::AVec{OHLC}) seriestype := :path @@ -1574,7 +1542,6 @@ end # TODO: everything below here should be either changed to a # series recipe or moved to PlotRecipes - # "Sparsity plot... heatmap of non-zero values of a matrix" # function spy{T<:Real}(z::AMat{T}; kw...) # mat = reshape(map(zi->float(zi!=0), z),1,:) @@ -1622,7 +1589,6 @@ end @specialize - Plots.findnz(A::AbstractSparseMatrix) = SparseArrays.findnz(A) # fallback function for finding non-zero elements of non-sparse matrices @@ -1662,7 +1628,6 @@ end x, real.(y), imag.(y) end - # Moved in from PlotRecipes - see: http://stackoverflow.com/a/37732384/5075246 @userplot PortfolioComposition diff --git a/src/shorthands.jl b/src/shorthands.jl index 74a7b26c..923ed5a4 100644 --- a/src/shorthands.jl +++ b/src/shorthands.jl @@ -241,7 +241,6 @@ julia> ohlc(y) """ @shorthands ohlc - """ contour(x,y,z) contour!(x,y,z) @@ -263,7 +262,6 @@ julia> contour(x, y, (x, y) -> x^2 + y^2) "An alias for `contour` with fill = true." @shorthands contourf - @shorthands contour3d """ @@ -408,17 +406,17 @@ julia> curves([1,2,3,4],[1,1,2,4]) @shorthands pie "Plot with seriestype :path3d" -plot3d(args...; kw...) = plot(args...; kw..., seriestype = :path3d) -plot3d!(args...; kw...) = plot!(args...; kw..., seriestype = :path3d) +plot3d(args...; kw...) = plot(args...; kw..., seriestype = :path3d) +plot3d!(args...; kw...) = plot!(args...; kw..., seriestype = :path3d) "Add title to an existing plot" -title!(s::AbstractString; kw...) = plot!(; title = s, kw...) +title!(s::AbstractString; kw...) = plot!(; title = s, kw...) "Add xlabel to an existing plot" -xlabel!(s::AbstractString; kw...) = plot!(; xlabel = s, kw...) +xlabel!(s::AbstractString; kw...) = plot!(; xlabel = s, kw...) "Add ylabel to an existing plot" -ylabel!(s::AbstractString; kw...) = plot!(; ylabel = s, kw...) +ylabel!(s::AbstractString; kw...) = plot!(; ylabel = s, kw...) "Set xlims for an existing plot" xlims!(lims::Tuple; kw...) = plot!(; xlims = lims, kw...) @@ -429,21 +427,20 @@ ylims!(lims::Tuple; kw...) = plot!(; ylims = lims, kw...) "Set zlims for an existing plot" zlims!(lims::Tuple; kw...) = plot!(; zlims = lims, kw...) -xlims!(xmin::Real, xmax::Real; kw...) = plot!(; xlims = (xmin,xmax), kw...) -ylims!(ymin::Real, ymax::Real; kw...) = plot!(; ylims = (ymin,ymax), kw...) -zlims!(zmin::Real, zmax::Real; kw...) = plot!(; zlims = (zmin,zmax), kw...) - +xlims!(xmin::Real, xmax::Real; kw...) = plot!(; xlims = (xmin, xmax), kw...) +ylims!(ymin::Real, ymax::Real; kw...) = plot!(; ylims = (ymin, ymax), kw...) +zlims!(zmin::Real, zmax::Real; kw...) = plot!(; zlims = (zmin, zmax), kw...) "Set xticks for an existing plot" -xticks!(v::TicksArgs; kw...) = plot!(; xticks = v, kw...) +xticks!(v::TicksArgs; kw...) = plot!(; xticks = v, kw...) "Set yticks for an existing plot" -yticks!(v::TicksArgs; kw...) = plot!(; yticks = v, kw...) +yticks!(v::TicksArgs; kw...) = plot!(; yticks = v, kw...) -xticks!( -ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(; xticks = (ticks,labels), kw...) -yticks!( -ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = plot!(; yticks = (ticks,labels), kw...) +xticks!(ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = + plot!(; xticks = (ticks, labels), kw...) +yticks!(ticks::AVec{T}, labels::AVec{S}; kw...) where {T<:Real,S<:AbstractString} = + plot!(; yticks = (ticks, labels), kw...) """ annotate!(anns...) @@ -463,22 +460,22 @@ julia> annotate!([(7,3,"(7,3)"),(3,7,text("hey", 14, :left, :top, :green))]) julia> annotate!([(4, 4, ("More text", 8, 45.0, :bottom, :red))]) ``` """ -annotate!(anns...; kw...) = plot!(; annotation = anns, kw...) +annotate!(anns...; kw...) = plot!(; annotation = anns, kw...) annotate!(anns::Tuple...; kw...) = plot!(; annotation = collect(anns), kw...) annotate!(anns::AVec{<:Tuple}; kw...) = plot!(; annotation = anns, kw...) "Flip the current plots' x axis" -xflip!(flip::Bool = true; kw...) = plot!(; xflip = flip, kw...) +xflip!(flip::Bool = true; kw...) = plot!(; xflip = flip, kw...) "Flip the current plots' y axis" -yflip!(flip::Bool = true; kw...) = plot!(; yflip = flip, kw...) +yflip!(flip::Bool = true; kw...) = plot!(; yflip = flip, kw...) "Specify x axis attributes for an existing plot" -xaxis!(args...; kw...) = plot!(; xaxis = args, kw...) +xaxis!(args...; kw...) = plot!(; xaxis = args, kw...) "Specify y axis attributes for an existing plot" -yaxis!(args...; kw...) = plot!(; yaxis = args, kw...) -xgrid!(args...; kw...) = plot!(; xgrid = args, kw...) -ygrid!(args...; kw...) = plot!(; ygrid = args, kw...) +yaxis!(args...; kw...) = plot!(; yaxis = args, kw...) +xgrid!(args...; kw...) = plot!(; xgrid = args, kw...) +ygrid!(args...; kw...) = plot!(; ygrid = args, kw...) @specialize diff --git a/src/subplots.jl b/src/subplots.jl index 35167349..5d1be3a8 100644 --- a/src/subplots.jl +++ b/src/subplots.jl @@ -1,6 +1,5 @@ - -function Subplot(::T; parent = RootLayout()) where T<:AbstractBackend +function Subplot(::T; parent = RootLayout()) where {T<:AbstractBackend} Subplot{T}( parent, Series[], @@ -9,7 +8,7 @@ function Subplot(::T; parent = RootLayout()) where T<:AbstractBackend defaultbox, DefaultsDict(KW(), _subplot_defaults), nothing, - nothing + nothing, ) end @@ -21,8 +20,7 @@ Return the bounding box of a subplot plotarea(sp::Subplot) = sp.plotarea plotarea!(sp::Subplot, bbox::BoundingBox) = (sp.plotarea = bbox) - -Base.size(sp::Subplot) = (1,1) +Base.size(sp::Subplot) = (1, 1) Base.length(sp::Subplot) = 1 Base.getindex(sp::Subplot, r::Int, c::Int) = sp @@ -43,23 +41,23 @@ series_list(sp::Subplot) = sp.series_list # filter(series -> series.plotattribut function should_add_to_legend(series::Series) series.plotattributes[:primary] && - series.plotattributes[:label] != "" && - !( - series.plotattributes[:seriestype] in ( - :hexbin, - :bins2d, - :histogram2d, - :hline, - :vline, - :contour, - :contourf, - :contour3d, - :surface, - :wireframe, - :heatmap, - :image, + series.plotattributes[:label] != "" && + !( + series.plotattributes[:seriestype] in ( + :hexbin, + :bins2d, + :histogram2d, + :hline, + :vline, + :contour, + :contourf, + :contour3d, + :surface, + :wireframe, + :heatmap, + :image, + ) ) - ) end # ---------------------------------------------------------------------- diff --git a/src/themes.jl b/src/themes.jl index bb1489f9..a770bfb0 100644 --- a/src/themes.jl +++ b/src/themes.jl @@ -34,11 +34,8 @@ end @userplot ShowTheme -_color_functions = KW( - :protanopic => protanopic, - :deuteranopic => deuteranopic, - :tritanopic => tritanopic, -) +_color_functions = + KW(:protanopic => protanopic, :deuteranopic => deuteranopic, :tritanopic => tritanopic) _get_showtheme_args(thm::Symbol) = thm, identity _get_showtheme_args(thm::Symbol, func::Symbol) = thm, get(_color_functions, func, identity) @@ -110,8 +107,8 @@ _get_showtheme_args(thm::Symbol, func::Symbol) = thm, get(_color_functions, func subplot := 4 seriestype := :heatmap seriescolor := colorgradient - xticks := (-2π:2π:2π, string.(-2:2:2, "π")) - yticks := (-2π:2π:2π, string.(-2:2:2, "π")) + xticks := ((-2π):(2π):(2π), string.(-2:2:2, "π")) + yticks := ((-2π):(2π):(2π), string.(-2:2:2, "π")) x, y, z end @@ -119,8 +116,8 @@ _get_showtheme_args(thm::Symbol, func::Symbol) = thm, get(_color_functions, func subplot := 5 seriestype := :surface seriescolor := colorgradient - xticks := (-2π:2π:2π, string.(-2:2:2, "π")) - yticks := (-2π:2π:2π, string.(-2:2:2, "π")) + xticks := ((-2π):(2π):(2π), string.(-2:2:2, "π")) + yticks := ((-2π):(2π):(2π), string.(-2:2:2, "π")) x, y, z end @@ -137,5 +134,4 @@ _get_showtheme_args(thm::Symbol, func::Symbol) = thm, get(_color_functions, func line_z := z x, y, z end - end diff --git a/src/types.jl b/src/types.jl index 5a7427c5..24d441a2 100644 --- a/src/types.jl +++ b/src/types.jl @@ -6,7 +6,8 @@ const AVec = AbstractVector const AMat = AbstractMatrix const KW = Dict{Symbol,Any} const AKW = AbstractDict{Symbol,Any} -const TicksArgs = Union{AVec{T}, Tuple{AVec{T}, AVec{S}}, Symbol} where {T<:Real, S<:AbstractString} +const TicksArgs = + Union{AVec{T},Tuple{AVec{T},AVec{S}},Symbol} where {T<:Real,S<:AbstractString} struct PlotsDisplay <: AbstractDisplay end @@ -59,11 +60,10 @@ Extrema() = Extrema(Inf, -Inf) # ----------------------------------------------------------- -const SubplotMap = Dict{Any, Subplot} +const SubplotMap = Dict{Any,Subplot} # ----------------------------------------------------------- - mutable struct Plot{T<:AbstractBackend} <: AbstractPlot{T} backend::T # the backend type n::Int # number of series @@ -78,9 +78,18 @@ mutable struct Plot{T<:AbstractBackend} <: AbstractPlot{T} end function Plot() - Plot(backend(), 0, DefaultsDict(KW(), _plot_defaults), Series[], nothing, - Subplot[], SubplotMap(), EmptyLayout(), - Subplot[], false) + Plot( + backend(), + 0, + DefaultsDict(KW(), _plot_defaults), + Series[], + nothing, + Subplot[], + SubplotMap(), + EmptyLayout(), + Subplot[], + false, + ) end # ----------------------------------------------------------------------- @@ -89,7 +98,7 @@ Base.getindex(plt::Plot, i::Integer) = plt.subplots[i] Base.length(plt::Plot) = length(plt.subplots) Base.lastindex(plt::Plot) = length(plt) -Base.getindex(plt::Plot, r::Integer, c::Integer) = plt.layout[r,c] +Base.getindex(plt::Plot, r::Integer, c::Integer) = plt.layout[r, c] Base.size(plt::Plot) = size(plt.layout) Base.size(plt::Plot, i::Integer) = size(plt.layout)[i] Base.ndims(plt::Plot) = 2 diff --git a/src/utils.jl b/src/utils.jl index 9b7c12dd..244a14a0 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -1,11 +1,12 @@ # --------------------------------------------------------------- -treats_y_as_x(seriestype) = seriestype in (:vline, :vspan, :histogram, :barhist, :stephist, :scatterhist) +treats_y_as_x(seriestype) = + seriestype in (:vline, :vspan, :histogram, :barhist, :stephist, :scatterhist) -function replace_image_with_heatmap(z::Array{T}) where T<:Colorant +function replace_image_with_heatmap(z::Array{T}) where {T<:Colorant} n, m = size(z) colors = palette(vec(z)) - newz = reshape(1:n*m, n, m) + newz = reshape(1:(n * m), n, m) newz, colors end @@ -20,8 +21,7 @@ end Segments() = Segments(Float64) Segments(::Type{T}) where {T} = Segments(T[]) -Segments(p::Int) = Segments(NTuple{p, Float64}[]) - +Segments(p::Int) = Segments(NTuple{p,Float64}[]) # Segments() = Segments(zeros(0)) @@ -30,30 +30,32 @@ to_nan(::Type{NTuple{2,Float64}}) = (NaN, NaN) to_nan(::Type{NTuple{3,Float64}}) = (NaN, NaN, NaN) coords(segs::Segments{Float64}) = segs.pts -coords(segs::Segments{NTuple{2,Float64}}) = Float64[p[1] for p in segs.pts], Float64[p[2] for p in segs.pts] -coords(segs::Segments{NTuple{3,Float64}}) = Float64[p[1] for p in segs.pts], Float64[p[2] for p in segs.pts], Float64[p[3] for p in segs.pts] +coords(segs::Segments{NTuple{2,Float64}}) = + Float64[p[1] for p in segs.pts], Float64[p[2] for p in segs.pts] +coords(segs::Segments{NTuple{3,Float64}}) = Float64[p[1] for p in segs.pts], +Float64[p[2] for p in segs.pts], +Float64[p[3] for p in segs.pts] -function Base.push!(segments::Segments{T}, vs...) where T +function Base.push!(segments::Segments{T}, vs...) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs - push!(segments.pts, convert(T,v)) + push!(segments.pts, convert(T, v)) end segments end -function Base.push!(segments::Segments{T}, vs::AVec) where T +function Base.push!(segments::Segments{T}, vs::AVec) where {T} if !isempty(segments.pts) push!(segments.pts, to_nan(T)) end for v in vs - push!(segments.pts, convert(T,v)) + push!(segments.pts, convert(T, v)) end segments end - struct SeriesSegment # indexes of this segement in series data vectors range::UnitRange @@ -76,7 +78,7 @@ function iter_segments(args...) NaNSegmentsIterator(tup, n1, n2) end -function series_segments(series::Series, seriestype::Symbol=:path; check=false) +function series_segments(series::Series, seriestype::Symbol = :path; check = false) x, y, z = series[:x], series[:y], series[:z] (x === nothing || isempty(x)) && return UnitRange{Int}[] @@ -85,13 +87,13 @@ function series_segments(series::Series, seriestype::Symbol=:path; check=false) if check scales = :xscale, :yscale, :zscale - for (n, s) ∈ enumerate(args) + for (n, s) in enumerate(args) scale = get(series, scales[n], :identity) if scale ∈ _logScales - for (i, v) ∈ enumerate(s) + for (i, v) in enumerate(s) if v <= 0 @warn "Invalid negative or zero value $v found at series index $i for $(scale) based $(scales[n])" - @debug "" exception=(DomainError(v), stacktrace()) + @debug "" exception = (DomainError(v), stacktrace()) break end end @@ -101,12 +103,12 @@ function series_segments(series::Series, seriestype::Symbol=:path; check=false) segments = if has_attribute_segments(series) Iterators.flatten(map(nan_segments) do r - if seriestype in (:scatter, :scatter3d) - (SeriesSegment(i:i, i) for i in r) - else - (SeriesSegment(i:i+1, i) for i in first(r):last(r)-1) - end - end) + if seriestype in (:scatter, :scatter3d) + (SeriesSegment(i:i, i) for i in r) + else + (SeriesSegment(i:(i + 1), i) for i in first(r):(last(r) - 1)) + end + end) else (SeriesSegment(r, 1) for r in nan_segments) end @@ -117,13 +119,15 @@ end function warn_on_attr_dim_mismatch(series, x, y, z, segments) isempty(segments) && return - seg_range = UnitRange(minimum(first(seg.range) for seg in segments), - maximum(last(seg.range) for seg in segments)) + seg_range = UnitRange( + minimum(first(seg.range) for seg in segments), + maximum(last(seg.range) for seg in segments), + ) for attr in _segmenting_vector_attributes v = get(series, attr, nothing) if v isa AVec && eachindex(v) != seg_range @warn "Indices $(eachindex(v)) of attribute `$attr` does not match data indices $seg_range." - if any(v -> !isnothing(v) && any(isnan, v), (x,y,z)) + if any(v -> !isnothing(v) && any(isnan, v), (x, y, z)) @info """Data contains NaNs or missing values, and indices of `$attr` vector do not match data indices. If you intend elements of `$attr` to apply to individual NaN-separated segements in the data, pass each segment in a separate vector instead, and use a row vector for `$attr`. Legend entries @@ -137,20 +141,24 @@ function warn_on_attr_dim_mismatch(series, x, y, z, segments) end # helpers to figure out if there are NaN values in a list of array types -anynan(i::Int, args::Tuple) = any(a -> try isnan(_cycle(a,i)) catch MethodError false end, args) -anynan(args::Tuple) = i -> anynan(i,args) +anynan(i::Int, args::Tuple) = any(a -> try + isnan(_cycle(a, i)) +catch MethodError + false +end, args) +anynan(args::Tuple) = i -> anynan(i, args) anynan(istart::Int, iend::Int, args::Tuple) = any(anynan(args), istart:iend) allnan(istart::Int, iend::Int, args::Tuple) = all(anynan(args), istart:iend) function Base.iterate(itr::NaNSegmentsIterator, nextidx::Int = itr.n1) - i = findfirst(!anynan(itr.args), nextidx:itr.n2) + i = findfirst(!anynan(itr.args), nextidx:(itr.n2)) i === nothing && return nextval = nextidx + i - 1 - j = findfirst(anynan(itr.args), nextval:itr.n2) + j = findfirst(anynan(itr.args), nextval:(itr.n2)) nextnan = j === nothing ? itr.n2 + 1 : nextval + j - 1 - nextval:nextnan-1, nextnan + nextval:(nextnan - 1), nextnan end Base.IteratorSize(::NaNSegmentsIterator) = Base.SizeUnknown() @@ -162,7 +170,6 @@ float_extended_type(x::AbstractArray{T}) where {T<:Real} = Float64 # ------------------------------------------------------------------------------------ - nop() = nothing notimpl() = error("This has not been implemented yet") @@ -172,12 +179,12 @@ isnothing(x) = false _cycle(wrapper::InputWrapper, idx::Int) = wrapper.obj _cycle(wrapper::InputWrapper, idx::AVec{Int}) = wrapper.obj -_cycle(v::AVec, idx::Int) = v[mod(idx, axes(v,1))] -_cycle(v::AMat, idx::Int) = size(v,1) == 1 ? v[end, mod(idx, axes(v,2))] : v[:, mod(idx, axes(v,2))] +_cycle(v::AVec, idx::Int) = v[mod(idx, axes(v, 1))] +_cycle(v::AMat, idx::Int) = size(v, 1) == 1 ? v[end, mod(idx, axes(v, 2))] : v[:, mod(idx, axes(v, 2))] _cycle(v, idx::Int) = v -_cycle(v::AVec, indices::AVec{Int}) = map(i -> _cycle(v,i), indices) -_cycle(v::AMat, indices::AVec{Int}) = map(i -> _cycle(v,i), indices) +_cycle(v::AVec, indices::AVec{Int}) = map(i -> _cycle(v, i), indices) +_cycle(v::AMat, indices::AVec{Int}) = map(i -> _cycle(v, i), indices) _cycle(v, indices::AVec{Int}) = fill(v, length(indices)) _cycle(cl::PlotUtils.AbstractColorList, idx::Int) = cl[mod1(idx, end)] @@ -198,17 +205,16 @@ maketuple(x::Tuple{T,S}) where {T,S} = x for i in 2:4 @eval begin RecipesPipeline.unzip( - v::Union{AVec{<:Tuple{Vararg{T,$i} where T}}, AVec{<:GeometryBasics.Point{$i}}}, - ) = $(Expr(:tuple, (:([t[$j] for t in v]) for j=1:i)...)) + v::Union{AVec{<:Tuple{Vararg{T,$i} where T}},AVec{<:GeometryBasics.Point{$i}}}, + ) = $(Expr(:tuple, (:([t[$j] for t in v]) for j in 1:i)...)) end end RecipesPipeline.unzip( - ::Union{AVec{<:GeometryBasics.Point{N}}, AVec{<:Tuple{Vararg{T,N} where T}}} -) where N = error("$N-dimensional unzip not implemented.") -RecipesPipeline.unzip(::Union{AVec{<:GeometryBasics.Point}, AVec{<:Tuple}}) = error( - "Can't unzip points of different dimensions." -) + ::Union{AVec{<:GeometryBasics.Point{N}},AVec{<:Tuple{Vararg{T,N} where T}}}, +) where {N} = error("$N-dimensional unzip not implemented.") +RecipesPipeline.unzip(::Union{AVec{<:GeometryBasics.Point},AVec{<:Tuple}}) = + error("Can't unzip points of different dimensions.") # given 2-element lims and a vector of data x, widen lims to account for the extrema of x function _expand_limits(lims, x) @@ -221,7 +227,7 @@ function _expand_limits(lims, x) nothing end -expand_data(v, n::Integer) = [_cycle(v, i) for i=1:n] +expand_data(v, n::Integer) = [_cycle(v, i) for i in 1:n] # if the type exists in a list, replace the first occurence. otherwise add it to the end function addOrReplace(v::AbstractVector, t::DataType, args...; kw...) @@ -253,28 +259,42 @@ function replaceAliases!(plotattributes::AKW, aliases::Dict{Symbol,Symbol}) end end -createSegments(z) = collect(repeat(reshape(z,1,:),2,1))[2:end] +createSegments(z) = collect(repeat(reshape(z, 1, :), 2, 1))[2:end] sortedkeys(plotattributes::Dict) = sort(collect(keys(plotattributes))) function _heatmap_edges(v::AVec, isedges::Bool = false, ispolar::Bool = false) length(v) == 1 && return v[1] .+ [ispolar ? max(-v[1], -0.5) : -0.5, 0.5] - if isedges return v end + if isedges + return v + end # `isedges = true` means that v is a vector which already describes edges # and does not need to be extended. vmin, vmax = ignorenan_extrema(v) extra_min = ispolar ? min(v[1], (v[2] - v[1]) / 2) : (v[2] - v[1]) / 2 extra_max = (v[end] - v[end - 1]) / 2 - vcat(vmin-extra_min, 0.5 * (v[1:end-1] + v[2:end]), vmax+extra_max) + vcat(vmin - extra_min, 0.5 * (v[1:(end - 1)] + v[2:end]), vmax + extra_max) end "create an (n+1) list of the outsides of heatmap rectangles" -function heatmap_edges(v::AVec, scale::Symbol = :identity, isedges::Bool = false, ispolar::Bool = false) +function heatmap_edges( + v::AVec, + scale::Symbol = :identity, + isedges::Bool = false, + ispolar::Bool = false, +) f, invf = RecipesPipeline.scale_func(scale), RecipesPipeline.inverse_scale_func(scale) - map(invf, _heatmap_edges(map(f,v), isedges, ispolar)) + map(invf, _heatmap_edges(map(f, v), isedges, ispolar)) end -function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size::Tuple{Int, Int}, ispolar::Bool = false) +function heatmap_edges( + x::AVec, + xscale::Symbol, + y::AVec, + yscale::Symbol, + z_size::Tuple{Int,Int}, + ispolar::Bool = false, +) nx, ny = length(x), length(y) # ismidpoints = z_size == (ny, nx) # This fails some tests, but would actually be # the correct check, since (4, 3) != (3, 4) and a missleading plot is produced. @@ -285,12 +305,11 @@ function heatmap_edges(x::AVec, xscale::Symbol, y::AVec, yscale::Symbol, z_size: Must be either `size(z) == (length(y), length(x))` (x & y define midpoints) or `size(z) == (length(y)+1, length(x)+1))` (x & y define edges).""") end - x, y = heatmap_edges(x, xscale, isedges), - heatmap_edges(y, yscale, isedges, ispolar) # special handle for `r` in polar plots + x, y = heatmap_edges(x, xscale, isedges), heatmap_edges(y, yscale, isedges, ispolar) # special handle for `r` in polar plots return x, y end -function is_uniformly_spaced(v; tol=1e-6) +function is_uniformly_spaced(v; tol = 1e-6) dv = diff(v) maximum(dv) - minimum(dv) < tol * mean(abs.(dv)) end @@ -298,8 +317,8 @@ end function convert_to_polar(theta, r, r_extrema = ignorenan_extrema(r)) rmin, rmax = r_extrema r = (r .- rmin) ./ (rmax .- rmin) - x = r.*cos.(theta) - y = r.*sin.(theta) + x = r .* cos.(theta) + y = r .* sin.(theta) x, y end @@ -307,8 +326,8 @@ fakedata(sz::Int...) = fakedata(Random.seed!(PLOTS_SEED), sz...) function fakedata(rng::AbstractRNG, sz...) y = zeros(sz...) - for r in 2:size(y,1) - y[r,:] = 0.95 * vec(y[r-1,:]) + randn(rng, size(y,2)) + for r in 2:size(y, 1) + y[r, :] = 0.95 * vec(y[r - 1, :]) + randn(rng, size(y, 2)) end y end @@ -327,13 +346,14 @@ isscalar(::Any) = false is_2tuple(v) = typeof(v) <: Tuple && length(v) == 2 -isvertical(plotattributes::AKW) = get(plotattributes, :orientation, :vertical) in (:vertical, :v, :vert) +isvertical(plotattributes::AKW) = + get(plotattributes, :orientation, :vertical) in (:vertical, :v, :vert) isvertical(series::Series) = isvertical(series.plotattributes) - ticksType(ticks::AVec{T}) where {T<:Real} = :ticks ticksType(ticks::AVec{T}) where {T<:AbstractString} = :labels -ticksType(ticks::Tuple{T,S}) where {T<:Union{AVec,Tuple},S<:Union{AVec,Tuple}} = :ticks_and_labels +ticksType(ticks::Tuple{T,S}) where {T<:Union{AVec,Tuple},S<:Union{AVec,Tuple}} = + :ticks_and_labels ticksType(ticks) = :invalid limsType(lims::Tuple{T,S}) where {T<:Real,S<:Real} = :limits @@ -357,9 +377,9 @@ function nansplit(v::AVec) push!(vs, v) break elseif idx > 1 - push!(vs, v[1:idx-1]) + push!(vs, v[1:(idx - 1)]) end - v = v[idx+1:end] + v = v[(idx + 1):end] end vs end @@ -376,7 +396,7 @@ end # returns the array of indices (znew) and a vector of unique values (vals) function indices_and_unique_values(z::AbstractArray) vals = sort(unique(z)) - vmap = Dict([(v,i) for (i,v) in enumerate(vals)]) + vmap = Dict([(v, i) for (i, v) in enumerate(vals)]) newz = map(zi -> vmap[zi], z) newz, vals end @@ -384,14 +404,14 @@ end handle_surface(z) = z handle_surface(z::Surface) = permutedims(z.surf) -ok(x::Number, y::Number, z::Number=0) = isfinite(x) && isfinite(y) && isfinite(z) +ok(x::Number, y::Number, z::Number = 0) = isfinite(x) && isfinite(y) && isfinite(z) ok(tup::Tuple) = ok(tup...) # compute one side of a fill range from a ribbon function make_fillrange_side(y::AVec, rib) frs = zeros(axes(y)) for (i, yi) in pairs(y) - frs[i] = yi + _cycle(rib,i) + frs[i] = yi + _cycle(rib, i) end frs end @@ -407,10 +427,10 @@ function make_fillrange_from_ribbon(kw::AKW) end #turn tuple of fillranges to one path -function concatenate_fillrange(x,y::Tuple) +function concatenate_fillrange(x, y::Tuple) rib1, rib2 = first(y), last(y) - yline = vcat(rib1,(rib2)[end:-1:1]) - xline = vcat(x,x[end:-1:1]) + yline = vcat(rib1, (rib2)[end:-1:1]) + xline = vcat(x, x[end:-1:1]) return xline, yline end @@ -452,9 +472,9 @@ function contour_levels(series::Series, clims) zmin, zmax = clims levels = series[:levels] if levels isa Integer - levels = range(zmin, stop=zmax, length=levels+2) + levels = range(zmin, stop = zmax, length = levels + 2) if !isfilledcontour(series) - levels = levels[2:end-1] + levels = levels[2:(end - 1)] end end levels @@ -479,7 +499,8 @@ for comp in (:line, :fill, :marker) end end - $get_compcolor(series, clims, i::Int=1) = $get_compcolor(series, clims[1], clims[2], i) + $get_compcolor(series, clims, i::Int = 1) = + $get_compcolor(series, clims[1], clims[2], i) function $get_compcolor(series, i::Int = 1) if series[$Symbol($comp_z)] === nothing @@ -489,7 +510,7 @@ for comp in (:line, :fill, :marker) end end - $get_compalpha(series, i::Int=1) = _cycle(series[$Symbol($compalpha)], i) + $get_compalpha(series, i::Int = 1) = _cycle(series[$Symbol($compalpha)], i) end end @@ -501,30 +522,30 @@ function get_colorgradient(series::Series) series[:linecolor] elseif series[:marker_z] !== nothing series[:markercolor] - elseif series[:line_z] !== nothing + elseif series[:line_z] !== nothing series[:linecolor] elseif series[:fill_z] !== nothing series[:fillcolor] end end -single_color(c, v=0.5) = c -single_color(grad::ColorGradient, v=0.5) = grad[v] +single_color(c, v = 0.5) = c +single_color(grad::ColorGradient, v = 0.5) = grad[v] get_gradient(c) = cgrad() get_gradient(cg::ColorGradient) = cg -get_gradient(cp::ColorPalette) = cgrad(cp, categorical=true) +get_gradient(cp::ColorPalette) = cgrad(cp, categorical = true) -get_linewidth(series, i::Int=1) = _cycle(series[:linewidth], i) -get_linestyle(series, i::Int=1) = _cycle(series[:linestyle], i) +get_linewidth(series, i::Int = 1) = _cycle(series[:linewidth], i) +get_linestyle(series, i::Int = 1) = _cycle(series[:linestyle], i) -function get_markerstrokecolor(series, i::Int=1) +function get_markerstrokecolor(series, i::Int = 1) msc = series[:markerstrokecolor] isa(msc, ColorGradient) ? msc : _cycle(msc, i) end -get_markerstrokealpha(series, i::Int=1) = _cycle(series[:markerstrokealpha], i) -get_markerstrokewidth(series, i::Int=1) = _cycle(series[:markerstrokewidth], i) +get_markerstrokealpha(series, i::Int = 1) = _cycle(series[:markerstrokealpha], i) +get_markerstrokewidth(series, i::Int = 1) = _cycle(series[:markerstrokewidth], i) const _segmenting_vector_attributes = ( :seriescolor, @@ -551,9 +572,10 @@ function has_attribute_segments(series::Series) # of its attributes series[:seriestype] == :shape && return false # check relevant attributes if they have multiple inputs - return any(series[attr] isa AbstractVector && length(series[attr]) > 1 - for attr in _segmenting_vector_attributes - ) || any(series[attr] isa AbstractArray for attr in _segmenting_array_attributes) + return any( + series[attr] isa AbstractVector && length(series[attr]) > 1 for + attr in _segmenting_vector_attributes + ) || any(series[attr] isa AbstractArray for attr in _segmenting_array_attributes) end function get_aspect_ratio(sp) @@ -577,7 +599,8 @@ get_size(sp::Subplot) = get_size(sp.plt) get_thickness_scaling(kw) = get(kw, :thickness_scaling, default(:thickness_scaling)) get_thickness_scaling(plt::Plot) = get_thickness_scaling(plt.attr) get_thickness_scaling(sp::Subplot) = get_thickness_scaling(sp.plt) -get_thickness_scaling(series::Series) = get_thickness_scaling(series.plotattributes[:subplot]) +get_thickness_scaling(series::Series) = + get_thickness_scaling(series.plotattributes[:subplot]) # --------------------------------------------------------------- makekw(; kw...) = KW(kw) @@ -595,8 +618,11 @@ allShapes(arg) = ( trueOrAllTrue(a -> isa(a, Shape), arg) ) allAlphas(arg) = trueOrAllTrue( - a -> (typeof(a) <: Real && a > 0 && a < 1) || - (typeof(a) <: AbstractFloat && (a == zero(typeof(a)) || a == one(typeof(a)))), arg + a -> + (typeof(a) <: Real && a > 0 && a < 1) || ( + typeof(a) <: AbstractFloat && (a == zero(typeof(a)) || a == one(typeof(a))) + ), + arg, ) allReals(arg) = trueOrAllTrue(a -> typeof(a) <: Real, arg) allFunctions(arg) = trueOrAllTrue(a -> isa(a, Function), arg) @@ -695,7 +721,7 @@ mutable struct DebugMode end const _debugMode = DebugMode(false) -debugplots(on=true) = _debugMode.on = on +debugplots(on = true) = _debugMode.on = on debugshow(io, x) = show(io, x) debugshow(io, x::AbstractArray) = print(io, summary(x)) @@ -747,16 +773,17 @@ function setxyz!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z} _series_updated(plt, series) end -setxyz!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z<:AbstractMatrix} = ( - setxyz!(plt, (xyz[1], xyz[2], Surface(xyz[3])), i) -) +setxyz!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z<:AbstractMatrix} = + (setxyz!(plt, (xyz[1], xyz[2], Surface(xyz[3])), i)) # ------------------------------------------------------- # indexing notation # Base.getindex(plt::Plot, i::Integer) = getxy(plt, i) -Base.setindex!(plt::Plot, xy::Tuple{X,Y}, i::Integer) where {X,Y} = (setxy!(plt, xy, i); plt) -Base.setindex!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z} = (setxyz!(plt, xyz, i); plt) +Base.setindex!(plt::Plot, xy::Tuple{X,Y}, i::Integer) where {X,Y} = + (setxy!(plt, xy, i); plt) +Base.setindex!(plt::Plot, xyz::Tuple{X,Y,Z}, i::Integer) where {X,Y,Z} = + (setxyz!(plt, xyz, i); plt) # ------------------------------------------------------- # operate on individual series @@ -810,14 +837,15 @@ function extend_to_length!(v::AbstractVector, n) extend_by_data!(v, vmax .+ (1:(n - length(v)))) end extend_by_data!(v::AbstractVector, x) = isimmutable(v) ? vcat(v, x) : push!(v, x) -extend_by_data!(v::AbstractVector, x::AbstractVector) = isimmutable(v) ? vcat(v, x) : append!(v, x) +extend_by_data!(v::AbstractVector, x::AbstractVector) = + isimmutable(v) ? vcat(v, x) : append!(v, x) # ------------------------------------------------------- function attr!(series::Series; kw...) plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) - for (k,v) in plotattributes + for (k, v) in plotattributes if haskey(_series_defaults, k) series[k] = v else @@ -831,7 +859,7 @@ end function attr!(sp::Subplot; kw...) plotattributes = KW(kw) RecipesPipeline.preprocess_attributes!(plotattributes) - for (k,v) in plotattributes + for (k, v) in plotattributes if haskey(_subplot_defaults, k) sp[k] = v else @@ -861,8 +889,8 @@ Base.append!(plt::Plot, i::Integer, t::Tuple) = append!(plt, i, t...) # push y[i] to the ith series function Base.push!(plt::Plot, y::AVec) ny = length(y) - for i in 1:plt.n - push!(plt, i, y[mod1(i,ny)]) + for i in 1:(plt.n) + push!(plt, i, y[mod1(i, ny)]) end plt end @@ -875,8 +903,8 @@ Base.push!(plt::Plot, x::Real, y::AVec) = push!(plt, [x], y) function Base.push!(plt::Plot, x::AVec, y::AVec) nx = length(x) ny = length(y) - for i in 1:plt.n - push!(plt, i, x[mod1(i,nx)], y[mod1(i,ny)]) + for i in 1:(plt.n) + push!(plt, i, x[mod1(i, nx)], y[mod1(i, ny)]) end plt end @@ -886,8 +914,8 @@ function Base.push!(plt::Plot, x::AVec, y::AVec, z::AVec) nx = length(x) ny = length(y) nz = length(z) - for i in 1:plt.n - push!(plt, i, x[mod1(i,nx)], y[mod1(i,ny)], z[mod1(i,nz)]) + for i in 1:(plt.n) + push!(plt, i, x[mod1(i, nx)], y[mod1(i, ny)], z[mod1(i, nz)]) end plt end @@ -909,15 +937,14 @@ mm2inch(mm::Real) = float(mm / MM_PER_INCH) px2mm(px::Real) = float(px * MM_PER_PX) mm2px(mm::Real) = float(mm / MM_PER_PX) - "Smallest x in plot" -xmin(plt::Plot) = ignorenan_minimum( - [ignorenan_minimum(series.plotattributes[:x]) for series in plt.series_list] -) +xmin(plt::Plot) = ignorenan_minimum([ + ignorenan_minimum(series.plotattributes[:x]) for series in plt.series_list +]) "Largest x in plot" -xmax(plt::Plot) = ignorenan_maximum( - [ignorenan_maximum(series.plotattributes[:x]) for series in plt.series_list] -) +xmax(plt::Plot) = ignorenan_maximum([ + ignorenan_maximum(series.plotattributes[:x]) for series in plt.series_list +]) "Extrema of x-values in plot" ignorenan_extrema(plt::Plot) = (xmin(plt), xmax(plt)) @@ -1040,11 +1067,14 @@ function straightline_data(series, expansion_factor = 1) xdata, ydata = fill(NaN, n), fill(NaN, n) for i in 1:k inds = (3 * i - 2):(3 * i - 1) - xdata[inds], ydata[inds] = straightline_data(xl, yl, x[inds], y[inds], expansion_factor) + xdata[inds], ydata[inds] = + straightline_data(xl, yl, x[inds], y[inds], expansion_factor) end xdata, ydata else - error("Misformed data. `straightline_data` either accepts vectors of length 2 or 3k. The provided series has length $n") + error( + "Misformed data. `straightline_data` either accepts vectors of length 2 or 3k. The provided series has length $n", + ) end end @@ -1066,7 +1096,10 @@ function straightline_data(xl, yl, x, y, expansion_factor = 1) b = y[1] - (y[1] - y[2]) * x[1] / (x[1] - x[2]) a = (y[1] - y[2]) / (x[1] - x[2]) # get the data values - xdata = [clamp(x[1] + (x[1] - x[2]) * (ylim - y[1]) / (y[1] - y[2]), xl...) for ylim in yl] + xdata = [ + clamp(x[1] + (x[1] - x[2]) * (ylim - y[1]) / (y[1] - y[2]), xl...) for + ylim in yl + ] xdata, a .* xdata .+ b end @@ -1107,49 +1140,51 @@ function shape_data(series, expansion_factor = 1) return x, y end -construct_categorical_data(x::AbstractArray, axis::Axis) = ( - map(xi -> axis[:discrete_values][searchsortedfirst(axis[:continuous_values], xi)], x) -) +construct_categorical_data(x::AbstractArray, axis::Axis) = + (map(xi -> axis[:discrete_values][searchsortedfirst(axis[:continuous_values], xi)], x)) -_fmt_paragraph(paragraph::AbstractString;kwargs...) = _fmt_paragraph( - IOBuffer(), paragraph, 0; kwargs... -) +_fmt_paragraph(paragraph::AbstractString; kwargs...) = + _fmt_paragraph(IOBuffer(), paragraph, 0; kwargs...) function _fmt_paragraph( - io::IOBuffer, remaining_text::AbstractString, column_count::Integer; - fillwidth=60, leadingspaces=0 + io::IOBuffer, + remaining_text::AbstractString, + column_count::Integer; + fillwidth = 60, + leadingspaces = 0, ) - kwargs = (fillwidth=fillwidth, leadingspaces=leadingspaces) + kwargs = (fillwidth = fillwidth, leadingspaces = leadingspaces) - m = match(r"(.*?) (.*)",remaining_text) + m = match(r"(.*?) (.*)", remaining_text) if isa(m, Nothing) if column_count + length(remaining_text) ≤ fillwidth print(io, remaining_text) String(take!(io)) else - print(io, "\n"*" "^leadingspaces*remaining_text) + print(io, "\n" * " "^leadingspaces * remaining_text) String(take!(io)) end else if column_count + length(m[1]) ≤ fillwidth - print(io,"$(m[1]) ") + print(io, "$(m[1]) ") _fmt_paragraph(io, m[2], column_count + length(m[1]) + 1; kwargs...) else - print(io,"\n"*" "^leadingspaces*"$(m[1]) ") + print(io, "\n" * " "^leadingspaces * "$(m[1]) ") _fmt_paragraph(io, m[2], leadingspaces; kwargs...) end end end -_document_argument(S::AbstractString) = _fmt_paragraph( - "`$S`: "*_arg_desc[Symbol(S)], leadingspaces=6+length(S) -) +_document_argument(S::AbstractString) = + _fmt_paragraph("`$S`: " * _arg_desc[Symbol(S)], leadingspaces = 6 + length(S)) function mesh3d_triangles(x, y, z, cns) - if typeof(cns) <: Tuple{Array, Array, Array} + if typeof(cns) <: Tuple{Array,Array,Array} ci, cj, ck = cns if !(length(ci) == length(cj) == length(ck)) - throw(ArgumentError("Argument connections must consist of equally sized arrays.")) + throw( + ArgumentError("Argument connections must consist of equally sized arrays."), + ) end else throw(ArgumentError("Argument connections has to be a tuple of three arrays.")) @@ -1157,11 +1192,14 @@ function mesh3d_triangles(x, y, z, cns) X = zeros(eltype(x), 4length(ci)) Y = zeros(eltype(y), 4length(cj)) Z = zeros(eltype(z), 4length(ck)) - @inbounds for I ∈ 1:length(ci) + @inbounds for I in 1:length(ci) i = ci[I] + 1 # connections are 0-based j = cj[I] + 1 k = ck[I] + 1 - m = 4(I - 1) + 1; n = m + 1; o = m + 2; p = m + 3 + m = 4(I - 1) + 1 + n = m + 1 + o = m + 2 + p = m + 3 X[m] = X[p] = x[i] Y[m] = Y[p] = y[i] Z[m] = Z[p] = z[i] diff --git a/test/imgcomp.jl b/test/imgcomp.jl index 879a87ea..589dbd11 100644 --- a/test/imgcomp.jl +++ b/test/imgcomp.jl @@ -3,13 +3,13 @@ import Plots._current_plots_version # replace `f(args...)` with `f(rng, args...)` for `f ∈ (rand, randn)` function replace_rand!(ex) end function replace_rand!(ex::Expr) - for arg in ex.args - replace_rand!(arg) - end - if ex.head === :call && ex.args[1] ∈ (:rand, :randn, :(Plots.fakedata)) - pushfirst!(ex.args, ex.args[1]) - ex.args[2] = :rng - end + for arg in ex.args + replace_rand!(arg) + end + if ex.head === :call && ex.args[1] ∈ (:rand, :randn, :(Plots.fakedata)) + pushfirst!(ex.args, ex.args[1]) + ex.args[2] = :rng + end end function fix_rand!(ex) replace_rand!(ex) @@ -59,7 +59,7 @@ function image_comparison_facts( sigma = [1, 1], # number of pixels to "blur" tol = 1e-2, ) # acceptable error (percent) - for i = 1:length(Plots._examples) + for i in 1:length(Plots._examples) i in skip && continue if only === nothing || i in only @test image_comparison_tests(pkg, i, debug = debug, sigma = sigma, tol = tol) |> diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 081d69fb..48aa5b94 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -1,13 +1,13 @@ using Plots, Test, Dates @testset "Limits" begin - y=[1.0*i*i for i in 1:10] - x=[Date(2019,11,i) for i in 1:10] + y = [1.0 * i * i for i in 1:10] + x = [Date(2019, 11, i) for i in 1:10] - rx=[x[3],x[5]] + rx = [x[3], x[5]] - p = plot(x,y, widen = false) - vspan!(p, rx, label="", alpha=0.2) + p = plot(x, y, widen = false) + vspan!(p, rx, label = "", alpha = 0.2) ref_ylims = (y[1], y[end]) ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @@ -23,13 +23,13 @@ using Plots, Test, Dates end # testset @testset "Date xlims" begin - y=[1.0*i*i for i in 1:10] - x=[Date(2019,11,i) for i in 1:10] - span = (Date(2019,10,31), Date(2019,11,11)) + y = [1.0 * i * i for i in 1:10] + x = [Date(2019, 11, i) for i in 1:10] + span = (Date(2019, 10, 31), Date(2019, 11, 11)) - ref_xlims = map(date->date.instant.periods.value, span) + ref_xlims = map(date -> date.instant.periods.value, span) - p = plot(x,y, xlims=span, widen = false) + p = plot(x, y, xlims = span, widen = false) @test Plots.xlims(p) == ref_xlims #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @@ -42,13 +42,13 @@ end # testset end # testset @testset "DateTime xlims" begin - y=[1.0*i*i for i in 1:10] - x=[DateTime(2019,11,i,11) for i in 1:10] - span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) + y = [1.0 * i * i for i in 1:10] + x = [DateTime(2019, 11, i, 11) for i in 1:10] + span = (DateTime(2019, 10, 31, 11, 59, 59), DateTime(2019, 11, 11, 12, 01, 15)) - ref_xlims = map(date->date.instant.periods.value, span) + ref_xlims = map(date -> date.instant.periods.value, span) - p = plot(x,y, xlims=span, widen = false) + p = plot(x, y, xlims = span, widen = false) @test Plots.xlims(p) == ref_xlims #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) @static if haskey(ENV, "APPVEYOR") diff --git a/test/runtests.jl b/test/runtests.jl index f29e1153..24931870 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -18,12 +18,12 @@ using RecipesBase @test Plots.plotly_local_file_path[] === nothing temp = Plots.use_local_dependencies[] withenv("PLOTS_HOST_DEPENDENCY_LOCAL" => true) do - Plots.__init__() - @test Plots.plotly_local_file_path[] isa String - @test isfile(Plots.plotly_local_file_path[]) - @test Plots.use_local_dependencies[] = true - @test_nowarn Plots._init_ijulia_plotting() -end + Plots.__init__() + @test Plots.plotly_local_file_path[] isa String + @test isfile(Plots.plotly_local_file_path[]) + @test Plots.use_local_dependencies[] = true + @test_nowarn Plots._init_ijulia_plotting() + end Plots.plotly_local_file_path[] = nothing Plots.use_local_dependencies[] = temp end # testset @@ -39,12 +39,13 @@ include("test_recipes.jl") include("test_hdf5plots.jl") include("test_pgfplotsx.jl") -reference_dir(args...) = joinpath(homedir(), ".julia", "dev", "PlotReferenceImages", args...) +reference_dir(args...) = + joinpath(homedir(), ".julia", "dev", "PlotReferenceImages", args...) function reference_file(backend, i, version) refdir = reference_dir("Plots", string(backend)) fn = "ref$i.png" - versions = sort(VersionNumber.(readdir(refdir)), rev=true) + versions = sort(VersionNumber.(readdir(refdir)), rev = true) reffn = joinpath(refdir, string(version), fn) for v in versions @@ -62,13 +63,16 @@ reference_path(backend, version) = reference_dir("Plots", string(backend), strin if !isdir(reference_dir()) mkpath(reference_dir()) - LibGit2.clone("https://github.com/JuliaPlots/PlotReferenceImages.jl.git", reference_dir()) + LibGit2.clone( + "https://github.com/JuliaPlots/PlotReferenceImages.jl.git", + reference_dir(), + ) end include("imgcomp.jl") # don't actually show the plots Random.seed!(PLOTS_SEED) -default(show=false, reuse=true) +default(show = false, reuse = true) is_ci() = get(ENV, "CI", "false") == "true" const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-4" : "1e-5")) @@ -98,7 +102,6 @@ const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-4" ## @testset "Backends" begin - @testset "GR" begin ENV["PLOTS_TEST"] = "true" ENV["GKSwstype"] = "100" @@ -108,7 +111,11 @@ const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-4" @static if haskey(ENV, "APPVEYOR") @info "Skipping GR image comparison tests on AppVeyor" else - image_comparison_facts(:gr, tol=PLOTS_IMG_TOL, skip=Plots._backend_skips[:gr]) + image_comparison_facts( + :gr, + tol = PLOTS_IMG_TOL, + skip = Plots._backend_skips[:gr], + ) end end @@ -148,7 +155,6 @@ const PLOTS_IMG_TOL = parse(Float64, get(ENV, "PLOTS_IMG_TOL", is_ci() ? "1e-4" @test isa(p, Plots.Plot) == true @test_broken isa(display(p), Nothing) == true end - end @testset "Axes" begin @@ -158,10 +164,10 @@ end @test Plots.discrete_value!(axis, "HI") == (0.5, 1) @test Plots.discrete_value!(axis, :yo) == (1.5, 2) @test Plots.ignorenan_extrema(axis) == (0.5, 1.5) - @test axis[:discrete_map] == Dict{Any,Any}(:yo => 2, "HI" => 1) + @test axis[:discrete_map] == Dict{Any,Any}(:yo => 2, "HI" => 1) - Plots.discrete_value!(axis, ["x$i" for i = 1:5]) - Plots.discrete_value!(axis, ["x$i" for i = 0:2]) + Plots.discrete_value!(axis, ["x$i" for i in 1:5]) + Plots.discrete_value!(axis, ["x$i" for i in 0:2]) @test Plots.ignorenan_extrema(axis) == (0.5, 7.5) end @@ -171,14 +177,16 @@ end @test backend() == Plots.UnicodePlotsBackend() @testset "Plot" begin - plots = [histogram([1, 0, 0, 0, 0, 0]), - plot([missing]), - plot([missing, missing]), - plot(fill(missing, 10)), - plot([missing; 1:4]), - plot([fill(missing, 10); 1:4]), - plot([1 1; 1 missing]), - plot(["a" "b"; missing "d"], [1 2; 3 4])] + plots = [ + histogram([1, 0, 0, 0, 0, 0]), + plot([missing]), + plot([missing, missing]), + plot(fill(missing, 10)), + plot([missing; 1:4]), + plot([fill(missing, 10); 1:4]), + plot([1 1; 1 missing]), + plot(["a" "b"; missing "d"], [1 2; 3 4]), + ] for plt in plots display(plt) end @@ -186,13 +194,12 @@ end end @testset "Bar" begin - p = bar([3,2,1], [1,2,3]); - @test isa(p, Plots.Plot) - @test isa(display(p), Nothing) == true + p = bar([3, 2, 1], [1, 2, 3]) + @test isa(p, Plots.Plot) + @test isa(display(p), Nothing) == true end end - @testset "EmptyAnim" begin anim = @animate for i in [] end @@ -208,17 +215,25 @@ end @test segments([NaN]) == [] @test segments(nan10) == [] @test segments([nan10; 1:5]) == [11:15] - @test segments([1:5;nan10]) == [1:5] + @test segments([1:5; nan10]) == [1:5] @test segments([nan10; 1:5; nan10; 1:5; nan10]) == [11:15, 26:30] @test segments([NaN; 1], 1:10) == [2:2, 4:4, 6:6, 8:8, 10:10] @test segments([nan10; 1:15], [1:15; nan10]) == [11:15] end @testset "Utils" begin - zipped = ([(1, 2)], [("a", "b")], [(1, "a"),(2, "b")], - [(1, 2),(3, 4)], [(1, 2, 3),(3, 4, 5)], [(1, 2, 3, 4),(3, 4, 5, 6)], - [(1, 2.0),(missing, missing)], [(1, missing),(missing, "a")], - [(missing, missing)], [(missing, missing, missing),("a", "b", "c")]) + zipped = ( + [(1, 2)], + [("a", "b")], + [(1, "a"), (2, "b")], + [(1, 2), (3, 4)], + [(1, 2, 3), (3, 4, 5)], + [(1, 2, 3, 4), (3, 4, 5, 6)], + [(1, 2.0), (missing, missing)], + [(1, missing), (missing, "a")], + [(missing, missing)], + [(missing, missing, missing), ("a", "b", "c")], + ) for z in zipped @test isequal(collect(zip(Plots.unzip(z)...)), z) @test isequal(collect(zip(Plots.unzip(GeometryBasics.Point.(z))...)), z) @@ -227,5 +242,7 @@ end op2 = Plots.process_clims((1, 2.0)) data = randn(100, 100) @test op1(data) == op2(data) - @test Plots.process_clims(nothing) == Plots.process_clims(missing) == Plots.process_clims(:auto) + @test Plots.process_clims(nothing) == + Plots.process_clims(missing) == + Plots.process_clims(:auto) end diff --git a/test/test_axes.jl b/test/test_axes.jl index f65cd745..4d714c86 100644 --- a/test/test_axes.jl +++ b/test/test_axes.jl @@ -9,8 +9,8 @@ using Plots, Test end @testset "Magic axis" begin - @test plot(1, axis=nothing)[1][:xaxis][:ticks] == [] - @test plot(1, axis=nothing)[1][:yaxis][:ticks] == [] + @test plot(1, axis = nothing)[1][:xaxis][:ticks] == [] + @test plot(1, axis = nothing)[1][:yaxis][:ticks] == [] end # testset @testset "Categorical ticks" begin @@ -23,34 +23,34 @@ end # testset end @testset "Ticks getter functions" begin - ticks1 = ([1,2,3], ("a","b","c")) - ticks2 = ([4,5], ("e","f")) - p1 = plot(1:5, 1:5, 1:5, xticks=ticks1, yticks=ticks1, zticks=ticks1) - p2 = plot(1:5, 1:5, 1:5, xticks=ticks2, yticks=ticks2, zticks=ticks2) + ticks1 = ([1, 2, 3], ("a", "b", "c")) + ticks2 = ([4, 5], ("e", "f")) + p1 = plot(1:5, 1:5, 1:5, xticks = ticks1, yticks = ticks1, zticks = ticks1) + p2 = plot(1:5, 1:5, 1:5, xticks = ticks2, yticks = ticks2, zticks = ticks2) p = plot(p1, p2) @test xticks(p) == yticks(p) == zticks(p) == [ticks1, ticks2] @test xticks(p[1]) == yticks(p[1]) == zticks(p[1]) == ticks1 end @testset "Axis limits" begin - pl = plot(1:5, xlims=:symmetric, widen = false) + pl = plot(1:5, xlims = :symmetric, widen = false) @test Plots.xlims(pl) == (-5, 5) pl = plot(1:3) - @test Plots.xlims(pl) == Plots.widen(1,3) + @test Plots.xlims(pl) == Plots.widen(1, 3) - pl = plot([1.05,2.0,2.95], ylims=:round) + pl = plot([1.05, 2.0, 2.95], ylims = :round) @test Plots.ylims(pl) == (1, 3) - pl = plot(1:3, xlims=(1,5)) + pl = plot(1:3, xlims = (1, 5)) @test Plots.xlims(pl) == (1, 5) - pl = plot(1:3, xlims=(1,5), widen=true) + pl = plot(1:3, xlims = (1, 5), widen = true) @test Plots.xlims(pl) == Plots.widen(1, 5) end @testset "3D Axis" begin - ql = quiver([1, 2], [2, 1], [3, 4], quiver = ([1, -1], [0, 0], [1, -0.5]), arrow=true) + ql = quiver([1, 2], [2, 1], [3, 4], quiver = ([1, -1], [0, 0], [1, -0.5]), arrow = true) @test ql[1][:projection] == "3d" end diff --git a/test/test_axis_letter.jl b/test/test_axis_letter.jl index 691034b8..e0b6462c 100644 --- a/test/test_axis_letter.jl +++ b/test/test_axis_letter.jl @@ -9,12 +9,15 @@ using Plots, Test value(m::MyType) = m.val data = MyType.(sort(randn(20))) # A recipe that puts the axis letter in the title - @recipe function f(::Type{T}, m::T) where T <: AbstractArray{<:MyType} + @recipe function f(::Type{T}, m::T) where {T<:AbstractArray{<:MyType}} title --> string(plotattributes[:letter]) value.(m) end - @testset "$f (orientation = $o)" for f in [histogram, barhist, stephist, scatterhist], o in [:vertical, :horizontal] - @test f(data, orientation=o).subplots[1].attr[:title] == (o == :vertical ? "x" : "y") + @testset "$f (orientation = $o)" for f in [histogram, barhist, stephist, scatterhist], + o in [:vertical, :horizontal] + + @test f(data, orientation = o).subplots[1].attr[:title] == + (o == :vertical ? "x" : "y") end @testset "$f" for f in [hline, hspan] @test f(data).subplots[1].attr[:title] == "y" diff --git a/test/test_components.jl b/test/test_components.jl index aae50da3..31b643e3 100644 --- a/test/test_components.jl +++ b/test/test_components.jl @@ -52,7 +52,7 @@ using Plots, Test @testset "Plot" begin ang = range(0, 2π, length = 60) ellipse(x, y, w, h) = Shape(w * sin.(ang) .+ x, h * cos.(ang) .+ y) - myshapes = [ellipse(x, rand(), rand(), rand()) for x = 1:4] + myshapes = [ellipse(x, rand(), rand(), rand()) for x in 1:4] @test coords(myshapes) isa Tuple{Vector{Vector{S}},Vector{Vector{T}}} where {T,S} local p @test_nowarn p = plot(myshapes) @@ -116,7 +116,7 @@ end end @testset "Series Annotations" begin - square = Shape([(0., 0.), (1., 0.), (1., 1.), (0., 1.)]) + square = Shape([(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]) @test_logs (:warn, "Unused SeriesAnnotations arg: triangle (Symbol)") begin p = plot( [1, 2, 3], @@ -136,24 +136,25 @@ end @test sa.scalefactor == (1, 4) end spl = scatter( - 4.53 .* [1/1 1/2 1/3 1/4 1/5], + 4.53 .* [1 / 1 1 / 2 1 / 3 1 / 4 1 / 5], [0 0 0 0 0], layout = (5, 1), ylims = (-1.1, 1.1), xlims = (0, 5), series_annotations = permutedims([["1/1"], ["1/2"], ["1/3"], ["1/4"], ["1/5"]]), ) - for i ∈ 1:5 - @test only(spl.series_list[i].plotattributes[:series_annotations].strs).str == "1/$i" + for i in 1:5 + @test only(spl.series_list[i].plotattributes[:series_annotations].strs).str == + "1/$i" end - p = plot([1, 2], annotations=(1.5, 2, text("foo", :left))) + p = plot([1, 2], annotations = (1.5, 2, text("foo", :left))) x, y, txt = only(p.subplots[end][:annotations]) @test (x, y) == (1.5, 2) @test txt.str == "foo" - p = plot([1, 2], annotations=((.1, .5), :auto)) + p = plot([1, 2], annotations = ((0.1, 0.5), :auto)) pos, txt = only(p.subplots[end][:annotations]) - @test pos == (.1, .5) + @test pos == (0.1, 0.5) @test txt.str == "(a)" end diff --git a/test/test_hdf5plots.jl b/test/test_hdf5plots.jl index 2c106025..a948c677 100644 --- a/test/test_hdf5plots.jl +++ b/test/test_hdf5plots.jl @@ -1,21 +1,20 @@ using Plots, HDF5 - @testset "HDF5_Plots" begin - fname = "tmpplotsave.hdf5" - hdf5() + fname = "tmpplotsave.hdf5" + hdf5() - x = 1:10 - psrc=plot(x, x.*x); #Create some plot - Plots.hdf5plot_write(psrc, fname) + x = 1:10 + psrc = plot(x, x .* x) #Create some plot + Plots.hdf5plot_write(psrc, fname) - #Read back file: - gr() #Choose some fast backend likely to work in test environment. - pread = Plots.hdf5plot_read(fname) + #Read back file: + gr() #Choose some fast backend likely to work in test environment. + pread = Plots.hdf5plot_read(fname) - #Make sure data made it through: - @test psrc.subplots[1].series_list[1][:x] == pread.subplots[1].series_list[1][:x] - @test psrc.subplots[1].series_list[1][:y] == pread.subplots[1].series_list[1][:y] + #Make sure data made it through: + @test psrc.subplots[1].series_list[1][:x] == pread.subplots[1].series_list[1][:x] + @test psrc.subplots[1].series_list[1][:y] == pread.subplots[1].series_list[1][:y] - #display(pread) #Don't display. Regression env might not support + #display(pread) #Don't display. Regression env might not support end #testset diff --git a/test/test_pgfplotsx.jl b/test/test_pgfplotsx.jl index 18fd68e5..21144db4 100644 --- a/test/test_pgfplotsx.jl +++ b/test/test_pgfplotsx.jl @@ -2,420 +2,407 @@ using Plots, Test pgfplotsx() function create_plot(args...; kwargs...) - pgfx_plot = plot(args...; kwargs...) - return pgfx_plot, repr("application/x-tex", pgfx_plot) + pgfx_plot = plot(args...; kwargs...) + return pgfx_plot, repr("application/x-tex", pgfx_plot) end function create_plot!(args...; kwargs...) - pgfx_plot = plot!(args...; kwargs...) - return pgfx_plot, repr("application/x-tex", pgfx_plot) + pgfx_plot = plot!(args...; kwargs...) + return pgfx_plot, repr("application/x-tex", pgfx_plot) end @testset "PGFPlotsX" begin - pgfx_plot = plot(1:5) - Plots._update_plot_object(pgfx_plot) - @test pgfx_plot.o.the_plot isa PGFPlotsX.TikzDocument - @test pgfx_plot.series_list[1].plotattributes[:quiver] === nothing - axis = Plots.pgfx_axes(pgfx_plot.o)[1] - @test count(x -> x isa PGFPlotsX.Plot, axis.contents) == 1 - @test !haskey(axis.contents[1].options.dict, "fill") + pgfx_plot = plot(1:5) + Plots._update_plot_object(pgfx_plot) + @test pgfx_plot.o.the_plot isa PGFPlotsX.TikzDocument + @test pgfx_plot.series_list[1].plotattributes[:quiver] === nothing + axis = Plots.pgfx_axes(pgfx_plot.o)[1] + @test count(x -> x isa PGFPlotsX.Plot, axis.contents) == 1 + @test !haskey(axis.contents[1].options.dict, "fill") - @testset "Legends" begin - legends_plot = plot(rand(5, 2), lab = ["1" ""]) - scatter!(legends_plot, rand(5)) - Plots._update_plot_object(legends_plot) - axis_contents = Plots.pgfx_axes(legends_plot.o)[1].contents - leg_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis_contents) - series = filter(x -> x isa PGFPlotsX.Plot, axis_contents) - @test length(leg_entries) == 2 - @test !haskey(series[1].options.dict, "forget plot") - @test haskey(series[2].options.dict, "forget plot") - @test !haskey(series[3].options.dict, "forget plot") - end # testset + @testset "Legends" begin + legends_plot = plot(rand(5, 2), lab = ["1" ""]) + scatter!(legends_plot, rand(5)) + Plots._update_plot_object(legends_plot) + axis_contents = Plots.pgfx_axes(legends_plot.o)[1].contents + leg_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis_contents) + series = filter(x -> x isa PGFPlotsX.Plot, axis_contents) + @test length(leg_entries) == 2 + @test !haskey(series[1].options.dict, "forget plot") + @test haskey(series[2].options.dict, "forget plot") + @test !haskey(series[3].options.dict, "forget plot") + end # testset - @testset "3D docs example" begin - n = 100 - ts = range(0, stop = 8π, length = n) - x = ts .* map(cos, ts) - y = (0.1ts) .* map(sin, ts) - z = 1:n - pl = plot( - x, - y, - z, - zcolor = reverse(z), - m = (10, 0.8, :blues, Plots.stroke(0)), - leg = false, - cbar = true, - w = 5, - ) - pgfx_plot = plot!(pl, zeros(n), zeros(n), 1:n, w = 10) - Plots._update_plot_object(pgfx_plot) - if @test_nowarn( - haskey(Plots.pgfx_axes(pgfx_plot.o)[1].options.dict, "colorbar") == true - ) - @test Plots.pgfx_axes(pgfx_plot.o)[1]["colorbar"] === nothing - end - end # testset - @testset "Color docs example" begin - y = rand(100) - plot( - 0:10:100, - rand(11, 4), - lab = "lines", - w = 3, - palette = :grays, - fill = 0, - α = 0.6, - ) - pl = scatter!( - y, - zcolor = abs.(y .- 0.5), - m = (:hot, 0.8, Plots.stroke(1, :green)), - ms = 10 * abs.(y .- 0.5) .+ 4, - lab = ["grad", "", "ient"], - ) - Plots._update_plot_object(pl) - axis = Plots.pgfx_axes(pl.o)[1] - @test count(x -> x isa PGFPlotsX.LegendEntry, axis.contents) == 6 - @test count(x -> x isa PGFPlotsX.Plot, axis.contents) == 108 # each marker is its own plot, fillranges create 2 plot-objects - marker = axis.contents[15] - @test marker isa PGFPlotsX.Plot - @test marker.options["mark"] == "*" - @test marker.options["mark options"]["color"] == - RGBA{Float64}(colorant"green", 0.8) - @test marker.options["mark options"]["line width"] == 0.75 # 1px is 0.75pt - end # testset - @testset "Plot in pieces" begin - pic = plot(rand(100) / 3, reg = true, fill = (0, :green)) - scatter!(pic, rand(100), markersize = 6, c = :orange) - Plots._update_plot_object(pic) - axis_contents = Plots.pgfx_axes(pic.o)[1].contents - leg_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis_contents) - series = filter(x -> x isa PGFPlotsX.Plot, axis_contents) - @test length(leg_entries) == 2 - @test length(series) == 4 - @test haskey(series[1].options.dict, "forget plot") - @test !haskey(series[2].options.dict, "forget plot") - @test haskey(series[3].options.dict, "forget plot") - @test !haskey(series[4].options.dict, "forget plot") - end # testset - @testset "Marker types" begin - markers = filter((m -> begin - m in Plots.supported_markers() - end), Plots._shape_keys) - markers = reshape(markers, 1, length(markers)) - n = length(markers) - x = (range(0, stop = 10, length = n + 2))[2:(end-1)] - y = repeat(reshape(reverse(x), 1, :), n, 1) - scatter( - x, - y, - m = (8, :auto), - lab = map(string, markers), - bg = :linen, - xlim = (0, 10), - ylim = (0, 10), - ) - end # testset - @testset "Layout" begin - plot( - Plots.fakedata(100, 10), - layout = 4, - palette = [:grays :blues :hot :rainbow], - bg_inside = [:orange :pink :darkblue :black], - ) - end # testset - @testset "Polar plots" begin - Θ = range(0, stop = 1.5π, length = 100) - r = abs.(0.1 * randn(100) + sin.(3Θ)) - plot(Θ, r, proj = :polar, m = 2) - end # testset - @testset "Drawing shapes" begin - verts = [ - (-1.0, 1.0), - (-1.28, 0.6), - (-0.2, -1.4), - (0.2, -1.4), - (1.28, 0.6), - (1.0, 1.0), - (-1.0, 1.0), - (-0.2, -0.6), - (0.0, -0.2), - (-0.4, 0.6), - (1.28, 0.6), - (0.2, -1.4), - (-0.2, -1.4), - (0.6, 0.2), - (-0.2, 0.2), - (0.0, -0.2), - (0.2, 0.2), - (-0.2, -0.6), - ] - x = 0.1:0.2:0.9 - y = 0.7 * rand(5) .+ 0.15 - plot( - x, - y, - line = (3, :dash, :lightblue), - marker = (Shape(verts), 30, RGBA(0, 0, 0, 0.2)), - bg = :pink, - fg = :darkblue, - xlim = (0, 1), - ylim = (0, 1), - leg = false, - ) - end # testset - @testset "Histogram 2D" begin - histogram2d(randn(10000), randn(10000), nbins = 20) - end # testset - @testset "Heatmap-like" begin - xs = [string("x", i) for i = 1:10] - ys = [string("y", i) for i = 1:4] - z = float((1:4) * reshape(1:10, 1, :)) - pgfx_plot = heatmap(xs, ys, z, aspect_ratio = 1) - Plots._update_plot_object(pgfx_plot) - if @test_nowarn( - haskey(Plots.pgfx_axes(pgfx_plot.o)[1].options.dict, "colorbar") == true - ) - @test Plots.pgfx_axes(pgfx_plot.o)[1]["colorbar"] === nothing - @test Plots.pgfx_axes(pgfx_plot.o)[1]["colormap name"] == "plots1" - end + @testset "3D docs example" begin + n = 100 + ts = range(0, stop = 8π, length = n) + x = ts .* map(cos, ts) + y = (0.1ts) .* map(sin, ts) + z = 1:n + pl = plot( + x, + y, + z, + zcolor = reverse(z), + m = (10, 0.8, :blues, Plots.stroke(0)), + leg = false, + cbar = true, + w = 5, + ) + pgfx_plot = plot!(pl, zeros(n), zeros(n), 1:n, w = 10) + Plots._update_plot_object(pgfx_plot) + if @test_nowarn( + haskey(Plots.pgfx_axes(pgfx_plot.o)[1].options.dict, "colorbar") == true + ) + @test Plots.pgfx_axes(pgfx_plot.o)[1]["colorbar"] === nothing + end + end # testset + @testset "Color docs example" begin + y = rand(100) + plot( + 0:10:100, + rand(11, 4), + lab = "lines", + w = 3, + palette = :grays, + fill = 0, + α = 0.6, + ) + pl = scatter!( + y, + zcolor = abs.(y .- 0.5), + m = (:hot, 0.8, Plots.stroke(1, :green)), + ms = 10 * abs.(y .- 0.5) .+ 4, + lab = ["grad", "", "ient"], + ) + Plots._update_plot_object(pl) + axis = Plots.pgfx_axes(pl.o)[1] + @test count(x -> x isa PGFPlotsX.LegendEntry, axis.contents) == 6 + @test count(x -> x isa PGFPlotsX.Plot, axis.contents) == 108 # each marker is its own plot, fillranges create 2 plot-objects + marker = axis.contents[15] + @test marker isa PGFPlotsX.Plot + @test marker.options["mark"] == "*" + @test marker.options["mark options"]["color"] == RGBA{Float64}(colorant"green", 0.8) + @test marker.options["mark options"]["line width"] == 0.75 # 1px is 0.75pt + end # testset + @testset "Plot in pieces" begin + pic = plot(rand(100) / 3, reg = true, fill = (0, :green)) + scatter!(pic, rand(100), markersize = 6, c = :orange) + Plots._update_plot_object(pic) + axis_contents = Plots.pgfx_axes(pic.o)[1].contents + leg_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis_contents) + series = filter(x -> x isa PGFPlotsX.Plot, axis_contents) + @test length(leg_entries) == 2 + @test length(series) == 4 + @test haskey(series[1].options.dict, "forget plot") + @test !haskey(series[2].options.dict, "forget plot") + @test haskey(series[3].options.dict, "forget plot") + @test !haskey(series[4].options.dict, "forget plot") + end # testset + @testset "Marker types" begin + markers = filter((m -> begin + m in Plots.supported_markers() + end), Plots._shape_keys) + markers = reshape(markers, 1, length(markers)) + n = length(markers) + x = (range(0, stop = 10, length = n + 2))[2:(end - 1)] + y = repeat(reshape(reverse(x), 1, :), n, 1) + scatter( + x, + y, + m = (8, :auto), + lab = map(string, markers), + bg = :linen, + xlim = (0, 10), + ylim = (0, 10), + ) + end # testset + @testset "Layout" begin + plot( + Plots.fakedata(100, 10), + layout = 4, + palette = [:grays :blues :hot :rainbow], + bg_inside = [:orange :pink :darkblue :black], + ) + end # testset + @testset "Polar plots" begin + Θ = range(0, stop = 1.5π, length = 100) + r = abs.(0.1 * randn(100) + sin.(3Θ)) + plot(Θ, r, proj = :polar, m = 2) + end # testset + @testset "Drawing shapes" begin + verts = [ + (-1.0, 1.0), + (-1.28, 0.6), + (-0.2, -1.4), + (0.2, -1.4), + (1.28, 0.6), + (1.0, 1.0), + (-1.0, 1.0), + (-0.2, -0.6), + (0.0, -0.2), + (-0.4, 0.6), + (1.28, 0.6), + (0.2, -1.4), + (-0.2, -1.4), + (0.6, 0.2), + (-0.2, 0.2), + (0.0, -0.2), + (0.2, 0.2), + (-0.2, -0.6), + ] + x = 0.1:0.2:0.9 + y = 0.7 * rand(5) .+ 0.15 + plot( + x, + y, + line = (3, :dash, :lightblue), + marker = (Shape(verts), 30, RGBA(0, 0, 0, 0.2)), + bg = :pink, + fg = :darkblue, + xlim = (0, 1), + ylim = (0, 1), + leg = false, + ) + end # testset + @testset "Histogram 2D" begin + histogram2d(randn(10000), randn(10000), nbins = 20) + end # testset + @testset "Heatmap-like" begin + xs = [string("x", i) for i in 1:10] + ys = [string("y", i) for i in 1:4] + z = float((1:4) * reshape(1:10, 1, :)) + pgfx_plot = heatmap(xs, ys, z, aspect_ratio = 1) + Plots._update_plot_object(pgfx_plot) + if @test_nowarn( + haskey(Plots.pgfx_axes(pgfx_plot.o)[1].options.dict, "colorbar") == true + ) + @test Plots.pgfx_axes(pgfx_plot.o)[1]["colorbar"] === nothing + @test Plots.pgfx_axes(pgfx_plot.o)[1]["colormap name"] == "plots1" + end - pgfx_plot = wireframe(xs, ys, z, aspect_ratio = 1) - # TODO: clims are wrong - end # testset - @testset "Contours" begin - x = 1:0.5:20 - y = 1:0.5:10 - f(x, y) = begin - (3x + y^2) * abs(sin(x) + cos(y)) - end - X = repeat(reshape(x, 1, :), length(y), 1) - Y = repeat(y, 1, length(x)) - Z = map(f, X, Y) - p2 = contour(x, y, Z) - p1 = contour(x, y, f, fill = true) - plot(p1, p2) - # TODO: colorbar for filled contours - end # testset - @testset "Varying colors" begin - t = range(0, stop = 1, length = 100) - θ = (6π) .* t - x = t .* cos.(θ) - y = t .* sin.(θ) - p1 = plot(x, y, line_z = t, linewidth = 3, legend = false) - p2 = scatter( - x, - y, - marker_z = ((x, y) -> begin + pgfx_plot = wireframe(xs, ys, z, aspect_ratio = 1) + # TODO: clims are wrong + end # testset + @testset "Contours" begin + x = 1:0.5:20 + y = 1:0.5:10 + f(x, y) = begin + (3x + y^2) * abs(sin(x) + cos(y)) + end + X = repeat(reshape(x, 1, :), length(y), 1) + Y = repeat(y, 1, length(x)) + Z = map(f, X, Y) + p2 = contour(x, y, Z) + p1 = contour(x, y, f, fill = true) + plot(p1, p2) + # TODO: colorbar for filled contours + end # testset + @testset "Varying colors" begin + t = range(0, stop = 1, length = 100) + θ = (6π) .* t + x = t .* cos.(θ) + y = t .* sin.(θ) + p1 = plot(x, y, line_z = t, linewidth = 3, legend = false) + p2 = scatter(x, y, marker_z = ((x, y) -> begin x + y - end), - color = :bwr, - legend = false, - ) - plot(p1, p2) - end # testset - @testset "Framestyles" begin - scatter( - fill(randn(10), 6), - fill(randn(10), 6), - framestyle = [:box :semi :origin :zerolines :grid :none], - title = [":box" ":semi" ":origin" ":zerolines" ":grid" ":none"], - color = permutedims(1:6), - layout = 6, - label = "", - markerstrokewidth = 0, - ticks = -2:2, - ) - # TODO: support :semi - end # testset - @testset "Quiver" begin - x = (-2pi):0.2:(2*pi) - y = sin.(x) + end), color = :bwr, legend = false) + plot(p1, p2) + end # testset + @testset "Framestyles" begin + scatter( + fill(randn(10), 6), + fill(randn(10), 6), + framestyle = [:box :semi :origin :zerolines :grid :none], + title = [":box" ":semi" ":origin" ":zerolines" ":grid" ":none"], + color = permutedims(1:6), + layout = 6, + label = "", + markerstrokewidth = 0, + ticks = -2:2, + ) + # TODO: support :semi + end # testset + @testset "Quiver" begin + x = (-2pi):0.2:(2 * pi) + y = sin.(x) - u = ones(length(x)) - v = cos.(x) - arrow_plot = plot(x, y, quiver = (u, v), arrow = true) - # TODO: could adjust limits to fit arrows if too long, but how? - # TODO: get latex available on CI - # mktempdir() do path - # @test_nowarn savefig(arrow_plot, path*"arrow.pdf") - # end - end # testset - @testset "Annotations" begin - y = rand(10) - pgfx_plot = plot( - y, - annotations = (3, y[3], Plots.text("this is \\#3", :left)), - leg = false, - ) - Plots._update_plot_object(pgfx_plot) - axis_content = Plots.pgfx_axes(pgfx_plot.o)[1].contents - nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) - @test length(nodes) == 1 - mktempdir() do path - file_path = joinpath(path, "annotations.tex") - @test_nowarn savefig(pgfx_plot, file_path) - open(file_path) do io - lines = readlines(io) - @test count(s -> occursin("node", s), lines) == 1 - end - end - annotate!([ - (5, y[5], Plots.text("this is \\#5", 16, :red, :center)), - (10, y[10], Plots.text("this is \\#10", :right, 20, "courier")), - ]) - Plots._update_plot_object(pgfx_plot) - axis_content = Plots.pgfx_axes(pgfx_plot.o)[1].contents - nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) - @test length(nodes) == 3 - mktempdir() do path - file_path = joinpath(path, "annotations.tex") - @test_nowarn savefig(pgfx_plot, file_path) - open(file_path) do io - lines = readlines(io) - @test count(s -> occursin("node", s), lines) == 3 - end - end - annotation_plot = scatter!( - range(2, stop = 8, length = 6), - rand(6), - marker = (50, 0.2, :orange), - series_annotations = [ - "series", - "annotations", - "map", - "to", - "series", - Plots.text("data", :green), - ], - ) - Plots._update_plot_object(annotation_plot) - axis_content = Plots.pgfx_axes(annotation_plot.o)[1].contents - nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) - @test length(nodes) == 9 - mktempdir() do path - file_path = joinpath(path, "annotations.tex") - @test_nowarn savefig(annotation_plot, file_path) - open(file_path) do io - lines = readlines(io) - @test count(s -> occursin("node", s), lines) == 9 - end - # test .tikz extension - file_path = joinpath(path, "annotations.tikz") - @test_nowarn savefig(annotation_plot, file_path) - @test_nowarn open(file_path) do io - end - end - end # testset - @testset "Ribbon" begin - aa = rand(10) - bb = rand(10) - cc = rand(10) - conf = [aa - cc bb - cc] - ribbon_plot = - plot(collect(1:10), fill(1, 10), ribbon = (conf[:, 1], conf[:, 2])) - Plots._update_plot_object(ribbon_plot) - axis = Plots.pgfx_axes(ribbon_plot.o)[1] - plots = filter(x -> x isa PGFPlotsX.Plot, axis.contents) - @test length(plots) == 3 - @test haskey(plots[1].options.dict, "fill") - @test haskey(plots[2].options.dict, "fill") - @test !haskey(plots[3].options.dict, "fill") - @test ribbon_plot.o !== nothing - @test ribbon_plot.o.the_plot !== nothing - end # testset - @testset "Markers and Paths" begin - pl = plot( - 5 .- ones(9), - markershape = [:utriangle, :rect], - markersize = 8, - color = [:red, :black], - ) - Plots._update_plot_object(pl) - axis = Plots.pgfx_axes(pl.o)[1] - plots = filter(x -> x isa PGFPlotsX.Plot, axis.contents) - @test length(plots) == 9 - end # testset - @testset "Groups and Subplots" begin - group = rand(map((i->begin - "group $(i)" - end), 1:4), 100) - pl = plot(rand(100), layout = @layout([a b; c]), group = group, linetype = [:bar :scatter :steppre], linecolor = :match) - Plots._update_plot_object(pl) - axis = Plots.pgfx_axes(pl.o)[1] - legend_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis.contents) - @test length(legend_entries) == 2 - end + u = ones(length(x)) + v = cos.(x) + arrow_plot = plot(x, y, quiver = (u, v), arrow = true) + # TODO: could adjust limits to fit arrows if too long, but how? + # TODO: get latex available on CI + # mktempdir() do path + # @test_nowarn savefig(arrow_plot, path*"arrow.pdf") + # end + end # testset + @testset "Annotations" begin + y = rand(10) + pgfx_plot = + plot(y, annotations = (3, y[3], Plots.text("this is \\#3", :left)), leg = false) + Plots._update_plot_object(pgfx_plot) + axis_content = Plots.pgfx_axes(pgfx_plot.o)[1].contents + nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) + @test length(nodes) == 1 + mktempdir() do path + file_path = joinpath(path, "annotations.tex") + @test_nowarn savefig(pgfx_plot, file_path) + open(file_path) do io + lines = readlines(io) + @test count(s -> occursin("node", s), lines) == 1 + end + end + annotate!([ + (5, y[5], Plots.text("this is \\#5", 16, :red, :center)), + (10, y[10], Plots.text("this is \\#10", :right, 20, "courier")), + ]) + Plots._update_plot_object(pgfx_plot) + axis_content = Plots.pgfx_axes(pgfx_plot.o)[1].contents + nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) + @test length(nodes) == 3 + mktempdir() do path + file_path = joinpath(path, "annotations.tex") + @test_nowarn savefig(pgfx_plot, file_path) + open(file_path) do io + lines = readlines(io) + @test count(s -> occursin("node", s), lines) == 3 + end + end + annotation_plot = scatter!( + range(2, stop = 8, length = 6), + rand(6), + marker = (50, 0.2, :orange), + series_annotations = [ + "series", + "annotations", + "map", + "to", + "series", + Plots.text("data", :green), + ], + ) + Plots._update_plot_object(annotation_plot) + axis_content = Plots.pgfx_axes(annotation_plot.o)[1].contents + nodes = filter(x -> !isa(x, PGFPlotsX.Plot), axis_content) + @test length(nodes) == 9 + mktempdir() do path + file_path = joinpath(path, "annotations.tex") + @test_nowarn savefig(annotation_plot, file_path) + open(file_path) do io + lines = readlines(io) + @test count(s -> occursin("node", s), lines) == 9 + end + # test .tikz extension + file_path = joinpath(path, "annotations.tikz") + @test_nowarn savefig(annotation_plot, file_path) + @test_nowarn open(file_path) do io + end + end + end # testset + @testset "Ribbon" begin + aa = rand(10) + bb = rand(10) + cc = rand(10) + conf = [aa - cc bb - cc] + ribbon_plot = plot(collect(1:10), fill(1, 10), ribbon = (conf[:, 1], conf[:, 2])) + Plots._update_plot_object(ribbon_plot) + axis = Plots.pgfx_axes(ribbon_plot.o)[1] + plots = filter(x -> x isa PGFPlotsX.Plot, axis.contents) + @test length(plots) == 3 + @test haskey(plots[1].options.dict, "fill") + @test haskey(plots[2].options.dict, "fill") + @test !haskey(plots[3].options.dict, "fill") + @test ribbon_plot.o !== nothing + @test ribbon_plot.o.the_plot !== nothing + end # testset + @testset "Markers and Paths" begin + pl = plot( + 5 .- ones(9), + markershape = [:utriangle, :rect], + markersize = 8, + color = [:red, :black], + ) + Plots._update_plot_object(pl) + axis = Plots.pgfx_axes(pl.o)[1] + plots = filter(x -> x isa PGFPlotsX.Plot, axis.contents) + @test length(plots) == 9 + end # testset + @testset "Groups and Subplots" begin + group = rand(map((i -> begin + "group $(i)" + end), 1:4), 100) + pl = plot( + rand(100), + layout = @layout([a b; c]), + group = group, + linetype = [:bar :scatter :steppre], + linecolor = :match, + ) + Plots._update_plot_object(pl) + axis = Plots.pgfx_axes(pl.o)[1] + legend_entries = filter(x -> x isa PGFPlotsX.LegendEntry, axis.contents) + @test length(legend_entries) == 2 + end end # testset @testset "Extra kwargs" begin - pl = plot(1:5, test = "me") - @test pl[1][1].plotattributes[:extra_kwargs][:test] == "me" - pl = plot(1:5, test = "me", extra_kwargs = :subplot) - @test pl[1].attr[:extra_kwargs][:test] == "me" - pl = plot(1:5, test = "me", extra_kwargs = :plot) - @test pl.attr[:extra_plot_kwargs][:test] == "me" - pl = plot( - 1:5, - extra_kwargs = Dict( - :plot => Dict(:test => "me"), - :series => Dict(:and => "me too"), - ), - ) - @test pl.attr[:extra_plot_kwargs][:test] == "me" - @test pl[1][1].plotattributes[:extra_kwargs][:and] == "me too" - pl = plot( - plot(1:5, title = "Line"), - scatter( - 1:5, - title = "Scatter", - extra_kwargs = Dict(:subplot => Dict("axis line shift" => "10pt")), - ), - ) - Plots._update_plot_object(pl) - axes = Plots.pgfx_axes(pl.o) - @test !haskey(axes[1].options.dict, "axis line shift") - @test haskey(axes[2].options.dict, "axis line shift") - pl = plot( - x -> x, - -1:1; - add = raw"\node at (0,0.5) {\huge hi};", - extra_kwargs = :subplot, - ) - @test pl[1][:extra_kwargs] == Dict(:add => raw"\node at (0,0.5) {\huge hi};") - Plots._update_plot_object(pl) - axes = Plots.pgfx_axes(pl.o) - @test filter(x -> x isa String, axes[1].contents)[1] == - raw"\node at (0,0.5) {\huge hi};" - plot!(pl) - @test pl[1][:extra_kwargs] == Dict(:add => raw"\node at (0,0.5) {\huge hi};") - Plots._update_plot_object(pl) - axes = Plots.pgfx_axes(pl.o) - @test filter(x -> x isa String, axes[1].contents)[1] == - raw"\node at (0,0.5) {\huge hi};" + pl = plot(1:5, test = "me") + @test pl[1][1].plotattributes[:extra_kwargs][:test] == "me" + pl = plot(1:5, test = "me", extra_kwargs = :subplot) + @test pl[1].attr[:extra_kwargs][:test] == "me" + pl = plot(1:5, test = "me", extra_kwargs = :plot) + @test pl.attr[:extra_plot_kwargs][:test] == "me" + pl = plot( + 1:5, + extra_kwargs = Dict( + :plot => Dict(:test => "me"), + :series => Dict(:and => "me too"), + ), + ) + @test pl.attr[:extra_plot_kwargs][:test] == "me" + @test pl[1][1].plotattributes[:extra_kwargs][:and] == "me too" + pl = plot( + plot(1:5, title = "Line"), + scatter( + 1:5, + title = "Scatter", + extra_kwargs = Dict(:subplot => Dict("axis line shift" => "10pt")), + ), + ) + Plots._update_plot_object(pl) + axes = Plots.pgfx_axes(pl.o) + @test !haskey(axes[1].options.dict, "axis line shift") + @test haskey(axes[2].options.dict, "axis line shift") + pl = + plot(x -> x, -1:1; add = raw"\node at (0,0.5) {\huge hi};", extra_kwargs = :subplot) + @test pl[1][:extra_kwargs] == Dict(:add => raw"\node at (0,0.5) {\huge hi};") + Plots._update_plot_object(pl) + axes = Plots.pgfx_axes(pl.o) + @test filter(x -> x isa String, axes[1].contents)[1] == + raw"\node at (0,0.5) {\huge hi};" + plot!(pl) + @test pl[1][:extra_kwargs] == Dict(:add => raw"\node at (0,0.5) {\huge hi};") + Plots._update_plot_object(pl) + axes = Plots.pgfx_axes(pl.o) + @test filter(x -> x isa String, axes[1].contents)[1] == + raw"\node at (0,0.5) {\huge hi};" end # testset @testset "Titlefonts" begin - pl = plot(1:5, title = "Test me", titlefont = (2, :left)) - @test pl[1][:title] == "Test me" - @test pl[1][:titlefontsize] == 2 - @test pl[1][:titlefonthalign] == :left - Plots._update_plot_object(pl) - ax_opt = Plots.pgfx_axes(pl.o)[1].options - @test ax_opt["title"] == "Test me" - @test(haskey(ax_opt.dict, "title style")) isa Test.Pass - pl = plot(1:5, plot_title = "Test me", plot_titlefont = (2, :left)) - @test pl[:plot_title] == "Test me" - @test pl[:plot_titlefontsize] == 2 - @test pl[:plot_titlefonthalign] == :left - pl = heatmap( - rand(3, 3), - colorbar_title = "Test me", - colorbar_titlefont = (12, :right), - ) - @test pl[1][:colorbar_title] == "Test me" - @test pl[1][:colorbar_titlefontsize] == 12 - @test pl[1][:colorbar_titlefonthalign] == :right + pl = plot(1:5, title = "Test me", titlefont = (2, :left)) + @test pl[1][:title] == "Test me" + @test pl[1][:titlefontsize] == 2 + @test pl[1][:titlefonthalign] == :left + Plots._update_plot_object(pl) + ax_opt = Plots.pgfx_axes(pl.o)[1].options + @test ax_opt["title"] == "Test me" + @test(haskey(ax_opt.dict, "title style")) isa Test.Pass + pl = plot(1:5, plot_title = "Test me", plot_titlefont = (2, :left)) + @test pl[:plot_title] == "Test me" + @test pl[:plot_titlefontsize] == 2 + @test pl[:plot_titlefonthalign] == :left + pl = heatmap(rand(3, 3), colorbar_title = "Test me", colorbar_titlefont = (12, :right)) + @test pl[1][:colorbar_title] == "Test me" + @test pl[1][:colorbar_titlefontsize] == 12 + @test pl[1][:colorbar_titlefonthalign] == :right end # testset diff --git a/test/test_pipeline.jl b/test/test_pipeline.jl index cf6c38e2..ac6876f8 100644 --- a/test/test_pipeline.jl +++ b/test/test_pipeline.jl @@ -11,8 +11,8 @@ using RecipesPipeline end @testset "get_axis_limits" begin - x = [.1, 5] - p1 = plot(x, [5, .1], yscale=:log10) + x = [0.1, 5] + p1 = plot(x, [5, 0.1], yscale = :log10) p2 = plot!(identity) @test all(RecipesPipeline.get_axis_limits(p1, :x) .== x) @test all(RecipesPipeline.get_axis_limits(p2, :x) .== x) diff --git a/test/test_recipes.jl b/test/test_recipes.jl index a228d2a6..418e4465 100644 --- a/test/test_recipes.jl +++ b/test/test_recipes.jl @@ -3,27 +3,27 @@ using OffsetArrays @testset "lens!" begin pl = plot(1:5) - lens!(pl, [1,2], [1,2], inset = (1, bbox(0.0,0.0,0.2,0.2)), colorbar = false) + lens!(pl, [1, 2], [1, 2], inset = (1, bbox(0.0, 0.0, 0.2, 0.2)), colorbar = false) @test length(pl.series_list) == 4 @test pl[2][:colorbar] == :none end # testset @testset "vline, vspan" begin vl = vline([1], widen = false) - @test Plots.xlims(vl) == (1,2) - @test Plots.ylims(vl) == (1,2) - vl = vline([1], xlims=(0,2), widen = false) - @test Plots.xlims(vl) == (0,2) - vl = vline([1], ylims=(-3,5), widen = false) - @test Plots.ylims(vl) == (-3,5) + @test Plots.xlims(vl) == (1, 2) + @test Plots.ylims(vl) == (1, 2) + vl = vline([1], xlims = (0, 2), widen = false) + @test Plots.xlims(vl) == (0, 2) + vl = vline([1], ylims = (-3, 5), widen = false) + @test Plots.ylims(vl) == (-3, 5) - vsp = vspan([1,3], widen = false) - @test Plots.xlims(vsp) == (1,3) - @test Plots.ylims(vsp) == (0,1) # TODO: might be problematic on log-scales - vsp = vspan([1,3], xlims=(-2,5), widen = false) - @test Plots.xlims(vsp) == (-2,5) - vsp = vspan([1,3], ylims=(-2,5), widen = false) - @test Plots.ylims(vsp) == (-2,5) + vsp = vspan([1, 3], widen = false) + @test Plots.xlims(vsp) == (1, 3) + @test Plots.ylims(vsp) == (0, 1) # TODO: might be problematic on log-scales + vsp = vspan([1, 3], xlims = (-2, 5), widen = false) + @test Plots.xlims(vsp) == (-2, 5) + vsp = vspan([1, 3], ylims = (-2, 5), widen = false) + @test Plots.ylims(vsp) == (-2, 5) end # testset @testset "offset axes" begin @@ -46,4 +46,4 @@ end prevha = ha end end -end \ No newline at end of file +end diff --git a/test/test_shorthands.jl b/test/test_shorthands.jl index 891c0c14..116548ca 100644 --- a/test/test_shorthands.jl +++ b/test/test_shorthands.jl @@ -4,45 +4,45 @@ using Plots, Test @testset "Set Lims" begin p = plot(rand(10)) - xlims!((1,20)) - @test xlims(p) == (1,20) + xlims!((1, 20)) + @test xlims(p) == (1, 20) - ylims!((-1,1)) - @test ylims(p) == (-1,1) + ylims!((-1, 1)) + @test ylims(p) == (-1, 1) - zlims!((-1,1)) - @test zlims(p) == (-1,1) + zlims!((-1, 1)) + @test zlims(p) == (-1, 1) - xlims!(-1,11) - @test xlims(p) == (-1,11) + xlims!(-1, 11) + @test xlims(p) == (-1, 11) - ylims!((-10,10)) - @test ylims(p) == (-10,10) + ylims!((-10, 10)) + @test ylims(p) == (-10, 10) - zlims!((-10,10)) - @test zlims(p) == (-10,10) + zlims!((-10, 10)) + @test zlims(p) == (-10, 10) end @testset "Set Ticks" begin - p = plot([0,2,3,4,5,6,7,8,9,10]) + p = plot([0, 2, 3, 4, 5, 6, 7, 8, 9, 10]) xticks = 2:6 xticks!(xticks) - @test Plots.get_subplot(current(),1).attr[:xaxis][:ticks] == xticks + @test Plots.get_subplot(current(), 1).attr[:xaxis][:ticks] == xticks yticks = 0.2:0.1:0.7 yticks!(yticks) - @test Plots.get_subplot(current(),1).attr[:yaxis][:ticks] == yticks + @test Plots.get_subplot(current(), 1).attr[:yaxis][:ticks] == yticks - xticks = [5,6,7.5] - xlabels = ["a","b","c"] + xticks = [5, 6, 7.5] + xlabels = ["a", "b", "c"] xticks!(xticks, xlabels) - @test Plots.get_subplot(current(),1).attr[:xaxis][:ticks] == (xticks, xlabels) + @test Plots.get_subplot(current(), 1).attr[:xaxis][:ticks] == (xticks, xlabels) - yticks = [.5,.6,.75] - ylabels = ["z","y","x"] + yticks = [0.5, 0.6, 0.75] + ylabels = ["z", "y", "x"] yticks!(yticks, ylabels) - @test Plots.get_subplot(current(),1).attr[:yaxis][:ticks] == (yticks, ylabels) + @test Plots.get_subplot(current(), 1).attr[:yaxis][:ticks] == (yticks, ylabels) end end From 8147c59b2f7805ac8e2fe298cc1a8a2ecf7232c0 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 12 Aug 2021 17:16:25 +0000 Subject: [PATCH 511/518] Update precompile_*.jl file [skip ci] --- .../precompile/precompile_Plots.jl | 32 +++---------------- src/precompile_includer.jl | 7 ++-- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/deps/SnoopCompile/precompile/precompile_Plots.jl b/deps/SnoopCompile/precompile/precompile_Plots.jl index ff53acb7..fa83b87c 100644 --- a/deps/SnoopCompile/precompile/precompile_Plots.jl +++ b/deps/SnoopCompile/precompile/precompile_Plots.jl @@ -76,8 +76,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}, Vector{Float64}},Tuple{Int64, Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Nothing}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) Base.precompile(Tuple{Core.kwftype(typeof(_make_hist)),NamedTuple{(:normed, :weights), Tuple{Bool, Vector{Int64}}},typeof(_make_hist),Tuple{Vector{Float64}},Symbol}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:flip,), Tuple{Bool}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{Symbol}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:formatter,), Tuple{typeof(datetimeformatter)}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :flip, :minorgrid, :guide), Tuple{Bool, Bool, Bool, String}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:grid, :lims), Tuple{Bool, Tuple{Float64, Float64}}},typeof(attr!),Axis}) @@ -94,7 +92,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Float64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:lims,), Tuple{Tuple{Int64, Int64}}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid, :scale, :guide), Tuple{Bool, Symbol, String}},typeof(attr!),Axis}) - Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:minorgrid,), Tuple{Bool}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:rotation,), Tuple{Int64}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{Nothing}},typeof(attr!),Axis}) Base.precompile(Tuple{Core.kwftype(typeof(attr!)),NamedTuple{(:ticks,), Tuple{UnitRange{Int64}}},typeof(attr!),Axis}) @@ -107,7 +104,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},UnitRange{Int64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),UnitRange{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(gr_polyline)),NamedTuple{(:arrowside, :arrowstyle), Tuple{Symbol, Symbol}},typeof(gr_polyline),Vector{Int64},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(gr_set_font)),NamedTuple{(:halign, :valign, :rotation, :color), Tuple{Symbol, Symbol, Int64, RGBA{Float64}}},typeof(gr_set_font),Font,Subplot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(hline!)),Any,typeof(hline!),Any}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{GRBackend},Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:alpha, :seriestype), Tuple{Float64, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{GeometryBasics.Point2{Float64}}}) @@ -127,7 +123,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),Plot{PlotlyBackend},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:marker, :series_annotations, :seriestype), Tuple{Tuple{Int64, Float64, Symbol}, Vector{Any}, Symbol}},typeof(plot!),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:markersize, :c, :seriestype), Tuple{Int64, Symbol, Symbol}},typeof(plot!),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{GRBackend},Vector{Int64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:seriestype, :inset), Tuple{Symbol, Tuple{Int64, BoundingBox{Tuple{Length{:w, Float64}, Length{:h, Float64}}, Tuple{Length{:w, Float64}, Length{:h, Float64}}}}}},typeof(plot!),Plot{PlotlyBackend},Vector{Int64},Vector{Float64}}) @@ -140,8 +135,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:title,), Tuple{String}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot!),Plot{GRBackend},Vector{Float64},Vector{Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:xgrid,), Tuple{Tuple{Symbol, Symbol, Int64, Symbol, Float64}}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{GRBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:yaxis, :minorgrid), Tuple{Tuple{String, Symbol}, Bool}},typeof(plot!)}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{GRBackend},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot!)),NamedTuple{(:zcolor, :m, :ms, :lab, :seriestype), Tuple{Vector{Float64}, Tuple{Symbol, Float64, Stroke}, Vector{Float64}, String, Symbol}},typeof(plot!),Plot{PlotlyBackend},Vector{Float64}}) @@ -158,7 +151,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:lab, :w, :palette, :fill, :α), Tuple{String, Int64, PlotUtils.ContinuousColorGradient, Int64, Float64}},typeof(plot),StepRange{Int64, Int64},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label, :title, :xlabel, :linewidth, :legend), Tuple{Matrix{String}, String, String, Int64, Symbol}},typeof(plot),Vector{Function},Float64,Float64}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:label,), Tuple{Matrix{String}}},typeof(plot),Vector{AbstractVector{Float64}}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:labels,), Tuple{Matrix{String}}},typeof(plot),PortfolioComposition}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :group, :linetype, :linecolor), Tuple{GridLayout, Vector{String}, Matrix{Symbol}, Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{GRBackend},Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:layout, :label, :fillrange, :fillalpha), Tuple{Tuple{Int64, Int64}, String, Int64, Float64}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend},Plot{PlotlyBackend}}) @@ -200,6 +192,7 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype, :markershape, :markersize, :color), Tuple{Matrix{Symbol}, Vector{Symbol}, Int64, Vector{Symbol}}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{DateTime},UnitRange{Int64},Matrix{Float64}}) + Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:seriestype,), Tuple{Symbol}},typeof(plot),Vector{OHLC}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:st, :xlabel, :ylabel, :zlabel), Tuple{Symbol, String, String, String}},typeof(plot),Vector{Float64},Vector{Float64},Vector{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :l, :seriestype), Tuple{String, Float64, Symbol}},typeof(plot),Vector{String},Vector{Float64}}) @@ -208,7 +201,6 @@ function _precompile_() Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title, :zlabel, :grid, :ylabel, :minorgrid, :xlabel, :seriestype), Tuple{String, String, Bool, String, Bool, String, Symbol}},typeof(plot),Vector{Float64},Vector{Float64},Function}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{GRBackend},Plot{GRBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{Matrix{String}}},typeof(plot),Plot{PlotlyBackend},Plot{PlotlyBackend}}) - Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:title,), Tuple{String}},typeof(plot),Plot{PlotlyBackend}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:w,), Tuple{Int64}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:xaxis, :background_color, :leg), Tuple{Tuple{String, Tuple{Int64, Int64}, StepRange{Int64, Int64}, Symbol}, RGB{Float64}, Bool}},typeof(plot),Matrix{Float64}}) Base.precompile(Tuple{Core.kwftype(typeof(plot)),NamedTuple{(:zcolor, :m, :leg, :cbar, :w), Tuple{StepRange{Int64, Int64}, Tuple{Int64, Float64, Symbol, Stroke}, Bool, Bool, Int64}},typeof(plot),Vector{Float64},Vector{Float64},UnitRange{Int64}}) @@ -238,6 +230,7 @@ function _precompile_() Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{GRBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.plot_setup!),Plot{PlotlyBackend},Dict{Symbol, Any},Vector{Dict{Symbol, Any}}}) Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_attributes!),Plot{GRBackend},DefaultsDict}) + Base.precompile(Tuple{typeof(RecipesPipeline.preprocess_axis_args!),Plot{GRBackend},Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{GRBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.process_userrecipe!),Plot{PlotlyBackend},Vector{Dict{Symbol, Any}},Dict{Symbol, Any}}) Base.precompile(Tuple{typeof(RecipesPipeline.warn_on_recipe_aliases!),Plot{GRBackend},DefaultsDict,Symbol,Any}) @@ -250,18 +243,14 @@ function _precompile_() Base.precompile(Tuple{typeof(_cbar_unique),Vector{PlotUtils.ContinuousColorGradient},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}}},String}) Base.precompile(Tuple{typeof(_cbar_unique),Vector{Symbol},String}) - Base.precompile(Tuple{typeof(_cycle),Base.OneTo{Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Nothing,Int64}) Base.precompile(Tuple{typeof(_cycle),StepRange{Int64, Int64},Vector{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},StepRange{Int64, Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},UnitRange{Int64}}) - Base.precompile(Tuple{typeof(_cycle),Vector{Float64},Vector{Int64}}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{GRBackend},Bool}) Base.precompile(Tuple{typeof(_do_plot_show),Plot{PlotlyBackend},Bool}) Base.precompile(Tuple{typeof(_heatmap_edges),Vector{Float64},Bool,Bool}) Base.precompile(Tuple{typeof(_plot!),Plot,Any,Any}) Base.precompile(Tuple{typeof(_preprocess_barlike),DefaultsDict,Base.OneTo{Int64},Vector{Float64}}) Base.precompile(Tuple{typeof(_preprocess_binlike),DefaultsDict,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64}}) + Base.precompile(Tuple{typeof(_slice_series_args!),DefaultsDict,Plot{GRBackend},Subplot{GRBackend},Int64}) Base.precompile(Tuple{typeof(_update_min_padding!),GridLayout}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{GRBackend},Subplot{GRBackend},Dict{Symbol, Any},Int64,Bool}) Base.precompile(Tuple{typeof(_update_subplot_args),Plot{PlotlyBackend},Subplot{PlotlyBackend},Dict{Symbol, Any},Int64,Bool}) @@ -282,7 +271,6 @@ function _precompile_() Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Float64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_minor_ticks),Subplot{GRBackend},Axis,Tuple{Vector{Int64}, Vector{String}}}) Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{GRBackend},Int64,Symbol}) - Base.precompile(Tuple{typeof(get_series_color),Vector{Symbol},Subplot{PlotlyBackend},Int64,Symbol}) Base.precompile(Tuple{typeof(get_ticks),StepRange{Int64, Int64},Vector{Float64},Vector{Any},Tuple{Int64, Int64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Float64, Float64},Vararg{Any, N} where N}) Base.precompile(Tuple{typeof(get_ticks),Symbol,Vector{Float64},Vector{Any},Tuple{Int64, Float64},Vararg{Any, N} where N}) @@ -300,9 +288,7 @@ function _precompile_() Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Float64,Tuple{Float64, Float64},Int64,Float64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_marker),Series,Int64,Int64,Tuple{Float64, Float64},Int64,Int64,Int64,Symbol}) Base.precompile(Tuple{typeof(gr_draw_markers),Series,Base.OneTo{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,UnitRange{Int64},Vector{Float64},Tuple{Float64, Float64}}) - Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Float64},Tuple{Float64, Float64}}) + Base.precompile(Tuple{typeof(gr_draw_markers),Series,Vector{Int64},Vector{Int64},Tuple{Float64, Float64},Int64,Int64}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},UnitRange{Int64},Tuple{Vector{Float64}, Vector{Float64}},Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,Base.OneTo{Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) Base.precompile(Tuple{typeof(gr_draw_segments),Series,StepRange{Int64, Int64},Vector{Float64},Int64,Tuple{Float64, Float64}}) @@ -348,7 +334,6 @@ function _precompile_() Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Matrix{Symbol}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},RGBA{Float64}}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Shape{Float64, Float64}}) - Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Stroke}) Base.precompile(Tuple{typeof(processMarkerArg),Dict{Symbol, Any},Symbol}) Base.precompile(Tuple{typeof(processMinorGridArg!),Dict{Symbol, Any},Bool,Symbol}) Base.precompile(Tuple{typeof(process_annotation),Subplot{GRBackend},Int64,Float64,PlotText}) @@ -362,18 +347,11 @@ function _precompile_() Base.precompile(Tuple{typeof(push!),Plot{GRBackend},Float64,Vector{Float64}}) Base.precompile(Tuple{typeof(resetfontsizes)}) Base.precompile(Tuple{typeof(scalefontsizes),Float64}) + Base.precompile(Tuple{typeof(series_annotations),Vector{Any}}) Base.precompile(Tuple{typeof(slice_arg),Base.ReshapedArray{Int64, 2, UnitRange{Int64}, Tuple{}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{AbsoluteLength},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Bool},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Int64},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{PlotUtils.ContinuousColorGradient},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{RGBA{Float64}},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{String},Int64}) - Base.precompile(Tuple{typeof(slice_arg),Matrix{Symbol},Int64}) Base.precompile(Tuple{typeof(spy),Any}) Base.precompile(Tuple{typeof(straightline_data),Tuple{Float64, Float64},Tuple{Float64, Float64},Vector{Float64},Vector{Float64},Int64}) Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N}) - Base.precompile(Tuple{typeof(text),String,Symbol}) Base.precompile(Tuple{typeof(title!),AbstractString}) Base.precompile(Tuple{typeof(unzip),Vector{GeometryBasics.Point2{Float64}}}) Base.precompile(Tuple{typeof(vline!),Any}) diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index 2a19fe91..c5df391f 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -7,9 +7,10 @@ ismultiversion = false @static if !should_precompile # nothing elseif !ismultios && !ismultiversion - @static if isfile( - joinpath(@__DIR__, "../deps/SnoopCompile/precompile/precompile_Plots.jl"), - ) + @static if isfile(joinpath( + @__DIR__, + "../deps/SnoopCompile/precompile/precompile_Plots.jl", + )) include("../deps/SnoopCompile/precompile/precompile_Plots.jl") _precompile_() end From ede106073fe78b884aa9e19fce872c1cfb5aa24f Mon Sep 17 00:00:00 2001 From: t-bltg <13423344+t-bltg@users.noreply.github.com> Date: Thu, 12 Aug 2021 21:58:21 +0200 Subject: [PATCH 512/518] 1.20.1 [skip ci] --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index e367c5cb..f405c9e9 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Plots" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" author = ["Tom Breloff (@tbreloff)"] -version = "1.20.0" +version = "1.20.1" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" From d56a03975f0eff8e180efe5c983608a6b9efbb1c Mon Sep 17 00:00:00 2001 From: t-bltg Date: Fri, 13 Aug 2021 12:43:42 +0200 Subject: [PATCH 513/518] UnicodePlots: fix setting linecolor --- src/backends/unicodeplots.jl | 17 +++++++++++++---- src/precompile_includer.jl | 7 +++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/backends/unicodeplots.jl b/src/backends/unicodeplots.jl index 74e5bce6..b1f766ec 100644 --- a/src/backends/unicodeplots.jl +++ b/src/backends/unicodeplots.jl @@ -93,7 +93,14 @@ function rebuildUnicodePlot!(plt::Plot, width, height) end # add a single series -function addUnicodeSeries!(o, plotattributes, addlegend::Bool, xlim, ylim) +function addUnicodeSeries!( + o, + plotattributes, + addlegend::Bool, + xlim, + ylim; + rev_color_names = Dict(v => k for (k, v) in Colors.color_names), +) # get the function, or special handling for step/bar/hist st = plotattributes[:seriestype] if st == :histogram2d @@ -124,9 +131,11 @@ function addUnicodeSeries!(o, plotattributes, addlegend::Bool, xlim, ylim) label = addlegend ? plotattributes[:label] : "" # if we happen to pass in allowed color symbols, great... otherwise let UnicodePlots decide - color = - plotattributes[:linecolor] in UnicodePlots.color_cycle ? - plotattributes[:linecolor] : :auto + lc = convert(ARGB32, plotattributes[:linecolor]) + sym = Symbol( + get(rev_color_names, map(Int, (red(lc).i, green(lc).i, blue(lc).i)), nothing), + ) + color = sym in UnicodePlots.color_cycle ? sym : :auto # add the series x, y = RecipesPipeline.unzip( diff --git a/src/precompile_includer.jl b/src/precompile_includer.jl index c5df391f..2a19fe91 100644 --- a/src/precompile_includer.jl +++ b/src/precompile_includer.jl @@ -7,10 +7,9 @@ ismultiversion = false @static if !should_precompile # nothing elseif !ismultios && !ismultiversion - @static if isfile(joinpath( - @__DIR__, - "../deps/SnoopCompile/precompile/precompile_Plots.jl", - )) + @static if isfile( + joinpath(@__DIR__, "../deps/SnoopCompile/precompile/precompile_Plots.jl"), + ) include("../deps/SnoopCompile/precompile/precompile_Plots.jl") _precompile_() end From 35fd604e07cb11a102faa694655cd64b6266bf06 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 19 Aug 2021 17:45:06 +0200 Subject: [PATCH 514/518] run JuliaFormatter on schedule --- .github/workflows/format.yml | 11 ++++------- .github/workflows/format_pr.yml | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/format_pr.yml diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index e983db8f..c7e074bb 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -5,7 +5,8 @@ on: jobs: JuliaFormatter: - if: "!contains(github.event.head_commit.message, '[skip ci]')" + if: false + # if: "!contains(github.event.head_commit.message, '[skip ci]')" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -13,14 +14,10 @@ jobs: with: version: 1 - # Setup - - name: Ubuntu TESTCMD - run: echo "TESTCMD=xvfb-run --auto-servernum julia" >> $GITHUB_ENV - # Check format - name: Install JuliaFormatter and format run: | git diff --name-only --exit-code - $TESTCMD -e 'using Pkg; pkg"add JuliaFormatter CSTParser#master"' - $TESTCMD -e 'using JuliaFormatter; format(["src", "test"])' + julia -e 'using Pkg; pkg"add JuliaFormatter CSTParser#master"' + julia -e 'using JuliaFormatter; [format(["src", "test"]) for _ in 1:2]' git diff --exit-code diff --git a/.github/workflows/format_pr.yml b/.github/workflows/format_pr.yml new file mode 100644 index 00000000..b6044f31 --- /dev/null +++ b/.github/workflows/format_pr.yml @@ -0,0 +1,35 @@ +name: format-pr + +on: + schedule: + - cron: '0 0 * * SUN' + +jobs: + build: + if: "!contains(github.event.head_commit.message, '[skip ci]')" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install JuliaFormatter and format + run: | + julia -e 'import Pkg; pkg"add JuliaFormatter CSTParser#master"' + julia -e 'using JuliaFormatter; [format(["src", "test"]) for _ in 1:2]' + git diff --exit-code + + - name: Create Pull Request + if: ${{ failure() }} + id: cpr + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "Format .jl files [skip ci]" + title: 'Automatic JuliaFormatter.jl run' + branch: auto-juliaformatter-pr + delete-branch: true + labels: formatting, automated pr, no changelog + + - name: Check outputs + if: ${{ failure() }} + run: | + echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" + echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" From c4208c75609b3127d7a68d35ff1510a4cc39d9fe Mon Sep 17 00:00:00 2001 From: Simon Christ Date: Thu, 19 Aug 2021 21:07:04 +0200 Subject: [PATCH 515/518] fix broken file --- .zenodo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.zenodo.json b/.zenodo.json index 799a31f8..029e9329 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -688,7 +688,7 @@ { "name": "@t-bltg", "type": "Other" - } + }, { "name": "Fred Callaway", "type": "Other" From c67da7d7b8eb4f96c59ca069f9a505ba44a0ca84 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Thu, 19 Aug 2021 22:19:38 +0200 Subject: [PATCH 516/518] UnicodePlots: allow passing arbitrary colors (RGBA, symbols, integers, ...) (#3758) --- Project.toml | 1 + src/backends/unicodeplots.jl | 40 +++++++++++++++--------------------- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/Project.toml b/Project.toml index f405c9e9..a5d70c8f 100644 --- a/Project.toml +++ b/Project.toml @@ -51,6 +51,7 @@ Requires = "1" Scratch = "1" Showoff = "0.3.1, 1.0" StatsBase = "0.32, 0.33" +UnicodePlots = "2" julia = "1.5" [extras] diff --git a/src/backends/unicodeplots.jl b/src/backends/unicodeplots.jl index b1f766ec..0812542f 100644 --- a/src/backends/unicodeplots.jl +++ b/src/backends/unicodeplots.jl @@ -6,15 +6,13 @@ warn_on_unsupported_args(::UnicodePlotsBackend, plotattributes::KW) = nothing # -------------------------------------------------------------------------------------- -function _canvas_map() - ( - braille = UnicodePlots.BrailleCanvas, - ascii = UnicodePlots.AsciiCanvas, - block = UnicodePlots.BlockCanvas, - dot = UnicodePlots.DotCanvas, - density = UnicodePlots.DensityCanvas, - ) -end +_canvas_map() = ( + braille = UnicodePlots.BrailleCanvas, + ascii = UnicodePlots.AsciiCanvas, + block = UnicodePlots.BlockCanvas, + dot = UnicodePlots.DotCanvas, + density = UnicodePlots.DensityCanvas, +) # do all the magic here... build it all at once, since we need to know about all the series at the very beginning function rebuildUnicodePlot!(plt::Plot, width, height) @@ -93,14 +91,7 @@ function rebuildUnicodePlot!(plt::Plot, width, height) end # add a single series -function addUnicodeSeries!( - o, - plotattributes, - addlegend::Bool, - xlim, - ylim; - rev_color_names = Dict(v => k for (k, v) in Colors.color_names), -) +function addUnicodeSeries!(o, plotattributes, addlegend::Bool, xlim, ylim) # get the function, or special handling for step/bar/hist st = plotattributes[:seriestype] if st == :histogram2d @@ -130,12 +121,15 @@ function addUnicodeSeries!( end label = addlegend ? plotattributes[:label] : "" - # if we happen to pass in allowed color symbols, great... otherwise let UnicodePlots decide - lc = convert(ARGB32, plotattributes[:linecolor]) - sym = Symbol( - get(rev_color_names, map(Int, (red(lc).i, green(lc).i, blue(lc).i)), nothing), - ) - color = sym in UnicodePlots.color_cycle ? sym : :auto + lc = plotattributes[:linecolor] + if typeof(lc) <: UnicodePlots.UserColorType + color = lc + elseif lc isa RGBA{Float64} + lc = convert(ARGB32, lc) + color = map(Int, (red(lc).i, green(lc).i, blue(lc).i)) + else + color = :auto + end # add the series x, y = RecipesPipeline.unzip( From 10802baf6e5e1ce06d45cfd484fa80334615c2da Mon Sep 17 00:00:00 2001 From: Josef Heinen Date: Sun, 22 Aug 2021 09:17:42 +0200 Subject: [PATCH 517/518] Added support for 3d surface meshes --- src/backends/gr.jl | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/backends/gr.jl b/src/backends/gr.jl index 8a9cc952..cdd15d5b 100644 --- a/src/backends/gr.jl +++ b/src/backends/gr.jl @@ -1947,19 +1947,23 @@ function gr_draw_surface(series, x, y, z, clims) e_kwargs = series[:extra_kwargs] st = series[:seriestype] if st === :surface - fillalpha = get_fillalpha(series) - fillcolor = get_fillcolor(series) - # NOTE: setting nx = 0 or ny = 0 disables GR.gridit interpolation - nx, ny = get(e_kwargs, :nx, 200), get(e_kwargs, :ny, 200) - if length(x) == length(y) == length(z) && nx > 0 && ny > 0 - x, y, z = GR.gridit(x, y, z, nx, ny) - end - d_opt = get(e_kwargs, :display_option, GR.OPTION_COLORED_MESH) - if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 - gr_set_transparency(fillcolor, fillalpha) - GR.surface(x, y, z, d_opt) + if ndims(x) == ndims(y) == ndims(z) == 2 + GR.gr3.surface(x', y', z, GR.OPTION_3D_MESH) else - GR.gr3.surface(x, y, z, d_opt) + fillalpha = get_fillalpha(series) + fillcolor = get_fillcolor(series) + # NOTE: setting nx = 0 or ny = 0 disables GR.gridit interpolation + nx, ny = get(e_kwargs, :nx, 200), get(e_kwargs, :ny, 200) + if length(x) == length(y) == length(z) && nx > 0 && ny > 0 + x, y, z = GR.gridit(x, y, z, nx, ny) + end + d_opt = get(e_kwargs, :display_option, GR.OPTION_COLORED_MESH) + if (!isnothing(fillalpha) && fillalpha < 1) || alpha(first(fillcolor)) < 1 + gr_set_transparency(fillcolor, fillalpha) + GR.surface(x, y, z, d_opt) + else + GR.gr3.surface(x, y, z, d_opt) + end end elseif st === :wireframe GR.setfillcolorind(0) From 0742d475bcb788c875022c4606a3f2022eb472e1 Mon Sep 17 00:00:00 2001 From: t-bltg Date: Sun, 22 Aug 2021 12:00:12 +0200 Subject: [PATCH 518/518] CI: julia-uploadcodecov is deprecated (#3761) --- .github/workflows/ci.yml | 9 +++++---- .github/workflows/codecov.yml | 2 ++ .github/workflows/{format.yml => format.yml.disabled} | 3 +-- 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/codecov.yml rename .github/workflows/{format.yml => format.yml.disabled} (86%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 584bd3fd..f43d86f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,10 +76,11 @@ jobs: $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots")' $TESTCMD -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes")' - - name: Codecov - uses: julia-actions/julia-uploadcodecov@latest - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + # Codecov + - uses: julia-actions/julia-processcoverage@v1 + - uses: codecov/codecov-action@v1 + with: + file: lcov.info Skip: if: "contains(github.event.head_commit.message, '[skip ci]')" diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml new file mode 100644 index 00000000..e00ce3d6 --- /dev/null +++ b/.github/workflows/codecov.yml @@ -0,0 +1,2 @@ +github_checks: + annotations: false diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml.disabled similarity index 86% rename from .github/workflows/format.yml rename to .github/workflows/format.yml.disabled index c7e074bb..9fae7be9 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml.disabled @@ -5,8 +5,7 @@ on: jobs: JuliaFormatter: - if: false - # if: "!contains(github.event.head_commit.message, '[skip ci]')" + if: "!contains(github.event.head_commit.message, '[skip ci]')" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2