Compare commits

...

86 Commits

Author SHA1 Message Date
t-bltg fd46fd4add 1.19.4 [skip ci] 2021-07-28 19:21:13 +02:00
t-bltg ac6c7fda11 Merge pull request #3724 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles [skip ci]
2021-07-28 19:09:51 +02:00
t-bltg 4755635fbd Update precompile_*.jl file [skip ci] 2021-07-28 17:08:56 +00:00
t-bltg c82a3c35ee Update SnoopCompile.yml 2021-07-28 18:47:15 +02:00
t-bltg 83bce6e895 Update SnoopCompile.yml 2021-07-28 18:45:27 +02:00
t-bltg 07c5019259 Merge pull request #3719 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-28 18:36:57 +02:00
t-bltg 093181d358 Merge pull request #3721 from t-bltg/inset2
Gaston: update inset_subplots
2021-07-28 18:18:14 +02:00
t-bltg 0085706f6f Gaston: update inset_subplots 2021-07-28 18:17:43 +02:00
t-bltg 31359610bd Merge pull request #3720 from t-bltg/inset
Gaston: fix lens example
2021-07-28 18:03:45 +02:00
t-bltg 34c6c76cb8 Gaston: fix lens example 2021-07-28 18:02:41 +02:00
t-bltg 734b301abc Update precompile_*.jl file 2021-07-28 15:38:02 +00:00
t-bltg e2907b973f Gaston: change @assert to @error 2021-07-28 17:17:44 +02:00
t-bltg 9e3ff15522 Skip more Gaston unsupported examples 2021-07-28 17:01:05 +02:00
t-bltg ce8255a462 Merge pull request #3717 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-28 16:53:53 +02:00
t-bltg aedb1fbb0b Update precompile_*.jl file 2021-07-28 13:12:51 +00:00
t-bltg cebcdfb3b5 Merge pull request #3711 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-28 14:52:57 +02:00
t-bltg b4632c8b48 Update precompile_*.jl file 2021-07-28 11:37:41 +00:00
t-bltg cd4ab0fd24 Merge pull request #3713 from bernd1995/bernd1995-gr-cbarfont
Added colorbar font attributes for GR
2021-07-28 13:18:25 +02:00
BerndR e3cd14944c Also added supported args 2021-07-28 12:54:11 +02:00
t-bltg cac0c8d8d3 Gaston: Remove missing debug leftovers 2021-07-28 12:38:49 +02:00
t-bltg 4f352d8e7c Update docs.yml 2021-07-28 12:07:52 +02:00
t-bltg aa32561fe8 Merge pull request #3709 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-28 11:59:22 +02:00
t-bltg f470e6a590 Update precompile_*.jl file 2021-07-28 09:53:56 +00:00
t-bltg ca0041639b Merge pull request #3699 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-28 11:32:17 +02:00
t-bltg 73208ac3bd Update precompile_*.jl file 2021-07-28 09:24:48 +00:00
t-bltg 0112e78c50 Merge pull request #3667 from t-bltg/gaston_add
Add new gnuplot capabilities (surface, contour, contour3d, scatter3d, wireframe, heatmap, ...)
2021-07-28 11:04:57 +02:00
t-bltg a3f209b100 Merge pull request #3681 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-27 21:19:02 +02:00
t-bltg 573c0cf1bf Merge pull request #3695 from bernd1995/bernd1995-gr-cbarfont
Added colorbar font settings for GR
2021-07-27 21:18:36 +02:00
t-bltg a0c939b7c7 Update gr.jl 2021-07-27 20:42:29 +02:00
BerndR f4ed35c3b6 Added colorbar font settings 2021-07-27 13:10:25 +02:00
t-bltg 50b0ae3b0f Update precompile_*.jl file 2021-07-27 10:04:34 +00:00
t-bltg f049f56e0b Fix building docs (JuliaPlots/Plots.jl/issues/3664) 2021-07-27 11:41:07 +02:00
t-bltg 6a459d4c22 Update docs.yml 2021-07-27 11:27:19 +02:00
t-bltg f576456617 Update docs.yml 2021-07-27 11:21:02 +02:00
t-bltg a7c4eef861 Update docs.yml 2021-07-26 22:28:25 +02:00
t-bltg 741684251c Update docs.yml 2021-07-26 22:11:21 +02:00
t-bltg 75bd9dbd01 Update docs.yml 2021-07-26 21:54:16 +02:00
t-bltg 42c60a4fd6 Update docs.yml 2021-07-26 21:47:57 +02:00
t-bltg 92caf2e15f Update docs.yml 2021-07-26 21:25:14 +02:00
t-bltg 99188f7a7e Update docs.yml 2021-07-26 20:56:29 +02:00
t-bltg a9d11cb2be Update docs.yml 2021-07-26 19:15:26 +02:00
t-bltg 8a3fd8f77e Merge pull request #3679 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-26 12:02:39 +02:00
t-bltg bb29abb8a4 Update precompile_*.jl file 2021-07-26 09:52:21 +00:00
t-bltg b801b2b272 explicit function return, decl - add comments - cleanup 2021-07-26 11:52:13 +02:00
t-bltg 371d9f8dd7 Merge pull request #3677 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-26 11:27:34 +02:00
t-bltg 49f8e48399 Update precompile_*.jl file 2021-07-25 22:25:42 +00:00
t-bltg dbc14ac761 Merge pull request #3675 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-26 00:04:03 +02:00
t-bltg c0e35f2358 add new gnuplot capabilities (surface, scatter3d, wireframe, ...) 2021-07-25 23:21:09 +02:00
t-bltg 3ce4e23f1b Update precompile_*.jl file 2021-07-25 19:05:52 +00:00
t-bltg d4d4d5732b Update docs.yml 2021-07-25 20:45:59 +02:00
t-bltg 86a732e9c5 Update docs.yml 2021-07-25 19:42:38 +02:00
t-bltg 530768064e Update docs.yml 2021-07-25 19:33:20 +02:00
t-bltg 89f59532c1 Merge pull request #3672 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-25 18:53:50 +02:00
t-bltg c41e586385 revert tol changes [skip ci] 2021-07-25 18:52:45 +02:00
t-bltg 8cbfe74863 Update docs.yml 2021-07-25 18:51:46 +02:00
t-bltg 27032a3e21 Update precompile_*.jl file 2021-07-25 16:33:31 +00:00
t-bltg 07a786a946 Update runtests.jl 2021-07-25 18:05:54 +02:00
t-bltg ad0f623386 Merge pull request #3670 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-25 17:59:45 +02:00
t-bltg 4fa567aa5b Update docs.yml 2021-07-25 17:58:39 +02:00
t-bltg c5ae99374a Update runtests.jl 2021-07-25 17:54:52 +02:00
t-bltg e79740d3bd Update precompile_*.jl file 2021-07-25 15:49:34 +00:00
t-bltg dbe6c8dc57 Update docs.yml 2021-07-25 17:47:15 +02:00
t-bltg 9bd075d06b Merge pull request #3655 from JuliaPlots/Test_SnoopCompile_AutoPR_refs/heads/master
[AUTO] Update precompiles
2021-07-25 17:29:39 +02:00
t-bltg 1c68a13d2c Update docs.yml 2021-07-25 17:24:17 +02:00
t-bltg 86d3097123 Merge pull request #3659 from daschw/gr-tickmarks
Make tickmarks the same length for both axes in GR 2D plots
2021-07-25 17:16:12 +02:00
t-bltg 6c2d969316 Update precompile_*.jl file 2021-07-25 12:54:31 +00:00
t-bltg 30e728213e Merge pull request #3666 from t-bltg/gaston_sp
Fix Gaston layout
2021-07-25 14:32:25 +02:00
t-bltg 4c9fd4e4b7 fix gaston layout 2021-07-25 10:52:20 +02:00
Daniel Schwabeneder 458d72b36b reduce tickmark length 2021-07-24 10:59:06 +02:00
t-bltg 26ddb62a27 Merge pull request #3665 from t-bltg/tol2
More strict on tolerance - drop tol for obsolete version
2021-07-23 20:41:49 +02:00
t-bltg 4aa9d74a28 more strict on tolerance - drop tol for obsolete version 2021-07-23 20:07:08 +02:00
t-bltg 878e590125 Merge pull request #3661 from t-bltg/rng
Use a stable RNG in fakedata
2021-07-23 19:50:54 +02:00
Daniel Schwabeneder 4e5b490b6c make tick length independent of plot size 2021-07-23 19:38:04 +02:00
t-bltg f3aa61293b change fakedata rng in tests 2021-07-23 14:47:16 +02:00
t-bltg cd06648ec3 Switch to Random.GLOBAL_RNG
Co-authored-by: Simon Christ <SimonChrist@gmx.de>
2021-07-23 11:02:22 +02:00
t-bltg fe7d957be3 use a stable RNG in fakedata 2021-07-22 13:00:07 +02:00
t-bltg a39582c06e Preempt IMG_TOL with env variable 2021-07-22 02:05:48 +02:00
t-bltg 86fbb39723 Merge pull request #3660 from t-bltg/anim_glob
Avoid using global variables in animation.jl
2021-07-22 01:57:03 +02:00
t-bltg 6f49ec112c avoid using global variables 2021-07-22 01:31:59 +02:00
t-bltg 6594b93126 Add gnuplot to the system dependencies (docs) 2021-07-21 23:49:13 +02:00
Daniel Schwabeneder f9a1e2e92d Merge pull request #3656 from JuliaPlots/compathelper/new_version/2021-07-21-00-05-42-160-4162151670
CompatHelper: bump compat for "GeometryBasics" to "0.4"
2021-07-21 22:52:16 +02:00
Daniel Schwabeneder e58bd8b657 fix minor tick length 2021-07-21 22:39:48 +02:00
Daniel Schwabeneder 5f31ab7169 fix gr tickmarks lengths for 2D plots 2021-07-21 22:30:56 +02:00
t-bltg b85468162c Skip failing gaston examples 2021-07-21 21:38:33 +02:00
t-bltg 0550033065 Prepare gaston (gnuplot) for PlotDocs.jl 2021-07-21 19:34:32 +02:00
github-actions[bot] 237fa4be7b CompatHelper: bump compat for "GeometryBasics" to "0.4" 2021-07-21 00:05:47 +00:00
14 changed files with 303 additions and 145 deletions
+2 -2
View File
@@ -75,8 +75,8 @@ jobs:
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Update precompile_*.jl file
title: "[AUTO] Update precompiles"
commit-message: Update precompile_*.jl file [skip ci]
title: "[AUTO] Update precompiles [skip ci]"
labels: SnoopCompile
branch: "Test_SnoopCompile_AutoPR_${{ github.ref }}"
+8 -3
View File
@@ -38,14 +38,19 @@ jobs:
texlive-latex-extra \
texlive-luatex \
ghostscript-x \
libgconf2-4
libgconf2-4 \
gnuplot
sudo fc-cache -vr
- 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()'
# 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()'
# 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'
+2 -2
View File
@@ -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"
@@ -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"
+24 -5
View File
@@ -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,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)})
@@ -99,7 +106,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}}})
@@ -118,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}})
@@ -135,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}})
@@ -179,6 +187,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}})
@@ -211,12 +221,12 @@ 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})
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}}})
@@ -234,6 +244,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),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})
@@ -257,6 +268,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(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})
@@ -281,11 +293,13 @@ 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_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}})
@@ -300,9 +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(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(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})
@@ -322,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})
@@ -333,9 +349,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{Float64, Int64, Int64},Tuple{Float64, 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{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})
Base.precompile(Tuple{typeof(stroke),Int64,Vararg{Any, N} where N})
+1 -1
View File
@@ -118,7 +118,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 +249,7 @@ end
# ---------------------------------------------------------
const CURRENT_BACKEND = CurrentBackend(:none)
const PLOTS_SEED = 1234
include("precompile_includer.jl")
+7 -6
View File
@@ -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
+4 -2
View File
@@ -762,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, 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.006, true)
add_major_or_minor_segments(minor_ticks, ax[:minorgrid], minorgrid_segments, 0.6 / ax_length, true)
end
end
end
+49 -35
View File
@@ -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,
@@ -623,44 +626,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
+165 -71
View File
@@ -4,15 +4,14 @@ 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]
xsize, ysize = plt.attr[:size]
G.set(termopts="""size $xsize,$ysize""")
state_handle = G.nexthandle() # for now all the figures will be kept
@@ -23,26 +22,39 @@ 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)
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
if length(plt.subplots) > 0
n2, sps = gaston_get_subplots(0, plt.subplots, plt.layout)
end
n = n1 + n2
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
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
@@ -55,42 +67,36 @@ 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]
termopts="""size $xsize,$ysize"""
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
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},)
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"""
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))
@@ -98,22 +104,53 @@ function _show(io::IO, mime::MIME{Symbol("image/png")},
nothing
end
_display(plt::Plot{GastonBackend}) = display(plt.o)
function _display(plt::Plot{GastonBackend})
display(plt.o)
end
#
# --------------------------------------------
# These functions are gaston specific
# --------------------------------------------
#
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(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]
end
end
return n, sps
end
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)
sz = max.(sz, size(sp))
end
end
return sz
end
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)
if sp === nothing
push!(plt.o.subplots, sp)
else
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
nothing
end
function gaston_add_series(plt::Plot{GastonBackend}, series::Series)
@@ -121,50 +158,75 @@ 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/contour 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)
nothing
end
function gaston_parse_series_args(series::Series)
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
push!(curveconf, """title "$(series[:label])" """)
return join(curveconf, " ")
end
@@ -172,8 +234,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)
@@ -189,7 +250,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"
@@ -207,7 +268,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 {"<title-text>"} {offset <offset>} {font "<font>{,<size>}"}{{textcolor | tc} {<colorspec> | 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
@@ -220,9 +288,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
@@ -239,7 +306,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][:]
@@ -253,15 +319,15 @@ 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)
leg = sp[:legend]
if !(sp[:legend] in(:none, :inline))
if sp[:legend] (:none, :inline)
if leg == :best
leg = :topright
end
@@ -289,7 +355,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)
@@ -305,11 +396,15 @@ function gaston_marker(marker)
marker == :pentagon && return 15
marker == :pixel && return 0
@warn("Unsupported marker $marker")
@warn "Unsupported marker $marker"
return 1
end
gaston_color(color) = """rgb "#$(hex(color, :rrggbb))" """
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))" """
end
function gaston_linestyle(style)
style == :solid && return "1"
@@ -324,7 +419,6 @@ function gaston_enclose_tick_string(tick_string)
return tick_string
end
base, power = split(tick_string, "^")
power = string("{", power, "}")
return string(base, "^", power)
+8 -3
View File
@@ -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)
title = if isa(sp[:colorbar_title], PlotText)
sp[:colorbar_title]
else
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
+18 -2
View File
@@ -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
@@ -1243,6 +1242,23 @@ _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, # 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
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
],
)
+4 -2
View File
@@ -303,10 +303,12 @@ function convert_to_polar(theta, r, r_extrema = ignorenan_extrema(r))
x, y
end
function fakedata(sz...)
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(size(y,2))
y[r,:] = 0.95 * vec(y[r-1,:]) + randn(rng, size(y,2))
end
y
end
+3 -2
View File
@@ -6,14 +6,14 @@ 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
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(
@@ -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
+8 -9
View File
@@ -1,4 +1,4 @@
using Plots: guidefont, series_annotations
using Plots: guidefont, series_annotations, PLOTS_SEED
import ImageMagick
using VisualRegressionTests
using Plots
@@ -13,7 +13,6 @@ import GeometryBasics
using Dates
using RecipesBase
@testset "Plotly standalone" begin
@test_nowarn Plots._init_ijulia_plotting()
@test Plots.plotly_local_file_path[] === nothing
@@ -68,30 +67,30 @@ 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 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
# @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 +108,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