Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7d6e93af3 | ||
|
|
058983165e | ||
|
|
97036e689e | ||
|
|
d3589db840 | ||
|
|
15bd9c537d | ||
|
|
27764bbc67 | ||
|
|
788e28d18a | ||
|
|
d544647b1b | ||
|
|
3cb81d6d04 | ||
|
|
61f2d825b6 | ||
|
|
5df64bd45b | ||
|
|
23567964e7 | ||
|
|
0c7f7ba011 | ||
|
|
4731477920 |
@@ -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'
|
||||
+428
@@ -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"
|
||||
}
|
||||
+1
-1
@@ -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"
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
[![][docs-img]][docs-url]
|
||||
[](https://codecov.io/gh/JuliaPlots/Plots.jl)
|
||||
|
||||
[](https://doi.org/10.5281/zenodo.4725318)
|
||||
[](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)
|
||||
|
||||
+29
-6
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -479,13 +480,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]),
|
||||
"mesh/rows" => length(unique(opt[:x])), # unique if its all vectors
|
||||
"mesh/cols" => length(unique(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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
+24
-4
@@ -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
|
||||
|
||||
+5
-4
@@ -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
|
||||
|
||||
+9
-5
@@ -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
|
||||
|
||||
@@ -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]),
|
||||
|
||||
Reference in New Issue
Block a user