Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: JuliaPlots/Plots.jl
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.15.0
Choose a base ref
...
head repository: JuliaPlots/Plots.jl
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing with 28,755 additions and 15,786 deletions.
  1. +13 −0 .JuliaFormatter.toml
  2. +6 −0 .gitattributes
  3. +5 −0 .github/FUNDING.yml
  4. +33 −0 .github/ISSUE_TEMPLATE/bug.md
  5. +10 −0 .github/ISSUE_TEMPLATE/feature request.md
  6. +13 −0 .github/PULL_REQUEST_TEMPLATE.md
  7. +11 −0 .github/dependabot.yml
  8. +17 −0 .github/workflows/CompatHelper.yml
  9. +31 −0 .github/workflows/TagBot.yml
  10. +32 −0 .github/workflows/benchmark.yml
  11. +146 −0 .github/workflows/ci.yml
  12. +33 −0 .github/workflows/docs.yml
  13. +58 −0 .github/workflows/format_check.yml
  14. +35 −0 .github/workflows/format_pr.yml
  15. +10 −1 .gitignore
  16. +0 −59 .travis.yml
  17. +785 −0 .zenodo.json
  18. +11 −0 CITATION.bib
  19. +245 −13 NEWS.md
  20. +134 −0 Project.toml
  21. +30 −10 README.md
  22. +0 −15 REQUIRE
  23. +22 −0 RecipesBase/LICENSE.md
  24. +18 −0 RecipesBase/Project.toml
  25. +147 −0 RecipesBase/README.md
  26. +621 −0 RecipesBase/src/RecipesBase.jl
  27. +183 −0 RecipesBase/test/runtests.jl
  28. +19 −0 RecipesPipeline/LICENSE
  29. +26 −0 RecipesPipeline/Project.toml
  30. +34 −0 RecipesPipeline/README.md
  31. +152 −0 RecipesPipeline/src/RecipesPipeline.jl
  32. +219 −0 RecipesPipeline/src/api.jl
  33. +124 −0 RecipesPipeline/src/group.jl
  34. +49 −0 RecipesPipeline/src/plot_recipe.jl
  35. +31 −0 RecipesPipeline/src/recipes.jl
  36. +146 −0 RecipesPipeline/src/series.jl
  37. +72 −0 RecipesPipeline/src/series_recipe.jl
  38. +80 −0 RecipesPipeline/src/type_recipe.jl
  39. +324 −0 RecipesPipeline/src/user_recipe.jl
  40. +225 −0 RecipesPipeline/src/utils.jl
  41. +117 −0 RecipesPipeline/test/runtests.jl
  42. +49 −0 RecipesPipeline/test/test_group.jl
  43. +0 −39 appveyor.yml
  44. +5 −0 benchmark/Project.toml
  45. +10 −0 benchmark/benchmarks.jl
  46. +13 −0 codecov.yml
  47. +0 −8 deps/build.jl
  48. +36 −0 ext/FileIOExt.jl
  49. +20 −0 ext/GeometryBasicsExt.jl
  50. +79 −0 ext/IJuliaExt.jl
  51. +32 −0 ext/ImageInTerminalExt.jl
  52. +345 −0 ext/UnitfulExt.jl
  53. +0 −4 pushtomaster.sh
  54. +69 −195 src/Plots.jl
  55. +212 −82 src/animation.jl
  56. +198 −136 src/arg_desc.jl
  57. +1,547 −857 src/args.jl
  58. +813 −342 src/axes.jl
  59. +1,596 −131 src/backends.jl
  60. +739 −0 src/backends/deprecated/pgfplots.jl
  61. +1,640 −0 src/backends/deprecated/pyplot.jl
  62. +726 −0 src/backends/gaston.jl
  63. +0 −1,533 src/backends/glvisualize.jl
  64. +1,804 −1,097 src/backends/gr.jl
  65. +411 −540 src/backends/hdf5.jl
  66. +302 −298 src/backends/inspectdr.jl
  67. +0 −516 src/backends/pgfplots.jl
  68. +1,387 −0 src/backends/pgfplotsx.jl
  69. +894 −556 src/backends/plotly.jl
  70. +31 −0 src/backends/plotlybase.jl
  71. +38 −113 src/backends/plotlyjs.jl
  72. +0 −1,340 src/backends/pyplot.jl
  73. +1,531 −0 src/backends/pythonplot.jl
  74. +351 −177 src/backends/unicodeplots.jl
  75. +23 −18 src/backends/web.jl
  76. +129 −0 src/colorbars.jl
  77. +502 −402 src/components.jl
  78. +96 −0 src/consts.jl
  79. +0 −208 src/deprecated/backends/bokeh.jl
  80. +0 −744 src/deprecated/backends/gadfly.jl
  81. +0 −93 src/deprecated/backends/gadfly_shapes.jl
  82. +0 −186 src/deprecated/backends/immerse.jl
  83. +0 −308 src/deprecated/backends/qwt.jl
  84. +0 −272 src/deprecated/backends/winston.jl
  85. +0 −1,067 src/deprecated/color_gradients.jl
  86. +0 −415 src/deprecated/colors.jl
  87. +0 −63 src/deprecated/contours.jl
  88. +0 −99 src/deprecated/series_args.jl
  89. +1,392 −454 src/examples.jl
  90. +151 −0 src/init.jl
  91. +273 −387 src/layouts.jl
  92. +57 −0 src/legend.jl
  93. +179 −239 src/output.jl
  94. +322 −273 src/pipeline.jl
  95. +160 −151 src/plot.jl
  96. +70 −31 src/plotattr.jl
  97. +21 −0 src/plotmeasures.jl
  98. +0 −3 src/precompile.jl
  99. +969 −431 src/recipes.jl
  100. +0 −608 src/series.jl
  101. +580 −0 src/shorthands.jl
  102. +0 −53 src/subplots.jl
  103. +36 −62 src/themes.jl
  104. +128 −37 src/types.jl
  105. +931 −732 src/utils.jl
  106. +4 −13 src/backends/template.jl → templates/backends.jl
  107. +1 −0 test/.gitignore
  108. +0 −8 test/REQUIRE
  109. +0 −101 test/imgcomp.jl
  110. +0 −24 test/install_wkhtmltoimage.sh
  111. +67 −175 test/runtests.jl
  112. +0 −36 test/snoop.jl
  113. +127 −0 test/test_animations.jl
  114. +130 −0 test/test_args.jl
  115. +278 −0 test/test_axes.jl
  116. +231 −0 test/test_backends.jl
  117. +314 −0 test/test_components.jl
  118. +59 −0 test/test_contours.jl
  119. +35 −0 test/test_dates.jl
  120. +104 −0 test/test_defaults.jl
  121. +24 −0 test/test_hdf5plots.jl
  122. +158 −0 test/test_layouts.jl
  123. +354 −0 test/test_misc.jl
  124. +121 −0 test/test_output.jl
  125. +477 −0 test/test_pgfplotsx.jl
  126. +66 −0 test/test_plotly.jl
  127. +24 −0 test/test_quality.jl
  128. +156 −0 test/test_recipes.jl
  129. +142 −0 test/test_shorthands.jl
  130. +412 −0 test/test_unitful.jl
  131. +307 −0 test/test_utils.jl
  132. +0 −31 test/travis_commands.jl
13 changes: 13 additions & 0 deletions .JuliaFormatter.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
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_in_kwargs = true
remove_extra_newlines = true
whitespace_ops_in_indices = true
long_to_short_function_def = true
short_to_long_function_def = false
annotate_untyped_fields_with_any = false
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -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
5 changes: 5 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# These are supported funding model platforms

github: JuliaPlots
open_collective: plotsjl

33 changes: 33 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
name: Bug report
about: Create a bug report
title: "[BUG]"
labels: bug
assignees: ''

---

<!-- Please search existing issues to avoid duplicates. -->

## Details


### Backends

This bug occurs on ( insert `x` below )

Backend | yes | no | untested
-------------|-----|-----|---------
gr (default) | | |
pythonplot | | |
plotlyjs | | |
pgfplotsx | | |
unicodeplots | | |
inspectdr | | |
gaston | | |

### Versions

Plots.jl version:
Backend version (`]st -m <backend(s)>`):
Output of `versioninfo()`:
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/feature request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: Feature request
about: Suggest a feature or enhancement
title: "[FR]"
labels: feature request
assignees: ''

---

Please search existing issues to avoid duplicates.
13 changes: 13 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Plots is in a 2.0 transition phase. Consider (also) targeting the v2 branch with this change -->
## Description

## Attribution
- [ ] I am listed in [.zenodo.json](https://github.com/JuliaPlots/Plots.jl/blob/2463eb9f8065c52ed8314f6e541664c5b9db88d2/.zenodo.json) (see https://github.com/JuliaPlots/Plots.jl/issues/3503)

## Things to consider
- [ ] Does it work on log scales?
- [ ] Does it work in layouts?
- [ ] Does it work in recipes?
- [ ] Does it work with multiple series in one call?
- [ ] PR includes or updates tests?
- [ ] PR includes or updates documentation?
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "github-actions" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
17 changes: 17 additions & 0 deletions .github/workflows/CompatHelper.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: CompatHelper

on:
schedule:
- cron: '00 00 * * *'

jobs:
CompatHelper:
runs-on: ubuntu-latest
steps:
- name: Pkg.add("CompatHelper")
run: julia -e 'using Pkg; Pkg.add("CompatHelper")'
- name: CompatHelper.main()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMPATHELPER_PRIV: ${{ secrets.COMPATHELPER_PRIV }} # optional
run: julia -e 'using CompatHelper; CompatHelper.main()'
31 changes: 31 additions & 0 deletions .github/workflows/TagBot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: TagBot
on:
issue_comment:
types:
- created
workflow_dispatch:
inputs:
lookback:
default: 3
permissions:
actions: read
checks: read
contents: write
deployments: read
issues: read
discussions: read
packages: read
pages: read
pull-requests: read
repository-projects: read
security-events: read
statuses: read
jobs:
TagBot:
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'
runs-on: ubuntu-latest
steps:
- uses: JuliaRegistries/TagBot@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
ssh: ${{ secrets.TAGBOT_KEY }}
32 changes: 32 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: benchmarks

on:
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
Benchmark:
if: "!contains(github.event.head_commit.message, '[skip ci]')"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@latest

- 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"'

- 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 }}
146 changes: 146 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
name: ci

on:
pull_request:
push:
branches: [master]

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
ci:
if: "!contains(github.event.head_commit.message, '[skip ci]')"
env:
GKS_ENCODING: "utf8"
GKSwstype: "nul"
JULIA_CONDAPKG_BACKEND: "MicroMamba"
MPLBACKEND: "agg"
name: Julia ${{ matrix.version }} - ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
version:
- '1.6' # LTS (minimal declared julia compat in `Project.toml`)
- 'lts'
- '1' # latest stable
experimental:
- false
os: [ubuntu-latest, windows-latest, macos-13]
arch: [x64]
include:
# In its place, test Julia 1.6 on x86 macOS
- os: macos-latest
experimental: false
arch: aarch64
version: '1'
- os: ubuntu-latest
experimental: false
prefix: xvfb-run # julia-actions/julia-runtest/blob/master/README.md
- os: ubuntu-latest
experimental: false
prefix: xvfb-run
version: '1.7' # only test intermediate release on `ubuntu` to spare resources
- os: ubuntu-latest
experimental: false
prefix: xvfb-run
version: '1.8' # only test intermediate release on `ubuntu` to spare resources
- os: ubuntu-latest
experimental: false
prefix: xvfb-run
version: '1.9' # only test intermediate release on `ubuntu` to spare resources
- os: ubuntu-latest
experimental: true
prefix: xvfb-run
version: 'pre' # upcoming julia version, next `rc`

steps:
- uses: actions/checkout@v4

- name: Ubuntu LaTeX dependencies
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get -y update
sudo apt-get -y install gnuplot poppler-utils texlive-{latex-base,latex-extra,luatex} g++
sudo fc-cache -vr
- name: Set LD_PRELOAD
if: startsWith(matrix.os, 'ubuntu')
run: echo "LD_PRELOAD=$(g++ --print-file-name=libstdc++.so)" >> $GITHUB_ENV

- uses: julia-actions/setup-julia@latest
with:
version: ${{ matrix.version }}
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@latest

- name: Run upstream RecipesBase & RecipesPipeline tests
shell: julia --project=@. --color=yes {0}
run: |
using Pkg
foreach(("RecipesBase", "RecipesPipeline")) do name
Pkg.develop(path=name); Pkg.test(name; coverage=true)
end
- name: Install conda based matplotlib
shell: julia --project=@. --color=yes {0}
run: |
using Pkg; Pkg.add("CondaPkg")
using CondaPkg; CondaPkg.resolve()
libgcc = if Sys.islinux()
# see discourse.julialang.org/t/glibcxx-version-not-found/82209/8
# julia 1.8.3 is built with libstdc++.so.6.0.29, so we must restrict to this version (gcc 11.3.0, not gcc 12.2.0)
# see gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
specs = Dict(
v"3.4.29" => ">=11.1,<12.1",
v"3.4.30" => ">=12.1,<13.1",
v"3.4.31" => ">=13.1,<14.1",
v"3.4.32" => ">=14.1,<15.1",
v"3.4.33" => ">=15.1,<16.1",
# ... keep this up-to-date with gcc 16
)[Base.BinaryPlatforms.detect_libstdcxx_version()]
("libgcc-ng$specs", "libstdcxx-ng$specs")
else
()
end
CondaPkg.PkgREPL.add([libgcc..., "matplotlib"])
CondaPkg.status()
- uses: julia-actions/julia-runtest@latest
timeout-minutes: 60
with:
prefix: ${{ matrix.prefix }} # for `xvfb-run`

- name: Run downstream tests
if: startsWith(matrix.os, 'ubuntu')
shell: xvfb-run julia --project=@. --color=yes {0}
run: |
using Pkg
foreach(("StatsPlots", "GraphRecipes")) do name
Pkg.activate(tempdir())
foreach(path -> Pkg.develop(; path), ("RecipesBase", "RecipesPipeline", "."))
Pkg.add(name); Pkg.test(name; coverage=true)
end
- uses: julia-actions/julia-processcoverage@latest
if: startsWith(matrix.os, 'ubuntu')
with:
directories: RecipesBase/src,RecipesPipeline/src,src
- uses: codecov/codecov-action@v4
if: startsWith(matrix.os, 'ubuntu')
with:
file: lcov.info

Skip:
if: contains(github.event.head_commit.message, '[skip ci]')
runs-on: ubuntu-latest
steps:
- name: Skip CI 🚫
run: echo skip ci
33 changes: 33 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: docs

on:
workflow_dispatch:
push:
branches: [master]
tags: '*'

jobs:
Build_docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: JuliaPlots/PlotDocs.jl
- uses: julia-actions/setup-julia@latest
- name: Cache artifacts
uses: actions/cache@v4
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: Build documentation
env:
PYTHON: ""
DOCUMENTER_KEY: ${{secrets.DOCUMENTER_KEY}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: bash docs/ci_build.sh
Loading