diff --git a/.circleci/config.yml b/.circleci/config.yml
index 5b2fc3cdd761..ea1def566898 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,7 +1,7 @@
# Circle CI configuration file
# https://circleci.com/docs/
-version: 2
+version: 2.1
###########################################
@@ -39,9 +39,9 @@ fonts-run: &fonts-install
mkdir -p ~/.local/share/fonts
wget -nc https://github.com/google/fonts/blob/master/ofl/felipa/Felipa-Regular.ttf?raw=true -O ~/.local/share/fonts/Felipa-Regular.ttf || true
if [ ! -f ~/.local/share/fonts/Humor-Sans.ttf ]; then
- wget https://mirrors.kernel.org/ubuntu/pool/universe/f/fonts-humor-sans/fonts-humor-sans_1.0-1_all.deb
+ wget http://http.us.debian.org/debian/pool/main/f/fonts-humor-sans/fonts-humor-sans_1.0-3_all.deb
mkdir tmp
- dpkg -x fonts-humor-sans_1.0-1_all.deb tmp
+ dpkg -x fonts-humor-sans_1.0-3_all.deb tmp
cp tmp/usr/share/fonts/truetype/humor-sans/Humor-Sans.ttf ~/.local/share/fonts
rm -rf tmp
else
@@ -115,10 +115,6 @@ jobs:
- store_artifacts:
path: doc/build/html
- - run:
- name: "Built documentation is available at:"
- command: echo "${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/doc/build/html/index.html"
-
docs-python37:
docker:
- image: circleci/python:3.7
@@ -141,9 +137,6 @@ jobs:
- store_artifacts:
path: doc/build/html
- - run:
- name: "Built documentation is available at:"
- command: echo "${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/doc/build/html/index.html"
- add_ssh_keys:
fingerprints:
diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml
new file mode 100644
index 000000000000..4bee5580800f
--- /dev/null
+++ b/.github/workflows/circleci.yml
@@ -0,0 +1,12 @@
+on: [status]
+jobs:
+ circleci_artifacts_redirector_job:
+ runs-on: ubuntu-latest
+ name: Run CircleCI artifacts redirector
+ steps:
+ - name: GitHub Action step
+ uses: larsoner/circleci-artifacts-redirector-action@master
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ artifact-path: 0/doc/build/html/index.html
+ circleci-jobs: docs-python36,docs-python37
diff --git a/README.rst b/README.rst
index a4ff0e3e1914..186951c0baf0 100644
--- a/README.rst
+++ b/README.rst
@@ -23,20 +23,19 @@
.. _Gitter: https://gitter.im/matplotlib/matplotlib
.. |NUMFocus| image:: https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A
-.. _NUMFocus: http://www.numfocus.org
-
+.. _NUMFocus: https://www.numfocus.org
.. |GitTutorial| image:: https://img.shields.io/badge/PR-Welcome-%23FF8300.svg?
.. _GitTutorial: https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project
-.. image:: doc/_static/logo2.png
+.. image:: https://matplotlib.org/_static/logo2.svg
Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.
-Check out our `home page `_ for more information.
+Check out our `home page `_ for more information.
-.. image:: doc/_static/readme_preview.png
+.. image:: https://matplotlib.org/_static/readme_preview.png
Matplotlib produces publication-quality figures in a variety of hardcopy formats
and interactive environments across platforms. Matplotlib can be used in Python scripts,
@@ -48,7 +47,7 @@ Install
=======
For installation instructions and requirements, see `INSTALL.rst `_ or the
-`install `_ documentation.
+`install `_ documentation.
Test
====
@@ -67,7 +66,7 @@ You've worked out a way to fix it – even better!
You want to tell us about it – best of all!
-Start at the `contributing guide `_!
+Start at the `contributing guide `_!
Contact
=======
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index a0dfea9c1ee0..b5ccf41a788e 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -52,7 +52,12 @@ steps:
prerelease: true
condition: and(succeeded(), eq(variables['python.version'], 'Pre'))
+- task: NuGetToolInstaller@0
+ displayName: 'Use latest available Nuget'
+ condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
+
- bash: |
+ set -e
case "$(python -c 'import sys; print(sys.platform)')" in
linux)
sudo apt-get update
@@ -83,10 +88,10 @@ steps:
win32)
nuget install libpng-msvc14-x64 -ExcludeVersion -OutputDirectory "$(build.BinariesDirectory)"
nuget install zlib-msvc14-x64 -ExcludeVersion -OutputDirectory "$(build.BinariesDirectory)"
- echo ##vso[task.prependpath]$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\bin_release
- echo ##vso[task.prependpath]$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\bin_release
- echo ##vso[task.setvariable variable=CL]/I$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\include /I$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\include
- echo ##vso[task.setvariable variable=LINK]/LIBPATH:$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\lib_release /LIBPATH:$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\lib_release
+ echo "##vso[task.prependpath]$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\bin_release"
+ echo "##vso[task.prependpath]$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\bin_release"
+ echo "##vso[task.setvariable variable=CL]/I$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\include /I$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\include"
+ echo "##vso[task.setvariable variable=LINK]/LIBPATH:$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\lib_release /LIBPATH:$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\lib_release"
;;
*)
exit 1
diff --git a/doc/_templates/sidebar_announcement.html b/doc/_templates/sidebar_announcement.html
index 57a0f225a3b6..f8fa4d8a5efb 100644
--- a/doc/_templates/sidebar_announcement.html
+++ b/doc/_templates/sidebar_announcement.html
@@ -1,5 +1,5 @@
diff --git a/doc/api/matplotlib_configuration_api.rst b/doc/api/matplotlib_configuration_api.rst
index e497d80b7c12..f786824b4c3c 100644
--- a/doc/api/matplotlib_configuration_api.rst
+++ b/doc/api/matplotlib_configuration_api.rst
@@ -43,6 +43,8 @@ Default values and styling
.. autofunction:: matplotlib_fname
+.. autofunction:: get_data_path
+
Logging
=======
diff --git a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst
index c61c9cca3b03..0003a0643158 100644
--- a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst
+++ b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst
@@ -290,3 +290,10 @@ from the public API in future versions.
``style.core.is_style_file`` and ``style.core.iter_style_files``
are deprecated.
+
+The ``datapath`` rcParam
+~~~~~~~~~~~~~~~~~~~~~~~~
+Use `.get_data_path` instead. (The rcParam is deprecated because it cannot be
+meaningfully set by an end user.) The rcParam had no effect from 3.2.0, but
+was deprecated only in 3.2.1. In 3.2.1+ if ``'datapath'`` is set in a
+``matplotlibrc`` file it will be respected, but this behavior will be removed in 3.3.
diff --git a/doc/devel/contributing.rst b/doc/devel/contributing.rst
index 0f5909d697b9..73d5124c60b9 100644
--- a/doc/devel/contributing.rst
+++ b/doc/devel/contributing.rst
@@ -174,6 +174,8 @@ environment is set up properly::
Contributing code
=================
+.. _how-to-contribute:
+
How to contribute
-----------------
@@ -222,7 +224,7 @@ want to consider sending an email to the mailing list for more visibility.
* `Git documentation `_
* `Git-Contributing to a Project `_
* `Introduction to GitHub `_
- * :ref:`development-workflow`.
+ * :ref:`development-workflow`
* :ref:`using-git`
Contributing pull requests
@@ -316,21 +318,35 @@ This helps the contributor become familiar with the contribution
workflow, and for the core devs to become acquainted with the contributor;
besides which, we frequently underestimate how easy an issue is to solve!
-.. _other_ways_to_contribute:
-Other ways to contribute
-=========================
+.. _contributing_documentation:
+Contributing documentation
+==========================
Code is not the only way to contribute to Matplotlib. For instance,
documentation is also a very important part of the project and often doesn't
get as much attention as it deserves. If you find a typo in the documentation,
or have made improvements, do not hesitate to send an email to the mailing
-list or submit a GitHub pull request. Full documentation can be found under
-the doc/ directory.
+list or submit a GitHub pull request. To make a pull request, refer to the
+guidelines outlined in :ref:`how-to-contribute`.
+
+Full documentation can be found under the :file:`doc/`, :file:`tutorials/`,
+and :file:`examples/` directories.
+
+.. seealso::
+ * :ref:`documenting-matplotlib`
+
+
+.. _other_ways_to_contribute:
+
+Other ways to contribute
+=========================
It also helps us if you spread the word: reference the project from your blog
-and articles or link to it from your website!
+and articles or link to it from your website! If Matplotlib contributes to a
+project that leads to a scientific publication, please follow the
+:doc:`/citing` guidelines.
.. _coding_guidelines:
diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst
index 2c467b3753b2..c1704df1e6de 100644
--- a/doc/devel/documenting_mpl.rst
+++ b/doc/devel/documenting_mpl.rst
@@ -18,16 +18,17 @@ Getting started
General file structure
----------------------
-All documentation is built from the :file:`doc/` directory. This directory
-contains both reStructuredText (ReST_; ``.rst``) files that contain pages in
-the documentation and configuration files for Sphinx_.
+All documentation is built from the :file:`doc/`, :file:`tutorials/`, and
+:file:`examples/` directories. The :file:`doc/` directory contains
+configuration files for Sphinx and reStructuredText (ReST_; ``.rst``) files
+that are rendered to documentation pages.
-The ``.rst`` files are kept in :file:`doc/users`,
-:file:`doc/devel`, :file:`doc/api` and :file:`doc/faq`. The main entry point is
-:file:`doc/index.rst`, which pulls in the :file:`index.rst` file for the users
-guide, developers guide, api reference, and FAQs. The documentation suite is
-built as a single document in order to make the most effective use of cross
-referencing.
+
+The main entry point is :file:`doc/index.rst`, which pulls in the
+:file:`index.rst` file for the users guide (:file:`doc/users`), developers
+guide (:file:`doc/devel`), api reference (:file:`doc/api`), and FAQs
+(:file:`doc/faq`). The documentation suite is built as a single document in
+order to make the most effective use of cross referencing.
Sphinx_ also creates ``.rst`` files that are staged in :file:`doc/api` from
the docstrings of the classes in the Matplotlib library. Except for
@@ -35,28 +36,50 @@ the docstrings of the classes in the Matplotlib library. Except for
documentation is built.
Similarly, the contents of :file:`doc/gallery` and :file:`doc/tutorials` are
-generated by the `Sphinx Gallery`_ from the sources in :file:`examples` and
-:file:`tutorials`. These sources consist of python scripts that have ReST_
-documentation built into their comments. Don't directly edit the
-``.rst`` files in :file:`doc/gallery` and :file:`doc/tutorials` as they are
-regenerated when the documentation are built.
+generated by the `Sphinx Gallery`_ from the sources in :file:`examples/` and
+:file:`tutorials/`. These sources consist of python scripts that have ReST_
+documentation built into their comments.
+
+.. note::
+
+ Don't directly edit the ``.rst`` files in :file:`doc/gallery`,
+ :file:`doc/tutorials`, and :file:`doc/api` (excepting
+ :file:`doc/api/api_changes/`). Sphinx_ regenerates files in these
+ directories when building documentation.
Installing dependencies
-----------------------
The documentation for Matplotlib is generated from reStructuredText (ReST_)
-using the Sphinx_ documentation generation tool. There are several extra
-requirements that are needed to build the documentation. They are listed in
-:file:`doc-requirements.txt`, which is shown below:
+using the Sphinx_ documentation generation tool. To build the documentation
+you will need to (1) set up an appropriate Python environment and (2)
+separately install LaTeX and Graphviz.
+
+To (1) set up an appropriate Python environment for building the
+documentation, you should:
+
+* create a clean virtual environment with no existing Matplotlib
+ installation
+* install the Python packages required for Matplotlib
+* install the additional Python packages required to build the documentation
+
+There are several extra python packages that are needed to build the
+documentation. They are listed in :file:`doc-requirements.txt`, which is
+shown below:
.. include:: ../../requirements/doc/doc-requirements.txt
:literal:
+To (2) set up LaTeX and Graphviz dependencies you should:
+
+* install a minimal working LaTeX distribution
+* install the LaTeX packages cm-super and dvipng
+* install `Graphviz `_
+
.. note::
- * You'll need a minimal working LaTeX distribution for many examples to run.
- * `Graphviz `_ is not a Python package,
- and needs to be installed separately.
+ The documentation will not build without LaTeX and Graphviz. These are not
+ Python packages and must be installed separately.
Building the docs
-----------------
diff --git a/doc/index.rst b/doc/index.rst
index 19a3c9e1ca9c..6e091938979a 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -198,7 +198,7 @@ Open source
Matplotlib is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit
charity in the United States. NumFOCUS provides Matplotlib with
fiscal, legal, and administrative support to help ensure the health
-and sustainability of the project. Visit `numfocus.org `_ for more
+and sustainability of the project. Visit `numfocus.org `_ for more
information.
Donations to Matplotlib are managed by NumFOCUS. For donors in the
diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst
index d538ba605eb8..5f127bc364bd 100644
--- a/doc/users/github_stats.rst
+++ b/doc/users/github_stats.rst
@@ -3,1151 +3,99 @@
GitHub Stats
============
-GitHub stats for 2019/05/18 - 2020/03/03 (tag: v3.1.0)
+GitHub stats for 2020/03/03 - 2020/03/17 (tag: v3.2.0)
These lists are automatically generated, and may be incomplete or contain duplicates.
-We closed 125 issues and merged 839 pull requests.
-The full list can be seen `on GitHub `__
+We closed 11 issues and merged 52 pull requests.
+The full list can be seen `on GitHub `__
+and `on GitHub `__
-The following 164 authors contributed 3455 commits.
+The following 12 authors contributed 154 commits.
-* Abhinav Sagar
-* Abhinuv Nitin Pitale
-* Adam Gomaa
-* Akshay Nair
-* Alex Rudy
-* Alexander Rudy
+* Amy Roberts
* Antony Lee
-* Ao Liu (frankliuao)
-* Ardie Orden
-* Ashley Whetter
-* Ben Root
-* Benjamin Bengfort
-* Benjamin Congdon
-* Bharat123rox
-* Bingyao Liu
-* Brigitta Sipocz
-* Bruno Pagani
-* brut
-* Carsten
-* Carsten Schelp
-* chaoyi1
-* Cho Yin Yong
-* Chris Barnes
-* Christer Jensen
-* Christian Brodbeck
-* Christoph Pohl
-* chuanzhu xu
-* Colin
-* Cong Ma
-* dabana
-* DanielMatu
-* David Chudzicki
-* David Stansby
-* Deng Tian
-* depano.carlos@gmail.com
-* djdt
-* donchanee
-* Dora Fraeman Caswell
-* Elan Ernest
* Elliott Sales de Andrade
-* Emlyn Price
-* Eric Firing
-* Eric Wieser
-* Federico Ariza
-* Filipe Fernandes
-* fourpoints
-* fredrik-1
-* Gazing
-* Greg Lucas
* hannah
-* Harshal Prakash Patankar
-* Ian Hincks
-* Ian Thomas
-* ilopata1
-* ImportanceOfBeingErnest
-* Jacobson Okoro
-* James A. Bednar
-* Jarrod Millman
-* Javad
-* jb-leger
-* Jean-Benoist Leger
-* jfbu
-* joaonsg
+* Hugo van Kemenade
* Jody Klymak
-* Joel Frederico
-* Johannes H. Jensen
-* Johnny Gill
-* Jonas Camillus Jeppesen
-* Jorge Moraleda
-* Joscha Reimer
-* Joseph Albert
-* Jouni K. Seppänen
-* Joy Bhalla
-* Juanjo Bazán
-* Julian Mehne
-* kolibril13
-* krishna katyal
-* ksunden
* Kyle Sunden
-* Larry Bradley
-* lepuchi
-* luftek
-* Maciej Dems
-* Maik Riechert
-* Marat K
-* Mark Wolf
-* Mark Wolfman
-* Matte
-* Matthias Bussonnier
-* Matthias Geier
-* MatthieuDartiailh
-* Max Chen
-* Max Humber
-* Max Shinn
-* MeeseeksMachine
-* Michael Droettboom
-* Mingkai Dong
-* MinRK
-* miquelastein
-* Molly Rossow
-* Nathan Goldbaum
-* nathan78906
-* Nelle Varoquaux
-* Nick White
-* Nicolas Courtemanche
-* Nikita Kniazev
-* njwhite
-* O. Castany
-* Oliver Natt
-* Olivier
-* Om Sitapara
-* omsitapara23
-* Oriol (Prodesk)
-* Oriol Abril
-* Patrick Feiring
-* Patrick Shriwise
-* PatrickFeiring
-* Paul
-* Paul Hobson
-* Paul Hoffman
-* Paul Ivanov
-* Peter Schutt
-* pharshalp
-* Phil Elson
-* Philippe Pinard
-* Rebecca W Perry
-* ResidentMario
-* Richard Ji-Cathriner
-* RoryIAngus
-* Ryan May
-* S. Fukuda
-* Samesh
-* Samesh Lakhotia
-* sasoripathos
-* SBCV
-* Sebastian Bullinger
-* Sergey Royz
-* Siddhesh Poyarekar
-* Simon Legner
-* SojiroFukuda
-* Steve Dower
-* Taras
-* Ted Drain
-* teddyrendahl
+* MarcoGorelli
+* Maximilian Nöthe
+* Sandro Tosi
* Thomas A Caswell
-* Thomas Hisch
-* Thomas Robitaille
-* Till Hoffmann
-* tillahoffmann
* Tim Hoffmann
-* Tom Flannaghan
-* Travis CI
-* V. Armando Solé
-* Vincent L.M. Mazoyer
-* Viraj Mohile
-* Wafa Soofi
-* Warren Weckesser
-* y1thof
-* yeo
-* Yong Cho Yin
-* Yuya
-* Zhili (Jerry) Pan
-* zhoubecky
-* Zulko
GitHub issues and pull requests:
-Pull Requests (839):
-
-* :ghpull:`16626`: Updated Readme + Setup.py for PyPa
-* :ghpull:`16627`: ci: Restore nuget install step on Azure for v3.2.x.
-* :ghpull:`16625`: v3.2.x: Make Azure use local FreeType.
-* :ghpull:`16622`: Backport PR #16613 on branch v3.2.x (Fix edge-case in preprocess_data, if label_namer is optional and unset.)
-* :ghpull:`16613`: Fix edge-case in preprocess_data, if label_namer is optional and unset.
-* :ghpull:`16612`: Backport PR #16605: CI: tweak the vm images we use on azure
-* :ghpull:`16611`: Backport PR #16585 on branch v3.2.x (Fix _preprocess_data for Py3.9.)
-* :ghpull:`16605`: CI: tweak the vm images we use on azure
-* :ghpull:`16585`: Fix _preprocess_data for Py3.9.
-* :ghpull:`16541`: Merge pull request #16404 from jklymak/fix-add-base-symlognorm
-* :ghpull:`16542`: Backport PR #16006: Ignore pos in StrCategoryFormatter.__call__ to di…
-* :ghpull:`16543`: Backport PR #16532: Document default value of save_count parameter in…
-* :ghpull:`16532`: Document default value of save_count parameter in FuncAnimation
-* :ghpull:`16526`: Backport PR #16480 on v.3.2.x: Re-phrase doc for bottom kwarg to hist
-* :ghpull:`16404`: FIX: add base kwarg to symlognor
-* :ghpull:`16518`: Backport PR #16502 on branch v3.2.x (Document theta getters/setters)
-* :ghpull:`16519`: Backport PR #16513 on branch v3.2.x (Add more FreeType tarball hashes.)
-* :ghpull:`16513`: Add more FreeType tarball hashes.
-* :ghpull:`16502`: Document theta getters/setters
-* :ghpull:`16506`: Backport PR #16505 on branch v3.2.x (Add link to blog to front page)
-* :ghpull:`16505`: Add link to blog to front page
-* :ghpull:`16480`: Re-phrase doc for bottom kwarg to hist
-* :ghpull:`16494`: Backport PR #16490 on branch v3.2.x (Fix some typos on the front page)
-* :ghpull:`16489`: Backport PR #16272 on branch v3.2.x (Move mplot3d autoregistration api changes to 3.2.)
-* :ghpull:`16490`: Fix some typos on the front page
-* :ghpull:`16465`: Backport PR #16450 on branch v3.2.x (Fix interaction between sticky_edges and shared axes.)
-* :ghpull:`16466`: Backport PR #16392: FIX colorbars for Norms that do not have a scale.
-* :ghpull:`16392`: FIX colorbars for Norms that do not have a scale.
-* :ghpull:`16450`: Fix interaction between sticky_edges and shared axes.
-* :ghpull:`16453`: Backport PR #16452 on branch v3.2.x (Don't make InvertedLogTransform inherit from deprecated base class.)
-* :ghpull:`16452`: Don't make InvertedLogTransform inherit from deprecated base class.
-* :ghpull:`16436`: Backport PR #16435 on branch v3.2.x (Reword intro to colors api docs.)
-* :ghpull:`16435`: Reword intro to colors api docs.
-* :ghpull:`16399`: Backport PR #16396 on branch v3.2.x (font_manager docs cleanup.)
-* :ghpull:`16396`: font_manager docs cleanup.
-* :ghpull:`16397`: Backport PR #16394 on branch v3.2.x (Mark inkscape 1.0 as unsupported (at least for now).)
-* :ghpull:`16394`: Mark inkscape 1.0 as unsupported (at least for now).
-* :ghpull:`16286`: Fix cbars for different norms
-* :ghpull:`16385`: Backport PR #16226 on branch v3.2.x: Reorganize intro section on main page
-* :ghpull:`16383`: Backport PR #16379 on branch v3.2.x (FIX: catch on message content, not module)
-* :ghpull:`16226`: Reorganize intro section on main page
-* :ghpull:`16364`: Backport PR #16344 on branch v3.2.x (Cast vmin/vmax to floats before nonsingular-expanding them.)
-* :ghpull:`16344`: Cast vmin/vmax to floats before nonsingular-expanding them.
-* :ghpull:`16360`: Backport PR #16347 on branch v3.2.x (FIX: catch warnings from pandas in cbook._check_1d)
-* :ghpull:`16357`: Backport PR #16330 on branch v3.2.x (Clearer signal handling)
-* :ghpull:`16349`: Backport PR #16255 on branch v3.2.x (Move version info to sidebar)
-* :ghpull:`16346`: Backport PR #16298 on branch v3.2.x (Don't recursively call draw_idle when updating artists at draw time.)
-* :ghpull:`16331`: Backport PR #16308 on branch v3.2.x (CI: Use Ubuntu Bionic compatible package names)
-* :ghpull:`16332`: Backport PR #16308 on v3.2.x: CI: Use Ubuntu Bionic compatible package names
-* :ghpull:`16324`: Backport PR #16323 on branch v3.2.x (Add sphinx doc for Axis.axis_name.)
-* :ghpull:`16325`: Backport PR #15462 on v3.2.x: Simplify azure setup.
-* :ghpull:`16323`: Add sphinx doc for Axis.axis_name.
-* :ghpull:`16321`: Backport PR #16311 on branch v3.2.x (don't override non-Python signal handlers)
-* :ghpull:`16308`: CI: Use Ubuntu Bionic compatible package names
-* :ghpull:`16306`: Backport PR #16300 on branch v3.2.x (Don't default to negative radii in polar plot.)
-* :ghpull:`16305`: Backport PR #16250 on branch v3.2.x (Fix zerolen intersect)
-* :ghpull:`16300`: Don't default to negative radii in polar plot.
-* :ghpull:`16278`: Backport PR #16273 on branch v3.2.x (DOC: Changing the spelling of co-ordinates.)
-* :ghpull:`16260`: Backport PR #16259 on branch v3.2.x (TST: something changed in pytest 5.3.3 that breaks our qt fixtures)
-* :ghpull:`16259`: TST: something changed in pytest 5.3.3 that breaks our qt fixtures
-* :ghpull:`16238`: Backport PR #16235 on branch v3.2.x (FIX: AttributeError in TimerBase.start)
-* :ghpull:`16211`: DOC: ValidateInterval was deprecated in 3.2, not 3.1
-* :ghpull:`16224`: Backport PR #16223 on branch v3.2.x (Added DNA Features Viewer description + screenshot in docs/thirdparty/)
-* :ghpull:`16223`: Added DNA Features Viewer description + screenshot in docs/thirdparty/
-* :ghpull:`16222`: Backport PR #16212 on branch v3.2.x (Fix deprecation from #13544)
-* :ghpull:`16212`: Fix deprecation from #13544
-* :ghpull:`16207`: Backport PR #16189 on branch v3.2.x (MNT: set default canvas when un-pickling)
-* :ghpull:`16189`: MNT: set default canvas when un-pickling
-* :ghpull:`16179`: Backport PR #16175: FIX: ignore axes that aren't visible
-* :ghpull:`16175`: FIX: ignore axes that aren't visible
-* :ghpull:`16168`: Backport PR #16166 on branch v3.2.x (Add badge for citing 3.1.2)
-* :ghpull:`16148`: Backport PR #16128 on branch v3.2.x (CI: Do not use nbformat 5.0.0/5.0.1 for testing)
-* :ghpull:`16145`: Backport PR #16053 on branch v3.2.x (Fix v_interval setter)
-* :ghpull:`16128`: CI: Do not use nbformat 5.0.0/5.0.1 for testing
-* :ghpull:`16135`: Backport PR #16112 on branch v3.2.x (CI: Fail when failed to install dependencies)
-* :ghpull:`16132`: Backport PR #16126 on branch v3.2.x (TST: test_fork: Missing join)
-* :ghpull:`16124`: Backport PR #16105 on branch v3.2.x (Fix legend dragging.)
-* :ghpull:`16122`: Backport PR #16113 on branch v3.2.x (Renderer Graphviz inheritance diagrams as svg)
-* :ghpull:`16105`: Fix legend dragging.
-* :ghpull:`16113`: Renderer Graphviz inheritance diagrams as svg
-* :ghpull:`16112`: CI: Fail when failed to install dependencies
-* :ghpull:`16119`: Backport PR #16065 on branch v3.2.x (Nicer formatting of community aspects on front page)
-* :ghpull:`16074`: Backport PR #16061 on branch v3.2.x (Fix deprecation message for axes_grid1.colorbar.)
-* :ghpull:`16093`: Backport PR #16079 on branch v3.2.x (Fix restuctured text formatting)
-* :ghpull:`16094`: Backport PR #16080 on branch v3.2.x (Cleanup docstrings in backend_bases.py)
-* :ghpull:`16086`: FIX: use supported attribute to check pillow version
-* :ghpull:`16084`: Backport PR #16077 on branch v3.2.x (Fix some typos)
-* :ghpull:`16077`: Fix some typos
-* :ghpull:`16079`: Fix restuctured text formatting
-* :ghpull:`16080`: Cleanup docstrings in backend_bases.py
-* :ghpull:`16061`: Fix deprecation message for axes_grid1.colorbar.
-* :ghpull:`16006`: Ignore pos in StrCategoryFormatter.__call__ to display correct label in the preview window
-* :ghpull:`16056`: Backport PR #15864 on branch v3.2.x ([Add the info of 'sviewgui' in thirdparty package])
-* :ghpull:`15864`: Add 'sviewgui' to list of thirdparty packages
-* :ghpull:`16055`: Backport PR #16037 on branch v3.2.x (Doc: use empty ScalarMappable for colorbars with no associated image.)
-* :ghpull:`16054`: Backport PR #16048 on branch v3.2.x (Document that colorbar() takes a label kwarg.)
-* :ghpull:`16037`: Doc: use empty ScalarMappable for colorbars with no associated image.
-* :ghpull:`16048`: Document that colorbar() takes a label kwarg.
-* :ghpull:`16042`: Backport PR #16031 on branch v3.2.x (Fix docstring of hillshade().)
-* :ghpull:`16033`: Backport PR #16028 on branch v3.2.x (Prevent FigureCanvasQT_draw_idle recursively calling itself.)
-* :ghpull:`16021`: Backport PR #16007 on branch v3.2.x (Fix search on nested pages)
-* :ghpull:`16019`: Backport PR #15735 on branch v3.2.x (Cleanup some mplot3d docstrings.)
-* :ghpull:`15987`: Backport PR #15886 on branch v3.2.x (Fix Annotation using different units and different coords on x/y.)
-* :ghpull:`15886`: Fix Annotation using different units and different coords on x/y.
-* :ghpull:`15984`: Backport PR #15970 on branch v3.2.x (Process clip paths the same way as regular Paths.)
-* :ghpull:`15970`: Process clip paths the same way as regular Paths.
-* :ghpull:`15963`: Backport PR #15937 on branch v3.2.x (Don't hide exceptions in FontManager.addfont.)
-* :ghpull:`15956`: Backport PR #15901 on branch v3.2.x (Update backend_nbagg for removal of Gcf._activeQue.)
-* :ghpull:`15937`: Don't hide exceptions in FontManager.addfont.
-* :ghpull:`15959`: Backport PR #15953 on branch v3.2.x (Update donation link)
-* :ghpull:`15901`: Update backend_nbagg for removal of Gcf._activeQue.
-* :ghpull:`15954`: Backport PR #15914 on branch v3.2.x (Example for sigmoid function with horizontal lines)
-* :ghpull:`15914`: Example for sigmoid function with horizontal lines
-* :ghpull:`15930`: Backport PR #15925 on branch v3.2.x (Optimize setting units to None when they're already None.)
-* :ghpull:`15925`: Optimize setting units to None when they're already None.
-* :ghpull:`15915`: Backport PR #15903 on branch v3.2.x (Correctly handle non-affine transData in Collection.get_datalim.)
-* :ghpull:`15903`: Correctly handle non-affine transData in Collection.get_datalim.
-* :ghpull:`15908`: Backport PR #15857 on branch v3.2.x (LassoSelection shouldn't useblit on canvas not supporting blitting.)
-* :ghpull:`15857`: LassoSelection shouldn't useblit on canvas not supporting blitting.
-* :ghpull:`15905`: Backport PR #15763 on branch v3.2.x (Skip webagg test if tornado is not available.)
-* :ghpull:`15882`: Backport PR #15859 on branch v3.2.x (Doc: Move search field into nav bar)
-* :ghpull:`15868`: Backport PR #15848 on branch v3.2.x: Cleanup environment variables FAQ
-* :ghpull:`15872`: Backport PR #15869 on branch v3.2.x (Update markers docs.)
-* :ghpull:`15869`: Update markers docs.
-* :ghpull:`15867`: Backport PR #15789 on branch v3.2.x (Cleanup xticks/yticks docstrings.)
-* :ghpull:`15870`: Backport PR #15865 on branch v3.2.x (Fix a typo)
-* :ghpull:`15871`: Backport PR #15824 on branch v3.2.x (Document doc style for default values)
-* :ghpull:`15824`: Document doc style for default values
-* :ghpull:`15865`: Fix a typo
-* :ghpull:`15789`: Cleanup xticks/yticks docstrings.
-* :ghpull:`15862`: Backport PR #15851 on branch v3.2.x (ffmpeg is available on default ubuntu packages now)
-* :ghpull:`15848`: Cleanup environment variables FAQ.
-* :ghpull:`15844`: Backport PR #15841 on branch v3.2.x (DOC: specify the expected shape in the Collection.set_offset)
-* :ghpull:`15841`: DOC: specify the expected shape in the Collection.set_offset
-* :ghpull:`15837`: Backport PR #15799 on branch v3.2.x (Improve display of author names on PDF titlepage of matplotlib own docs)
-* :ghpull:`15799`: Improve display of author names on PDF titlepage of matplotlib own docs
-* :ghpull:`15831`: Backport PR #15829 on branch v3.2.x (In C extensions, use FutureWarning, not DeprecationWarning.)
-* :ghpull:`15829`: In C extensions, use FutureWarning, not DeprecationWarning.
-* :ghpull:`15818`: Backport PR #15619 on branch v3.2.x (Improve zorder demo)
-* :ghpull:`15819`: Backport PR #15601 on branch v3.2.x (Fix FontProperties conversion to/from strings)
-* :ghpull:`15601`: Fix FontProperties conversion to/from strings
-* :ghpull:`15619`: Improve zorder demo
-* :ghpull:`15810`: Backport PR #15809 on branch v3.2.x (Exclude artists from legend using label attributte)
-* :ghpull:`15809`: Exclude artists from legend using label attributte
-* :ghpull:`15808`: Backport PR #15513 on branch v3.2.x (Separate plots using #### in make_room_for_ylabel_using_axesgrid.py)
-* :ghpull:`15513`: Separate plots using #### in make_room_for_ylabel_using_axesgrid.py
-* :ghpull:`15807`: Backport PR #15791 on branch v3.2.x (Cleanup backend_bases docstrings.)
-* :ghpull:`15791`: Cleanup backend_bases docstrings.
-* :ghpull:`15803`: Backport PR #15795 on branch v3.2.x (Remove incorrect statement re2: colorbars in image tutorial.)
-* :ghpull:`15795`: Remove incorrect statement re: colorbars in image tutorial.
-* :ghpull:`15794`: Backport PR #15793 on branch v3.2.x (fix a couple typos in tutorials)
-* :ghpull:`15793`: fix a couple typos in tutorials
-* :ghpull:`15774`: Backport PR #15748 on branch v3.2.x (Fix incorrect macro in FT2Font setup.)
-* :ghpull:`15748`: Fix incorrect macro in FT2Font setup.
-* :ghpull:`15759`: Backport PR #15751 on branch v3.2.x (Modernize FAQ entry for plt.show().)
-* :ghpull:`15762`: Backport PR #15752 on branch v3.2.x (Update boxplot/violinplot faq.)
-* :ghpull:`15755`: Backport PR #15661 on branch v3.2.x (Document scope of 3D scatter depthshading.)
-* :ghpull:`15742`: Backport PR #15729 on branch v3.2.x (Catch correct parse errror type for dateutil >= 2.8.1)
-* :ghpull:`15738`: Backport PR #15737 on branch v3.2.x (Fix env override in WebAgg backend test.)
-* :ghpull:`15724`: Backport PR #15718 on branch v3.2.x (Update donation link)
-* :ghpull:`15716`: Backport PR #15683 on branch v3.2.x (Cleanup dates.py docstrings.)
-* :ghpull:`15683`: Cleanup dates.py docstrings.
-* :ghpull:`15688`: Backport PR #15682 on branch v3.2.x (Make histogram_bin_edges private.)
-* :ghpull:`15682`: Make histogram_bin_edges private.
-* :ghpull:`15666`: Backport PR #15649 on branch v3.2.x (Fix searchindex.js loading when ajax fails (because e.g. CORS in embedded iframes))
-* :ghpull:`15669`: Backport PR #15654 on branch v3.2.x (Fix some broken links.)
-* :ghpull:`15660`: Backport PR #15647 on branch v3.2.x (Update some links)
-* :ghpull:`15653`: Backport PR #15623 on branch v3.2.x (Docstring for Artist.mouseover)
-* :ghpull:`15623`: Docstring for Artist.mouseover
-* :ghpull:`15634`: Backport PR #15626 on branch v3.2.x (Note minimum supported version for fontconfig.)
-* :ghpull:`15633`: Backport PR #15620 on branch v3.2.x (TST: Increase tolerance of some tests for aarch64)
-* :ghpull:`15626`: Note minimum supported version for fontconfig.
-* :ghpull:`15632`: Backport PR #15627 on branch v3.2.x (Make it easier to test various animation writers in examples.)
-* :ghpull:`15620`: TST: Increase tolerance of some tests for aarch64
-* :ghpull:`15627`: Make it easier to test various animation writers in examples.
-* :ghpull:`15618`: Backport PR #15613 on branch v3.2.x (Revert "Don't bother with manually resizing the Qt main window.")
-* :ghpull:`15613`: Revert "Don't bother with manually resizing the Qt main window."
-* :ghpull:`15593`: Backport PR #15590 on branch v3.2.x (Rename numpy to NumPy in docs.)
-* :ghpull:`15590`: Rename numpy to NumPy in docs.
-* :ghpull:`15588`: Backport PR #15478 on branch v3.2.x (Make ConciseDateFormatter obey timezone)
-* :ghpull:`15478`: Make ConciseDateFormatter obey timezone
-* :ghpull:`15583`: Backport PR #15512 on branch v3.2.x
-* :ghpull:`15584`: Backport PR #15579 on branch v3.2.x (Remove matplotlib.sphinxext.tests from __init__.py)
-* :ghpull:`15579`: Remove matplotlib.sphinxext.tests from __init__.py
-* :ghpull:`15577`: Backport PR #14705 on branch v3.2.x (Correctly size non-ASCII characters in agg backend.)
-* :ghpull:`14705`: Correctly size non-ASCII characters in agg backend.
-* :ghpull:`15572`: Backport PR #15452 on branch v3.2.x (Improve example for tick formatters)
-* :ghpull:`15570`: Backport PR #15561 on branch v3.2.x (Update thirdparty scalebar)
-* :ghpull:`15452`: Improve example for tick formatters
-* :ghpull:`15545`: Backport PR #15429 on branch v3.2.x (Fix OSX build on azure)
-* :ghpull:`15544`: Backport PR #15537 on branch v3.2.x (Add a third party package in the doc: matplotlib-scalebar)
-* :ghpull:`15561`: Update thirdparty scalebar
-* :ghpull:`15567`: Backport PR #15562 on branch v3.2.x (Improve docsting of AxesImage)
-* :ghpull:`15562`: Improve docsting of AxesImage
-* :ghpull:`15565`: Backport PR #15556 on branch v3.2.x (Fix test suite compat with ghostscript 9.50.)
-* :ghpull:`15556`: Fix test suite compat with ghostscript 9.50.
-* :ghpull:`15560`: Backport PR #15553 on branch v3.2.x (DOC: add cache-buster query string to css path)
-* :ghpull:`15552`: Backport PR #15528 on branch v3.2.x (Declutter home page)
-* :ghpull:`15554`: Backport PR #15523 on branch v3.2.x (numpydoc AxesImage)
-* :ghpull:`15523`: numpydoc AxesImage
-* :ghpull:`15549`: Backport PR #15516 on branch v3.2.x (Add logo like font)
-* :ghpull:`15543`: Backport PR #15539 on branch v3.2.x (Small cleanups to backend docs.)
-* :ghpull:`15542`: Backport PR #15540 on branch v3.2.x (axisartist tutorial fixes.)
-* :ghpull:`15537`: Add a third party package in the doc: matplotlib-scalebar
-* :ghpull:`15541`: Backport PR #15533 on branch v3.2.x (Use svg instead of png for website logo)
-* :ghpull:`15539`: Small cleanups to backend docs.
-* :ghpull:`15540`: axisartist tutorial fixes.
-* :ghpull:`15538`: Backport PR #15535 on branch v3.2.x (Avoid really long lines in event handling docs.)
-* :ghpull:`15535`: Avoid really long lines in event handling docs.
-* :ghpull:`15531`: Backport PR #15527 on branch v3.2.x (Clarify imshow() docs concerning scaling and grayscale images)
-* :ghpull:`15527`: Clarify imshow() docs concerning scaling and grayscale images
-* :ghpull:`15522`: Backport PR #15500 on branch v3.2.x (Improve antialiasing example)
-* :ghpull:`15524`: Backport PR #15499 on branch v3.2.x (Do not show path in font table example)
-* :ghpull:`15525`: Backport PR #15498 on branch v3.2.x (Simplify matshow example)
-* :ghpull:`15498`: Simplify matshow example
-* :ghpull:`15499`: Do not show path in font table example
-* :ghpull:`15521`: Backport PR #15519 on branch v3.2.x (FIX: fix anti-aliasing zoom bug)
-* :ghpull:`15500`: Improve antialiasing example
-* :ghpull:`15519`: FIX: fix anti-aliasing zoom bug
-* :ghpull:`15510`: Backport PR #15489 on branch v3.2.x (DOC: adding main nav to site)
-* :ghpull:`15495`: Backport PR #15486 on branch v3.2.x (Fixes an error in the documentation of Ellipse)
-* :ghpull:`15488`: Backport PR #15372 on branch v3.2.x (Add example for drawstyle)
-* :ghpull:`15490`: Backport PR #15487 on branch v3.2.x (Fix window not always raised in Qt example)
-* :ghpull:`15487`: Fix window not always raised in Qt example
-* :ghpull:`15372`: Add example for drawstyle
-* :ghpull:`15485`: Backport PR #15454 on branch v3.2.x (Rewrite Anscombe's quartet example)
-* :ghpull:`15483`: Backport PR #15480 on branch v3.2.x (Fix wording in [packages] section of setup.cfg)
-* :ghpull:`15454`: Rewrite Anscombe's quartet example
-* :ghpull:`15480`: Fix wording in [packages] section of setup.cfg
-* :ghpull:`15477`: Backport PR #15464 on branch v3.2.x (Remove unused code (remainder from #15453))
-* :ghpull:`15471`: Backport PR #15460 on branch v3.2.x (Fix incorrect value check in axes_grid.)
-* :ghpull:`15456`: Backport PR #15453 on branch v3.2.x (Improve example for tick locators)
-* :ghpull:`15457`: Backport PR #15450 on branch v3.2.x (API: rename DivergingNorm to TwoSlopeNorm)
-* :ghpull:`15450`: API: rename DivergingNorm to TwoSlopeNorm
-* :ghpull:`15434`: In imsave, let pnginfo have precedence over metadata.
-* :ghpull:`15445`: Backport PR #15439 on branch v3.2.x (DOC: mention discourse main page)
-* :ghpull:`15425`: Backport PR #15422 on branch v3.2.x (FIX: typo in attribute lookup)
-* :ghpull:`15449`: DOC: fix build
-* :ghpull:`15429`: Fix OSX build on azure
-* :ghpull:`15420`: Backport PR #15380 on branch v3.2.x (Update docs of BoxStyle)
-* :ghpull:`15380`: Update docs of BoxStyle
-* :ghpull:`15300`: CI: use python -m to make sure we are using the pip/pytest we want
-* :ghpull:`15414`: Backport PR #15413 on branch v3.2.x (catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399)
-* :ghpull:`15413`: catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399
-* :ghpull:`15406`: Backport PR #15347 on branch v3.2.x (Fix axes.hist bins units)
-* :ghpull:`15405`: Backport PR #15391 on branch v3.2.x (Increase fontsize in inheritance graphs)
-* :ghpull:`15347`: Fix axes.hist bins units
-* :ghpull:`15391`: Increase fontsize in inheritance graphs
-* :ghpull:`15389`: Backport PR #15379 on branch v3.2.x (Document formatting strings in the docs)
-* :ghpull:`15379`: Document formatting strings in the docs
-* :ghpull:`15386`: Backport PR #15385 on branch v3.2.x (Reword hist() doc.)
-* :ghpull:`15385`: Reword hist() doc.
-* :ghpull:`15377`: Backport PR #15357 on branch v3.2.x (Add 'step' and 'barstacked' to histogram_histtypes demo)
-* :ghpull:`15357`: Add 'step' and 'barstacked' to histogram_histtypes demo
-* :ghpull:`15366`: Backport PR #15364 on branch v3.2.x (DOC: fix typo in colormap docs)
-* :ghpull:`15362`: Backport PR #15350 on branch v3.2.x (Don't generate double-reversed cmaps ("viridis_r_r", ...).)
-* :ghpull:`15360`: Backport PR #15258 on branch v3.2.x (Don't fallback to view limits when autoscale()ing no data.)
-* :ghpull:`15350`: Don't generate double-reversed cmaps ("viridis_r_r", ...).
-* :ghpull:`15258`: Don't fallback to view limits when autoscale()ing no data.
-* :ghpull:`15299`: Backport PR #15296 on branch v3.2.x (Fix typo/bug from 18cecf7)
-* :ghpull:`15327`: Backport PR #15326 on branch v3.2.x (List of minimal versions of dependencies)
-* :ghpull:`15326`: List of minimal versions of dependencies
-* :ghpull:`15317`: Backport PR #15291 on branch v3.2.x (Remove error_msg_qt from backend_qt4.)
-* :ghpull:`15316`: Backport PR #15283 on branch v3.2.x (Don't default axes_grid colorbar locator to MaxNLocator.)
-* :ghpull:`15291`: Remove error_msg_qt from backend_qt4.
-* :ghpull:`15283`: Don't default axes_grid colorbar locator to MaxNLocator.
-* :ghpull:`15315`: Backport PR #15308 on branch v3.2.x (Doc: Add close event to list of events)
-* :ghpull:`15308`: Doc: Add close event to list of events
-* :ghpull:`15312`: Backport PR #15307 on branch v3.2.x (DOC: center footer)
-* :ghpull:`15307`: DOC: center footer
-* :ghpull:`15276`: Backport PR #15271 on branch v3.2.x (Fix font weight validation)
-* :ghpull:`15279`: Backport PR #15252 on branch v3.2.x (Mention labels and milestones in PR review guidelines)
-* :ghpull:`15252`: Mention labels and milestones in PR review guidelines
-* :ghpull:`15268`: Backport PR #15266 on branch v3.2.x (Embedding in Tk example: Fix toolbar being clipped.)
-* :ghpull:`15269`: Backport PR #15267 on branch v3.2.x (added multi-letter example to mathtext tutorial)
-* :ghpull:`15267`: added multi-letter example to mathtext tutorial
-* :ghpull:`15266`: Embedding in Tk example: Fix toolbar being clipped.
-* :ghpull:`15243`: Move some new API changes to the correct place
-* :ghpull:`15245`: Fix incorrect calls to warn_deprecated.
-* :ghpull:`15239`: Composite against white, not the savefig.facecolor rc, in print_jpeg.
-* :ghpull:`15227`: contains_point() docstring fixes
-* :ghpull:`15242`: Cleanup widgets docstrings.
-* :ghpull:`14889`: Support pixel-by-pixel alpha in imshow.
-* :ghpull:`14928`: Logit scale nonsingular
-* :ghpull:`14998`: Fix nonlinear spine positions & inline Spine._calc_offset_transform into get_spine_transform.
-* :ghpull:`15231`: Doc: Do not write default for non-existing rcParams
-* :ghpull:`15222`: Cleanup projections/__init__.py.
-* :ghpull:`15228`: Minor docstring style cleanup
-* :ghpull:`15237`: Cleanup widgets.py.
-* :ghpull:`15229`: Doc: Fix Bbox and BboxBase links
-* :ghpull:`15235`: Kill FigureManagerTk._num.
-* :ghpull:`15234`: Drop mention of msinttypes in Windows build.
-* :ghpull:`15224`: Avoid infinite loop when switching actions in qt backend.
-* :ghpull:`15230`: Doc: Remove hard-documented rcParams defaults
-* :ghpull:`15149`: pyplot.style.use() to accept pathlib.Path objects as arguments
-* :ghpull:`15220`: Correctly format floats passed to pgf backend.
-* :ghpull:`15216`: Update docstrings of contains_point(s) methods
-* :ghpull:`15209`: Exclude s-g generated files from flake8 check.
-* :ghpull:`15204`: PEP8ify some variable names.
-* :ghpull:`15196`: Force html4 writer for sphinx 2
-* :ghpull:`13544`: Improve handling of subplots spanning multiple gridspec cells.
-* :ghpull:`15194`: Trivial style fixes.
-* :ghpull:`15202`: Deprecate the renderer parameter to Figure.tight_layout.
-* :ghpull:`15195`: Fix integers being passed as length to quiver3d.
-* :ghpull:`15180`: Add some more internal links to 3.2.0 what's new
-* :ghpull:`13510`: Change Locator MAXTICKS checking to emitting a log at WARNING level.
-* :ghpull:`15184`: Mark missing_references extension as parallel read safe
-* :ghpull:`15150`: Autodetect whether pgf can use \includegraphics[interpolate].
-* :ghpull:`15163`: 3.2.0 API changes page
-* :ghpull:`15176`: What's new for 3.2.0
-* :ghpull:`11947`: Ensure streamplot Euler step is always called when going out of bounds.
-* :ghpull:`13702`: Deduplicate methods shared between Container and Artist.
-* :ghpull:`15169`: TST: verify warnings fail the test suite
-* :ghpull:`14888`: Replace some polar baseline images by check_figures_equal.
-* :ghpull:`15027`: More readability improvements on axis3d.
-* :ghpull:`15171`: Add useful error message when trying to add Slider to 3DAxes
-* :ghpull:`13775`: Doc: Scatter Hist example update
-* :ghpull:`15164`: removed a typo
-* :ghpull:`15152`: Support for shorthand hex colors.
-* :ghpull:`15159`: Follow up on #14424 for docstring
-* :ghpull:`14424`: ENH: Add argument size validation to quiver.
-* :ghpull:`15137`: DOC: add example to power limit API change note
-* :ghpull:`15144`: Improve local page contents CSS
-* :ghpull:`15143`: Restore doc references.
-* :ghpull:`15124`: Replace parameter lists with square brackets
-* :ghpull:`13077`: fix FreeType build on Azure
-* :ghpull:`15123`: Improve categorical example
-* :ghpull:`15134`: Fix missing references in doc build.
-* :ghpull:`13937`: Use PYTHONFAULTHANDLER to switch on the Python fault handler.
-* :ghpull:`13452`: Replace axis_artist.AttributeCopier by normal inheritance.
-* :ghpull:`15045`: Resize canvas when changing figure size
-* :ghpull:`15122`: Fixed app creation in qt5 backend (see #15100)
-* :ghpull:`15099`: Add lightsource parameter to bar3d
-* :ghpull:`14876`: Inline some afm parsing code.
-* :ghpull:`15119`: Deprecate a validator for a deprecated rcParam value.
-* :ghpull:`15121`: Fix Stacked bar graph example
-* :ghpull:`15113`: Cleanup layout_from_subplotspec.
-* :ghpull:`13543`: Remove zip_safe=False flag from setup.py.
-* :ghpull:`12860`: ENH: LogLocator: check for correct dimension of subs added
-* :ghpull:`14349`: Replace ValidateInterval by simpler specialized validators.
-* :ghpull:`14352`: Remove redundant is_landscape kwarg from backend_ps helpers.
-* :ghpull:`15087`: Pass gid to renderer
-* :ghpull:`14703`: Don't bother with manually resizing the Qt main window.
-* :ghpull:`14833`: Reuse TexManager implementation in convert_psfrags.
-* :ghpull:`14893`: Update layout.html for sphinx themes
-* :ghpull:`15098`: Simplify symlog range determination logic
-* :ghpull:`15112`: Cleanup legend() docstring.
-* :ghpull:`15108`: Fix doc build and resync matplotlibrc.template with actual defaults.
-* :ghpull:`14940`: Fix text kerning calculations and some FT2Font cleanup
-* :ghpull:`15082`: Privatize font_manager.JSONEncoder.
-* :ghpull:`15106`: Update docs of GridSpec
-* :ghpull:`14832`: ENH:made default tick formatter to switch to scientific notation earlier
-* :ghpull:`15086`: Style fixes.
-* :ghpull:`15073`: Add entry for blume to thirdparty package index
-* :ghpull:`15095`: Simplify _png extension by handling file open/close in Python.
-* :ghpull:`15092`: MNT: Add test for aitoff-projection
-* :ghpull:`15101`: Doc: fix typo in contour doc
-* :ghpull:`14624`: Fix axis inversion with loglocator and logitlocator.
-* :ghpull:`15088`: Fix more doc references.
-* :ghpull:`15063`: Add Comic Neue as a fantasy font.
-* :ghpull:`14867`: Propose change to PR merging policy.
-* :ghpull:`15068`: Add FontManager.addfont to register fonts at specific paths.
-* :ghpull:`13397`: Deprecate axes_grid1.colorbar (in favor of matplotlib's own).
-* :ghpull:`14521`: Move required_interactive_framework to canvas class.
-* :ghpull:`15083`: Cleanup spines example.
-* :ghpull:`14997`: Correctly set formatters and locators on removed shared axis
-* :ghpull:`15064`: Fix eps hatching in MacOS Preview
-* :ghpull:`15074`: Write all ACCEPTS markers in docstrings as comments.
-* :ghpull:`15078`: Clarify docstring of FT2Font.get_glyph_name.
-* :ghpull:`15080`: Fix cross-references in API changes < 3.0.0.
-* :ghpull:`15072`: Cleanup patheffects.
-* :ghpull:`15071`: Cleanup offsetbox.py.
-* :ghpull:`15070`: Fix cross-references in API changes < 2.0.0.
-* :ghpull:`10691`: Fix for shared axes diverging after setting tick markers
-* :ghpull:`15069`: Style fixes for font_manager.py.
-* :ghpull:`15067`: Fix cross-references in API changes < 1.0
-* :ghpull:`15061`: Fix cross-references in tutorials and FAQ
-* :ghpull:`15060`: Fix cross-references in examples.
-* :ghpull:`14957`: Documentation for using ConnectionPatch across Axes with constrained…
-* :ghpull:`15053`: Make citation bit of README less wordy
-* :ghpull:`15044`: numpydoc set_size_inches docstring
-* :ghpull:`15050`: Clarify unnecessary special handling for colons in paths.
-* :ghpull:`14797`: DOC: create a Agg figure without pyplot in buffer example
-* :ghpull:`14844`: Add citation info to README
-* :ghpull:`14884`: Do not allow canvas size to become smaller than MinSize in wx backend…
-* :ghpull:`14941`: Improvements to make_icons.py.
-* :ghpull:`15048`: DOC: more nitpick follow up
-* :ghpull:`15043`: Fix Docs: Don’t warn for unused ignores
-* :ghpull:`15025`: Re-write text wrapping logic
-* :ghpull:`14840`: Don't assume transform is valid on access to matrix.
-* :ghpull:`14862`: Make optional in docstrings optional
-* :ghpull:`15028`: Python version conf.py
-* :ghpull:`15033`: FIX: un-break nightly wheels on py37
-* :ghpull:`15046`: v3.1.x merge up
-* :ghpull:`15015`: Fix bad missing-references.json due to PR merge race condition.
-* :ghpull:`14581`: Make logscale bar/hist autolimits more consistents.
-* :ghpull:`15034`: Doc fix nitpick
-* :ghpull:`14614`: Deprecate {x,y,z}axis_date.
-* :ghpull:`14991`: Handle inherited is_separable, has_inverse in transform props detection.
-* :ghpull:`15032`: Clarify effect of axis('equal') on explicit data limits
-* :ghpull:`15031`: Update docs of GridSpec
-* :ghpull:`14106`: Describe FigureManager
-* :ghpull:`15024`: Update docs of GridSpecBase
-* :ghpull:`14906`: Deprecate some FT2Image methods.
-* :ghpull:`14963`: More Axis3D cleanup.
-* :ghpull:`15009`: Provide signatures to some C-level classes and methods.
-* :ghpull:`14968`: DOC: colormap manipulation tutorial update
-* :ghpull:`15006`: Deprecate get/set_*ticks minor positional use
-* :ghpull:`14989`: DOC:Update axes documentation
-* :ghpull:`14871`: Parametrize determinism tests.
-* :ghpull:`14768`: DOC: Enable nitpicky
-* :ghpull:`15013`: Matplotlib requires Python 3.6, which in turn requires Mac OS X 10.6+
-* :ghpull:`15012`: Fix typesetting of "GitHub"
-* :ghpull:`14954`: Cleanup polar_legend example.
-* :ghpull:`14519`: Check parameters of ColorbarBase
-* :ghpull:`14942`: Make _classic_test style a tiny patch on top of classic.
-* :ghpull:`14988`: pathlibify/fstringify setup/setupext.
-* :ghpull:`14511`: Deprecate allowing scalars for fill_between where
-* :ghpull:`14493`: Remove deprecated fig parameter form GridSpecBase.get_subplot_params()
-* :ghpull:`14995`: Further improve backend tutorial.
-* :ghpull:`15000`: Use warnings.warn, not logging.warning, in microseconds locator warning.
-* :ghpull:`14990`: Fix nonsensical transform in mixed-mode axes aspect computation.
-* :ghpull:`15002`: No need to access filesystem in test_dates.py.
-* :ghpull:`14549`: Improve backends documentation
-* :ghpull:`14774`: Fix image bbox clip.
-* :ghpull:`14978`: Typo fixes in pyplot.py
-* :ghpull:`14702`: Don't enlarge toolbar for Qt high-dpi.
-* :ghpull:`14922`: Autodetect some transform properties.
-* :ghpull:`14962`: Replace inspect.getfullargspec by inspect.signature.
-* :ghpull:`14958`: Improve docs of toplevel module.
-* :ghpull:`14926`: Save a matrix unpacking/repacking in offsetbox.
-* :ghpull:`14961`: Cleanup demo_agg_filter.
-* :ghpull:`14924`: Kill the C-level (private) RendererAgg.buffer_rgba, which returns a copy.
-* :ghpull:`14946`: Delete virtualenv faq.
-* :ghpull:`14944`: Shorten style.py.
-* :ghpull:`14931`: Deprecate some obscure rcParam synonyms.
-* :ghpull:`14947`: Fix inaccuracy re: backends in intro tutorial.
-* :ghpull:`14904`: Fix typo in secondary_axis.py example.
-* :ghpull:`14925`: Support passing spine bounds as single tuple.
-* :ghpull:`14921`: DOC: Make abbreviation of versus consistent.
-* :ghpull:`14739`: Improve indentation of Line2D properties in docstrings.
-* :ghpull:`14923`: In examples, prefer buffer_rgba to print_to_buffer.
-* :ghpull:`14908`: Make matplotlib.style.available sorted alphabetically.
-* :ghpull:`13567`: Deprecate MovieWriterRegistry cache-dirtyness system.
-* :ghpull:`14879`: Error out when unsupported kwargs are passed to Scale.
-* :ghpull:`14512`: Logit scale, changes in LogitLocator and LogitFormatter
-* :ghpull:`12415`: ENH: fig.set_size to allow non-inches units
-* :ghpull:`13783`: Deprecate disable_internet.
-* :ghpull:`14886`: Further simplify the flow of pdf text output.
-* :ghpull:`14894`: Make slowness warning for legend(loc="best") more accurate.
-* :ghpull:`14891`: Fix nightly test errors
-* :ghpull:`14895`: Fix typos
-* :ghpull:`14890`: Remove unused private helper method in mplot3d.
-* :ghpull:`14872`: Unify text layout paths.
-* :ghpull:`8183`: Allow array alpha for imshow
-* :ghpull:`13832`: Vectorize handling of stacked/cumulative in hist().
-* :ghpull:`13630`: Simplify PolarAxes.can_pan.
-* :ghpull:`14565`: Rewrite an argument check to _check_getitem
-* :ghpull:`14875`: Cleanup afm module docstring.
-* :ghpull:`14880`: Fix animation blitting for plots with shared axes
-* :ghpull:`14870`: FT2Font.get_char_index never returns None.
-* :ghpull:`13463`: Deprecate Locator.autoscale.
-* :ghpull:`13724`: ENH: anti-alias down-sampled images
-* :ghpull:`14848`: Clearer error message for plt.axis()
-* :ghpull:`14660`: colorbar(label=None) should give an empty label
-* :ghpull:`14654`: Cleanup of docstrings of scales
-* :ghpull:`14868`: Update bar stacked example to directly manipulate axes.
-* :ghpull:`14749`: Fix get_canvas_width_height() for pgf backend.
-* :ghpull:`14776`: Make ExecutableUnavailableError
-* :ghpull:`14843`: Don't try to cleanup CallbackRegistry during interpreter shutdown.
-* :ghpull:`14849`: Improve tkagg icon resolution
-* :ghpull:`14866`: changed all readme headings to verbs
-* :ghpull:`13364`: Numpyfy tick handling code in Axis3D.
-* :ghpull:`13642`: FIX: get_datalim for collection
-* :ghpull:`14860`: Stopgap fix for pandas converters in tests.
-* :ghpull:`6498`: Check canvas identity in Artist.contains.
-* :ghpull:`14707`: Add titlecolor in rcParams
-* :ghpull:`14853`: Fix typo in set_adjustable check.
-* :ghpull:`14845`: More cleanups.
-* :ghpull:`14809`: Clearer calls to ConnectionPatch.
-* :ghpull:`14716`: Use str instead of string as type in docstrings
-* :ghpull:`14338`: Simplify/pathlibify image_comparison.
-* :ghpull:`8930`: timedelta formatter
-* :ghpull:`14733`: Deprecate FigureFrameWx.statusbar & NavigationToolbar2Wx.statbar.
-* :ghpull:`14713`: Unite masked and NaN plot examples
-* :ghpull:`14576`: Let Axes3D share have_units, _on_units_changed with 2d axes.
-* :ghpull:`14575`: Make ticklabel_format work both for 2D and 3D axes.
-* :ghpull:`14834`: DOC: Webpage not formated correctly on gallery docs
-* :ghpull:`14730`: Factor out common parts of wx event handlers.
-* :ghpull:`14727`: Fix axes aspect for non-linear, non-log, possibly mixed-scale axes.
-* :ghpull:`14835`: Only allow set_adjustable("datalim") for axes with standard data ratios.
-* :ghpull:`14746`: Simplify Arrow constructor.
-* :ghpull:`14752`: Doc changes to git setup
-* :ghpull:`14732`: Deduplicate wx configure_subplots tool.
-* :ghpull:`14715`: Use array-like in docs
-* :ghpull:`14728`: More floating_axes cleanup.
-* :ghpull:`14719`: Make Qt navtoolbar more robust against removal of either pan or zoom.
-* :ghpull:`14695`: Various small simplifications
-* :ghpull:`14745`: Replace Affine2D().scale(x, x) by Affine2D().scale(x).
-* :ghpull:`14687`: Add missing spaces after commas in docs
-* :ghpull:`14810`: Lighten icons of NavigationToolbar2QT on dark-themes
-* :ghpull:`14786`: Deprecate axis_artist.BezierPath.
-* :ghpull:`14750`: Misc. simplifications.
-* :ghpull:`14807`: API change note on automatic blitting detection for backends
-* :ghpull:`11004`: Deprecate smart_bounds handling in Axis and Spine
-* :ghpull:`14785`: Kill some never-used attributes.
-* :ghpull:`14723`: Cleanup some parameter descriptions in matplotlibrc.template
-* :ghpull:`14808`: Small docstring updates
-* :ghpull:`14686`: Inset orientation
-* :ghpull:`14805`: Simplify text_layout example.
-* :ghpull:`12052`: Make AxesImage.contains account for transforms
-* :ghpull:`11860`: Let MovieFileWriter save temp files in a new dir
-* :ghpull:`11423`: FigureCanvas Designer
-* :ghpull:`10688`: Add legend handler and artist for FancyArrow
-* :ghpull:`8321`: Added ContourSet clip_path kwarg and set_clip_path() method (#2369)
-* :ghpull:`14641`: Simplify _process_plot_var_args.
-* :ghpull:`14631`: Refactor from_levels_and_colors.
-* :ghpull:`14790`: DOC:Add link to style examples in matplotlib.style documentation
-* :ghpull:`14799`: Deprecate dates.mx2num.
-* :ghpull:`14793`: Remove sudo tag in travis
-* :ghpull:`14795`: Autodetect whether a canvas class supports blitting.
-* :ghpull:`14794`: DOC: Update the documetation of homepage of website
-* :ghpull:`14629`: Delete HTML build sources to save on artefact upload time
-* :ghpull:`14792`: Fix spelling typos
-* :ghpull:`14789`: Prefer Affine2D.translate to offset_transform in examples.
-* :ghpull:`14783`: Cleanup mlab.detrend.
-* :ghpull:`14791`: Make 'extended' and 'expanded' synonymous in font_manager
-* :ghpull:`14787`: Remove axis_artist _update, which is always a noop.
-* :ghpull:`14758`: Compiling C-ext with incorrect FreeType libs makes future compiles break
-* :ghpull:`14763`: Deprecate math_symbol_table function directive
-* :ghpull:`14762`: Decrease uses of get_canvas_width_height.
-* :ghpull:`14748`: Cleanup demo_text_path.
-* :ghpull:`14740`: Remove sudo tag in travis
-* :ghpull:`14737`: Cleanup twin axes docstrings.
-* :ghpull:`14729`: Small simplifications.
-* :ghpull:`14726`: Trivial simplification to Axis3d._get_coord_info.
-* :ghpull:`14718`: Add explanations for single character color names.
-* :ghpull:`14710`: Pin pydocstyle<4.0
-* :ghpull:`14709`: Try to improve the readability and styling of matplotlibrc.template file
-* :ghpull:`14278`: Inset axes bug and docs fix
-* :ghpull:`14478`: MNT: protect from out-of-bounds data access at the c level
-* :ghpull:`14569`: More deduplication of backend_tools.
-* :ghpull:`14652`: Soft-deprecate transform_point.
-* :ghpull:`14664`: Improve error reporting for scatter c as invalid RGBA.
-* :ghpull:`14625`: Don't double-wrap in silent_list.
-* :ghpull:`14689`: Update embedding_in_wx4 example.
-* :ghpull:`14679`: Further simplify colormap reversal.
-* :ghpull:`14667`: Move most of pytest's conf to conftest.py.
-* :ghpull:`14632`: Remove reference to old Tk/Windows bug.
-* :ghpull:`14673`: More shortening of setup.py prints.
-* :ghpull:`14678`: Fix small typo
-* :ghpull:`14680`: Format parameters in descriptions with emph instead of backticks
-* :ghpull:`14674`: Simplify colormap reversal.
-* :ghpull:`14672`: Artist tutorial fixes
-* :ghpull:`14653`: Remove some unnecessary prints from setup.py.
-* :ghpull:`14662`: Add a _check_getitem helper to go with _check_in_list/_check_isinstance.
-* :ghpull:`14666`: Update IPython's doc link in Image tutorial
-* :ghpull:`14671`: Improve readability of matplotlibrc.template
-* :ghpull:`14665`: Fix a typo in pyplot tutorial
-* :ghpull:`14616`: Use builtin round instead of np.round for scalars.
-* :ghpull:`12554`: backend_template docs and fixes
-* :ghpull:`14635`: Fix bug when setting negative limits and using log scale
-* :ghpull:`14604`: Update hist() docstring following removal of normed kwarg.
-* :ghpull:`14630`: Remove the private Tick._name attribute.
-* :ghpull:`14555`: Coding guidelines concerning the API
-* :ghpull:`14516`: Document and test _get_packed_offsets()
-* :ghpull:`14628`: matplotlib > Matplotlib in devel docs
-* :ghpull:`14627`: gitignore pip-wheel-metadta/ directory
-* :ghpull:`14612`: Update some mplot3d docs.
-* :ghpull:`14617`: Remove a Py2.4(!) backcompat fix.
-* :ghpull:`14605`: Update hist2d() docstring.
-* :ghpull:`13084`: When linking against libpng/zlib on Windows, use upstream lib names.
-* :ghpull:`13685`: Remove What's new fancy example
-* :ghpull:`14573`: Cleanup jpl_units.
-* :ghpull:`14583`: Fix overly long lines in setupext.
-* :ghpull:`14588`: Remove [status] suppress from setup.cfg.
-* :ghpull:`14591`: Style fixes for secondary_axis.
-* :ghpull:`14594`: DOC: Make temperature scale example use a closure for easier reusability
-* :ghpull:`14447`: FIX: allow secondary axes minor locators to be set
-* :ghpull:`14567`: Fix unicode_minus + usetex.
-* :ghpull:`14351`: Remove some redundant check_in_list calls.
-* :ghpull:`14550`: Restore thumbnail of usage guide
-* :ghpull:`10222`: Use symlinks instead of copies for test result_images.
-* :ghpull:`14267`: cbook docs cleanup
-* :ghpull:`14556`: Improve @deprecated's docstring.
-* :ghpull:`14557`: Clarify how to work with threads.
-* :ghpull:`14545`: In contributing.rst, encourage kwonly args and minimizing public APIs.
-* :ghpull:`14533`: Misc. style fixes.
-* :ghpull:`14542`: Move plot_directive doc to main API index.
-* :ghpull:`14499`: Improve custom figure example
-* :ghpull:`14543`: Remove the "Developing a new backend" section from contributing guide.
-* :ghpull:`14540`: Simplify backend switching in plot_directive.
-* :ghpull:`14539`: Don't overindent enumerated list in plot_directive docstring.
-* :ghpull:`14537`: Slightly tighten the Bbox API.
-* :ghpull:`14223`: Rewrite intro to usage guide.
-* :ghpull:`14495`: Numpydocify axes_artist.py
-* :ghpull:`14529`: mpl_toolkits style fixes.
-* :ghpull:`14528`: mathtext style fixes.
-* :ghpull:`13536`: Make unit converters also handle instances of subclasses.
-* :ghpull:`13730`: Include FreeType error codes in FreeType exception messages.
-* :ghpull:`14500`: Fix pydocstyle D403 (First word of the first line should be properly capitalized) in examples
-* :ghpull:`14506`: Simplify Qt tests.
-* :ghpull:`14513`: More fixes to pydocstyle D403 (First word capitalization)
-* :ghpull:`14496`: Fix pydocstyle D208 (Docstring is over-indented)
-* :ghpull:`14347`: Deprecate rcsetup.validate_path_exists.
-* :ghpull:`14383`: Remove the ````package_data.dlls```` setup.cfg entry.
-* :ghpull:`14346`: Simplify various validators in rcsetup.
-* :ghpull:`14366`: Move test_rcparams test files inline into test_rcparams.py.
-* :ghpull:`14401`: Assume that mpl-data is in its standard location.
-* :ghpull:`14454`: Simplify implementation of svg.image_inline.
-* :ghpull:`14470`: Add _check_isinstance helper.
-* :ghpull:`14479`: fstringify backend_ps more.
-* :ghpull:`14484`: Support unicode minus with ps.useafm.
-* :ghpull:`14494`: Style fixes.
-* :ghpull:`14465`: Docstrings cleanups.
-* :ghpull:`14466`: Let SecondaryAxis inherit get_tightbbox from _AxesBase.
-* :ghpull:`13940`: Some more f-strings.
-* :ghpull:`14379`: Remove unnecessary uses of unittest.mock.
-* :ghpull:`14483`: Improve font weight guessing.
-* :ghpull:`14419`: Fix test_imshow_pil on Windows.
-* :ghpull:`14460`: canvas.blit() already defaults to blitting the full figure canvas.
-* :ghpull:`14462`: Register timeout pytest marker.
-* :ghpull:`14414`: FEATURE: Alpha channel in Gouraud triangles in the pdf backend
-* :ghpull:`13659`: Clarify behavior of the 'tight' kwarg to autoscale/autoscale_view.
-* :ghpull:`13901`: Only test png output for mplot3d.
-* :ghpull:`13338`: Replace list.extend by star-expansion or other constructs.
-* :ghpull:`14448`: Misc doc style cleanup
-* :ghpull:`14310`: Update to Bounding Box for Qt5 FigureCanvasATAgg.paintEvent()
-* :ghpull:`14380`: Inline $MPLLOCALFREETYPE/$PYTEST_ADDOPTS/$NPROC in .travis.yml.
-* :ghpull:`14413`: MAINT: small improvements to the pdf backend
-* :ghpull:`14452`: MAINT: Minor cleanup to make functions more self consisntent
-* :ghpull:`14441`: Misc. docstring cleanups.
-* :ghpull:`14440`: Interpolations example
-* :ghpull:`14402`: Prefer ``mpl.get_data_path()``, and support Paths in FontProperties.
-* :ghpull:`14420`: MAINT: Upgrade pytest again
-* :ghpull:`14423`: Fix docstring of subplots().
-* :ghpull:`14410`: Use aspect=1, not aspect=True.
-* :ghpull:`14412`: MAINT: Don't install pytest 4.6.0 on Travis
-* :ghpull:`14377`: Rewrite assert np.* tests to use numpy.testing
-* :ghpull:`14399`: Improve warning for case where data kwarg entry is ambiguous.
-* :ghpull:`14390`: Cleanup docs of bezier
-* :ghpull:`14400`: Fix to_rgba_array() for empty input
-* :ghpull:`14308`: Small clean to SymmetricalLogLocator
-* :ghpull:`14311`: travis: add c code coverage measurements
-* :ghpull:`14393`: Remove remaining unicode-strings markers.
-* :ghpull:`14391`: Remove explicit inheritance from object
-* :ghpull:`14343`: acquiring and releaseing keypresslock when textbox is being activated
-* :ghpull:`14353`: Register flaky pytest marker.
-* :ghpull:`14373`: Properly hide __has_include to support C++<17 compilers.
-* :ghpull:`14378`: Remove setup_method
-* :ghpull:`14368`: Finish removing jquery from the repo.
-* :ghpull:`14360`: Deprecate ``boxplot(..., whis="range")``.
-* :ghpull:`14376`: Simplify removal of figure patch from bbox calculations.
-* :ghpull:`14363`: Make is_natively_supported private.
-* :ghpull:`14330`: Remove remaining unittest.TestCase uses
-* :ghpull:`13663`: Kill the PkgConfig singleton in setupext.
-* :ghpull:`13067`: Simplify generation of error messages for missing libpng/freetype.
-* :ghpull:`14358`: DOC boxplot ``whis`` parameter
-* :ghpull:`14014`: Disallow figure argument for pyplot.subplot() and Figure.add_subplot()
-* :ghpull:`14350`: Use cbook._check_in_list more often.
-* :ghpull:`14348`: Cleanup markers.py.
-* :ghpull:`14345`: Use importorskip for tests depending on pytz.
-* :ghpull:`14170`: In setup.py, inline the packages that need to be installed into setup().
-* :ghpull:`14332`: Use raw docstrings instead of escaping backslashes
-* :ghpull:`14336`: Enforce pydocstyle D412
-* :ghpull:`14144`: Deprecate the 'warn' parameter to matplotlib.use().
-* :ghpull:`14328`: Remove explicit inheritance from object
-* :ghpull:`14035`: Improve properties formatting in interpolated docstrings.
-* :ghpull:`14018`: pep8ing.
-* :ghpull:`13542`: Move {setup,install}_requires from setupext.py to setup.py.
-* :ghpull:`13670`: Simplify the logic of axis().
-* :ghpull:`14046`: Deprecate checkdep_ps_distiller.
-* :ghpull:`14236`: Simplify StixFonts.get_sized_alternatives_for_symbol.
-* :ghpull:`14101`: Shorten _ImageBase._make_image.
-* :ghpull:`14246`: Deprecate public use of makeMappingArray
-* :ghpull:`13740`: Deprecate plotfile.
-* :ghpull:`14216`: Walk the artist tree when preparing for saving with tight bbox.
-* :ghpull:`14305`: Small grammatical error.
-* :ghpull:`14104`: Factor out retrieval of data relative to datapath
-* :ghpull:`14016`: pep8ify backends.
-* :ghpull:`14299`: Fix #13711 by importing cbook.
-* :ghpull:`14244`: Remove APIs deprecated in mpl3.0.
-* :ghpull:`14068`: Alternative fix for passing iterator as frames to FuncAnimation
-* :ghpull:`13711`: Deprecate NavigationToolbar2Tk.set_active.
-* :ghpull:`14280`: Simplify validate_markevery logic.
-* :ghpull:`14273`: pep8ify a couple of variable names.
-* :ghpull:`14115`: Reorganize scatter arguments parsing.
-* :ghpull:`14271`: Replace some uses of np.iterable
-* :ghpull:`14257`: Changing cmap(np.nan) to 'bad' value rather than 'under' value
-* :ghpull:`14259`: Deprecate string as color sequence
-* :ghpull:`13506`: Change colorbar for contour to have the proper axes limits...
-* :ghpull:`13494`: Add colorbar annotation example plot to gallery
-* :ghpull:`14266`: Make matplotlib.figure.AxesStack private
-* :ghpull:`14166`: Shorten usage of ``@image_comparison``.
-* :ghpull:`14240`: Merge up 31x
-* :ghpull:`14242`: Avoid a buffer copy in PillowWriter.
-* :ghpull:`9672`: Only set the wait cursor if the last draw was >1s ago.
-* :ghpull:`14224`: Update plt.show() doc
-* :ghpull:`14218`: Use stdlib mimetypes instead of hardcoding them.
-* :ghpull:`14082`: In tk backend, don't try to update mouse position after resize.
-* :ghpull:`14084`: Check number of positional arguments passed to quiver()
-* :ghpull:`14214`: Fix some docstring style issues.
-* :ghpull:`14201`: Fix E124 flake8 violations (closing bracket indentation).
-* :ghpull:`14096`: Consistently use axs to refer to a set of Axes
-* :ghpull:`14204`: Fix various flake8 indent problems.
-* :ghpull:`14205`: Obey flake8 "don't assign a lambda, use a def".
-* :ghpull:`14198`: Remove unused imports
-* :ghpull:`14173`: Prepare to change the default pad for AxesDivider.append_axes.
-* :ghpull:`13738`: Fix TypeError when plotting stacked bar chart with decimal
-* :ghpull:`14151`: Clarify error with usetex when cm-super is not installed.
-* :ghpull:`14107`: Feature: draw percentiles in violinplot
-* :ghpull:`14172`: Remove check_requirements from setupext.
-* :ghpull:`14158`: Fix test_lazy_imports in presence of $MPLBACKEND or matplotlibrc.
-* :ghpull:`14157`: Isolate nbagg test from user ipython profile.
-* :ghpull:`14147`: Dedent overindented list in example docstring.
-* :ghpull:`14134`: Deprecate the dryrun parameter to print_foo().
-* :ghpull:`14145`: Remove warnings handling for fixed bugs.
-* :ghpull:`13977`: Always import pyplot when calling matplotlib.use().
-* :ghpull:`14131`: Make test suite fail on warnings.
-* :ghpull:`13593`: Only autoscale_view() when needed, not after every plotting call.
-* :ghpull:`13902`: Add support for metadata= and pil_kwargs= in imsave().
-* :ghpull:`14140`: Avoid backslash-quote by changing surrounding quotes.
-* :ghpull:`14132`: Move some toplevel strings into the only functions that use them.
-* :ghpull:`13708`: Annotation.contains shouldn't consider the text+arrow's joint bbox.
-* :ghpull:`13980`: Don't let margins expand polar plots to negative radii by default.
-* :ghpull:`14075`: Remove uninformative entries from glossary.
-* :ghpull:`14002`: Allow pandas DataFrames through norms
-* :ghpull:`14114`: Allow SVG Text-as-Text to Use Data Coordinates
-* :ghpull:`14120`: Remove mention of $QT_API in matplotlibrc example.
-* :ghpull:`13878`: Style fixes for floating_axes.
-* :ghpull:`14108`: Deprecate FigureCanvasMac.invalidate in favor of draw_idle.
-* :ghpull:`13879`: Clarify handling of "extreme" values in FloatingAxisArtistHelper.
-* :ghpull:`5602`: Automatic downsampling of images.
-* :ghpull:`14112`: Remove old code path in layout.html
-* :ghpull:`13959`: Scatter: make "c" and "s" argument handling more consistent.
-* :ghpull:`14110`: Simplify scatter_piecharts example.
-* :ghpull:`14111`: Trivial cleanups.
-* :ghpull:`14085`: Simplify get_current_fig_manager().
-* :ghpull:`14083`: Deprecate FigureCanvasBase.draw_cursor.
-* :ghpull:`14089`: Cleanup bar_stacked, bar_unit_demo examples.
-* :ghpull:`14063`: Add pydocstyle checks to flake8
-* :ghpull:`14077`: Fix tick label wobbling in animated Qt example
-* :ghpull:`14070`: Cleanup some pyplot docstrings.
-* :ghpull:`6280`: Added ability to offset errorbars when using errorevery.
-* :ghpull:`13679`: Fix passing iterator as frames to FuncAnimation
-* :ghpull:`14023`: Improve Unicode minus example
-* :ghpull:`14041`: Pretty-format subprocess logs.
-* :ghpull:`14038`: Cleanup path.py docstrings.
-* :ghpull:`13701`: Small cleanups.
-* :ghpull:`14020`: Better error message when trying to use Gtk3Agg backend without cairo
-* :ghpull:`14021`: Fix ax.legend Returns markup
-* :ghpull:`13986`: Support RGBA for quadmesh mode of pcolorfast.
-* :ghpull:`14009`: Deprecate compare_versions.
-* :ghpull:`14010`: Deprecate get_home()
-* :ghpull:`13932`: Remove many unused variables.
-* :ghpull:`13854`: Cleanup contour.py.
-* :ghpull:`13866`: Switch PyArg_ParseTupleAndKeywords from "es" to "s".
-* :ghpull:`13945`: Make unicode_minus example more focused.
-* :ghpull:`13876`: Deprecate factor=None in axisartist.
-* :ghpull:`13929`: Better handle deprecated rcParams.
-* :ghpull:`13851`: Deprecate setting Axis.major.locator to non-Locator; idem for Formatters
-* :ghpull:`13938`: numpydocify quiverkey.
-* :ghpull:`13936`: Pathlibify animation.
-* :ghpull:`13984`: Allow setting tick colour on 3D axes
-* :ghpull:`13987`: Deprecate mlab.{apply_window,stride_repeat}.
-* :ghpull:`13983`: Fix locator/formatter setting when removing shared Axes
-* :ghpull:`13957`: Remove many unused variables in tests.
-* :ghpull:`13981`: Test cleanups.
-* :ghpull:`13970`: Check vmin/vmax are valid when doing inverse in LogNorm
-* :ghpull:`13978`: Make normalize_kwargs more convenient for third-party use.
-* :ghpull:`13972`: Remove _process_plot_var_args.set{line,patch}_props.
-* :ghpull:`13795`: Make _warn_external correctly report warnings arising from tests.
-* :ghpull:`13885`: Deprecate axisartist.grid_finder.GridFinderBase.
-* :ghpull:`13913`: Fix string numbers in to_rgba() and is_color_like()
-* :ghpull:`13935`: Deprecate the useless switch_backend_warn parameter to matplotlib.test.
-* :ghpull:`13952`: Cleanup animation tests.
-* :ghpull:`13942`: Make Cursors an (Int)Enum.
-* :ghpull:`13953`: Unxfail a now fixed test in test_category.
-* :ghpull:`13925`: Fix passing Path to ps backend when text.usetex rc is True.
-* :ghpull:`13943`: Don't crash on str(figimage(...)).
-* :ghpull:`13944`: Document how to support unicode minus in pgf backend.
-* :ghpull:`13802`: New rcparam to set default axes title location
-* :ghpull:`13855`: ``a and b or c`` -> ``b if a else c``
-* :ghpull:`13923`: Correctly handle invalid PNG metadata.
-* :ghpull:`13926`: Suppress warnings in tests.
-* :ghpull:`13920`: Style fixes for category.py.
-* :ghpull:`13889`: Shorten docstrings by removing unneeded :class:/:func: + rewordings.
-* :ghpull:`13911`: Fix joinstyles example
-* :ghpull:`13917`: Faster categorical tick formatter.
-* :ghpull:`13918`: Make matplotlib.testing assume pytest by default, not nose.
-* :ghpull:`13894`: Check for positive number of rows and cols
-* :ghpull:`13895`: Remove unused setupext.is_min_version.
-* :ghpull:`13886`: Shorten Figure.set_size_inches.
-* :ghpull:`13859`: Ensure figsize is positive finite
-* :ghpull:`13877`: ``zeros_like(x) + y`` -> ``full_like(x, y)``
-* :ghpull:`13875`: Style fixes for grid_helper_curvelinear.
-* :ghpull:`13873`: Style fixes to grid_finder.
-* :ghpull:`13782`: Don't access internet during tests.
-* :ghpull:`13833`: Some more usage of _check_in_list.
-* :ghpull:`13834`: Cleanup FancyArrowPatch docstring
-* :ghpull:`13811`: Generate Figure method wrappers via boilerplate.py
-* :ghpull:`13797`: Move sphinxext test to matplotlib.tests like everyone else.
-* :ghpull:`13770`: broken_barh docstring
-* :ghpull:`13757`: Remove mention of "enabling fontconfig support".
-* :ghpull:`13454`: Add "c" as alias for "color" for Collections
-* :ghpull:`13756`: Reorder the logic of _update_title_position.
-* :ghpull:`13744`: Restructure boilerplate.py
-* :ghpull:`13369`: Use default colours for examples
-* :ghpull:`13697`: Delete pyplot_scales example.
-* :ghpull:`13726`: Clarify a bit the implementation of blend_hsv.
-* :ghpull:`13731`: Check for already running QApplication in Qt embedding example.
-* :ghpull:`13736`: Deduplicate docstrings and validation for set_alpha.
-* :ghpull:`13737`: Remove duplicated methods in FixedAxisArtistHelper.
-* :ghpull:`13721`: Kill pyplot docstrings that get overwritten by @docstring.copy.
-* :ghpull:`13690`: Cleanup hexbin.
-* :ghpull:`13683`: Remove axes border for examples that list styles
-* :ghpull:`13280`: Add SubplotSpec.add_subplot.
-* :ghpull:`11387`: Deprecate Axes3D.w_{x,y,z}axis in favor of .{x,y,z}axis.
-* :ghpull:`13671`: Suppress some warnings in tests.
-* :ghpull:`13657`: DOC: fail the doc build on errors, but keep going to end
-* :ghpull:`13647`: Fix FancyArrowPatch joinstyle
-* :ghpull:`13637`: BLD: parameterize python_requires
-* :ghpull:`13633`: plot_directive: Avoid warning if plot_formats doesn't contain 'png'
-* :ghpull:`13629`: Small example simplification.
-* :ghpull:`13620`: Improve watermark example
-* :ghpull:`13589`: Kill Axes._connected.
-* :ghpull:`13428`: free cart pendulum animation example
-* :ghpull:`10487`: fixed transparency bug
-* :ghpull:`13551`: Fix IndexError for pyplot.legend() when plotting empty bar chart with label
-* :ghpull:`13524`: Cleanup docs for GraphicsContextBase.{get,set}_dashes.
-* :ghpull:`13556`: Cleanup warnings handling in tests.
-* :ghpull:`8100`: Deprecate MAXTICKS, Locator.raise_if_exceeds.
-* :ghpull:`13534`: More followup to autoregistering 3d axes.
-* :ghpull:`13327`: pcolorfast simplifications.
-* :ghpull:`13532`: More use of cbook._check_in_list.
-* :ghpull:`13520`: Register 3d projection by default.
-* :ghpull:`13394`: Deduplicate some code between floating_axes and grid_helper_curvelinear.
-* :ghpull:`13527`: Make SubplotSpec.num2 never None.
-* :ghpull:`12249`: Replaced noqa-comments by using Axes3D.name instead of '3d' for proje…
-
-Issues (125):
-
-* :ghissue:`16487`: Add link to blog to front page
-* :ghissue:`16478`: The bottom parameter of plt.hist() shifts the data as well, not just the baseline
-* :ghissue:`16280`: SymLogNorm colorbar incorrect on master
-* :ghissue:`16448`: Bad interaction between shared axes and pcolormesh sticky edges
-* :ghissue:`16451`: InvertedLogTransform inherits from deprecated base
-* :ghissue:`16420`: Error when adding colorbar to pcolormesh of a boolean array
-* :ghissue:`16114`: Prose error on website (first paragraph)
-* :ghissue:`8291`: Unable to pickle.load(fig) with mpl in jupyter notebook
-* :ghissue:`16173`: Constrained_layout creates extra axes when used with subgridspec
-* :ghissue:`16127`: nbformat 5.0.0 missing schema files
-* :ghissue:`15849`: Using pandas.Timestamp in blended coordinate system of ax.annotate.
-* :ghissue:`6015`: scatterplot axis autoscale fails for small data values
-* :ghissue:`15806`: 3.2.0 may break some Cartopy tests
-* :ghissue:`15852`: Lasso selector does not show in Jupyter notebook
-* :ghissue:`15820`: Show incomplete tick labels when using mixed chinese and english characters
-* :ghissue:`15770`: DOCS 2D Line label option ``_nolegend_`` is not documented
-* :ghissue:`15332`: Type promotion error with datetime bins in hist
-* :ghissue:`15611`: BUG: Qt5Agg window size regression
-* :ghissue:`7130`: Incorrect autoscaling of polar plot limits after scatter
-* :ghissue:`15576`: Multi-line ticks cause cut-offs
-* :ghissue:`8609`: Clipped tick labels
-* :ghissue:`15517`: antialiased image check seems wrong when used on zoomed image
-* :ghissue:`13400`: Qt Embedding w/ Spyder
-* :ghissue:`14724`: drawstyle parameter of line needs example
-* :ghissue:`13619`: Importing matplotlib.animation prevents python script from executing in the background
-* :ghissue:`14270`: Secondary axis called with [0, 1] might produce exceptions in case these are invalid data
-* :ghissue:`15417`: Why is smart_bounds() being deprecated?
-* :ghissue:`9778`: Blanks in colorbar just inside of 'extend' arrowpoints when using AxesGrid
-* :ghissue:`15336`: DivergingNorm is a misleading name
-* :ghissue:`15399`: OSError: [Errno 86] Bad CPU type in executable: 'convert' on import matplotlib.animation
-* :ghissue:`15109`: matplotlib.collections inheritance diagram small/blurry
-* :ghissue:`15331`: Log Scale: FloatingPointError: underflow encountered in power
-* :ghissue:`15251`: Large memory growth with log scaling and linear ticking
-* :ghissue:`15247`: Colorbar tick placement issues with ImageGrid and LogNorm
-* :ghissue:`15306`: Footer off centre
-* :ghissue:`13485`: Matplotlib NavigationToolbar2Tk disappears when reducing window size
-* :ghissue:`15232`: DOC: Automatic default rcParam expansion creates misleading sentences
-* :ghissue:`14141`: setting spine position on a log plot fails
-* :ghissue:`15138`: Make plt.style.use accept path-like objects in addition to string
-* :ghissue:`14207`: Check if point is in path or not by contains_point
-* :ghissue:`13591`: Style issues when building the docs with (future) Sphinx 2.0
-* :ghissue:`8089`: Using Minute Locator to set x-axis ticks exceeds Locator.MAXTICKS
-* :ghissue:`15075`: sphinxext.missing_references does not specify if it supports parallel file read.
-* :ghissue:`10963`: Replace \pgfimage by \includegraphics in PGF backend
-* :ghissue:`15156`: ax.text fails with positional argument error
-* :ghissue:`14439`: hist() fails when all data points are np.nan
-* :ghissue:`15042`: How to handle sphinx nitpicky mode
-* :ghissue:`14060`: quiver(C=...) argument is not reasonably validated
-* :ghissue:`11335`: TST: testing not catching bad escape sequences in doc strings
-* :ghissue:`15040`: Wrong figure window size after calling fig.set_size_inches() repeatedly
-* :ghissue:`15100`: Issue with creating QApplication in QT backend
-* :ghissue:`14887`: kerning seems generally wrong
-* :ghissue:`14800`: default tick formatter could switch to scientific notation earlier
-* :ghissue:`14503`: Add a test for #14451
-* :ghissue:`14907`: ConnectionPatch across axes needs to be excluded from layout management
-* :ghissue:`14911`: Removing a shared axes via ``ax.remove()`` leads to an error.
-* :ghissue:`12462`: cbar.add_lines should allow manually adding lines, not just contour sets
-* :ghissue:`14796`: Show user how to use Agg buffer in example
-* :ghissue:`14883`: MinSize not respected using wx backend causes wxAssertionError. Bug fix included.
-* :ghissue:`15014`: Wrapping of text adds leading newline character if first word is long
-* :ghissue:`14918`: constrained_layout fails with hidden axis...
-* :ghissue:`14981`: Barplot call crashes when called with yscale="log" and bins with h=0
-* :ghissue:`4621`: Default bottom of Stepfilled histograms should be set according to ymin
-* :ghissue:`15030`: Doc build broken
-* :ghissue:`8093`: set_ylim not working with plt.axis('equal')
-* :ghissue:`6055`: Serious problems on the axes documentation
-* :ghissue:`9979`: Axis limits are set badly with small values in scatter().
-* :ghissue:`10842`: Text bbox empty dict should be ignored
-* :ghissue:`13698`: The default logit minor locator should not display tick labels
-* :ghissue:`14878`: plt.yscale doesn't throw warning with invalid kwarg
-* :ghissue:`5619`: Symlog linear region
-* :ghissue:`14564`: Broken string interpolation
-* :ghissue:`13668`: Add better error message to plt.axis()
-* :ghissue:`14563`: colorbar label prints "None" when label=None
-* :ghissue:`13660`: Closing a matplotlib figure with event handling occasionally causes “TypeError: isinstance()”
-* :ghissue:`13033`: 'NoneType' has no attribute '_alive' when using plt in a context manager
-* :ghissue:`13891`: Blurry app icon on macOS
-* :ghissue:`14656`: Axes title default color
-* :ghissue:`14831`: DOC: Webpage not formated correctly on gallery docs
-* :ghissue:`13819`: Aspect ratio for not so common scales
-* :ghissue:`8878`: Setting aspect ratio for semi-log plots
-* :ghissue:`4900`: UnboundLocalError: local variable 'aspect_scale_mode' referenced before assignment
-* :ghissue:`14608`: Issue with using plt.axis('equal') with plt.polar(theta,r) plot
-* :ghissue:`12893`: [PyQt] NavigationToolbar2QT : Error when removing tools
-* :ghissue:`14670`: indicate_inset rectangles is sensitive to axis-flipping
-* :ghissue:`14362`: Add link to style examples in matplotlib.style documentation
-* :ghissue:`6295`: restore_region is not documented as a method of FigureCanvas
-* :ghissue:`14754`: Better pointer to dev docs on website
-* :ghissue:`14744`: Savefig svg fails with "Cannot cast array data from dtype('`__
+
+The following 164 authors contributed 3455 commits.
+
+* Abhinav Sagar
+* Abhinuv Nitin Pitale
+* Adam Gomaa
+* Akshay Nair
+* Alex Rudy
+* Alexander Rudy
+* Antony Lee
+* Ao Liu (frankliuao)
+* Ardie Orden
+* Ashley Whetter
+* Ben Root
+* Benjamin Bengfort
+* Benjamin Congdon
+* Bharat123rox
+* Bingyao Liu
+* Brigitta Sipocz
+* Bruno Pagani
+* brut
+* Carsten
+* Carsten Schelp
+* chaoyi1
+* Cho Yin Yong
+* Chris Barnes
+* Christer Jensen
+* Christian Brodbeck
+* Christoph Pohl
+* chuanzhu xu
+* Colin
+* Cong Ma
+* dabana
+* DanielMatu
+* David Chudzicki
+* David Stansby
+* Deng Tian
+* depano.carlos@gmail.com
+* djdt
+* donchanee
+* Dora Fraeman Caswell
+* Elan Ernest
+* Elliott Sales de Andrade
+* Emlyn Price
+* Eric Firing
+* Eric Wieser
+* Federico Ariza
+* Filipe Fernandes
+* fourpoints
+* fredrik-1
+* Gazing
+* Greg Lucas
+* hannah
+* Harshal Prakash Patankar
+* Ian Hincks
+* Ian Thomas
+* ilopata1
+* ImportanceOfBeingErnest
+* Jacobson Okoro
+* James A. Bednar
+* Jarrod Millman
+* Javad
+* jb-leger
+* Jean-Benoist Leger
+* jfbu
+* joaonsg
+* Jody Klymak
+* Joel Frederico
+* Johannes H. Jensen
+* Johnny Gill
+* Jonas Camillus Jeppesen
+* Jorge Moraleda
+* Joscha Reimer
+* Joseph Albert
+* Jouni K. Seppänen
+* Joy Bhalla
+* Juanjo Bazán
+* Julian Mehne
+* kolibril13
+* krishna katyal
+* ksunden
+* Kyle Sunden
+* Larry Bradley
+* lepuchi
+* luftek
+* Maciej Dems
+* Maik Riechert
+* Marat K
+* Mark Wolf
+* Mark Wolfman
+* Matte
+* Matthias Bussonnier
+* Matthias Geier
+* MatthieuDartiailh
+* Max Chen
+* Max Humber
+* Max Shinn
+* MeeseeksMachine
+* Michael Droettboom
+* Mingkai Dong
+* MinRK
+* miquelastein
+* Molly Rossow
+* Nathan Goldbaum
+* nathan78906
+* Nelle Varoquaux
+* Nick White
+* Nicolas Courtemanche
+* Nikita Kniazev
+* njwhite
+* O. Castany
+* Oliver Natt
+* Olivier
+* Om Sitapara
+* omsitapara23
+* Oriol (Prodesk)
+* Oriol Abril
+* Patrick Feiring
+* Patrick Shriwise
+* PatrickFeiring
+* Paul
+* Paul Hobson
+* Paul Hoffman
+* Paul Ivanov
+* Peter Schutt
+* pharshalp
+* Phil Elson
+* Philippe Pinard
+* Rebecca W Perry
+* ResidentMario
+* Richard Ji-Cathriner
+* RoryIAngus
+* Ryan May
+* S. Fukuda
+* Samesh
+* Samesh Lakhotia
+* sasoripathos
+* SBCV
+* Sebastian Bullinger
+* Sergey Royz
+* Siddhesh Poyarekar
+* Simon Legner
+* SojiroFukuda
+* Steve Dower
+* Taras
+* Ted Drain
+* teddyrendahl
+* Thomas A Caswell
+* Thomas Hisch
+* Thomas Robitaille
+* Till Hoffmann
+* tillahoffmann
+* Tim Hoffmann
+* Tom Flannaghan
+* Travis CI
+* V. Armando Solé
+* Vincent L.M. Mazoyer
+* Viraj Mohile
+* Wafa Soofi
+* Warren Weckesser
+* y1thof
+* yeo
+* Yong Cho Yin
+* Yuya
+* Zhili (Jerry) Pan
+* zhoubecky
+* Zulko
+
+GitHub issues and pull requests:
+
+Pull Requests (839):
+
+* :ghpull:`16626`: Updated Readme + Setup.py for PyPa
+* :ghpull:`16627`: ci: Restore nuget install step on Azure for v3.2.x.
+* :ghpull:`16625`: v3.2.x: Make Azure use local FreeType.
+* :ghpull:`16622`: Backport PR #16613 on branch v3.2.x (Fix edge-case in preprocess_data, if label_namer is optional and unset.)
+* :ghpull:`16613`: Fix edge-case in preprocess_data, if label_namer is optional and unset.
+* :ghpull:`16612`: Backport PR #16605: CI: tweak the vm images we use on azure
+* :ghpull:`16611`: Backport PR #16585 on branch v3.2.x (Fix _preprocess_data for Py3.9.)
+* :ghpull:`16605`: CI: tweak the vm images we use on azure
+* :ghpull:`16585`: Fix _preprocess_data for Py3.9.
+* :ghpull:`16541`: Merge pull request #16404 from jklymak/fix-add-base-symlognorm
+* :ghpull:`16542`: Backport PR #16006: Ignore pos in StrCategoryFormatter.__call__ to di…
+* :ghpull:`16543`: Backport PR #16532: Document default value of save_count parameter in…
+* :ghpull:`16532`: Document default value of save_count parameter in FuncAnimation
+* :ghpull:`16526`: Backport PR #16480 on v.3.2.x: Re-phrase doc for bottom kwarg to hist
+* :ghpull:`16404`: FIX: add base kwarg to symlognor
+* :ghpull:`16518`: Backport PR #16502 on branch v3.2.x (Document theta getters/setters)
+* :ghpull:`16519`: Backport PR #16513 on branch v3.2.x (Add more FreeType tarball hashes.)
+* :ghpull:`16513`: Add more FreeType tarball hashes.
+* :ghpull:`16502`: Document theta getters/setters
+* :ghpull:`16506`: Backport PR #16505 on branch v3.2.x (Add link to blog to front page)
+* :ghpull:`16505`: Add link to blog to front page
+* :ghpull:`16480`: Re-phrase doc for bottom kwarg to hist
+* :ghpull:`16494`: Backport PR #16490 on branch v3.2.x (Fix some typos on the front page)
+* :ghpull:`16489`: Backport PR #16272 on branch v3.2.x (Move mplot3d autoregistration api changes to 3.2.)
+* :ghpull:`16490`: Fix some typos on the front page
+* :ghpull:`16465`: Backport PR #16450 on branch v3.2.x (Fix interaction between sticky_edges and shared axes.)
+* :ghpull:`16466`: Backport PR #16392: FIX colorbars for Norms that do not have a scale.
+* :ghpull:`16392`: FIX colorbars for Norms that do not have a scale.
+* :ghpull:`16450`: Fix interaction between sticky_edges and shared axes.
+* :ghpull:`16453`: Backport PR #16452 on branch v3.2.x (Don't make InvertedLogTransform inherit from deprecated base class.)
+* :ghpull:`16452`: Don't make InvertedLogTransform inherit from deprecated base class.
+* :ghpull:`16436`: Backport PR #16435 on branch v3.2.x (Reword intro to colors api docs.)
+* :ghpull:`16435`: Reword intro to colors api docs.
+* :ghpull:`16399`: Backport PR #16396 on branch v3.2.x (font_manager docs cleanup.)
+* :ghpull:`16396`: font_manager docs cleanup.
+* :ghpull:`16397`: Backport PR #16394 on branch v3.2.x (Mark inkscape 1.0 as unsupported (at least for now).)
+* :ghpull:`16394`: Mark inkscape 1.0 as unsupported (at least for now).
+* :ghpull:`16286`: Fix cbars for different norms
+* :ghpull:`16385`: Backport PR #16226 on branch v3.2.x: Reorganize intro section on main page
+* :ghpull:`16383`: Backport PR #16379 on branch v3.2.x (FIX: catch on message content, not module)
+* :ghpull:`16226`: Reorganize intro section on main page
+* :ghpull:`16364`: Backport PR #16344 on branch v3.2.x (Cast vmin/vmax to floats before nonsingular-expanding them.)
+* :ghpull:`16344`: Cast vmin/vmax to floats before nonsingular-expanding them.
+* :ghpull:`16360`: Backport PR #16347 on branch v3.2.x (FIX: catch warnings from pandas in cbook._check_1d)
+* :ghpull:`16357`: Backport PR #16330 on branch v3.2.x (Clearer signal handling)
+* :ghpull:`16349`: Backport PR #16255 on branch v3.2.x (Move version info to sidebar)
+* :ghpull:`16346`: Backport PR #16298 on branch v3.2.x (Don't recursively call draw_idle when updating artists at draw time.)
+* :ghpull:`16331`: Backport PR #16308 on branch v3.2.x (CI: Use Ubuntu Bionic compatible package names)
+* :ghpull:`16332`: Backport PR #16308 on v3.2.x: CI: Use Ubuntu Bionic compatible package names
+* :ghpull:`16324`: Backport PR #16323 on branch v3.2.x (Add sphinx doc for Axis.axis_name.)
+* :ghpull:`16325`: Backport PR #15462 on v3.2.x: Simplify azure setup.
+* :ghpull:`16323`: Add sphinx doc for Axis.axis_name.
+* :ghpull:`16321`: Backport PR #16311 on branch v3.2.x (don't override non-Python signal handlers)
+* :ghpull:`16308`: CI: Use Ubuntu Bionic compatible package names
+* :ghpull:`16306`: Backport PR #16300 on branch v3.2.x (Don't default to negative radii in polar plot.)
+* :ghpull:`16305`: Backport PR #16250 on branch v3.2.x (Fix zerolen intersect)
+* :ghpull:`16300`: Don't default to negative radii in polar plot.
+* :ghpull:`16278`: Backport PR #16273 on branch v3.2.x (DOC: Changing the spelling of co-ordinates.)
+* :ghpull:`16260`: Backport PR #16259 on branch v3.2.x (TST: something changed in pytest 5.3.3 that breaks our qt fixtures)
+* :ghpull:`16259`: TST: something changed in pytest 5.3.3 that breaks our qt fixtures
+* :ghpull:`16238`: Backport PR #16235 on branch v3.2.x (FIX: AttributeError in TimerBase.start)
+* :ghpull:`16211`: DOC: ValidateInterval was deprecated in 3.2, not 3.1
+* :ghpull:`16224`: Backport PR #16223 on branch v3.2.x (Added DNA Features Viewer description + screenshot in docs/thirdparty/)
+* :ghpull:`16223`: Added DNA Features Viewer description + screenshot in docs/thirdparty/
+* :ghpull:`16222`: Backport PR #16212 on branch v3.2.x (Fix deprecation from #13544)
+* :ghpull:`16212`: Fix deprecation from #13544
+* :ghpull:`16207`: Backport PR #16189 on branch v3.2.x (MNT: set default canvas when un-pickling)
+* :ghpull:`16189`: MNT: set default canvas when un-pickling
+* :ghpull:`16179`: Backport PR #16175: FIX: ignore axes that aren't visible
+* :ghpull:`16175`: FIX: ignore axes that aren't visible
+* :ghpull:`16168`: Backport PR #16166 on branch v3.2.x (Add badge for citing 3.1.2)
+* :ghpull:`16148`: Backport PR #16128 on branch v3.2.x (CI: Do not use nbformat 5.0.0/5.0.1 for testing)
+* :ghpull:`16145`: Backport PR #16053 on branch v3.2.x (Fix v_interval setter)
+* :ghpull:`16128`: CI: Do not use nbformat 5.0.0/5.0.1 for testing
+* :ghpull:`16135`: Backport PR #16112 on branch v3.2.x (CI: Fail when failed to install dependencies)
+* :ghpull:`16132`: Backport PR #16126 on branch v3.2.x (TST: test_fork: Missing join)
+* :ghpull:`16124`: Backport PR #16105 on branch v3.2.x (Fix legend dragging.)
+* :ghpull:`16122`: Backport PR #16113 on branch v3.2.x (Renderer Graphviz inheritance diagrams as svg)
+* :ghpull:`16105`: Fix legend dragging.
+* :ghpull:`16113`: Renderer Graphviz inheritance diagrams as svg
+* :ghpull:`16112`: CI: Fail when failed to install dependencies
+* :ghpull:`16119`: Backport PR #16065 on branch v3.2.x (Nicer formatting of community aspects on front page)
+* :ghpull:`16074`: Backport PR #16061 on branch v3.2.x (Fix deprecation message for axes_grid1.colorbar.)
+* :ghpull:`16093`: Backport PR #16079 on branch v3.2.x (Fix restuctured text formatting)
+* :ghpull:`16094`: Backport PR #16080 on branch v3.2.x (Cleanup docstrings in backend_bases.py)
+* :ghpull:`16086`: FIX: use supported attribute to check pillow version
+* :ghpull:`16084`: Backport PR #16077 on branch v3.2.x (Fix some typos)
+* :ghpull:`16077`: Fix some typos
+* :ghpull:`16079`: Fix restuctured text formatting
+* :ghpull:`16080`: Cleanup docstrings in backend_bases.py
+* :ghpull:`16061`: Fix deprecation message for axes_grid1.colorbar.
+* :ghpull:`16006`: Ignore pos in StrCategoryFormatter.__call__ to display correct label in the preview window
+* :ghpull:`16056`: Backport PR #15864 on branch v3.2.x ([Add the info of 'sviewgui' in thirdparty package])
+* :ghpull:`15864`: Add 'sviewgui' to list of thirdparty packages
+* :ghpull:`16055`: Backport PR #16037 on branch v3.2.x (Doc: use empty ScalarMappable for colorbars with no associated image.)
+* :ghpull:`16054`: Backport PR #16048 on branch v3.2.x (Document that colorbar() takes a label kwarg.)
+* :ghpull:`16037`: Doc: use empty ScalarMappable for colorbars with no associated image.
+* :ghpull:`16048`: Document that colorbar() takes a label kwarg.
+* :ghpull:`16042`: Backport PR #16031 on branch v3.2.x (Fix docstring of hillshade().)
+* :ghpull:`16033`: Backport PR #16028 on branch v3.2.x (Prevent FigureCanvasQT_draw_idle recursively calling itself.)
+* :ghpull:`16021`: Backport PR #16007 on branch v3.2.x (Fix search on nested pages)
+* :ghpull:`16019`: Backport PR #15735 on branch v3.2.x (Cleanup some mplot3d docstrings.)
+* :ghpull:`15987`: Backport PR #15886 on branch v3.2.x (Fix Annotation using different units and different coords on x/y.)
+* :ghpull:`15886`: Fix Annotation using different units and different coords on x/y.
+* :ghpull:`15984`: Backport PR #15970 on branch v3.2.x (Process clip paths the same way as regular Paths.)
+* :ghpull:`15970`: Process clip paths the same way as regular Paths.
+* :ghpull:`15963`: Backport PR #15937 on branch v3.2.x (Don't hide exceptions in FontManager.addfont.)
+* :ghpull:`15956`: Backport PR #15901 on branch v3.2.x (Update backend_nbagg for removal of Gcf._activeQue.)
+* :ghpull:`15937`: Don't hide exceptions in FontManager.addfont.
+* :ghpull:`15959`: Backport PR #15953 on branch v3.2.x (Update donation link)
+* :ghpull:`15901`: Update backend_nbagg for removal of Gcf._activeQue.
+* :ghpull:`15954`: Backport PR #15914 on branch v3.2.x (Example for sigmoid function with horizontal lines)
+* :ghpull:`15914`: Example for sigmoid function with horizontal lines
+* :ghpull:`15930`: Backport PR #15925 on branch v3.2.x (Optimize setting units to None when they're already None.)
+* :ghpull:`15925`: Optimize setting units to None when they're already None.
+* :ghpull:`15915`: Backport PR #15903 on branch v3.2.x (Correctly handle non-affine transData in Collection.get_datalim.)
+* :ghpull:`15903`: Correctly handle non-affine transData in Collection.get_datalim.
+* :ghpull:`15908`: Backport PR #15857 on branch v3.2.x (LassoSelection shouldn't useblit on canvas not supporting blitting.)
+* :ghpull:`15857`: LassoSelection shouldn't useblit on canvas not supporting blitting.
+* :ghpull:`15905`: Backport PR #15763 on branch v3.2.x (Skip webagg test if tornado is not available.)
+* :ghpull:`15882`: Backport PR #15859 on branch v3.2.x (Doc: Move search field into nav bar)
+* :ghpull:`15868`: Backport PR #15848 on branch v3.2.x: Cleanup environment variables FAQ
+* :ghpull:`15872`: Backport PR #15869 on branch v3.2.x (Update markers docs.)
+* :ghpull:`15869`: Update markers docs.
+* :ghpull:`15867`: Backport PR #15789 on branch v3.2.x (Cleanup xticks/yticks docstrings.)
+* :ghpull:`15870`: Backport PR #15865 on branch v3.2.x (Fix a typo)
+* :ghpull:`15871`: Backport PR #15824 on branch v3.2.x (Document doc style for default values)
+* :ghpull:`15824`: Document doc style for default values
+* :ghpull:`15865`: Fix a typo
+* :ghpull:`15789`: Cleanup xticks/yticks docstrings.
+* :ghpull:`15862`: Backport PR #15851 on branch v3.2.x (ffmpeg is available on default ubuntu packages now)
+* :ghpull:`15848`: Cleanup environment variables FAQ.
+* :ghpull:`15844`: Backport PR #15841 on branch v3.2.x (DOC: specify the expected shape in the Collection.set_offset)
+* :ghpull:`15841`: DOC: specify the expected shape in the Collection.set_offset
+* :ghpull:`15837`: Backport PR #15799 on branch v3.2.x (Improve display of author names on PDF titlepage of matplotlib own docs)
+* :ghpull:`15799`: Improve display of author names on PDF titlepage of matplotlib own docs
+* :ghpull:`15831`: Backport PR #15829 on branch v3.2.x (In C extensions, use FutureWarning, not DeprecationWarning.)
+* :ghpull:`15829`: In C extensions, use FutureWarning, not DeprecationWarning.
+* :ghpull:`15818`: Backport PR #15619 on branch v3.2.x (Improve zorder demo)
+* :ghpull:`15819`: Backport PR #15601 on branch v3.2.x (Fix FontProperties conversion to/from strings)
+* :ghpull:`15601`: Fix FontProperties conversion to/from strings
+* :ghpull:`15619`: Improve zorder demo
+* :ghpull:`15810`: Backport PR #15809 on branch v3.2.x (Exclude artists from legend using label attributte)
+* :ghpull:`15809`: Exclude artists from legend using label attributte
+* :ghpull:`15808`: Backport PR #15513 on branch v3.2.x (Separate plots using #### in make_room_for_ylabel_using_axesgrid.py)
+* :ghpull:`15513`: Separate plots using #### in make_room_for_ylabel_using_axesgrid.py
+* :ghpull:`15807`: Backport PR #15791 on branch v3.2.x (Cleanup backend_bases docstrings.)
+* :ghpull:`15791`: Cleanup backend_bases docstrings.
+* :ghpull:`15803`: Backport PR #15795 on branch v3.2.x (Remove incorrect statement re2: colorbars in image tutorial.)
+* :ghpull:`15795`: Remove incorrect statement re: colorbars in image tutorial.
+* :ghpull:`15794`: Backport PR #15793 on branch v3.2.x (fix a couple typos in tutorials)
+* :ghpull:`15793`: fix a couple typos in tutorials
+* :ghpull:`15774`: Backport PR #15748 on branch v3.2.x (Fix incorrect macro in FT2Font setup.)
+* :ghpull:`15748`: Fix incorrect macro in FT2Font setup.
+* :ghpull:`15759`: Backport PR #15751 on branch v3.2.x (Modernize FAQ entry for plt.show().)
+* :ghpull:`15762`: Backport PR #15752 on branch v3.2.x (Update boxplot/violinplot faq.)
+* :ghpull:`15755`: Backport PR #15661 on branch v3.2.x (Document scope of 3D scatter depthshading.)
+* :ghpull:`15742`: Backport PR #15729 on branch v3.2.x (Catch correct parse errror type for dateutil >= 2.8.1)
+* :ghpull:`15738`: Backport PR #15737 on branch v3.2.x (Fix env override in WebAgg backend test.)
+* :ghpull:`15724`: Backport PR #15718 on branch v3.2.x (Update donation link)
+* :ghpull:`15716`: Backport PR #15683 on branch v3.2.x (Cleanup dates.py docstrings.)
+* :ghpull:`15683`: Cleanup dates.py docstrings.
+* :ghpull:`15688`: Backport PR #15682 on branch v3.2.x (Make histogram_bin_edges private.)
+* :ghpull:`15682`: Make histogram_bin_edges private.
+* :ghpull:`15666`: Backport PR #15649 on branch v3.2.x (Fix searchindex.js loading when ajax fails (because e.g. CORS in embedded iframes))
+* :ghpull:`15669`: Backport PR #15654 on branch v3.2.x (Fix some broken links.)
+* :ghpull:`15660`: Backport PR #15647 on branch v3.2.x (Update some links)
+* :ghpull:`15653`: Backport PR #15623 on branch v3.2.x (Docstring for Artist.mouseover)
+* :ghpull:`15623`: Docstring for Artist.mouseover
+* :ghpull:`15634`: Backport PR #15626 on branch v3.2.x (Note minimum supported version for fontconfig.)
+* :ghpull:`15633`: Backport PR #15620 on branch v3.2.x (TST: Increase tolerance of some tests for aarch64)
+* :ghpull:`15626`: Note minimum supported version for fontconfig.
+* :ghpull:`15632`: Backport PR #15627 on branch v3.2.x (Make it easier to test various animation writers in examples.)
+* :ghpull:`15620`: TST: Increase tolerance of some tests for aarch64
+* :ghpull:`15627`: Make it easier to test various animation writers in examples.
+* :ghpull:`15618`: Backport PR #15613 on branch v3.2.x (Revert "Don't bother with manually resizing the Qt main window.")
+* :ghpull:`15613`: Revert "Don't bother with manually resizing the Qt main window."
+* :ghpull:`15593`: Backport PR #15590 on branch v3.2.x (Rename numpy to NumPy in docs.)
+* :ghpull:`15590`: Rename numpy to NumPy in docs.
+* :ghpull:`15588`: Backport PR #15478 on branch v3.2.x (Make ConciseDateFormatter obey timezone)
+* :ghpull:`15478`: Make ConciseDateFormatter obey timezone
+* :ghpull:`15583`: Backport PR #15512 on branch v3.2.x
+* :ghpull:`15584`: Backport PR #15579 on branch v3.2.x (Remove matplotlib.sphinxext.tests from __init__.py)
+* :ghpull:`15579`: Remove matplotlib.sphinxext.tests from __init__.py
+* :ghpull:`15577`: Backport PR #14705 on branch v3.2.x (Correctly size non-ASCII characters in agg backend.)
+* :ghpull:`14705`: Correctly size non-ASCII characters in agg backend.
+* :ghpull:`15572`: Backport PR #15452 on branch v3.2.x (Improve example for tick formatters)
+* :ghpull:`15570`: Backport PR #15561 on branch v3.2.x (Update thirdparty scalebar)
+* :ghpull:`15452`: Improve example for tick formatters
+* :ghpull:`15545`: Backport PR #15429 on branch v3.2.x (Fix OSX build on azure)
+* :ghpull:`15544`: Backport PR #15537 on branch v3.2.x (Add a third party package in the doc: matplotlib-scalebar)
+* :ghpull:`15561`: Update thirdparty scalebar
+* :ghpull:`15567`: Backport PR #15562 on branch v3.2.x (Improve docsting of AxesImage)
+* :ghpull:`15562`: Improve docsting of AxesImage
+* :ghpull:`15565`: Backport PR #15556 on branch v3.2.x (Fix test suite compat with ghostscript 9.50.)
+* :ghpull:`15556`: Fix test suite compat with ghostscript 9.50.
+* :ghpull:`15560`: Backport PR #15553 on branch v3.2.x (DOC: add cache-buster query string to css path)
+* :ghpull:`15552`: Backport PR #15528 on branch v3.2.x (Declutter home page)
+* :ghpull:`15554`: Backport PR #15523 on branch v3.2.x (numpydoc AxesImage)
+* :ghpull:`15523`: numpydoc AxesImage
+* :ghpull:`15549`: Backport PR #15516 on branch v3.2.x (Add logo like font)
+* :ghpull:`15543`: Backport PR #15539 on branch v3.2.x (Small cleanups to backend docs.)
+* :ghpull:`15542`: Backport PR #15540 on branch v3.2.x (axisartist tutorial fixes.)
+* :ghpull:`15537`: Add a third party package in the doc: matplotlib-scalebar
+* :ghpull:`15541`: Backport PR #15533 on branch v3.2.x (Use svg instead of png for website logo)
+* :ghpull:`15539`: Small cleanups to backend docs.
+* :ghpull:`15540`: axisartist tutorial fixes.
+* :ghpull:`15538`: Backport PR #15535 on branch v3.2.x (Avoid really long lines in event handling docs.)
+* :ghpull:`15535`: Avoid really long lines in event handling docs.
+* :ghpull:`15531`: Backport PR #15527 on branch v3.2.x (Clarify imshow() docs concerning scaling and grayscale images)
+* :ghpull:`15527`: Clarify imshow() docs concerning scaling and grayscale images
+* :ghpull:`15522`: Backport PR #15500 on branch v3.2.x (Improve antialiasing example)
+* :ghpull:`15524`: Backport PR #15499 on branch v3.2.x (Do not show path in font table example)
+* :ghpull:`15525`: Backport PR #15498 on branch v3.2.x (Simplify matshow example)
+* :ghpull:`15498`: Simplify matshow example
+* :ghpull:`15499`: Do not show path in font table example
+* :ghpull:`15521`: Backport PR #15519 on branch v3.2.x (FIX: fix anti-aliasing zoom bug)
+* :ghpull:`15500`: Improve antialiasing example
+* :ghpull:`15519`: FIX: fix anti-aliasing zoom bug
+* :ghpull:`15510`: Backport PR #15489 on branch v3.2.x (DOC: adding main nav to site)
+* :ghpull:`15495`: Backport PR #15486 on branch v3.2.x (Fixes an error in the documentation of Ellipse)
+* :ghpull:`15488`: Backport PR #15372 on branch v3.2.x (Add example for drawstyle)
+* :ghpull:`15490`: Backport PR #15487 on branch v3.2.x (Fix window not always raised in Qt example)
+* :ghpull:`15487`: Fix window not always raised in Qt example
+* :ghpull:`15372`: Add example for drawstyle
+* :ghpull:`15485`: Backport PR #15454 on branch v3.2.x (Rewrite Anscombe's quartet example)
+* :ghpull:`15483`: Backport PR #15480 on branch v3.2.x (Fix wording in [packages] section of setup.cfg)
+* :ghpull:`15454`: Rewrite Anscombe's quartet example
+* :ghpull:`15480`: Fix wording in [packages] section of setup.cfg
+* :ghpull:`15477`: Backport PR #15464 on branch v3.2.x (Remove unused code (remainder from #15453))
+* :ghpull:`15471`: Backport PR #15460 on branch v3.2.x (Fix incorrect value check in axes_grid.)
+* :ghpull:`15456`: Backport PR #15453 on branch v3.2.x (Improve example for tick locators)
+* :ghpull:`15457`: Backport PR #15450 on branch v3.2.x (API: rename DivergingNorm to TwoSlopeNorm)
+* :ghpull:`15450`: API: rename DivergingNorm to TwoSlopeNorm
+* :ghpull:`15434`: In imsave, let pnginfo have precedence over metadata.
+* :ghpull:`15445`: Backport PR #15439 on branch v3.2.x (DOC: mention discourse main page)
+* :ghpull:`15425`: Backport PR #15422 on branch v3.2.x (FIX: typo in attribute lookup)
+* :ghpull:`15449`: DOC: fix build
+* :ghpull:`15429`: Fix OSX build on azure
+* :ghpull:`15420`: Backport PR #15380 on branch v3.2.x (Update docs of BoxStyle)
+* :ghpull:`15380`: Update docs of BoxStyle
+* :ghpull:`15300`: CI: use python -m to make sure we are using the pip/pytest we want
+* :ghpull:`15414`: Backport PR #15413 on branch v3.2.x (catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399)
+* :ghpull:`15413`: catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399
+* :ghpull:`15406`: Backport PR #15347 on branch v3.2.x (Fix axes.hist bins units)
+* :ghpull:`15405`: Backport PR #15391 on branch v3.2.x (Increase fontsize in inheritance graphs)
+* :ghpull:`15347`: Fix axes.hist bins units
+* :ghpull:`15391`: Increase fontsize in inheritance graphs
+* :ghpull:`15389`: Backport PR #15379 on branch v3.2.x (Document formatting strings in the docs)
+* :ghpull:`15379`: Document formatting strings in the docs
+* :ghpull:`15386`: Backport PR #15385 on branch v3.2.x (Reword hist() doc.)
+* :ghpull:`15385`: Reword hist() doc.
+* :ghpull:`15377`: Backport PR #15357 on branch v3.2.x (Add 'step' and 'barstacked' to histogram_histtypes demo)
+* :ghpull:`15357`: Add 'step' and 'barstacked' to histogram_histtypes demo
+* :ghpull:`15366`: Backport PR #15364 on branch v3.2.x (DOC: fix typo in colormap docs)
+* :ghpull:`15362`: Backport PR #15350 on branch v3.2.x (Don't generate double-reversed cmaps ("viridis_r_r", ...).)
+* :ghpull:`15360`: Backport PR #15258 on branch v3.2.x (Don't fallback to view limits when autoscale()ing no data.)
+* :ghpull:`15350`: Don't generate double-reversed cmaps ("viridis_r_r", ...).
+* :ghpull:`15258`: Don't fallback to view limits when autoscale()ing no data.
+* :ghpull:`15299`: Backport PR #15296 on branch v3.2.x (Fix typo/bug from 18cecf7)
+* :ghpull:`15327`: Backport PR #15326 on branch v3.2.x (List of minimal versions of dependencies)
+* :ghpull:`15326`: List of minimal versions of dependencies
+* :ghpull:`15317`: Backport PR #15291 on branch v3.2.x (Remove error_msg_qt from backend_qt4.)
+* :ghpull:`15316`: Backport PR #15283 on branch v3.2.x (Don't default axes_grid colorbar locator to MaxNLocator.)
+* :ghpull:`15291`: Remove error_msg_qt from backend_qt4.
+* :ghpull:`15283`: Don't default axes_grid colorbar locator to MaxNLocator.
+* :ghpull:`15315`: Backport PR #15308 on branch v3.2.x (Doc: Add close event to list of events)
+* :ghpull:`15308`: Doc: Add close event to list of events
+* :ghpull:`15312`: Backport PR #15307 on branch v3.2.x (DOC: center footer)
+* :ghpull:`15307`: DOC: center footer
+* :ghpull:`15276`: Backport PR #15271 on branch v3.2.x (Fix font weight validation)
+* :ghpull:`15279`: Backport PR #15252 on branch v3.2.x (Mention labels and milestones in PR review guidelines)
+* :ghpull:`15252`: Mention labels and milestones in PR review guidelines
+* :ghpull:`15268`: Backport PR #15266 on branch v3.2.x (Embedding in Tk example: Fix toolbar being clipped.)
+* :ghpull:`15269`: Backport PR #15267 on branch v3.2.x (added multi-letter example to mathtext tutorial)
+* :ghpull:`15267`: added multi-letter example to mathtext tutorial
+* :ghpull:`15266`: Embedding in Tk example: Fix toolbar being clipped.
+* :ghpull:`15243`: Move some new API changes to the correct place
+* :ghpull:`15245`: Fix incorrect calls to warn_deprecated.
+* :ghpull:`15239`: Composite against white, not the savefig.facecolor rc, in print_jpeg.
+* :ghpull:`15227`: contains_point() docstring fixes
+* :ghpull:`15242`: Cleanup widgets docstrings.
+* :ghpull:`14889`: Support pixel-by-pixel alpha in imshow.
+* :ghpull:`14928`: Logit scale nonsingular
+* :ghpull:`14998`: Fix nonlinear spine positions & inline Spine._calc_offset_transform into get_spine_transform.
+* :ghpull:`15231`: Doc: Do not write default for non-existing rcParams
+* :ghpull:`15222`: Cleanup projections/__init__.py.
+* :ghpull:`15228`: Minor docstring style cleanup
+* :ghpull:`15237`: Cleanup widgets.py.
+* :ghpull:`15229`: Doc: Fix Bbox and BboxBase links
+* :ghpull:`15235`: Kill FigureManagerTk._num.
+* :ghpull:`15234`: Drop mention of msinttypes in Windows build.
+* :ghpull:`15224`: Avoid infinite loop when switching actions in qt backend.
+* :ghpull:`15230`: Doc: Remove hard-documented rcParams defaults
+* :ghpull:`15149`: pyplot.style.use() to accept pathlib.Path objects as arguments
+* :ghpull:`15220`: Correctly format floats passed to pgf backend.
+* :ghpull:`15216`: Update docstrings of contains_point(s) methods
+* :ghpull:`15209`: Exclude s-g generated files from flake8 check.
+* :ghpull:`15204`: PEP8ify some variable names.
+* :ghpull:`15196`: Force html4 writer for sphinx 2
+* :ghpull:`13544`: Improve handling of subplots spanning multiple gridspec cells.
+* :ghpull:`15194`: Trivial style fixes.
+* :ghpull:`15202`: Deprecate the renderer parameter to Figure.tight_layout.
+* :ghpull:`15195`: Fix integers being passed as length to quiver3d.
+* :ghpull:`15180`: Add some more internal links to 3.2.0 what's new
+* :ghpull:`13510`: Change Locator MAXTICKS checking to emitting a log at WARNING level.
+* :ghpull:`15184`: Mark missing_references extension as parallel read safe
+* :ghpull:`15150`: Autodetect whether pgf can use \includegraphics[interpolate].
+* :ghpull:`15163`: 3.2.0 API changes page
+* :ghpull:`15176`: What's new for 3.2.0
+* :ghpull:`11947`: Ensure streamplot Euler step is always called when going out of bounds.
+* :ghpull:`13702`: Deduplicate methods shared between Container and Artist.
+* :ghpull:`15169`: TST: verify warnings fail the test suite
+* :ghpull:`14888`: Replace some polar baseline images by check_figures_equal.
+* :ghpull:`15027`: More readability improvements on axis3d.
+* :ghpull:`15171`: Add useful error message when trying to add Slider to 3DAxes
+* :ghpull:`13775`: Doc: Scatter Hist example update
+* :ghpull:`15164`: removed a typo
+* :ghpull:`15152`: Support for shorthand hex colors.
+* :ghpull:`15159`: Follow up on #14424 for docstring
+* :ghpull:`14424`: ENH: Add argument size validation to quiver.
+* :ghpull:`15137`: DOC: add example to power limit API change note
+* :ghpull:`15144`: Improve local page contents CSS
+* :ghpull:`15143`: Restore doc references.
+* :ghpull:`15124`: Replace parameter lists with square brackets
+* :ghpull:`13077`: fix FreeType build on Azure
+* :ghpull:`15123`: Improve categorical example
+* :ghpull:`15134`: Fix missing references in doc build.
+* :ghpull:`13937`: Use PYTHONFAULTHANDLER to switch on the Python fault handler.
+* :ghpull:`13452`: Replace axis_artist.AttributeCopier by normal inheritance.
+* :ghpull:`15045`: Resize canvas when changing figure size
+* :ghpull:`15122`: Fixed app creation in qt5 backend (see #15100)
+* :ghpull:`15099`: Add lightsource parameter to bar3d
+* :ghpull:`14876`: Inline some afm parsing code.
+* :ghpull:`15119`: Deprecate a validator for a deprecated rcParam value.
+* :ghpull:`15121`: Fix Stacked bar graph example
+* :ghpull:`15113`: Cleanup layout_from_subplotspec.
+* :ghpull:`13543`: Remove zip_safe=False flag from setup.py.
+* :ghpull:`12860`: ENH: LogLocator: check for correct dimension of subs added
+* :ghpull:`14349`: Replace ValidateInterval by simpler specialized validators.
+* :ghpull:`14352`: Remove redundant is_landscape kwarg from backend_ps helpers.
+* :ghpull:`15087`: Pass gid to renderer
+* :ghpull:`14703`: Don't bother with manually resizing the Qt main window.
+* :ghpull:`14833`: Reuse TexManager implementation in convert_psfrags.
+* :ghpull:`14893`: Update layout.html for sphinx themes
+* :ghpull:`15098`: Simplify symlog range determination logic
+* :ghpull:`15112`: Cleanup legend() docstring.
+* :ghpull:`15108`: Fix doc build and resync matplotlibrc.template with actual defaults.
+* :ghpull:`14940`: Fix text kerning calculations and some FT2Font cleanup
+* :ghpull:`15082`: Privatize font_manager.JSONEncoder.
+* :ghpull:`15106`: Update docs of GridSpec
+* :ghpull:`14832`: ENH:made default tick formatter to switch to scientific notation earlier
+* :ghpull:`15086`: Style fixes.
+* :ghpull:`15073`: Add entry for blume to thirdparty package index
+* :ghpull:`15095`: Simplify _png extension by handling file open/close in Python.
+* :ghpull:`15092`: MNT: Add test for aitoff-projection
+* :ghpull:`15101`: Doc: fix typo in contour doc
+* :ghpull:`14624`: Fix axis inversion with loglocator and logitlocator.
+* :ghpull:`15088`: Fix more doc references.
+* :ghpull:`15063`: Add Comic Neue as a fantasy font.
+* :ghpull:`14867`: Propose change to PR merging policy.
+* :ghpull:`15068`: Add FontManager.addfont to register fonts at specific paths.
+* :ghpull:`13397`: Deprecate axes_grid1.colorbar (in favor of matplotlib's own).
+* :ghpull:`14521`: Move required_interactive_framework to canvas class.
+* :ghpull:`15083`: Cleanup spines example.
+* :ghpull:`14997`: Correctly set formatters and locators on removed shared axis
+* :ghpull:`15064`: Fix eps hatching in MacOS Preview
+* :ghpull:`15074`: Write all ACCEPTS markers in docstrings as comments.
+* :ghpull:`15078`: Clarify docstring of FT2Font.get_glyph_name.
+* :ghpull:`15080`: Fix cross-references in API changes < 3.0.0.
+* :ghpull:`15072`: Cleanup patheffects.
+* :ghpull:`15071`: Cleanup offsetbox.py.
+* :ghpull:`15070`: Fix cross-references in API changes < 2.0.0.
+* :ghpull:`10691`: Fix for shared axes diverging after setting tick markers
+* :ghpull:`15069`: Style fixes for font_manager.py.
+* :ghpull:`15067`: Fix cross-references in API changes < 1.0
+* :ghpull:`15061`: Fix cross-references in tutorials and FAQ
+* :ghpull:`15060`: Fix cross-references in examples.
+* :ghpull:`14957`: Documentation for using ConnectionPatch across Axes with constrained…
+* :ghpull:`15053`: Make citation bit of README less wordy
+* :ghpull:`15044`: numpydoc set_size_inches docstring
+* :ghpull:`15050`: Clarify unnecessary special handling for colons in paths.
+* :ghpull:`14797`: DOC: create a Agg figure without pyplot in buffer example
+* :ghpull:`14844`: Add citation info to README
+* :ghpull:`14884`: Do not allow canvas size to become smaller than MinSize in wx backend…
+* :ghpull:`14941`: Improvements to make_icons.py.
+* :ghpull:`15048`: DOC: more nitpick follow up
+* :ghpull:`15043`: Fix Docs: Don’t warn for unused ignores
+* :ghpull:`15025`: Re-write text wrapping logic
+* :ghpull:`14840`: Don't assume transform is valid on access to matrix.
+* :ghpull:`14862`: Make optional in docstrings optional
+* :ghpull:`15028`: Python version conf.py
+* :ghpull:`15033`: FIX: un-break nightly wheels on py37
+* :ghpull:`15046`: v3.1.x merge up
+* :ghpull:`15015`: Fix bad missing-references.json due to PR merge race condition.
+* :ghpull:`14581`: Make logscale bar/hist autolimits more consistents.
+* :ghpull:`15034`: Doc fix nitpick
+* :ghpull:`14614`: Deprecate {x,y,z}axis_date.
+* :ghpull:`14991`: Handle inherited is_separable, has_inverse in transform props detection.
+* :ghpull:`15032`: Clarify effect of axis('equal') on explicit data limits
+* :ghpull:`15031`: Update docs of GridSpec
+* :ghpull:`14106`: Describe FigureManager
+* :ghpull:`15024`: Update docs of GridSpecBase
+* :ghpull:`14906`: Deprecate some FT2Image methods.
+* :ghpull:`14963`: More Axis3D cleanup.
+* :ghpull:`15009`: Provide signatures to some C-level classes and methods.
+* :ghpull:`14968`: DOC: colormap manipulation tutorial update
+* :ghpull:`15006`: Deprecate get/set_*ticks minor positional use
+* :ghpull:`14989`: DOC:Update axes documentation
+* :ghpull:`14871`: Parametrize determinism tests.
+* :ghpull:`14768`: DOC: Enable nitpicky
+* :ghpull:`15013`: Matplotlib requires Python 3.6, which in turn requires Mac OS X 10.6+
+* :ghpull:`15012`: Fix typesetting of "GitHub"
+* :ghpull:`14954`: Cleanup polar_legend example.
+* :ghpull:`14519`: Check parameters of ColorbarBase
+* :ghpull:`14942`: Make _classic_test style a tiny patch on top of classic.
+* :ghpull:`14988`: pathlibify/fstringify setup/setupext.
+* :ghpull:`14511`: Deprecate allowing scalars for fill_between where
+* :ghpull:`14493`: Remove deprecated fig parameter form GridSpecBase.get_subplot_params()
+* :ghpull:`14995`: Further improve backend tutorial.
+* :ghpull:`15000`: Use warnings.warn, not logging.warning, in microseconds locator warning.
+* :ghpull:`14990`: Fix nonsensical transform in mixed-mode axes aspect computation.
+* :ghpull:`15002`: No need to access filesystem in test_dates.py.
+* :ghpull:`14549`: Improve backends documentation
+* :ghpull:`14774`: Fix image bbox clip.
+* :ghpull:`14978`: Typo fixes in pyplot.py
+* :ghpull:`14702`: Don't enlarge toolbar for Qt high-dpi.
+* :ghpull:`14922`: Autodetect some transform properties.
+* :ghpull:`14962`: Replace inspect.getfullargspec by inspect.signature.
+* :ghpull:`14958`: Improve docs of toplevel module.
+* :ghpull:`14926`: Save a matrix unpacking/repacking in offsetbox.
+* :ghpull:`14961`: Cleanup demo_agg_filter.
+* :ghpull:`14924`: Kill the C-level (private) RendererAgg.buffer_rgba, which returns a copy.
+* :ghpull:`14946`: Delete virtualenv faq.
+* :ghpull:`14944`: Shorten style.py.
+* :ghpull:`14931`: Deprecate some obscure rcParam synonyms.
+* :ghpull:`14947`: Fix inaccuracy re: backends in intro tutorial.
+* :ghpull:`14904`: Fix typo in secondary_axis.py example.
+* :ghpull:`14925`: Support passing spine bounds as single tuple.
+* :ghpull:`14921`: DOC: Make abbreviation of versus consistent.
+* :ghpull:`14739`: Improve indentation of Line2D properties in docstrings.
+* :ghpull:`14923`: In examples, prefer buffer_rgba to print_to_buffer.
+* :ghpull:`14908`: Make matplotlib.style.available sorted alphabetically.
+* :ghpull:`13567`: Deprecate MovieWriterRegistry cache-dirtyness system.
+* :ghpull:`14879`: Error out when unsupported kwargs are passed to Scale.
+* :ghpull:`14512`: Logit scale, changes in LogitLocator and LogitFormatter
+* :ghpull:`12415`: ENH: fig.set_size to allow non-inches units
+* :ghpull:`13783`: Deprecate disable_internet.
+* :ghpull:`14886`: Further simplify the flow of pdf text output.
+* :ghpull:`14894`: Make slowness warning for legend(loc="best") more accurate.
+* :ghpull:`14891`: Fix nightly test errors
+* :ghpull:`14895`: Fix typos
+* :ghpull:`14890`: Remove unused private helper method in mplot3d.
+* :ghpull:`14872`: Unify text layout paths.
+* :ghpull:`8183`: Allow array alpha for imshow
+* :ghpull:`13832`: Vectorize handling of stacked/cumulative in hist().
+* :ghpull:`13630`: Simplify PolarAxes.can_pan.
+* :ghpull:`14565`: Rewrite an argument check to _check_getitem
+* :ghpull:`14875`: Cleanup afm module docstring.
+* :ghpull:`14880`: Fix animation blitting for plots with shared axes
+* :ghpull:`14870`: FT2Font.get_char_index never returns None.
+* :ghpull:`13463`: Deprecate Locator.autoscale.
+* :ghpull:`13724`: ENH: anti-alias down-sampled images
+* :ghpull:`14848`: Clearer error message for plt.axis()
+* :ghpull:`14660`: colorbar(label=None) should give an empty label
+* :ghpull:`14654`: Cleanup of docstrings of scales
+* :ghpull:`14868`: Update bar stacked example to directly manipulate axes.
+* :ghpull:`14749`: Fix get_canvas_width_height() for pgf backend.
+* :ghpull:`14776`: Make ExecutableUnavailableError
+* :ghpull:`14843`: Don't try to cleanup CallbackRegistry during interpreter shutdown.
+* :ghpull:`14849`: Improve tkagg icon resolution
+* :ghpull:`14866`: changed all readme headings to verbs
+* :ghpull:`13364`: Numpyfy tick handling code in Axis3D.
+* :ghpull:`13642`: FIX: get_datalim for collection
+* :ghpull:`14860`: Stopgap fix for pandas converters in tests.
+* :ghpull:`6498`: Check canvas identity in Artist.contains.
+* :ghpull:`14707`: Add titlecolor in rcParams
+* :ghpull:`14853`: Fix typo in set_adjustable check.
+* :ghpull:`14845`: More cleanups.
+* :ghpull:`14809`: Clearer calls to ConnectionPatch.
+* :ghpull:`14716`: Use str instead of string as type in docstrings
+* :ghpull:`14338`: Simplify/pathlibify image_comparison.
+* :ghpull:`8930`: timedelta formatter
+* :ghpull:`14733`: Deprecate FigureFrameWx.statusbar & NavigationToolbar2Wx.statbar.
+* :ghpull:`14713`: Unite masked and NaN plot examples
+* :ghpull:`14576`: Let Axes3D share have_units, _on_units_changed with 2d axes.
+* :ghpull:`14575`: Make ticklabel_format work both for 2D and 3D axes.
+* :ghpull:`14834`: DOC: Webpage not formated correctly on gallery docs
+* :ghpull:`14730`: Factor out common parts of wx event handlers.
+* :ghpull:`14727`: Fix axes aspect for non-linear, non-log, possibly mixed-scale axes.
+* :ghpull:`14835`: Only allow set_adjustable("datalim") for axes with standard data ratios.
+* :ghpull:`14746`: Simplify Arrow constructor.
+* :ghpull:`14752`: Doc changes to git setup
+* :ghpull:`14732`: Deduplicate wx configure_subplots tool.
+* :ghpull:`14715`: Use array-like in docs
+* :ghpull:`14728`: More floating_axes cleanup.
+* :ghpull:`14719`: Make Qt navtoolbar more robust against removal of either pan or zoom.
+* :ghpull:`14695`: Various small simplifications
+* :ghpull:`14745`: Replace Affine2D().scale(x, x) by Affine2D().scale(x).
+* :ghpull:`14687`: Add missing spaces after commas in docs
+* :ghpull:`14810`: Lighten icons of NavigationToolbar2QT on dark-themes
+* :ghpull:`14786`: Deprecate axis_artist.BezierPath.
+* :ghpull:`14750`: Misc. simplifications.
+* :ghpull:`14807`: API change note on automatic blitting detection for backends
+* :ghpull:`11004`: Deprecate smart_bounds handling in Axis and Spine
+* :ghpull:`14785`: Kill some never-used attributes.
+* :ghpull:`14723`: Cleanup some parameter descriptions in matplotlibrc.template
+* :ghpull:`14808`: Small docstring updates
+* :ghpull:`14686`: Inset orientation
+* :ghpull:`14805`: Simplify text_layout example.
+* :ghpull:`12052`: Make AxesImage.contains account for transforms
+* :ghpull:`11860`: Let MovieFileWriter save temp files in a new dir
+* :ghpull:`11423`: FigureCanvas Designer
+* :ghpull:`10688`: Add legend handler and artist for FancyArrow
+* :ghpull:`8321`: Added ContourSet clip_path kwarg and set_clip_path() method (#2369)
+* :ghpull:`14641`: Simplify _process_plot_var_args.
+* :ghpull:`14631`: Refactor from_levels_and_colors.
+* :ghpull:`14790`: DOC:Add link to style examples in matplotlib.style documentation
+* :ghpull:`14799`: Deprecate dates.mx2num.
+* :ghpull:`14793`: Remove sudo tag in travis
+* :ghpull:`14795`: Autodetect whether a canvas class supports blitting.
+* :ghpull:`14794`: DOC: Update the documetation of homepage of website
+* :ghpull:`14629`: Delete HTML build sources to save on artefact upload time
+* :ghpull:`14792`: Fix spelling typos
+* :ghpull:`14789`: Prefer Affine2D.translate to offset_transform in examples.
+* :ghpull:`14783`: Cleanup mlab.detrend.
+* :ghpull:`14791`: Make 'extended' and 'expanded' synonymous in font_manager
+* :ghpull:`14787`: Remove axis_artist _update, which is always a noop.
+* :ghpull:`14758`: Compiling C-ext with incorrect FreeType libs makes future compiles break
+* :ghpull:`14763`: Deprecate math_symbol_table function directive
+* :ghpull:`14762`: Decrease uses of get_canvas_width_height.
+* :ghpull:`14748`: Cleanup demo_text_path.
+* :ghpull:`14740`: Remove sudo tag in travis
+* :ghpull:`14737`: Cleanup twin axes docstrings.
+* :ghpull:`14729`: Small simplifications.
+* :ghpull:`14726`: Trivial simplification to Axis3d._get_coord_info.
+* :ghpull:`14718`: Add explanations for single character color names.
+* :ghpull:`14710`: Pin pydocstyle<4.0
+* :ghpull:`14709`: Try to improve the readability and styling of matplotlibrc.template file
+* :ghpull:`14278`: Inset axes bug and docs fix
+* :ghpull:`14478`: MNT: protect from out-of-bounds data access at the c level
+* :ghpull:`14569`: More deduplication of backend_tools.
+* :ghpull:`14652`: Soft-deprecate transform_point.
+* :ghpull:`14664`: Improve error reporting for scatter c as invalid RGBA.
+* :ghpull:`14625`: Don't double-wrap in silent_list.
+* :ghpull:`14689`: Update embedding_in_wx4 example.
+* :ghpull:`14679`: Further simplify colormap reversal.
+* :ghpull:`14667`: Move most of pytest's conf to conftest.py.
+* :ghpull:`14632`: Remove reference to old Tk/Windows bug.
+* :ghpull:`14673`: More shortening of setup.py prints.
+* :ghpull:`14678`: Fix small typo
+* :ghpull:`14680`: Format parameters in descriptions with emph instead of backticks
+* :ghpull:`14674`: Simplify colormap reversal.
+* :ghpull:`14672`: Artist tutorial fixes
+* :ghpull:`14653`: Remove some unnecessary prints from setup.py.
+* :ghpull:`14662`: Add a _check_getitem helper to go with _check_in_list/_check_isinstance.
+* :ghpull:`14666`: Update IPython's doc link in Image tutorial
+* :ghpull:`14671`: Improve readability of matplotlibrc.template
+* :ghpull:`14665`: Fix a typo in pyplot tutorial
+* :ghpull:`14616`: Use builtin round instead of np.round for scalars.
+* :ghpull:`12554`: backend_template docs and fixes
+* :ghpull:`14635`: Fix bug when setting negative limits and using log scale
+* :ghpull:`14604`: Update hist() docstring following removal of normed kwarg.
+* :ghpull:`14630`: Remove the private Tick._name attribute.
+* :ghpull:`14555`: Coding guidelines concerning the API
+* :ghpull:`14516`: Document and test _get_packed_offsets()
+* :ghpull:`14628`: matplotlib > Matplotlib in devel docs
+* :ghpull:`14627`: gitignore pip-wheel-metadta/ directory
+* :ghpull:`14612`: Update some mplot3d docs.
+* :ghpull:`14617`: Remove a Py2.4(!) backcompat fix.
+* :ghpull:`14605`: Update hist2d() docstring.
+* :ghpull:`13084`: When linking against libpng/zlib on Windows, use upstream lib names.
+* :ghpull:`13685`: Remove What's new fancy example
+* :ghpull:`14573`: Cleanup jpl_units.
+* :ghpull:`14583`: Fix overly long lines in setupext.
+* :ghpull:`14588`: Remove [status] suppress from setup.cfg.
+* :ghpull:`14591`: Style fixes for secondary_axis.
+* :ghpull:`14594`: DOC: Make temperature scale example use a closure for easier reusability
+* :ghpull:`14447`: FIX: allow secondary axes minor locators to be set
+* :ghpull:`14567`: Fix unicode_minus + usetex.
+* :ghpull:`14351`: Remove some redundant check_in_list calls.
+* :ghpull:`14550`: Restore thumbnail of usage guide
+* :ghpull:`10222`: Use symlinks instead of copies for test result_images.
+* :ghpull:`14267`: cbook docs cleanup
+* :ghpull:`14556`: Improve @deprecated's docstring.
+* :ghpull:`14557`: Clarify how to work with threads.
+* :ghpull:`14545`: In contributing.rst, encourage kwonly args and minimizing public APIs.
+* :ghpull:`14533`: Misc. style fixes.
+* :ghpull:`14542`: Move plot_directive doc to main API index.
+* :ghpull:`14499`: Improve custom figure example
+* :ghpull:`14543`: Remove the "Developing a new backend" section from contributing guide.
+* :ghpull:`14540`: Simplify backend switching in plot_directive.
+* :ghpull:`14539`: Don't overindent enumerated list in plot_directive docstring.
+* :ghpull:`14537`: Slightly tighten the Bbox API.
+* :ghpull:`14223`: Rewrite intro to usage guide.
+* :ghpull:`14495`: Numpydocify axes_artist.py
+* :ghpull:`14529`: mpl_toolkits style fixes.
+* :ghpull:`14528`: mathtext style fixes.
+* :ghpull:`13536`: Make unit converters also handle instances of subclasses.
+* :ghpull:`13730`: Include FreeType error codes in FreeType exception messages.
+* :ghpull:`14500`: Fix pydocstyle D403 (First word of the first line should be properly capitalized) in examples
+* :ghpull:`14506`: Simplify Qt tests.
+* :ghpull:`14513`: More fixes to pydocstyle D403 (First word capitalization)
+* :ghpull:`14496`: Fix pydocstyle D208 (Docstring is over-indented)
+* :ghpull:`14347`: Deprecate rcsetup.validate_path_exists.
+* :ghpull:`14383`: Remove the ````package_data.dlls```` setup.cfg entry.
+* :ghpull:`14346`: Simplify various validators in rcsetup.
+* :ghpull:`14366`: Move test_rcparams test files inline into test_rcparams.py.
+* :ghpull:`14401`: Assume that mpl-data is in its standard location.
+* :ghpull:`14454`: Simplify implementation of svg.image_inline.
+* :ghpull:`14470`: Add _check_isinstance helper.
+* :ghpull:`14479`: fstringify backend_ps more.
+* :ghpull:`14484`: Support unicode minus with ps.useafm.
+* :ghpull:`14494`: Style fixes.
+* :ghpull:`14465`: Docstrings cleanups.
+* :ghpull:`14466`: Let SecondaryAxis inherit get_tightbbox from _AxesBase.
+* :ghpull:`13940`: Some more f-strings.
+* :ghpull:`14379`: Remove unnecessary uses of unittest.mock.
+* :ghpull:`14483`: Improve font weight guessing.
+* :ghpull:`14419`: Fix test_imshow_pil on Windows.
+* :ghpull:`14460`: canvas.blit() already defaults to blitting the full figure canvas.
+* :ghpull:`14462`: Register timeout pytest marker.
+* :ghpull:`14414`: FEATURE: Alpha channel in Gouraud triangles in the pdf backend
+* :ghpull:`13659`: Clarify behavior of the 'tight' kwarg to autoscale/autoscale_view.
+* :ghpull:`13901`: Only test png output for mplot3d.
+* :ghpull:`13338`: Replace list.extend by star-expansion or other constructs.
+* :ghpull:`14448`: Misc doc style cleanup
+* :ghpull:`14310`: Update to Bounding Box for Qt5 FigureCanvasATAgg.paintEvent()
+* :ghpull:`14380`: Inline $MPLLOCALFREETYPE/$PYTEST_ADDOPTS/$NPROC in .travis.yml.
+* :ghpull:`14413`: MAINT: small improvements to the pdf backend
+* :ghpull:`14452`: MAINT: Minor cleanup to make functions more self consisntent
+* :ghpull:`14441`: Misc. docstring cleanups.
+* :ghpull:`14440`: Interpolations example
+* :ghpull:`14402`: Prefer ``mpl.get_data_path()``, and support Paths in FontProperties.
+* :ghpull:`14420`: MAINT: Upgrade pytest again
+* :ghpull:`14423`: Fix docstring of subplots().
+* :ghpull:`14410`: Use aspect=1, not aspect=True.
+* :ghpull:`14412`: MAINT: Don't install pytest 4.6.0 on Travis
+* :ghpull:`14377`: Rewrite assert np.* tests to use numpy.testing
+* :ghpull:`14399`: Improve warning for case where data kwarg entry is ambiguous.
+* :ghpull:`14390`: Cleanup docs of bezier
+* :ghpull:`14400`: Fix to_rgba_array() for empty input
+* :ghpull:`14308`: Small clean to SymmetricalLogLocator
+* :ghpull:`14311`: travis: add c code coverage measurements
+* :ghpull:`14393`: Remove remaining unicode-strings markers.
+* :ghpull:`14391`: Remove explicit inheritance from object
+* :ghpull:`14343`: acquiring and releaseing keypresslock when textbox is being activated
+* :ghpull:`14353`: Register flaky pytest marker.
+* :ghpull:`14373`: Properly hide __has_include to support C++<17 compilers.
+* :ghpull:`14378`: Remove setup_method
+* :ghpull:`14368`: Finish removing jquery from the repo.
+* :ghpull:`14360`: Deprecate ``boxplot(..., whis="range")``.
+* :ghpull:`14376`: Simplify removal of figure patch from bbox calculations.
+* :ghpull:`14363`: Make is_natively_supported private.
+* :ghpull:`14330`: Remove remaining unittest.TestCase uses
+* :ghpull:`13663`: Kill the PkgConfig singleton in setupext.
+* :ghpull:`13067`: Simplify generation of error messages for missing libpng/freetype.
+* :ghpull:`14358`: DOC boxplot ``whis`` parameter
+* :ghpull:`14014`: Disallow figure argument for pyplot.subplot() and Figure.add_subplot()
+* :ghpull:`14350`: Use cbook._check_in_list more often.
+* :ghpull:`14348`: Cleanup markers.py.
+* :ghpull:`14345`: Use importorskip for tests depending on pytz.
+* :ghpull:`14170`: In setup.py, inline the packages that need to be installed into setup().
+* :ghpull:`14332`: Use raw docstrings instead of escaping backslashes
+* :ghpull:`14336`: Enforce pydocstyle D412
+* :ghpull:`14144`: Deprecate the 'warn' parameter to matplotlib.use().
+* :ghpull:`14328`: Remove explicit inheritance from object
+* :ghpull:`14035`: Improve properties formatting in interpolated docstrings.
+* :ghpull:`14018`: pep8ing.
+* :ghpull:`13542`: Move {setup,install}_requires from setupext.py to setup.py.
+* :ghpull:`13670`: Simplify the logic of axis().
+* :ghpull:`14046`: Deprecate checkdep_ps_distiller.
+* :ghpull:`14236`: Simplify StixFonts.get_sized_alternatives_for_symbol.
+* :ghpull:`14101`: Shorten _ImageBase._make_image.
+* :ghpull:`14246`: Deprecate public use of makeMappingArray
+* :ghpull:`13740`: Deprecate plotfile.
+* :ghpull:`14216`: Walk the artist tree when preparing for saving with tight bbox.
+* :ghpull:`14305`: Small grammatical error.
+* :ghpull:`14104`: Factor out retrieval of data relative to datapath
+* :ghpull:`14016`: pep8ify backends.
+* :ghpull:`14299`: Fix #13711 by importing cbook.
+* :ghpull:`14244`: Remove APIs deprecated in mpl3.0.
+* :ghpull:`14068`: Alternative fix for passing iterator as frames to FuncAnimation
+* :ghpull:`13711`: Deprecate NavigationToolbar2Tk.set_active.
+* :ghpull:`14280`: Simplify validate_markevery logic.
+* :ghpull:`14273`: pep8ify a couple of variable names.
+* :ghpull:`14115`: Reorganize scatter arguments parsing.
+* :ghpull:`14271`: Replace some uses of np.iterable
+* :ghpull:`14257`: Changing cmap(np.nan) to 'bad' value rather than 'under' value
+* :ghpull:`14259`: Deprecate string as color sequence
+* :ghpull:`13506`: Change colorbar for contour to have the proper axes limits...
+* :ghpull:`13494`: Add colorbar annotation example plot to gallery
+* :ghpull:`14266`: Make matplotlib.figure.AxesStack private
+* :ghpull:`14166`: Shorten usage of ``@image_comparison``.
+* :ghpull:`14240`: Merge up 31x
+* :ghpull:`14242`: Avoid a buffer copy in PillowWriter.
+* :ghpull:`9672`: Only set the wait cursor if the last draw was >1s ago.
+* :ghpull:`14224`: Update plt.show() doc
+* :ghpull:`14218`: Use stdlib mimetypes instead of hardcoding them.
+* :ghpull:`14082`: In tk backend, don't try to update mouse position after resize.
+* :ghpull:`14084`: Check number of positional arguments passed to quiver()
+* :ghpull:`14214`: Fix some docstring style issues.
+* :ghpull:`14201`: Fix E124 flake8 violations (closing bracket indentation).
+* :ghpull:`14096`: Consistently use axs to refer to a set of Axes
+* :ghpull:`14204`: Fix various flake8 indent problems.
+* :ghpull:`14205`: Obey flake8 "don't assign a lambda, use a def".
+* :ghpull:`14198`: Remove unused imports
+* :ghpull:`14173`: Prepare to change the default pad for AxesDivider.append_axes.
+* :ghpull:`13738`: Fix TypeError when plotting stacked bar chart with decimal
+* :ghpull:`14151`: Clarify error with usetex when cm-super is not installed.
+* :ghpull:`14107`: Feature: draw percentiles in violinplot
+* :ghpull:`14172`: Remove check_requirements from setupext.
+* :ghpull:`14158`: Fix test_lazy_imports in presence of $MPLBACKEND or matplotlibrc.
+* :ghpull:`14157`: Isolate nbagg test from user ipython profile.
+* :ghpull:`14147`: Dedent overindented list in example docstring.
+* :ghpull:`14134`: Deprecate the dryrun parameter to print_foo().
+* :ghpull:`14145`: Remove warnings handling for fixed bugs.
+* :ghpull:`13977`: Always import pyplot when calling matplotlib.use().
+* :ghpull:`14131`: Make test suite fail on warnings.
+* :ghpull:`13593`: Only autoscale_view() when needed, not after every plotting call.
+* :ghpull:`13902`: Add support for metadata= and pil_kwargs= in imsave().
+* :ghpull:`14140`: Avoid backslash-quote by changing surrounding quotes.
+* :ghpull:`14132`: Move some toplevel strings into the only functions that use them.
+* :ghpull:`13708`: Annotation.contains shouldn't consider the text+arrow's joint bbox.
+* :ghpull:`13980`: Don't let margins expand polar plots to negative radii by default.
+* :ghpull:`14075`: Remove uninformative entries from glossary.
+* :ghpull:`14002`: Allow pandas DataFrames through norms
+* :ghpull:`14114`: Allow SVG Text-as-Text to Use Data Coordinates
+* :ghpull:`14120`: Remove mention of $QT_API in matplotlibrc example.
+* :ghpull:`13878`: Style fixes for floating_axes.
+* :ghpull:`14108`: Deprecate FigureCanvasMac.invalidate in favor of draw_idle.
+* :ghpull:`13879`: Clarify handling of "extreme" values in FloatingAxisArtistHelper.
+* :ghpull:`5602`: Automatic downsampling of images.
+* :ghpull:`14112`: Remove old code path in layout.html
+* :ghpull:`13959`: Scatter: make "c" and "s" argument handling more consistent.
+* :ghpull:`14110`: Simplify scatter_piecharts example.
+* :ghpull:`14111`: Trivial cleanups.
+* :ghpull:`14085`: Simplify get_current_fig_manager().
+* :ghpull:`14083`: Deprecate FigureCanvasBase.draw_cursor.
+* :ghpull:`14089`: Cleanup bar_stacked, bar_unit_demo examples.
+* :ghpull:`14063`: Add pydocstyle checks to flake8
+* :ghpull:`14077`: Fix tick label wobbling in animated Qt example
+* :ghpull:`14070`: Cleanup some pyplot docstrings.
+* :ghpull:`6280`: Added ability to offset errorbars when using errorevery.
+* :ghpull:`13679`: Fix passing iterator as frames to FuncAnimation
+* :ghpull:`14023`: Improve Unicode minus example
+* :ghpull:`14041`: Pretty-format subprocess logs.
+* :ghpull:`14038`: Cleanup path.py docstrings.
+* :ghpull:`13701`: Small cleanups.
+* :ghpull:`14020`: Better error message when trying to use Gtk3Agg backend without cairo
+* :ghpull:`14021`: Fix ax.legend Returns markup
+* :ghpull:`13986`: Support RGBA for quadmesh mode of pcolorfast.
+* :ghpull:`14009`: Deprecate compare_versions.
+* :ghpull:`14010`: Deprecate get_home()
+* :ghpull:`13932`: Remove many unused variables.
+* :ghpull:`13854`: Cleanup contour.py.
+* :ghpull:`13866`: Switch PyArg_ParseTupleAndKeywords from "es" to "s".
+* :ghpull:`13945`: Make unicode_minus example more focused.
+* :ghpull:`13876`: Deprecate factor=None in axisartist.
+* :ghpull:`13929`: Better handle deprecated rcParams.
+* :ghpull:`13851`: Deprecate setting Axis.major.locator to non-Locator; idem for Formatters
+* :ghpull:`13938`: numpydocify quiverkey.
+* :ghpull:`13936`: Pathlibify animation.
+* :ghpull:`13984`: Allow setting tick colour on 3D axes
+* :ghpull:`13987`: Deprecate mlab.{apply_window,stride_repeat}.
+* :ghpull:`13983`: Fix locator/formatter setting when removing shared Axes
+* :ghpull:`13957`: Remove many unused variables in tests.
+* :ghpull:`13981`: Test cleanups.
+* :ghpull:`13970`: Check vmin/vmax are valid when doing inverse in LogNorm
+* :ghpull:`13978`: Make normalize_kwargs more convenient for third-party use.
+* :ghpull:`13972`: Remove _process_plot_var_args.set{line,patch}_props.
+* :ghpull:`13795`: Make _warn_external correctly report warnings arising from tests.
+* :ghpull:`13885`: Deprecate axisartist.grid_finder.GridFinderBase.
+* :ghpull:`13913`: Fix string numbers in to_rgba() and is_color_like()
+* :ghpull:`13935`: Deprecate the useless switch_backend_warn parameter to matplotlib.test.
+* :ghpull:`13952`: Cleanup animation tests.
+* :ghpull:`13942`: Make Cursors an (Int)Enum.
+* :ghpull:`13953`: Unxfail a now fixed test in test_category.
+* :ghpull:`13925`: Fix passing Path to ps backend when text.usetex rc is True.
+* :ghpull:`13943`: Don't crash on str(figimage(...)).
+* :ghpull:`13944`: Document how to support unicode minus in pgf backend.
+* :ghpull:`13802`: New rcparam to set default axes title location
+* :ghpull:`13855`: ``a and b or c`` -> ``b if a else c``
+* :ghpull:`13923`: Correctly handle invalid PNG metadata.
+* :ghpull:`13926`: Suppress warnings in tests.
+* :ghpull:`13920`: Style fixes for category.py.
+* :ghpull:`13889`: Shorten docstrings by removing unneeded :class:/:func: + rewordings.
+* :ghpull:`13911`: Fix joinstyles example
+* :ghpull:`13917`: Faster categorical tick formatter.
+* :ghpull:`13918`: Make matplotlib.testing assume pytest by default, not nose.
+* :ghpull:`13894`: Check for positive number of rows and cols
+* :ghpull:`13895`: Remove unused setupext.is_min_version.
+* :ghpull:`13886`: Shorten Figure.set_size_inches.
+* :ghpull:`13859`: Ensure figsize is positive finite
+* :ghpull:`13877`: ``zeros_like(x) + y`` -> ``full_like(x, y)``
+* :ghpull:`13875`: Style fixes for grid_helper_curvelinear.
+* :ghpull:`13873`: Style fixes to grid_finder.
+* :ghpull:`13782`: Don't access internet during tests.
+* :ghpull:`13833`: Some more usage of _check_in_list.
+* :ghpull:`13834`: Cleanup FancyArrowPatch docstring
+* :ghpull:`13811`: Generate Figure method wrappers via boilerplate.py
+* :ghpull:`13797`: Move sphinxext test to matplotlib.tests like everyone else.
+* :ghpull:`13770`: broken_barh docstring
+* :ghpull:`13757`: Remove mention of "enabling fontconfig support".
+* :ghpull:`13454`: Add "c" as alias for "color" for Collections
+* :ghpull:`13756`: Reorder the logic of _update_title_position.
+* :ghpull:`13744`: Restructure boilerplate.py
+* :ghpull:`13369`: Use default colours for examples
+* :ghpull:`13697`: Delete pyplot_scales example.
+* :ghpull:`13726`: Clarify a bit the implementation of blend_hsv.
+* :ghpull:`13731`: Check for already running QApplication in Qt embedding example.
+* :ghpull:`13736`: Deduplicate docstrings and validation for set_alpha.
+* :ghpull:`13737`: Remove duplicated methods in FixedAxisArtistHelper.
+* :ghpull:`13721`: Kill pyplot docstrings that get overwritten by @docstring.copy.
+* :ghpull:`13690`: Cleanup hexbin.
+* :ghpull:`13683`: Remove axes border for examples that list styles
+* :ghpull:`13280`: Add SubplotSpec.add_subplot.
+* :ghpull:`11387`: Deprecate Axes3D.w_{x,y,z}axis in favor of .{x,y,z}axis.
+* :ghpull:`13671`: Suppress some warnings in tests.
+* :ghpull:`13657`: DOC: fail the doc build on errors, but keep going to end
+* :ghpull:`13647`: Fix FancyArrowPatch joinstyle
+* :ghpull:`13637`: BLD: parameterize python_requires
+* :ghpull:`13633`: plot_directive: Avoid warning if plot_formats doesn't contain 'png'
+* :ghpull:`13629`: Small example simplification.
+* :ghpull:`13620`: Improve watermark example
+* :ghpull:`13589`: Kill Axes._connected.
+* :ghpull:`13428`: free cart pendulum animation example
+* :ghpull:`10487`: fixed transparency bug
+* :ghpull:`13551`: Fix IndexError for pyplot.legend() when plotting empty bar chart with label
+* :ghpull:`13524`: Cleanup docs for GraphicsContextBase.{get,set}_dashes.
+* :ghpull:`13556`: Cleanup warnings handling in tests.
+* :ghpull:`8100`: Deprecate MAXTICKS, Locator.raise_if_exceeds.
+* :ghpull:`13534`: More followup to autoregistering 3d axes.
+* :ghpull:`13327`: pcolorfast simplifications.
+* :ghpull:`13532`: More use of cbook._check_in_list.
+* :ghpull:`13520`: Register 3d projection by default.
+* :ghpull:`13394`: Deduplicate some code between floating_axes and grid_helper_curvelinear.
+* :ghpull:`13527`: Make SubplotSpec.num2 never None.
+* :ghpull:`12249`: Replaced noqa-comments by using Axes3D.name instead of '3d' for proje…
+
+Issues (125):
+
+* :ghissue:`16487`: Add link to blog to front page
+* :ghissue:`16478`: The bottom parameter of plt.hist() shifts the data as well, not just the baseline
+* :ghissue:`16280`: SymLogNorm colorbar incorrect on master
+* :ghissue:`16448`: Bad interaction between shared axes and pcolormesh sticky edges
+* :ghissue:`16451`: InvertedLogTransform inherits from deprecated base
+* :ghissue:`16420`: Error when adding colorbar to pcolormesh of a boolean array
+* :ghissue:`16114`: Prose error on website (first paragraph)
+* :ghissue:`8291`: Unable to pickle.load(fig) with mpl in jupyter notebook
+* :ghissue:`16173`: Constrained_layout creates extra axes when used with subgridspec
+* :ghissue:`16127`: nbformat 5.0.0 missing schema files
+* :ghissue:`15849`: Using pandas.Timestamp in blended coordinate system of ax.annotate.
+* :ghissue:`6015`: scatterplot axis autoscale fails for small data values
+* :ghissue:`15806`: 3.2.0 may break some Cartopy tests
+* :ghissue:`15852`: Lasso selector does not show in Jupyter notebook
+* :ghissue:`15820`: Show incomplete tick labels when using mixed chinese and english characters
+* :ghissue:`15770`: DOCS 2D Line label option ``_nolegend_`` is not documented
+* :ghissue:`15332`: Type promotion error with datetime bins in hist
+* :ghissue:`15611`: BUG: Qt5Agg window size regression
+* :ghissue:`7130`: Incorrect autoscaling of polar plot limits after scatter
+* :ghissue:`15576`: Multi-line ticks cause cut-offs
+* :ghissue:`8609`: Clipped tick labels
+* :ghissue:`15517`: antialiased image check seems wrong when used on zoomed image
+* :ghissue:`13400`: Qt Embedding w/ Spyder
+* :ghissue:`14724`: drawstyle parameter of line needs example
+* :ghissue:`13619`: Importing matplotlib.animation prevents python script from executing in the background
+* :ghissue:`14270`: Secondary axis called with [0, 1] might produce exceptions in case these are invalid data
+* :ghissue:`15417`: Why is smart_bounds() being deprecated?
+* :ghissue:`9778`: Blanks in colorbar just inside of 'extend' arrowpoints when using AxesGrid
+* :ghissue:`15336`: DivergingNorm is a misleading name
+* :ghissue:`15399`: OSError: [Errno 86] Bad CPU type in executable: 'convert' on import matplotlib.animation
+* :ghissue:`15109`: matplotlib.collections inheritance diagram small/blurry
+* :ghissue:`15331`: Log Scale: FloatingPointError: underflow encountered in power
+* :ghissue:`15251`: Large memory growth with log scaling and linear ticking
+* :ghissue:`15247`: Colorbar tick placement issues with ImageGrid and LogNorm
+* :ghissue:`15306`: Footer off centre
+* :ghissue:`13485`: Matplotlib NavigationToolbar2Tk disappears when reducing window size
+* :ghissue:`15232`: DOC: Automatic default rcParam expansion creates misleading sentences
+* :ghissue:`14141`: setting spine position on a log plot fails
+* :ghissue:`15138`: Make plt.style.use accept path-like objects in addition to string
+* :ghissue:`14207`: Check if point is in path or not by contains_point
+* :ghissue:`13591`: Style issues when building the docs with (future) Sphinx 2.0
+* :ghissue:`8089`: Using Minute Locator to set x-axis ticks exceeds Locator.MAXTICKS
+* :ghissue:`15075`: sphinxext.missing_references does not specify if it supports parallel file read.
+* :ghissue:`10963`: Replace \pgfimage by \includegraphics in PGF backend
+* :ghissue:`15156`: ax.text fails with positional argument error
+* :ghissue:`14439`: hist() fails when all data points are np.nan
+* :ghissue:`15042`: How to handle sphinx nitpicky mode
+* :ghissue:`14060`: quiver(C=...) argument is not reasonably validated
+* :ghissue:`11335`: TST: testing not catching bad escape sequences in doc strings
+* :ghissue:`15040`: Wrong figure window size after calling fig.set_size_inches() repeatedly
+* :ghissue:`15100`: Issue with creating QApplication in QT backend
+* :ghissue:`14887`: kerning seems generally wrong
+* :ghissue:`14800`: default tick formatter could switch to scientific notation earlier
+* :ghissue:`14503`: Add a test for #14451
+* :ghissue:`14907`: ConnectionPatch across axes needs to be excluded from layout management
+* :ghissue:`14911`: Removing a shared axes via ``ax.remove()`` leads to an error.
+* :ghissue:`12462`: cbar.add_lines should allow manually adding lines, not just contour sets
+* :ghissue:`14796`: Show user how to use Agg buffer in example
+* :ghissue:`14883`: MinSize not respected using wx backend causes wxAssertionError. Bug fix included.
+* :ghissue:`15014`: Wrapping of text adds leading newline character if first word is long
+* :ghissue:`14918`: constrained_layout fails with hidden axis...
+* :ghissue:`14981`: Barplot call crashes when called with yscale="log" and bins with h=0
+* :ghissue:`4621`: Default bottom of Stepfilled histograms should be set according to ymin
+* :ghissue:`15030`: Doc build broken
+* :ghissue:`8093`: set_ylim not working with plt.axis('equal')
+* :ghissue:`6055`: Serious problems on the axes documentation
+* :ghissue:`9979`: Axis limits are set badly with small values in scatter().
+* :ghissue:`10842`: Text bbox empty dict should be ignored
+* :ghissue:`13698`: The default logit minor locator should not display tick labels
+* :ghissue:`14878`: plt.yscale doesn't throw warning with invalid kwarg
+* :ghissue:`5619`: Symlog linear region
+* :ghissue:`14564`: Broken string interpolation
+* :ghissue:`13668`: Add better error message to plt.axis()
+* :ghissue:`14563`: colorbar label prints "None" when label=None
+* :ghissue:`13660`: Closing a matplotlib figure with event handling occasionally causes “TypeError: isinstance()”
+* :ghissue:`13033`: 'NoneType' has no attribute '_alive' when using plt in a context manager
+* :ghissue:`13891`: Blurry app icon on macOS
+* :ghissue:`14656`: Axes title default color
+* :ghissue:`14831`: DOC: Webpage not formated correctly on gallery docs
+* :ghissue:`13819`: Aspect ratio for not so common scales
+* :ghissue:`8878`: Setting aspect ratio for semi-log plots
+* :ghissue:`4900`: UnboundLocalError: local variable 'aspect_scale_mode' referenced before assignment
+* :ghissue:`14608`: Issue with using plt.axis('equal') with plt.polar(theta,r) plot
+* :ghissue:`12893`: [PyQt] NavigationToolbar2QT : Error when removing tools
+* :ghissue:`14670`: indicate_inset rectangles is sensitive to axis-flipping
+* :ghissue:`14362`: Add link to style examples in matplotlib.style documentation
+* :ghissue:`6295`: restore_region is not documented as a method of FigureCanvas
+* :ghissue:`14754`: Better pointer to dev docs on website
+* :ghissue:`14744`: Savefig svg fails with "Cannot cast array data from dtype('`__ with
-help from Jae-Joon Lee, Michael Droettboom, Christoph Gohlke and
-Michiel de Hoon.
+Eric Firing went on a bug fixing and closing marathon, closing over 100 bugs on
+the (now-closed) SourceForge bug tracker with help from Jae-Joon Lee, Michael
+Droettboom, Christoph Gohlke and Michiel de Hoon.
diff --git a/examples/scales/log_bar.py b/examples/scales/log_bar.py
index 77110b3620b8..bcbdee2a7f98 100644
--- a/examples/scales/log_bar.py
+++ b/examples/scales/log_bar.py
@@ -20,7 +20,8 @@
y = [d[i] for d in data]
b = ax.bar(x + i * dimw, y, dimw, bottom=0.001)
-ax.set_xticks(x + dimw / 2, map(str, x))
+ax.set_xticks(x + dimw / 2)
+ax.set_xticklabels(map(str, x))
ax.set_yscale('log')
ax.set_xlabel('x')
diff --git a/examples/text_labels_and_annotations/text_rotation.py b/examples/text_labels_and_annotations/text_rotation.py
index cdd678013bf8..a380fc324bed 100644
--- a/examples/text_labels_and_annotations/text_rotation.py
+++ b/examples/text_labels_and_annotations/text_rotation.py
@@ -30,6 +30,7 @@ def addtext(ax, props):
for x in range(0, 5):
ax.scatter(x + 0.5, 0.5, color='r', alpha=0.5)
ax.set_yticks([0, .5, 1])
+ ax.set_xticks(np.arange(0, 5.1, 0.5))
ax.set_xlim(0, 5)
ax.grid(True)
@@ -37,14 +38,12 @@ def addtext(ax, props):
# the text bounding box
bbox = {'fc': '0.8', 'pad': 0}
-fig, axs = plt.subplots(2, 1)
+fig, axs = plt.subplots(2, 1, sharex=True)
addtext(axs[0], {'ha': 'center', 'va': 'center', 'bbox': bbox})
-axs[0].set_xticks(np.arange(0, 5.1, 0.5), [])
axs[0].set_ylabel('center / center')
addtext(axs[1], {'ha': 'left', 'va': 'bottom', 'bbox': bbox})
-axs[1].set_xticks(np.arange(0, 5.1, 0.5))
axs[1].set_ylabel('left / bottom')
plt.show()
diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py
index c4dba5f29613..fa1caecda148 100644
--- a/lib/matplotlib/__init__.py
+++ b/lib/matplotlib/__init__.py
@@ -132,6 +132,7 @@
import shutil
import subprocess
import tempfile
+import warnings
# cbook must import matplotlib only within function
# definitions, so it is safe to import from it here.
@@ -269,10 +270,10 @@ def func(): ...
ret = None
@functools.wraps(func)
- def wrapper():
+ def wrapper(**kwargs):
nonlocal called, ret
if not called:
- ret = func()
+ ret = func(**kwargs)
called = True
_log.debug(fmt, ret)
return ret
@@ -619,9 +620,31 @@ def get_cachedir():
return _get_config_or_cache_dir(_get_xdg_cache_dir())
-def _get_data_path():
- """Return the path to matplotlib data."""
+@_logged_cached('matplotlib data path: %s')
+def get_data_path(*, _from_rc=None):
+ """Return the path to Matplotlib data."""
+ if _from_rc is not None:
+ cbook.warn_deprecated(
+ "3.2",
+ message=("Setting the datapath via matplotlibrc is "
+ "deprecated %(since)s and will be removed in %(removal)s. "
+ ""),
+ removal='3.3')
+ path = Path(_from_rc)
+ if path.is_dir():
+ defaultParams['datapath'][0] = str(path)
+ return str(path)
+ else:
+ warnings.warn(f"You passed datapath: {_from_rc!r} in your "
+ f"matplotribrc file ({matplotlib_fname()}). "
+ "However this path does not exist, falling back "
+ "to standard paths.")
+
+ return _get_data_path()
+
+@_logged_cached('(private) matplotlib data path: %s')
+def _get_data_path():
if 'MATPLOTLIBDATA' in os.environ:
path = os.environ['MATPLOTLIBDATA']
if not os.path.isdir(path):
@@ -633,6 +656,7 @@ def _get_data_path():
path = Path(__file__).with_name("mpl-data")
if path.is_dir():
+ defaultParams['datapath'][0] = str(path)
return str(path)
cbook.warn_deprecated(
@@ -655,18 +679,12 @@ def get_candidate_paths():
for path in get_candidate_paths():
if path.is_dir():
+ defaultParams['datapath'][0] = str(path)
return str(path)
raise RuntimeError('Could not find the matplotlib data files')
-@_logged_cached('matplotlib data path: %s')
-def get_data_path():
- if defaultParams['datapath'][0] is None:
- defaultParams['datapath'][0] = _get_data_path()
- return defaultParams['datapath'][0]
-
-
@cbook.deprecated("3.1")
def get_py2exe_datafiles():
data_path = Path(get_data_path())
@@ -708,7 +726,7 @@ def gen_candidates():
yield matplotlibrc
yield os.path.join(matplotlibrc, 'matplotlibrc')
yield os.path.join(get_configdir(), 'matplotlibrc')
- yield os.path.join(get_data_path(), 'matplotlibrc')
+ yield os.path.join(_get_data_path(), 'matplotlibrc')
for fname in gen_candidates():
if os.path.exists(fname) and not os.path.isdir(fname):
@@ -736,6 +754,7 @@ def gen_candidates():
'savefig.frameon': ('3.1',),
'verbose.fileo': ('3.1',),
'verbose.level': ('3.1',),
+ 'datapath': ('3.2.1',),
}
@@ -973,8 +992,11 @@ def rc_params_from_file(fname, fail_on_error=False, use_default_template=True):
if key not in _all_deprecated])
config.update(config_from_file)
- if config['datapath'] is None:
- config['datapath'] = get_data_path()
+ with cbook._suppress_matplotlib_deprecation_warning():
+ if config['datapath'] is None:
+ config['datapath'] = _get_data_path()
+ else:
+ config['datapath'] = get_data_path(_from_rc=config['datapath'])
if "".join(config['text.latex.preamble']):
_log.info("""
diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py
index 0c85673b2b10..09dc3d6e8c42 100644
--- a/lib/matplotlib/backend_bases.py
+++ b/lib/matplotlib/backend_bases.py
@@ -1516,10 +1516,15 @@ def __init__(self, name, canvas, key, x=0, y=0, guiEvent=None):
self.key = key
-def _get_renderer(figure, print_method):
+def _get_renderer(figure, print_method, *, draw_disabled=False):
"""
Get the renderer that would be used to save a `~.Figure`, and cache it on
the figure.
+
+ If *draw_disabled* is True, additionally replace draw_foo methods on
+ *renderer* by no-ops. This is used by the tight-bbox-saving renderer,
+ which needs to walk through the artist tree to compute the tight-bbox, but
+ for which the output file may be closed early.
"""
# This is implemented by triggering a draw, then immediately jumping out of
# Figure.draw() by raising an exception.
@@ -1533,8 +1538,14 @@ def _draw(renderer): raise Done(renderer)
try:
print_method(io.BytesIO())
except Done as exc:
- figure._cachedRenderer, = exc.args
- return figure._cachedRenderer
+ renderer, = figure._cachedRenderer, = exc.args
+
+ if draw_disabled:
+ for meth_name in dir(RendererBase):
+ if meth_name.startswith("draw_"):
+ setattr(renderer, meth_name, lambda *args, **kwargs: None)
+
+ return renderer
def _is_non_interactive_terminal_ipython(ip):
@@ -2063,7 +2074,8 @@ def print_figure(self, filename, dpi=None, facecolor=None, edgecolor=None,
renderer = _get_renderer(
self.figure,
functools.partial(
- print_method, dpi=dpi, orientation=orientation))
+ print_method, dpi=dpi, orientation=orientation),
+ draw_disabled=True)
self.figure.draw(renderer)
bbox_artists = kwargs.pop("bbox_extra_artists", None)
bbox_inches = self.figure.get_tightbbox(renderer,
diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py
index 178465d48ad7..6c8e7e06c8b3 100644
--- a/lib/matplotlib/backends/backend_pgf.py
+++ b/lib/matplotlib/backends/backend_pgf.py
@@ -252,6 +252,8 @@ def _cleanup_remaining_instances():
latex_manager._cleanup()
def _stdin_writeln(self, s):
+ if self.latex is None:
+ self._setup_latex_process()
self.latex_stdin_utf8.write(s)
self.latex_stdin_utf8.write("\n")
self.latex_stdin_utf8.flush()
@@ -265,6 +267,8 @@ def _expect(self, s):
if buf[-len(exp):] == exp:
break
if not len(b):
+ self.latex.kill()
+ self.latex = None
raise LatexError("LaTeX process halted", buf.decode("utf8"))
return buf.decode("utf8")
@@ -301,6 +305,10 @@ def __init__(self):
raise LatexError("LaTeX returned an error, probably missing font "
"or error in preamble:\n%s" % stdout)
+ self.latex = None # Will be set up on first use.
+ self.str_cache = {} # cache for strings already processed
+
+ def _setup_latex_process(self):
# open LaTeX process for real work
latex = subprocess.Popen([self.texcommand, "-halt-on-error"],
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
@@ -313,9 +321,6 @@ def __init__(self):
self._expect("*pgf_backend_query_start")
self._expect_prompt()
- # cache for strings already processed
- self.str_cache = {}
-
def _cleanup(self):
if not self._os_path.isdir(self.tmpdir):
return
@@ -427,10 +432,10 @@ def __init__(self, figure, fh, dummy=False):
else:
# if fh does not belong to a filename, deactivate draw_image
if not hasattr(fh, 'name') or not os.path.exists(fh.name):
- cbook._warn_external("streamed pgf-code does not support "
- "raster graphics, consider using the "
- "pgf-to-pdf option", UserWarning)
- self.__dict__["draw_image"] = lambda *args, **kwargs: None
+ self.__dict__["draw_image"] = \
+ lambda *args, **kwargs: cbook._warn_external(
+ "streamed pgf-code does not support raster graphics, "
+ "consider using the pgf-to-pdf option")
@cbook.deprecated("3.2")
@property
diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py
index 0eee04f07cf6..bcc015be516d 100644
--- a/lib/matplotlib/backends/backend_ps.py
+++ b/lib/matplotlib/backends/backend_ps.py
@@ -1321,7 +1321,7 @@ def xpdf_distill(tmpfile, eps=False, ptype='letter', bbox=None, rotated=False):
["ps2pdf",
"-dAutoFilterColorImages#false",
"-dAutoFilterGrayImages#false",
- "-dAutoRotatePages#false",
+ "-sAutoRotatePages#None",
"-sGrayImageFilter#FlateEncode",
"-sColorImageFilter#FlateEncode",
"-dEPSCrop" if eps else "-sPAPERSIZE#%s" % ptype,
diff --git a/lib/matplotlib/backends/backend_qt5.py b/lib/matplotlib/backends/backend_qt5.py
index b2bd2d564a39..f3dcf1c513a8 100644
--- a/lib/matplotlib/backends/backend_qt5.py
+++ b/lib/matplotlib/backends/backend_qt5.py
@@ -17,7 +17,8 @@
from matplotlib.backend_managers import ToolManager
from .qt_compat import (
- QtCore, QtGui, QtWidgets, _getSaveFileName, is_pyqt5, __version__, QT_API)
+ QtCore, QtGui, QtWidgets, _isdeleted, _getSaveFileName,
+ is_pyqt5, __version__, QT_API)
backend_version = __version__
@@ -200,6 +201,12 @@ def __init__(self, *args, **kwargs):
self._timer.timeout.connect(self._on_timer)
self._timer_set_interval()
+ def __del__(self):
+ # The check for deletedness is needed to avoid an error at animation
+ # shutdown with PySide2.
+ if not _isdeleted(self._timer):
+ self._timer_stop()
+
def _timer_set_single_shot(self):
self._timer.setSingleShot(self._single)
diff --git a/lib/matplotlib/backends/backend_webagg_core.py b/lib/matplotlib/backends/backend_webagg_core.py
index c000e537e136..d71766aea6cb 100644
--- a/lib/matplotlib/backends/backend_webagg_core.py
+++ b/lib/matplotlib/backends/backend_webagg_core.py
@@ -343,7 +343,8 @@ def handle_set_dpi_ratio(self, event):
self.draw_idle()
def send_event(self, event_type, **kwargs):
- self.manager._send_event(event_type, **kwargs)
+ if self.manager:
+ self.manager._send_event(event_type, **kwargs)
_JQUERY_ICON_CLASSES = {
diff --git a/lib/matplotlib/backends/qt_compat.py b/lib/matplotlib/backends/qt_compat.py
index 6b52284fe7f4..b3367ea91010 100644
--- a/lib/matplotlib/backends/qt_compat.py
+++ b/lib/matplotlib/backends/qt_compat.py
@@ -63,16 +63,21 @@
def _setup_pyqt5():
- global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, _getSaveFileName
+ global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, \
+ _isdeleted, _getSaveFileName
if QT_API == QT_API_PYQT5:
from PyQt5 import QtCore, QtGui, QtWidgets
+ import sip
__version__ = QtCore.PYQT_VERSION_STR
QtCore.Signal = QtCore.pyqtSignal
QtCore.Slot = QtCore.pyqtSlot
QtCore.Property = QtCore.pyqtProperty
+ _isdeleted = sip.isdeleted
elif QT_API == QT_API_PYSIDE2:
from PySide2 import QtCore, QtGui, QtWidgets, __version__
+ import shiboken2
+ def _isdeleted(obj): return not shiboken2.isValid(obj)
else:
raise ValueError("Unexpected value for the 'backend.qt5' rcparam")
_getSaveFileName = QtWidgets.QFileDialog.getSaveFileName
@@ -82,7 +87,8 @@ def is_pyqt5():
def _setup_pyqt4():
- global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, _getSaveFileName
+ global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, \
+ _isdeleted, _getSaveFileName
def _setup_pyqt4_internal(api):
global QtCore, QtGui, QtWidgets, \
@@ -102,6 +108,7 @@ def _setup_pyqt4_internal(api):
except ValueError:
pass
from PyQt4 import QtCore, QtGui
+ import sip # Always succeeds *after* importing PyQt4.
__version__ = QtCore.PYQT_VERSION_STR
# PyQt 4.6 introduced getSaveFileNameAndFilter:
# https://riverbankcomputing.com/news/pyqt-46
@@ -110,16 +117,19 @@ def _setup_pyqt4_internal(api):
QtCore.Signal = QtCore.pyqtSignal
QtCore.Slot = QtCore.pyqtSlot
QtCore.Property = QtCore.pyqtProperty
+ _isdeleted = sip.isdeleted
_getSaveFileName = QtGui.QFileDialog.getSaveFileNameAndFilter
if QT_API == QT_API_PYQTv2:
_setup_pyqt4_internal(api=2)
elif QT_API == QT_API_PYSIDE:
from PySide import QtCore, QtGui, __version__, __version_info__
+ import shiboken
# PySide 1.0.3 fixed the following:
# https://srinikom.github.io/pyside-bz-archive/809.html
if __version_info__ < (1, 0, 3):
raise ImportError("PySide<1.0.3 is not supported")
+ def _isdeleted(obj): return not shiboken.isValid(obj)
_getSaveFileName = QtGui.QFileDialog.getSaveFileName
elif QT_API == QT_API_PYQT:
_setup_pyqt4_internal(api=1)
diff --git a/lib/matplotlib/bezier.py b/lib/matplotlib/bezier.py
index 44c74c458982..d3e74afb4881 100644
--- a/lib/matplotlib/bezier.py
+++ b/lib/matplotlib/bezier.py
@@ -429,23 +429,23 @@ def get_parallels(bezier2, width):
# find cm_left which is the intersecting point of a line through
# c1_left with angle t1 and a line through c2_left with angle
# t2. Same with cm_right.
- if parallel_test != 0:
- # a special case for a straight line, i.e., angle between two
- # lines are smaller than some (arbitrary) value.
- cmx_left, cmy_left = (
- 0.5 * (c1x_left + c2x_left), 0.5 * (c1y_left + c2y_left)
- )
- cmx_right, cmy_right = (
- 0.5 * (c1x_right + c2x_right), 0.5 * (c1y_right + c2y_right)
- )
- else:
+ try:
cmx_left, cmy_left = get_intersection(c1x_left, c1y_left, cos_t1,
sin_t1, c2x_left, c2y_left,
cos_t2, sin_t2)
-
cmx_right, cmy_right = get_intersection(c1x_right, c1y_right, cos_t1,
sin_t1, c2x_right, c2y_right,
cos_t2, sin_t2)
+ except ValueError:
+ # Special case straight lines, i.e., angle between two lines is
+ # less than the threshold used by get_intersection (we don't use
+ # check_if_parallel as the threshold is not the same).
+ cmx_left, cmy_left = (
+ 0.5 * (c1x_left + c2x_left), 0.5 * (c1y_left + c2y_left)
+ )
+ cmx_right, cmy_right = (
+ 0.5 * (c1x_right + c2x_right), 0.5 * (c1y_right + c2y_right)
+ )
# the parallel Bezier lines are created with control points of
# [c1_left, cm_left, c2_left] and [c1_right, cm_right, c2_right]
diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py
index 1b222f971878..8338982df401 100644
--- a/lib/matplotlib/cbook/__init__.py
+++ b/lib/matplotlib/cbook/__init__.py
@@ -439,7 +439,7 @@ def get_sample_data(fname, asfileobj=True):
If the filename ends in .gz, the file is implicitly ungzipped.
"""
- path = Path(matplotlib._get_data_path(), 'sample_data', fname)
+ path = Path(matplotlib.get_data_path(), 'sample_data', fname)
if asfileobj:
suffix = path.suffix.lower()
if suffix == '.gz':
diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py
index 4fa365a696dd..734573595bc9 100644
--- a/lib/matplotlib/image.py
+++ b/lib/matplotlib/image.py
@@ -666,7 +666,7 @@ def write_png(self, fname):
from matplotlib import _png
im = self.to_rgba(self._A[::-1] if self.origin == 'lower' else self._A,
bytes=True, norm=True)
- with open(fname, "wb") as file:
+ with cbook.open_file_cm(fname, "wb") as file:
_png.write_png(im, file)
def set_data(self, A):
diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py
index 892e1e9cac99..1e6641913731 100644
--- a/lib/matplotlib/lines.py
+++ b/lib/matplotlib/lines.py
@@ -1165,9 +1165,6 @@ def set_linestyle(self, ls):
``'None'`` or ``' '`` or ``''`` draw nothing
=============================== =================
- Optionally, the string may be preceded by a drawstyle, e.g.
- ``'steps--'``. See :meth:`set_drawstyle` for details.
-
- Alternatively a dash tuple of the following form can be
provided::
diff --git a/lib/matplotlib/markers.py b/lib/matplotlib/markers.py
index 3a8d0bc7a9ea..0695fdfe2e04 100644
--- a/lib/matplotlib/markers.py
+++ b/lib/matplotlib/markers.py
@@ -347,6 +347,7 @@ def _set_tuple_marker(self):
self._joinstyle = 'bevel'
else:
raise ValueError(f"Unexpected tuple marker: {marker}")
+ self._transform = Affine2D().scale(0.5).rotate_deg(rotation)
def _set_mathtext_path(self):
"""
diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py
index 3c1ba5750cf4..b875516cf440 100644
--- a/lib/matplotlib/mathtext.py
+++ b/lib/matplotlib/mathtext.py
@@ -3433,7 +3433,7 @@ def to_png(self, filename, texstr, color='black', dpi=120, fontsize=14):
from matplotlib import _png
rgba, depth = self.to_rgba(
texstr, color=color, dpi=dpi, fontsize=fontsize)
- with open(filename, "wb") as file:
+ with cbook.open_file_cm(filename, "wb") as file:
_png.write_png(rgba, file)
return depth
diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py
index 8223d15f4c8c..42affae91949 100644
--- a/lib/matplotlib/patches.py
+++ b/lib/matplotlib/patches.py
@@ -4317,7 +4317,7 @@ def __init__(self, xyA, xyB, coordsA, coordsB=None,
'figure fraction' 0, 0 is lower left of figure and 1, 1 is upper right
'axes points' points from lower left corner of axes
'axes pixels' pixels from lower left corner of axes
- 'axes fraction' 0, 1 is lower left of axes and 1, 1 is upper right
+ 'axes fraction' 0, 0 is lower left of axes and 1, 1 is upper right
'data' use the coordinate system of the object being
annotated (default)
'offset points' offset (in points) from the *xy* value
diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py
index 1d24072fc3ef..29dad2ad91fb 100644
--- a/lib/matplotlib/quiver.py
+++ b/lib/matplotlib/quiver.py
@@ -600,7 +600,7 @@ def set_UVC(self, U, V, C=None):
if C is not None:
C = ma.masked_invalid(C, copy=True).ravel()
for name, var in zip(('U', 'V', 'C'), (U, V, C)):
- if var is not None and var.size != self.N:
+ if not (var is None or var.size == self.N or var.size == 1):
raise ValueError(f'Argument {name} has a size {var.size}'
f' which does not match {self.N},'
' the number of arrow positions')
diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py
index 7965d45e4f16..7d0941233f80 100644
--- a/lib/matplotlib/testing/decorators.py
+++ b/lib/matplotlib/testing/decorators.py
@@ -5,6 +5,7 @@
import os
from pathlib import Path
import shutil
+import string
import sys
import unittest
import warnings
@@ -17,7 +18,7 @@
from matplotlib import ft2font
from matplotlib import pyplot as plt
from matplotlib import ticker
-from . import is_called_from_pytest
+
from .compare import comparable_formats, compare_images, make_test_filename
from .exceptions import ImageComparisonFailure
@@ -381,41 +382,56 @@ def test_plot(fig_test, fig_ref):
fig_test.subplots().plot([1, 3, 5])
fig_ref.subplots().plot([0, 1, 2], [1, 3, 5])
"""
-
+ ALLOWED_CHARS = set(string.digits + string.ascii_letters + '_-[]()')
+ KEYWORD_ONLY = inspect.Parameter.KEYWORD_ONLY
def decorator(func):
import pytest
_, result_dir = _image_directories(func)
+ old_sig = inspect.signature(func)
- if len(inspect.signature(func).parameters) == 2:
- # Free-standing function.
- @pytest.mark.parametrize("ext", extensions)
- def wrapper(ext):
- fig_test = plt.figure("test")
- fig_ref = plt.figure("reference")
- func(fig_test, fig_ref)
- test_image_path = result_dir / (func.__name__ + "." + ext)
- ref_image_path = (
- result_dir / (func.__name__ + "-expected." + ext))
- fig_test.savefig(test_image_path)
- fig_ref.savefig(ref_image_path)
- _raise_on_image_difference(
- ref_image_path, test_image_path, tol=tol)
-
- elif len(inspect.signature(func).parameters) == 3:
- # Method.
- @pytest.mark.parametrize("ext", extensions)
- def wrapper(self, ext):
+ @pytest.mark.parametrize("ext", extensions)
+ def wrapper(*args, **kwargs):
+ ext = kwargs['ext']
+ if 'ext' not in old_sig.parameters:
+ kwargs.pop('ext')
+ request = kwargs['request']
+ if 'request' not in old_sig.parameters:
+ kwargs.pop('request')
+
+ file_name = "".join(c for c in request.node.name
+ if c in ALLOWED_CHARS)
+ try:
fig_test = plt.figure("test")
fig_ref = plt.figure("reference")
- func(self, fig_test, fig_ref)
- test_image_path = result_dir / (func.__name__ + "." + ext)
- ref_image_path = (
- result_dir / (func.__name__ + "-expected." + ext))
+ func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs)
+ test_image_path = result_dir / (file_name + "." + ext)
+ ref_image_path = result_dir / (file_name + "-expected." + ext)
fig_test.savefig(test_image_path)
fig_ref.savefig(ref_image_path)
_raise_on_image_difference(
- ref_image_path, test_image_path, tol=tol)
+ ref_image_path, test_image_path, tol=tol
+ )
+ finally:
+ plt.close(fig_test)
+ plt.close(fig_ref)
+
+ parameters = [
+ param
+ for param in old_sig.parameters.values()
+ if param.name not in {"fig_test", "fig_ref"}
+ ]
+ if 'ext' not in old_sig.parameters:
+ parameters += [inspect.Parameter("ext", KEYWORD_ONLY)]
+ if 'request' not in old_sig.parameters:
+ parameters += [inspect.Parameter("request", KEYWORD_ONLY)]
+ new_sig = old_sig.replace(parameters=parameters)
+ wrapper.__signature__ = new_sig
+
+ # reach a bit into pytest internals to hoist the marks from
+ # our wrapped function
+ new_marks = getattr(func, "pytestmark", []) + wrapper.pytestmark
+ wrapper.pytestmark = new_marks
return wrapper
diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py
index 5edb4f24b44f..93548b2791ca 100644
--- a/lib/matplotlib/tests/test_axes.py
+++ b/lib/matplotlib/tests/test_axes.py
@@ -3227,10 +3227,15 @@ def test_hist_stacked_weighted():
ax.hist((d1, d2), weights=(w1, w2), histtype="stepfilled", stacked=True)
-@pytest.mark.parametrize("use_line_collection", [True, False],
- ids=['w/ line collection', 'w/o line collection'])
-@image_comparison(['stem.png'], style='mpl20', remove_text=True)
-def test_stem(use_line_collection):
+@image_comparison(['stem.png', 'stem.png'], style='mpl20', remove_text=True)
+def test_stem():
+ # Note, we don't use @pytest.mark.parametrize, because in parallel this
+ # might cause one process result to overwrite another's.
+ for use_line_collection in [True, False]:
+ _test_stem(use_line_collection)
+
+
+def _test_stem(use_line_collection):
x = np.linspace(0.1, 2 * np.pi, 100)
args = (x, np.cos(x))
# Label is a single space to force a legend to be drawn, but to avoid any
diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py
index 2b5b2060dc9a..7843b4101041 100644
--- a/lib/matplotlib/tests/test_backend_pgf.py
+++ b/lib/matplotlib/tests/test_backend_pgf.py
@@ -1,3 +1,4 @@
+from io import BytesIO
import os
from pathlib import Path
import shutil
@@ -269,3 +270,23 @@ def test_pdf_pages_lualatex():
pdf.savefig(fig)
assert pdf.get_pagecount() == 2
+
+
+@needs_xelatex
+def test_tex_restart_after_error():
+ fig = plt.figure()
+ fig.suptitle(r"\oops")
+ with pytest.raises(ValueError):
+ fig.savefig(BytesIO(), format="pgf")
+
+ fig = plt.figure() # start from scratch
+ fig.suptitle(r"this is ok")
+ fig.savefig(BytesIO(), format="pgf")
+
+
+@needs_xelatex
+def test_bbox_inches_tight(tmpdir):
+ fig, ax = plt.subplots()
+ ax.imshow([[0, 1], [2, 3]])
+ fig.savefig(os.path.join(tmpdir, "test.pdf"), backend="pgf",
+ bbox_inches="tight")
diff --git a/lib/matplotlib/tests/test_font_manager.py b/lib/matplotlib/tests/test_font_manager.py
index f94fabd3764f..a2ff9893d78b 100644
--- a/lib/matplotlib/tests/test_font_manager.py
+++ b/lib/matplotlib/tests/test_font_manager.py
@@ -160,10 +160,11 @@ def test_user_fonts_linux(tmpdir, monkeypatch):
@pytest.mark.skipif(sys.platform != 'win32', reason='Windows only')
def test_user_fonts_win32():
- if not os.environ.get('APPVEYOR', False):
- pytest.xfail("This test does only work on appveyor since user fonts "
- "are Windows specific and the developer's font directory "
- "should remain unchanged.")
+ if not (os.environ.get('APPVEYOR', False) or
+ os.environ.get('TF_BUILD', False)):
+ pytest.xfail("This test should only run on CI (appveyor or azure) "
+ "as the developer's font directory should remain "
+ "unchanged.")
font_test_file = 'mpltest.ttf'
diff --git a/lib/matplotlib/tests/test_marker.py b/lib/matplotlib/tests/test_marker.py
index 1ef9c18c47fb..e50746165792 100644
--- a/lib/matplotlib/tests/test_marker.py
+++ b/lib/matplotlib/tests/test_marker.py
@@ -1,6 +1,8 @@
import numpy as np
+import matplotlib.pyplot as plt
from matplotlib import markers
from matplotlib.path import Path
+from matplotlib.testing.decorators import check_figures_equal
import pytest
@@ -26,3 +28,108 @@ def test_marker_path():
path = Path([[0, 0], [1, 0]], [Path.MOVETO, Path.LINETO])
# Checking this doesn't fail.
marker_style.set_marker(path)
+
+
+class UnsnappedMarkerStyle(markers.MarkerStyle):
+ """
+ A MarkerStyle where the snap threshold is force-disabled.
+
+ This is used to compare to polygon/star/asterisk markers which do not have
+ any snap threshold set.
+ """
+ def _recache(self):
+ super()._recache()
+ self._snap_threshold = None
+
+
+@check_figures_equal()
+def test_poly_marker(fig_test, fig_ref):
+ ax_test = fig_test.add_subplot()
+ ax_ref = fig_ref.add_subplot()
+
+ # Note, some reference sizes must be different because they have unit
+ # *length*, while polygon markers are inscribed in a circle of unit
+ # *radius*. This introduces a factor of np.sqrt(2), but since size is
+ # squared, that becomes 2.
+ size = 20**2
+
+ # Squares
+ ax_test.scatter([0], [0], marker=(4, 0, 45), s=size)
+ ax_ref.scatter([0], [0], marker='s', s=size/2)
+
+ # Diamonds, with and without rotation argument
+ ax_test.scatter([1], [1], marker=(4, 0), s=size)
+ ax_ref.scatter([1], [1], marker=UnsnappedMarkerStyle('D'), s=size/2)
+ ax_test.scatter([1], [1.5], marker=(4, 0, 0), s=size)
+ ax_ref.scatter([1], [1.5], marker=UnsnappedMarkerStyle('D'), s=size/2)
+
+ # Pentagon, with and without rotation argument
+ ax_test.scatter([2], [2], marker=(5, 0), s=size)
+ ax_ref.scatter([2], [2], marker=UnsnappedMarkerStyle('p'), s=size)
+ ax_test.scatter([2], [2.5], marker=(5, 0, 0), s=size)
+ ax_ref.scatter([2], [2.5], marker=UnsnappedMarkerStyle('p'), s=size)
+
+ # Hexagon, with and without rotation argument
+ ax_test.scatter([3], [3], marker=(6, 0), s=size)
+ ax_ref.scatter([3], [3], marker='h', s=size)
+ ax_test.scatter([3], [3.5], marker=(6, 0, 0), s=size)
+ ax_ref.scatter([3], [3.5], marker='h', s=size)
+
+ # Rotated hexagon
+ ax_test.scatter([4], [4], marker=(6, 0, 30), s=size)
+ ax_ref.scatter([4], [4], marker='H', s=size)
+
+ # Octagons
+ ax_test.scatter([5], [5], marker=(8, 0, 22.5), s=size)
+ ax_ref.scatter([5], [5], marker=UnsnappedMarkerStyle('8'), s=size)
+
+ ax_test.set(xlim=(-0.5, 5.5), ylim=(-0.5, 5.5))
+ ax_ref.set(xlim=(-0.5, 5.5), ylim=(-0.5, 5.5))
+
+
+def test_star_marker():
+ # We don't really have a strict equivalent to this marker, so we'll just do
+ # a smoke test.
+ size = 20**2
+
+ fig, ax = plt.subplots()
+ ax.scatter([0], [0], marker=(5, 1), s=size)
+ ax.scatter([1], [1], marker=(5, 1, 0), s=size)
+ ax.set(xlim=(-0.5, 0.5), ylim=(-0.5, 1.5))
+
+
+# The asterisk marker is really a star with 0-size inner circle, so the ends
+# are corners and get a slight bevel. The reference markers are just singular
+# lines without corners, so they have no bevel, and we need to add a slight
+# tolerance.
+@check_figures_equal(tol=1.45)
+def test_asterisk_marker(fig_test, fig_ref, request):
+ ax_test = fig_test.add_subplot()
+ ax_ref = fig_ref.add_subplot()
+
+ # Note, some reference sizes must be different because they have unit
+ # *length*, while asterisk markers are inscribed in a circle of unit
+ # *radius*. This introduces a factor of np.sqrt(2), but since size is
+ # squared, that becomes 2.
+ size = 20**2
+
+ def draw_ref_marker(y, style, size):
+ # As noted above, every line is doubled. Due to antialiasing, these
+ # doubled lines make a slight difference in the .png results.
+ ax_ref.scatter([y], [y], marker=UnsnappedMarkerStyle(style), s=size)
+ if request.getfixturevalue('ext') == 'png':
+ ax_ref.scatter([y], [y], marker=UnsnappedMarkerStyle(style),
+ s=size)
+
+ # Plus
+ ax_test.scatter([0], [0], marker=(4, 2), s=size)
+ draw_ref_marker(0, '+', size)
+ ax_test.scatter([0.5], [0.5], marker=(4, 2, 0), s=size)
+ draw_ref_marker(0.5, '+', size)
+
+ # Cross
+ ax_test.scatter([1], [1], marker=(4, 2, 45), s=size)
+ draw_ref_marker(1, 'x', size/2)
+
+ ax_test.set(xlim=(-0.5, 1.5), ylim=(-0.5, 1.5))
+ ax_ref.set(xlim=(-0.5, 1.5), ylim=(-0.5, 1.5))
diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py
index fdf930184070..508e29fa0880 100644
--- a/lib/matplotlib/tests/test_mathtext.py
+++ b/lib/matplotlib/tests/test_mathtext.py
@@ -280,3 +280,14 @@ def test_single_minus_sign():
def test_spaces(fig_test, fig_ref):
fig_test.subplots().set_title(r"$1\,2\>3\ 4$")
fig_ref.subplots().set_title(r"$1\/2\:3~4$")
+
+
+def test_math_to_image(tmpdir):
+ mathtext.math_to_image('$x^2$', str(tmpdir.join('example.png')))
+ mathtext.math_to_image('$x^2$', io.BytesIO())
+
+
+def test_mathtext_to_png(tmpdir):
+ mt = mathtext.MathTextParser('bitmap')
+ mt.to_png(str(tmpdir.join('example.png')), '$x^2$')
+ mt.to_png(io.BytesIO(), '$x^2$')
diff --git a/lib/matplotlib/tests/test_quiver.py b/lib/matplotlib/tests/test_quiver.py
index 68031bff2754..719c8fbc15b8 100644
--- a/lib/matplotlib/tests/test_quiver.py
+++ b/lib/matplotlib/tests/test_quiver.py
@@ -252,3 +252,15 @@ def test_quiverkey_angles():
# The arrows are only created when the key is drawn
fig.canvas.draw()
assert len(qk.verts) == 1
+
+
+def test_quiver_setuvc_numbers():
+ """Check that it is possible to set all arrow UVC to the same numbers"""
+
+ fig, ax = plt.subplots()
+
+ X, Y = np.meshgrid(np.arange(2), np.arange(2))
+ U = V = np.ones_like(X)
+
+ q = ax.quiver(X, Y, U, V)
+ q.set_UVC(0, 1)
diff --git a/lib/matplotlib/tests/test_testing.py b/lib/matplotlib/tests/test_testing.py
index 55415abb6a04..d1273ec1ba46 100644
--- a/lib/matplotlib/tests/test_testing.py
+++ b/lib/matplotlib/tests/test_testing.py
@@ -1,7 +1,17 @@
import warnings
import pytest
+from matplotlib.testing.decorators import check_figures_equal
-@pytest.mark.xfail(strict=True,
- reason="testing that warnings fail tests")
+
+@pytest.mark.xfail(
+ strict=True, reason="testing that warnings fail tests"
+)
def test_warn_to_fail():
warnings.warn("This should fail the test")
+
+
+@pytest.mark.parametrize("a", [1])
+@check_figures_equal(extensions=["png"])
+@pytest.mark.parametrize("b", [1])
+def test_parametrize_with_check_figure_equal(a, fig_ref, b, fig_test):
+ assert a == b
diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py
index 8538b7d6f5da..42a8336b5b6b 100644
--- a/lib/mpl_toolkits/mplot3d/art3d.py
+++ b/lib/mpl_toolkits/mplot3d/art3d.py
@@ -580,17 +580,39 @@ def patch_collection_2d_to_3d(col, zs=0, zdir='z', depthshade=True):
class Poly3DCollection(PolyCollection):
"""
A collection of 3D polygons.
+
+ .. note::
+ **Filling of 3D polygons**
+
+ There is no simple definition of the enclosed surface of a 3D polygon
+ unless the polygon is planar.
+
+ In practice, Matplotlib performs the filling on the 2D projection of
+ the polygon. This gives a correct filling appearance only for planar
+ polygons. For all other polygons, you'll find orientations in which
+ the edges of the polygon intersect in the projection. This will lead
+ to an incorrect visualization of the 3D area.
+
+ If you need filled areas, it is recommended to create them via
+ `~mpl_toolkits.mplot3d.axes3d.Axes3D.plot_trisurf`, which creates a
+ triangulation and thus generates consistent surfaces.
"""
def __init__(self, verts, *args, zsort='average', **kwargs):
"""
- Create a Poly3DCollection.
-
- *verts* should contain 3D coordinates.
-
- Keyword arguments:
- zsort, see set_zsort for options.
+ Parameters
+ ----------
+ verts : list of array-like Nx3
+ Each element describes a polygon as a sequnce of ``N_i`` points
+ ``(x, y, z)``.
+ zsort : {'average', 'min', 'max'}, default: 'average'
+ The calculation method for the z-order.
+ See `~.Poly3DCollection.set_zsort` for details.
+ *args, **kwargs
+ All other parameters are forwarded to `.PolyCollection`.
+ Notes
+ -----
Note that this class does a bit of magic with the _facecolors
and _edgecolors properties.
"""
diff --git a/lib/mpl_toolkits/tests/test_axes_grid.py b/lib/mpl_toolkits/tests/test_axes_grid.py
index 58358b686651..0ff4f2b013b6 100644
--- a/lib/mpl_toolkits/tests/test_axes_grid.py
+++ b/lib/mpl_toolkits/tests/test_axes_grid.py
@@ -12,10 +12,16 @@
# The original version of this test relied on mpl_toolkits's slightly different
# colorbar implementation; moving to matplotlib's own colorbar implementation
# caused the small image comparison error.
-@pytest.mark.parametrize("legacy_colorbar", [False, True])
-@image_comparison(['imagegrid_cbar_mode.png'],
+@image_comparison(['imagegrid_cbar_mode.png', 'imagegrid_cbar_mode.png'],
remove_text=True, style='mpl20', tol=0.3)
-def test_imagegrid_cbar_mode_edge(legacy_colorbar):
+def test_imagegrid_cbar_mode_edge():
+ # Note, we don't use @pytest.mark.parametrize, because in parallel this
+ # might cause one process result to overwrite another's.
+ for legacy_colorbar in [False, True]:
+ _test_imagegrid_cbar_mode_edge(legacy_colorbar)
+
+
+def _test_imagegrid_cbar_mode_edge(legacy_colorbar):
mpl.rcParams["mpl_toolkits.legacy_colorbar"] = legacy_colorbar
X, Y = np.meshgrid(np.linspace(0, 6, 30), np.linspace(0, 6, 30))
diff --git a/matplotlibrc.template b/matplotlibrc.template
index 17f12a673ebc..16d9becaae93 100644
--- a/matplotlibrc.template
+++ b/matplotlibrc.template
@@ -103,10 +103,6 @@
#toolbar : toolbar2 ## {None, toolbar2}
#timezone : UTC ## a pytz timezone string, e.g., US/Central or Europe/Paris
-## Where your matplotlib data lives if you installed to a non-default
-## location. This is where the matplotlib fonts, bitmaps, etc reside
-#datapath : /home/jdhunter/mpldata
-
## ***************************************************************************
## * LINES *
diff --git a/requirements/testing/travis_all.txt b/requirements/testing/travis_all.txt
index 7bf8db0dccf8..060c19517c7b 100644
--- a/requirements/testing/travis_all.txt
+++ b/requirements/testing/travis_all.txt
@@ -5,7 +5,7 @@ cycler
numpy
pillow
pyparsing
-pytest!=4.6.0,!=5.3.3
+pytest!=4.6.0,!=5.3.3,!=5.4.0
pytest-cov
pytest-rerunfailures
pytest-timeout
diff --git a/setup.py b/setup.py
index 0a043672a3cd..87b93a970b3a 100644
--- a/setup.py
+++ b/setup.py
@@ -76,6 +76,7 @@
classifiers = [
'Development Status :: 5 - Production/Stable',
+ 'Framework :: Matplotlib',
'Intended Audience :: Science/Research',
'Intended Audience :: Education',
'License :: OSI Approved :: Python Software Foundation License',
@@ -224,9 +225,9 @@ def run(self):
with open('lib/matplotlib/mpl-data/matplotlibrc', 'w') as fd:
fd.write(''.join(template_lines))
- # Use Readme as long description
- with open('README.rst') as fd:
- long_description = fd.read()
+ # Use Readme as long description
+ with open('README.rst', encoding='utf-8') as fd:
+ long_description = fd.read()
# Finally, pass this all along to distutils to do the heavy lifting.
setup(
diff --git a/tutorials/colors/colormaps.py b/tutorials/colors/colormaps.py
index 3e7cf1141365..d6f763572c6a 100644
--- a/tutorials/colors/colormaps.py
+++ b/tutorials/colors/colormaps.py
@@ -225,7 +225,7 @@ def plot_color_gradients(cmap_category, cmap_list, nrows):
plt.show()
###############################################################################
-# Lightness of matplotlib colormaps
+# Lightness of Matplotlib colormaps
# =================================
#
# Here we examine the lightness values of the matplotlib colormaps.
@@ -308,10 +308,9 @@ def plot_color_gradients(cmap_category, cmap_list, nrows):
formatter = mpl.ticker.FixedFormatter(cmap_list[i*dsub:(i+1)*dsub])
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_tick_params(rotation=50)
+ ax.set_ylabel('Lightness $L^*$', fontsize=12)
ax.set_xlabel(cmap_category + ' colormaps', fontsize=14)
- fig.text(0.0, 0.55, 'Lightness $L^*$', fontsize=12,
- transform=fig.transFigure, rotation=90)
fig.tight_layout(h_pad=0.0, pad=1.5)
plt.show()