From 4ea9892ea300a9773c1f2bf6e05b1c7771557248 Mon Sep 17 00:00:00 2001 From: Nelle Varoquaux Date: Tue, 1 Nov 2016 14:29:50 -0700 Subject: [PATCH 01/11] Merge pull request #7370 from jni/spines-rc-template Add example use of axes.spines.SIDE prop in matplotlibrc --- matplotlibrc.template | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/matplotlibrc.template b/matplotlibrc.template index 6d6549a1d86..fc13a8fd5ba 100644 --- a/matplotlibrc.template +++ b/matplotlibrc.template @@ -322,6 +322,12 @@ backend : $TEMPLATE_BACKEND # value of the data. +# axes.spines.left : True # display axis spines +# axes.spines.bottom : True +# axes.spines.top : True +# axes.spines.right : True + + #axes.unicode_minus : True # use unicode for the minus symbol # rather than hyphen. See # http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes From 28f4b6e6a623c3dfbdd2dcc0df220fe8726f08a7 Mon Sep 17 00:00:00 2001 From: Paul Ivanov Date: Wed, 2 Nov 2016 16:03:22 -0700 Subject: [PATCH 02/11] Merge pull request #7236 from NelleV/enh_contributing_guidelines ENH Improving the contribution guidelines --- doc/_static/mpl.css | 53 ++- doc/api/index.rst | 1 + doc/{devel => api}/transformations.rst | 0 doc/devel/add_new_projection.rst | 6 +- doc/devel/coding_guide.rst | 303 +---------------- doc/devel/contributing.rst | 414 +++++++++++++++++++++++ doc/devel/documenting_mpl.rst | 6 +- doc/devel/gitwash/development_workflow.rst | 6 +- doc/devel/gitwash/matplotlib_for_dev.rst | 27 -- doc/devel/gitwash/setting_up_for_development.rst | 1 - doc/devel/index.rst | 18 +- doc/devel/portable_code.rst | 8 +- doc/devel/testing.rst | 19 +- doc/faq/installing_faq.rst | 2 +- doc/faq/virtualenv_faq.rst | 2 +- doc/glossary/index.rst | 2 +- lib/matplotlib/dates.py | 4 +- 17 files changed, 519 insertions(+), 353 deletions(-) rename doc/{devel => api}/transformations.rst (100%) create mode 100644 doc/devel/contributing.rst delete mode 100644 doc/devel/gitwash/matplotlib_for_dev.rst diff --git a/doc/_static/mpl.css b/doc/_static/mpl.css index a9a7089f239..0b5bce477ed 100644 --- a/doc/_static/mpl.css +++ b/doc/_static/mpl.css @@ -357,6 +357,19 @@ div.admonition, div.warning { font-size: 0.9em; } +div.warning { + color: #b94a48; + background-color: #F3E5E5; + border: 1px solid #eed3d7; +} + +div.green { + color: #468847; + background-color: #dff0d8; + border: 1px solid #d6e9c6; +} + + div.admonition p, div.warning p { margin: 0.5em 1em 0.5em 1em; padding: 0; @@ -366,6 +379,11 @@ div.admonition pre, div.warning pre { margin: 0.4em 1em 0.4em 1em; } +div.admonition p.admonition-title + p { + display: inline; +} + + div.admonition p.admonition-title, div.warning p.admonition-title { margin: 0; @@ -373,12 +391,45 @@ div.warning p.admonition-title { font-size: 14px; } +div.admonition { + margin-bottom: 10px; + margin-top: 10px; + padding: 7px; + border-radius: 4px; + -moz-border-radius: 4px; + } + + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.topic { + background-color: #eee; + border: 1px solid #CCC; + margin: 10px 0px; + padding: 7px 7px 0px; + border-radius: 4px; + -moz-border-radius: 4px; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; +} + +div.seealso { + background-color: #FFFBE8; + border: 1px solid #fbeed5; + color: #AF8A4B; + } + div.warning { border: 1px solid #940000; } div.warning p.admonition-title { - background-color: #CF0000; border-bottom-color: #940000; } diff --git a/doc/api/index.rst b/doc/api/index.rst index 8d8892834c7..23a5e41a232 100644 --- a/doc/api/index.rst +++ b/doc/api/index.rst @@ -51,6 +51,7 @@ text_api.rst ticker_api.rst tight_layout_api.rst + transformations.rst tri_api.rst type1font.rst units_api.rst diff --git a/doc/devel/transformations.rst b/doc/api/transformations.rst similarity index 100% rename from doc/devel/transformations.rst rename to doc/api/transformations.rst diff --git a/doc/devel/add_new_projection.rst b/doc/devel/add_new_projection.rst index b05e05f5fc9..9ef7c8f27ac 100644 --- a/doc/devel/add_new_projection.rst +++ b/doc/devel/add_new_projection.rst @@ -1,8 +1,8 @@ .. _adding-new-scales: -*********************************************** -Adding new scales and projections to matplotlib -*********************************************** +========================================================= +Developer's guide for creating scales and transformations +========================================================= .. ::author Michael Droettboom diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index 04edfb91941..8ff8508e062 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -1,64 +1,24 @@ -.. _coding-guide: +.. _reviewers-guide: -************ -Coding guide -************ +******************** +Reviewers guideline +******************** .. _pull-request-checklist: Pull request checklist ====================== -This checklist should be consulted when creating pull requests to make -sure they are complete before merging. These are not intended to be -rigidly followed---it's just an attempt to list in one place all of -the items that are necessary for a good pull request. Of course, some -items will not always apply. - Branch selection ---------------- * In general, simple bugfixes that are unlikely to introduce new bugs of their own should be merged onto the maintenance branch. New features, or anything that changes the API, should be made against - master. The rules are fuzzy here -- when in doubt, try to get some - consensus. - - * Once changes are merged into the maintenance branch, they should - be merged into master. - -Style ------ - -* Formatting should follow `PEP8 - `_. Exceptions to these - rules are acceptable if it makes the code objectively more readable. - - - You should consider installing/enabling automatic PEP8 checking in your - editor. Part of the test suite is checking PEP8 compliance, things - go smoother if the code is mostly PEP8 compliant to begin with. - -* No tabs (only spaces). No trailing whitespace. + master. The rules are fuzzy here -- when in doubt, target master. - - Configuring your editor to remove these things upon saving will - save a lot of trouble. - -* Import the following modules using the standard scipy conventions:: - - import numpy as np - import numpy.ma as ma - import matplotlib as mpl - from matplotlib import pyplot as plt - import matplotlib.cbook as cbook - import matplotlib.collections as mcol - import matplotlib.patches as mpatches - -* See below for additional points about - :ref:`keyword-argument-processing`, if code in your pull request - does that. - -* Adding a new pyplot function involves generating code. See - :ref:`new-pyplot-function` for more information. +* Once changes are merged into the maintenance branch, they should + be merged into master. Documentation ------------- @@ -66,38 +26,6 @@ Documentation * Every new feature should be documented. If it's a new module, don't forget to add a new rst file to the API docs. -* Docstrings should be in `numpydoc format - `_. - Don't be thrown off by the fact that many of the existing docstrings - are not in that format; we are working to standardize on - `numpydoc`. - - Docstrings should look like (at a minimum):: - - def foo(bar, baz=None): - """ - This is a prose description of foo and all the great - things it does. - - Parameters - ---------- - bar : (type of bar) - A description of bar - - baz : (type of baz), optional - A description of baz - - Returns - ------- - foobar : (type of foobar) - A description of foobar - foobaz : (type of foobaz) - A description of foobaz - """ - # some very clever code - return foobar, foobaz - - * Each high-level plotting function should have a simple example in the `Example` section of the docstring. This should be as simple as possible to demonstrate the method. More complex examples should go @@ -116,55 +44,6 @@ Documentation * If you change the API in a backward-incompatible way, please document it in :file:`doc/api/api_changes.rst`. -Testing -------- - -Using the test framework is discussed in detail in the section -:ref:`testing`. - -* If the PR is a bugfix, add a test that fails prior to the change and - passes with the change. Include any relevant issue numbers in the - docstring of the test. - -* If this is a new feature, add a test that exercises as much of the - new feature as possible. (The `--with-coverage` option may be - useful here). - -* Make sure the Travis tests are passing before merging. - - - The Travis tests automatically test on all of the Python versions - matplotlib supports whenever a pull request is created or updated. - The `tox` support in matplotlib may be useful for testing locally. - -Installation ------------- - -* If you have added new files or directories, or reorganized existing - ones, make sure the new files included in the match patterns in - :file:`MANIFEST.in`, and/or in `package_data` in `setup.py`. - -C/C++ extensions ----------------- - -* Extensions may be written in C or C++. - -* Code style should conform to PEP7 (understanding that PEP7 doesn't - address C++, but most of its admonitions still apply). - -* Interfacing with Python may be done either with the raw Python/C API - or Cython. - -* Python/C interface code should be kept separate from the core C/C++ - code. The interface code should be named `FOO_wrap.cpp` or - `FOO_wrapper.cpp`. - -* Header file documentation (aka docstrings) should be in Numpydoc - format. We don't plan on using automated tools for these - docstrings, and the Numpydoc format is well understood in the - scientific Python community. - - - PR Review guidelines ==================== @@ -182,6 +61,12 @@ PR Review guidelines 'approve review'). If you do the merge please removed the ``'[MRG+N']`` prefix. +* Make sure the Travis tests are passing before merging. + + - The Travis tests automatically test on all of the Python versions + matplotlib supports whenever a pull request is created or updated. + The `tox` support in matplotlib may be useful for testing locally. + * Do not self merge, except for 'small' patches to un-break the CI. * Squashing is case-by-case. The balance is between burden on the @@ -224,165 +109,3 @@ the merge notification) or through the git CLI tools.:: # from the cherry-pick + branch it was moved to These commands work on git 2.7.1. - - -Style guide -=========== - -.. _keyword-argument-processing: - -Keyword argument processing ---------------------------- - -Matplotlib makes extensive use of ``**kwargs`` for pass-through -customizations from one function to another. A typical example is in -:func:`matplotlib.pylab.text`. The definition of the pylab text -function is a simple pass-through to -:meth:`matplotlib.axes.Axes.text`:: - - # in pylab.py - def text(*args, **kwargs): - ret = gca().text(*args, **kwargs) - draw_if_interactive() - return ret - -:meth:`~matplotlib.axes.Axes.text` in simplified form looks like this, -i.e., it just passes all ``args`` and ``kwargs`` on to -:meth:`matplotlib.text.Text.__init__`:: - - # in axes.py - def text(self, x, y, s, fontdict=None, withdash=False, **kwargs): - t = Text(x=x, y=y, text=s, **kwargs) - -and :meth:`~matplotlib.text.Text.__init__` (again with liberties for -illustration) just passes them on to the -:meth:`matplotlib.artist.Artist.update` method:: - - # in text.py - def __init__(self, x=0, y=0, text='', **kwargs): - Artist.__init__(self) - self.update(kwargs) - -``update`` does the work looking for methods named like -``set_property`` if ``property`` is a keyword argument. i.e., no one -looks at the keywords, they just get passed through the API to the -artist constructor which looks for suitably named methods and calls -them with the value. - -As a general rule, the use of ``**kwargs`` should be reserved for -pass-through keyword arguments, as in the example above. If all the -keyword args are to be used in the function, and not passed -on, use the key/value keyword args in the function definition rather -than the ``**kwargs`` idiom. - -In some cases, you may want to consume some keys in the local -function, and let others pass through. You can ``pop`` the ones to be -used locally and pass on the rest. For example, in -:meth:`~matplotlib.axes.Axes.plot`, ``scalex`` and ``scaley`` are -local arguments and the rest are passed on as -:meth:`~matplotlib.lines.Line2D` keyword arguments:: - - # in axes.py - def plot(self, *args, **kwargs): - scalex = kwargs.pop('scalex', True) - scaley = kwargs.pop('scaley', True) - if not self._hold: self.cla() - lines = [] - for line in self._get_lines(*args, **kwargs): - self.add_line(line) - lines.append(line) - -Note: there is a use case when ``kwargs`` are meant to be used locally -in the function (not passed on), but you still need the ``**kwargs`` -idiom. That is when you want to use ``*args`` to allow variable -numbers of non-keyword args. In this case, python will not allow you -to use named keyword args after the ``*args`` usage, so you will be -forced to use ``**kwargs``. An example is -:meth:`matplotlib.contour.ContourLabeler.clabel`:: - - # in contour.py - def clabel(self, *args, **kwargs): - fontsize = kwargs.get('fontsize', None) - inline = kwargs.get('inline', 1) - self.fmt = kwargs.get('fmt', '%1.3f') - colors = kwargs.get('colors', None) - if len(args) == 0: - levels = self.levels - indices = range(len(self.levels)) - elif len(args) == 1: - ...etc... - -Hints -===== - -This section describes how to add certain kinds of new features to -matplotlib. - -.. _custom_backend: - -Developing a new backend ------------------------- - -If you are working on a custom backend, the *backend* setting in -:file:`matplotlibrc` (:ref:`customizing-matplotlib`) supports an -external backend via the ``module`` directive. if -:file:`my_backend.py` is a matplotlib backend in your -:envvar:`PYTHONPATH`, you can set use it on one of several ways - -* in matplotlibrc:: - - backend : module://my_backend - - -* with the :envvar:`MPLBACKEND` environment variable:: - - > export MPLBACKEND="module://my_backend" - > python simple_plot.py - -* from the command shell with the `-d` flag:: - - > python simple_plot.py -dmodule://my_backend - -* with the use directive in your script:: - - import matplotlib - matplotlib.use('module://my_backend') - -.. _sample-data: - -Writing examples ----------------- - -We have hundreds of examples in subdirectories of -:file:`matplotlib/examples`, and these are automatically generated -when the website is built to show up both in the `examples -<../examples/index.html>`_ and `gallery -<../gallery.html>`_ sections of the website. - -Any sample data that the example uses should be kept small and -distributed with matplotlib in the -`lib/matplotlib/mpl-data/sample_data/` directory. Then in your -example code you can load it into a file handle with:: - - import matplotlib.cbook as cbook - fh = cbook.get_sample_data('mydata.dat') - -.. _new-pyplot-function: - -Writing a new pyplot function ------------------------------ - -A large portion of the pyplot interface is automatically generated by the -`boilerplate.py` script (in the root of the source tree). To add or remove -a plotting method from pyplot, edit the appropriate list in `boilerplate.py` -and then run the script which will update the content in -`lib/matplotlib/pyplot.py`. Both the changes in `boilerplate.py` and -`lib/matplotlib/pyplot.py` should be checked into the repository. - -Note: boilerplate.py looks for changes in the installed version of matplotlib -and not the source tree. If you expect the pyplot.py file to show your new -changes, but they are missing, this might be the cause. - -Install your new files by running `python setup.py build` and `python setup.py -install` followed by `python boilerplate.py`. The new pyplot.py file should now -have the latest changes. diff --git a/doc/devel/contributing.rst b/doc/devel/contributing.rst new file mode 100644 index 00000000000..83a6fba2938 --- /dev/null +++ b/doc/devel/contributing.rst @@ -0,0 +1,414 @@ +.. _contributing: + +============ +Contributing +============ + +This project is a community effort, and everyone is welcome to +contribute. + +The project is hosted on https://github.com/matplotlib/matplotlib + +Submitting a bug report +======================= + +If you find a bug in the code or documentation, do not hesitate to submit a +ticket to the +`Bug Tracker `_. You are +also welcome to post feature requests or pull requests. + + +Retrieving and installing the latest version of the code +======================================================== + + +We use `Git `_ for version control and +`GitHub `_ for hosting our main repository. + +You can check out the latest sources with the command:: + + git clone git@github.com:matplotlib/matplotlib.git + + +After obtaining a local copy of the matplotlib source code (:ref:`set-up-fork`), +navigate to the matplotlib directory and run the following in the shell:: + + python setup.py develop + +or:: + + pip install -v -e . + + +This installs matplotlib for development (i.e., builds everything and places the +symbolic links back to the source code). + +.. warning:: + + If you already have a version of matplotlib installed, you will need to + uninstall it. + + +.. note:: + + If you decide to do install with ``python setup.py develop`` or ``pip + install -v -e``, you will have to rerun:: + + python setup.py build + + every time the source code of a compiled extension is changed (for + instance when switching branches or pulling changes from upstream). + + + +You can then run the tests to check your work environment is set up properly:: + + python tests.py + + +.. _nose: https://nose.readthedocs.io/en/latest/ +.. _pep8: https://pep8.readthedocs.io/en/latest/ + +.. note:: + + **Additional dependencies for testing**: nose_ (version 1.0 or later), `mock + `_ (if python < 3.3), `Ghostscript + `_, `Inkscape `_ + +.. note:: To make sure the tests run locally: + + * Copy setup.cfg.template to setup.cfg + * Edit setup.cfg to set ``test`` to True, and ``local_freetype`` to True + * If you have built matplotlib previously, remove the ``build`` folder. + * Execute the build command. + +When working on bleeding edge packages, setting up a +`virtual environment +`_ or a `conda +environment `_ is recommended. + +.. seealso:: + + * :ref:`testing` + + +Contributing code +================= + +How to contribute +----------------- + +The preferred way to contribute to matplotlib is to fork the `main +repository `__ on GitHub, +then submit a "pull request" (PR): + + 1. `Create an account `_ on + GitHub if you do not already have one. + + 2. Fork the `project repository + `__: click on the 'Fork' button + near the top of the page. This creates a copy of the code under your + account on the GitHub server. + + 3. Clone this copy to your local disk:: + + $ git clone git@github.com:YourLogin/matplotlib.git + + 4. Create a branch to hold your changes:: + + $ git checkout -b my-feature origin/master + + and start making changes. Never work in the ``master`` branch! + + 5. Work on this copy, on your computer, using Git to do the version + control. When you're done editing e.g., ``lib/matplotlib/collections.py``, + do:: + + $ git add lib/matplotlib/collections.py + $ git commit + + to record your changes in Git, then push them to GitHub with:: + + $ git push -u origin my-feature + +Finally, go to the web page of your fork of the matplotlib repo, +and click 'Pull request' to send your changes to the maintainers for review. +You may want to consider sending an email to the mailing list for more +visibility. + +.. seealso:: + + * `Git documentation `_ + * :ref:`development-workflow`. + * :ref:`using-git` + +Contributing pull requests +-------------------------- + +It is recommended to check that your contribution complies with the following +rules before submitting a pull request: + + * If your pull request addresses an issue, please use the title to describe + the issue and mention the issue number in the pull request description + to ensure a link is created to the original issue. + + * All public methods should have informative docstrings with sample + usage when appropriate. Use the + `numpy docstring standard `_ + + * Formatting should follow `PEP8 recommendation + `_. You should consider + installing/enabling automatic PEP8 checking in your editor. Part of the + test suite is checking PEP8 compliance, things go smoother if the code is + mostly PEP8 compliant to begin with. + + * Each high-level plotting function should have a simple example in + the ``Example`` section of the docstring. This should be as simple as + possible to demonstrate the method. More complex examples should go + in the ``examples`` tree. + + * Changes (both new features and bugfixes) should be tested. See + :ref:`testing` for more details. + + * Import the following modules using the standard scipy conventions:: + + import numpy as np + import numpy.ma as ma + import matplotlib as mpl + import matplotlib.pyplot as plt + import matplotlib.cbook as cbook + import matplotlib.patches as mpatches + + * If your change is a major new feature, add an entry to the ``What's new`` + section by adding a new file in ``doc/users/whats_new`` (see + :file:`doc/users/whats_new/README` for more information). + + * If you change the API in a backward-incompatible way, please + document it in `doc/api/api_changes`, by adding a new file describing your + changes (see :file:`doc/api/api_changes/README` for more information) + + * See below for additional points about + :ref:`keyword-argument-processing`, if code in your pull request + does that. + +In addition, you can check for common programming errors with the following +tools: + + * Code with a good unittest coverage (at least 70%, better 100%), check + with:: + + pip install coverage + python tests.py --with-coverage + + * No pyflakes warnings, check with:: + + pip install pyflakes + pyflakes path/to/module.py + +.. note:: + + The current state of the matplotlib code base is not compliant with all + of those guidelines, but we expect that enforcing those constraints on all + new contributions will move the overall code base quality in the right + direction. + + +.. seealso:: + + * :ref:`coding_guidelines` + * :ref:`testing` + * :ref:`documenting-matplotlib` + + + +.. _new_contributors: + +Issues for New Contributors +--------------------------- + +New contributors should look for the following tags when looking for issues. +We strongly recommend that new contributors tackle +`new-contributor-friendly `_ +issues (easy, well documented issues, that do not require an understanding of +the different submodules of matplotlib) and +`Easy-fix `_ +issues. 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 +========================= + + +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. + +It also helps us if you spread the word: reference the project from your blog +and articles or link to it from your website! + +.. _coding_guidelines: + +Coding guidelines +================= + +New modules and files: installation +----------------------------------- + +* If you have added new files or directories, or reorganized existing + ones, make sure the new files are included in the match patterns in + :file:`MANIFEST.in`, and/or in `package_data` in `setup.py`. + +C/C++ extensions +---------------- + +* Extensions may be written in C or C++. + +* Code style should conform to PEP7 (understanding that PEP7 doesn't + address C++, but most of its admonitions still apply). + +* Python/C interface code should be kept separate from the core C/C++ + code. The interface code should be named `FOO_wrap.cpp` or + `FOO_wrapper.cpp`. + +* Header file documentation (aka docstrings) should be in Numpydoc + format. We don't plan on using automated tools for these + docstrings, and the Numpydoc format is well understood in the + scientific Python community. + +.. _keyword-argument-processing: + +Keyword argument processing +--------------------------- + +Matplotlib makes extensive use of ``**kwargs`` for pass-through +customizations from one function to another. A typical example is in +:func:`matplotlib.pyplot.text`. The definition of the pylab text +function is a simple pass-through to +:meth:`matplotlib.axes.Axes.text`:: + + # in pylab.py + def text(*args, **kwargs): + ret = gca().text(*args, **kwargs) + draw_if_interactive() + return ret + +:meth:`~matplotlib.axes.Axes.text` in simplified form looks like this, +i.e., it just passes all ``args`` and ``kwargs`` on to +:meth:`matplotlib.text.Text.__init__`:: + + # in axes/_axes.py + def text(self, x, y, s, fontdict=None, withdash=False, **kwargs): + t = Text(x=x, y=y, text=s, **kwargs) + +and :meth:`~matplotlib.text.Text.__init__` (again with liberties for +illustration) just passes them on to the +:meth:`matplotlib.artist.Artist.update` method:: + + # in text.py + def __init__(self, x=0, y=0, text='', **kwargs): + Artist.__init__(self) + self.update(kwargs) + +``update`` does the work looking for methods named like +``set_property`` if ``property`` is a keyword argument. i.e., no one +looks at the keywords, they just get passed through the API to the +artist constructor which looks for suitably named methods and calls +them with the value. + +As a general rule, the use of ``**kwargs`` should be reserved for +pass-through keyword arguments, as in the example above. If all the +keyword args are to be used in the function, and not passed +on, use the key/value keyword args in the function definition rather +than the ``**kwargs`` idiom. + +In some cases, you may want to consume some keys in the local +function, and let others pass through. You can ``pop`` the ones to be +used locally and pass on the rest. For example, in +:meth:`~matplotlib.axes.Axes.plot`, ``scalex`` and ``scaley`` are +local arguments and the rest are passed on as +:meth:`~matplotlib.lines.Line2D` keyword arguments:: + + # in axes/_axes.py + def plot(self, *args, **kwargs): + scalex = kwargs.pop('scalex', True) + scaley = kwargs.pop('scaley', True) + if not self._hold: self.cla() + lines = [] + for line in self._get_lines(*args, **kwargs): + self.add_line(line) + lines.append(line) + +Note: there is a use case when ``kwargs`` are meant to be used locally +in the function (not passed on), but you still need the ``**kwargs`` +idiom. That is when you want to use ``*args`` to allow variable +numbers of non-keyword args. In this case, python will not allow you +to use named keyword args after the ``*args`` usage, so you will be +forced to use ``**kwargs``. An example is +:meth:`matplotlib.contour.ContourLabeler.clabel`:: + + # in contour.py + def clabel(self, *args, **kwargs): + fontsize = kwargs.get('fontsize', None) + inline = kwargs.get('inline', 1) + self.fmt = kwargs.get('fmt', '%1.3f') + colors = kwargs.get('colors', None) + if len(args) == 0: + levels = self.levels + indices = range(len(self.levels)) + elif len(args) == 1: + ...etc... + +.. _custom_backend: + +Developing a new backend +------------------------ + +If you are working on a custom backend, the *backend* setting in +:file:`matplotlibrc` (:ref:`customizing-matplotlib`) supports an +external backend via the ``module`` directive. if +:file:`my_backend.py` is a matplotlib backend in your +:envvar:`PYTHONPATH`, you can set it on one of several ways + +* in matplotlibrc:: + + backend : module://my_backend + + +* with the :envvar:`MPLBACKEND` environment variable:: + + > export MPLBACKEND="module://my_backend" + > python simple_plot.py + +* from the command shell with the `-d` flag:: + + > python simple_plot.py -dmodule://my_backend + +* with the use directive in your script:: + + import matplotlib + matplotlib.use('module://my_backend') + +.. _sample-data: + +Writing examples +---------------- + +We have hundreds of examples in subdirectories of +:file:`matplotlib/examples`, and these are automatically generated +when the website is built to show up both in the `examples +<../examples/index.html>`_ and `gallery +<../gallery.html>`_ sections of the website. + +Any sample data that the example uses should be kept small and +distributed with matplotlib in the +`lib/matplotlib/mpl-data/sample_data/` directory. Then in your +example code you can load it into a file handle with:: + + import matplotlib.cbook as cbook + fh = cbook.get_sample_data('mydata.dat') diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index 0ac2823a6e1..85cb96039a5 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -1,8 +1,8 @@ .. _documenting-matplotlib: -********************** -Documenting matplotlib -********************** +=========================================== +Developer's tips for documenting matplotlib +=========================================== Getting started =============== diff --git a/doc/devel/gitwash/development_workflow.rst b/doc/devel/gitwash/development_workflow.rst index c37ec21b5ed..2399758c061 100644 --- a/doc/devel/gitwash/development_workflow.rst +++ b/doc/devel/gitwash/development_workflow.rst @@ -1,8 +1,8 @@ .. _development-workflow: -==================== -Development workflow -==================== +========================= +Git Development workflow +========================= You've discovered a bug or something else you want to change in matplotlib_ .. |emdash| excellent! diff --git a/doc/devel/gitwash/matplotlib_for_dev.rst b/doc/devel/gitwash/matplotlib_for_dev.rst deleted file mode 100644 index f946eed3de0..00000000000 --- a/doc/devel/gitwash/matplotlib_for_dev.rst +++ /dev/null @@ -1,27 +0,0 @@ -.. _matplotlib-for-dev: - -================================================= -Installing matplotlib from source for development -================================================= - -After obtaining a local copy of the matpotlib source code (:ref:`set-up-fork`), -navigate to the matplotlib directory and run the following in the shell: - -:: - - python setup.py develop - -or:: - - pip install -v -e . - -This installs matplotlib for development (i.e., builds everything and places -the symbolic links back to the source code). This command has to be called -everytime a `c` file is changed. Note that changing branches may change the -`c`-code. - -When working on bleeding edge packages, setting up a -`virtual environment -`_ or a `conda -environment `_ is recommended. - diff --git a/doc/devel/gitwash/setting_up_for_development.rst b/doc/devel/gitwash/setting_up_for_development.rst index 2182343a2e1..d49122db6da 100644 --- a/doc/devel/gitwash/setting_up_for_development.rst +++ b/doc/devel/gitwash/setting_up_for_development.rst @@ -11,7 +11,6 @@ Contents: forking_hell set_up_fork - matplotlib_for_dev configure_git development_workflow dot2_dot3 diff --git a/doc/devel/index.rst b/doc/devel/index.rst index 71cac030bd8..118f1f564db 100644 --- a/doc/devel/index.rst +++ b/doc/devel/index.rst @@ -12,14 +12,18 @@ The Matplotlib Developers' Guide .. toctree:: :maxdepth: 2 - coding_guide.rst - portable_code.rst - license.rst - gitwash/index.rst + contributing.rst testing.rst documenting_mpl.rst - release_guide.rst - transformations.rst add_new_projection.rst - color_changes + portable_code.rst + gitwash/index.rst + coding_guide.rst + release_guide.rst MEP/index + +.. toctree:: + :hidden: + + license.rst + color_changes diff --git a/doc/devel/portable_code.rst b/doc/devel/portable_code.rst index a557905fa6d..9274c181ac2 100644 --- a/doc/devel/portable_code.rst +++ b/doc/devel/portable_code.rst @@ -1,5 +1,9 @@ -Writing code for Python 2 and 3 -------------------------------- + +.. _portable_code: + +===================================================== +Developer's tips for writing code for Python 2 and 3 +===================================================== As of matplotlib 1.4, the `six `_ library is used to support Python 2 and 3 from a single code base. diff --git a/doc/devel/testing.rst b/doc/devel/testing.rst index df7c8a74c47..fdf619ca853 100644 --- a/doc/devel/testing.rst +++ b/doc/devel/testing.rst @@ -1,7 +1,8 @@ .. _testing: -Testing -======= +============================ +Developer's tips for testing +============================ Matplotlib has a testing infrastructure based on nose_, making it easy to write new tests. The tests are in :mod:`matplotlib.tests`, and @@ -9,7 +10,7 @@ customizations to the nose testing infrastructure are in :mod:`matplotlib.testing`. (There is other old testing cruft around, please ignore it while we consolidate our testing to these locations.) -.. _nose: http://nose.readthedocs.org/en/latest/ +.. _nose: https://nose.readthedocs.io/en/latest/ Requirements ------------ @@ -17,21 +18,17 @@ Requirements The following software is required to run the tests: - nose_, version 1.0 or later - - - `mock `_, when running python + - `mock `_, when running python versions < 3.3 - - - `Ghostscript `_ (to render PDF + - `Ghostscript `_ (to render PDF files) - - `Inkscape `_ (to render SVG files) Optionally you can install: - `coverage `_ to collect coverage information - - - `pep8 `_ to test coding standards + - `pep8 `_ to test coding standards Building matplotlib for image comparison tests ---------------------------------------------- @@ -106,7 +103,7 @@ matplotlib library function :func:`matplotlib.test`:: pip install mock -.. _`nosetest arguments`: http://nose.readthedocs.org/en/latest/usage.html +.. _`nosetest arguments`: http://nose.readthedocs.io/en/latest/usage.html Writing a simple test diff --git a/doc/faq/installing_faq.rst b/doc/faq/installing_faq.rst index 7286203ac66..747b144ff4a 100644 --- a/doc/faq/installing_faq.rst +++ b/doc/faq/installing_faq.rst @@ -205,7 +205,7 @@ Python.org Python ^^^^^^^^^^^^^^^^^ Install pip following the `standard pip install instructions -`_. For the impatient, +`_. For the impatient, open a new Terminal.app window and:: curl -O https://bootstrap.pypa.io/get-pip.py diff --git a/doc/faq/virtualenv_faq.rst b/doc/faq/virtualenv_faq.rst index 094c3ca3432..37a60668d13 100644 --- a/doc/faq/virtualenv_faq.rst +++ b/doc/faq/virtualenv_faq.rst @@ -53,7 +53,7 @@ to virtualenv when creating an environment. This adds all system wide packages to the virtual environment. However, this breaks the isolation between the virtual environment and the system install. Among other issues it results in hard to debug problems with system packages shadowing the environment packages. -If you use `virtualenvwrapper `_ +If you use `virtualenvwrapper `_ this can be toggled with the ``toggleglobalsitepackages`` command. Alternatively, you can manually symlink the GUI frameworks into the environment. diff --git a/doc/glossary/index.rst b/doc/glossary/index.rst index 5f0b683f14c..468896d8697 100644 --- a/doc/glossary/index.rst +++ b/doc/glossary/index.rst @@ -16,7 +16,7 @@ Glossary dateutil - The `dateutil `_ library + The `dateutil `_ library provides extensions to the standard datetime module EPS diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index 51f970ba341..30805d67f6f 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -39,7 +39,7 @@ locators you create. See `pytz `_ for information on :mod:`pytz` and timezone handling. -The `dateutil module `_ provides +The `dateutil module `_ provides additional code to handle date ticking, making it easy to place ticks on any kinds of dates. See examples below. @@ -87,7 +87,7 @@ :class:`matplotlib.dates.rrulewrapper`. The :class:`rrulewrapper` is a simple wrapper around a :class:`dateutil.rrule` (`dateutil - `_) which allow almost + `_) which allow almost arbitrary date tick specifications. See `rrule example <../examples/pylab_examples/date_demo_rrule.html>`_. From 66950096c7bc7bab012c7d4d3b8f2931168730ab Mon Sep 17 00:00:00 2001 From: Eric Firing Date: Thu, 3 Nov 2016 11:20:52 -1000 Subject: [PATCH 03/11] Merge pull request #7384 from JunTan/7198 change hardcopy.docstring to docstring.hardcopy --- doc/users/whats_new.rst | 2 +- lib/matplotlib/style/core.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/users/whats_new.rst b/doc/users/whats_new.rst index 226f3ee1f57..cc0b89bfdc7 100644 --- a/doc/users/whats_new.rst +++ b/doc/users/whats_new.rst @@ -147,7 +147,7 @@ unrelated to style. These parameters include:: 'interactive', 'backend', 'backend.qt4', 'webagg.port', 'webagg.port_retries', 'webagg.open_in_browser', 'backend_fallback', 'toolbar', 'timezone', 'datapath', 'figure.max_open_warning', - 'savefig.directory', 'tk.window_focus', 'hardcopy.docstring' + 'savefig.directory', 'tk.window_focus', 'docstring.hardcopy' Change in default font diff --git a/lib/matplotlib/style/core.py b/lib/matplotlib/style/core.py index 075010e212c..b1bc691d405 100644 --- a/lib/matplotlib/style/core.py +++ b/lib/matplotlib/style/core.py @@ -40,7 +40,7 @@ 'interactive', 'backend', 'backend.qt4', 'webagg.port', 'webagg.port_retries', 'webagg.open_in_browser', 'backend_fallback', 'toolbar', 'timezone', 'datapath', 'figure.max_open_warning', - 'savefig.directory', 'tk.window_focus', 'hardcopy.docstring']) + 'savefig.directory', 'tk.window_focus', 'docstring.hardcopy']) def _remove_blacklisted_style_params(d, warn=True): From faf489489b18864da126d2454f68bbaec587143e Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Tue, 13 Oct 2015 15:20:09 -0400 Subject: [PATCH 04/11] Merge pull request #5236 from tacaswell/doc_tweak_readme DOC: tweak README formatting --- README.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 679d7631117..c454678238b 100644 --- a/README.rst +++ b/README.rst @@ -36,8 +36,9 @@ Contact ======= matplotlib's communication channels include active mailing lists: -* Matplotlib-announce (https://mail.python.org/mailman/listinfo/matplotlib-announce), -* Matplotlib-devel (https://mail.python.org/mailman/listinfo/matplotlib-devel), -* Matplotlib-users (https://mail.python.org/mailman/listinfo/matplotlib-users). +* `Users `_ mailing list: matplotlib-users@python.org +* `Announcement `_ mailing list: matplotlib-announce@python.org +* `Development `_ mailing list: matplotlib-devel@python.org -The latter is probably a good starting point for general questions and discussions. + +The first is a good starting point for general questions and discussions. From 320be9ee9238d493a67afdc676bfd27f0f518da2 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 16 Jul 2016 15:29:00 -0500 Subject: [PATCH 05/11] Merge pull request #5349 from gitter-badger/gitter-badge Add a Gitter chat badge to README.rst --- README.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.rst b/README.rst index c454678238b..e65885a2bb8 100644 --- a/README.rst +++ b/README.rst @@ -42,3 +42,8 @@ matplotlib's communication channels include active mailing lists: The first is a good starting point for general questions and discussions. + + +.. image:: https://badges.gitter.im/Join%20Chat.svg + :alt: Join the chat at https://gitter.im/matplotlib/matplotlib + :target: https://gitter.im/matplotlib/matplotlib?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge \ No newline at end of file From 1a6a897a93baf974dcc209b6f8e8e299236987b6 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 3 Nov 2016 19:00:44 -0400 Subject: [PATCH 06/11] Merge pull request #7381 from matplotlib/readme-updates DOC: Updating the readme Conflicts: README.rst Whitespace changes --- README.rst | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index e65885a2bb8..8d98da834a1 100644 --- a/README.rst +++ b/README.rst @@ -13,7 +13,7 @@ application servers, and various graphical user interface toolkits. Installation ============= -For installation instructions and requirements, see the INSTALL file. +For installation instructions and requirements, see the INSTALL file or the `install `_ documentation. If you think you may want to contribute to matplotlib, check out the `guide to working with the source code `_. Testing ======= @@ -46,4 +46,14 @@ The first is a good starting point for general questions and discussions. .. image:: https://badges.gitter.im/Join%20Chat.svg :alt: Join the chat at https://gitter.im/matplotlib/matplotlib - :target: https://gitter.im/matplotlib/matplotlib?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge \ No newline at end of file + :target: https://gitter.im/matplotlib/matplotlib?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + +Contribute +========== +You've discovered a bug or something else you want to change - excellent! + +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 `_! From b915ae17b447d5c102c5499932247eeedb29d7df Mon Sep 17 00:00:00 2001 From: Ryan May Date: Fri, 4 Nov 2016 14:13:17 -0600 Subject: [PATCH 07/11] ENH: Improve barbs() error message for badly-sized arrays. With this change, when given masked arrays with incompatible sizes, barbs() will raise a ValueError with a message stating as much. Previously, it would error with a TypeError that did not make it clear at all the source of the problem. --- lib/matplotlib/quiver.py | 9 +++++++++ lib/matplotlib/tests/test_quiver.py | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index 594ca8744ef..659797c1cdc 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -392,6 +392,12 @@ def _parse_args(*args): return X, Y, U, V, C +def _check_consistent_shapes(*arrays): + all_shapes = set(a.shape for a in arrays) + if len(all_shapes) != 1: + raise ValueError('The shapes of the passed in arrays do not match.') + + class Quiver(mcollections.PolyCollection): """ Specialized PolyCollection for arrows. @@ -1124,9 +1130,11 @@ def set_UVC(self, U, V, C=None): x, y, u, v, c = delete_masked_points(self.x.ravel(), self.y.ravel(), self.u, self.v, c) + _check_consistent_shapes(x, y, u, v, c) else: x, y, u, v = delete_masked_points(self.x.ravel(), self.y.ravel(), self.u, self.v) + _check_consistent_shapes(x, y, u, v) magnitude = np.hypot(u, v) flags, barbs, halves, empty = self._find_tails(magnitude, @@ -1161,6 +1169,7 @@ def set_offsets(self, xy): self.y = xy[:, 1] x, y, u, v = delete_masked_points(self.x.ravel(), self.y.ravel(), self.u, self.v) + _check_consistent_shapes(x, y, u, v) xy = np.hstack((x[:, np.newaxis], y[:, np.newaxis])) mcollections.PolyCollection.set_offsets(self, xy) self.stale = True diff --git a/lib/matplotlib/tests/test_quiver.py b/lib/matplotlib/tests/test_quiver.py index 59d47b70e99..0c13a6a437b 100644 --- a/lib/matplotlib/tests/test_quiver.py +++ b/lib/matplotlib/tests/test_quiver.py @@ -1,6 +1,7 @@ from __future__ import print_function import warnings import numpy as np +from nose.tools import raises import sys from matplotlib import pyplot as plt from matplotlib.testing.decorators import cleanup @@ -133,6 +134,20 @@ def test_barbs(): cmap='viridis') +@cleanup +@raises(ValueError) +def test_bad_masked_sizes(): + 'Test error handling when given differing sized masked arrays' + x = np.arange(3) + y = np.arange(3) + u = np.ma.array(15. * np.ones((4,))) + v = np.ma.array(15. * np.ones_like(u)) + u[1] = np.ma.masked + v[1] = np.ma.masked + fig, ax = plt.subplots() + ax.barbs(x, y, u, v) + + if __name__ == '__main__': import nose nose.runmodule() From 65d818df2ba2359355c76c619851df7d9168655b Mon Sep 17 00:00:00 2001 From: Ryan May Date: Fri, 4 Nov 2016 14:14:54 -0600 Subject: [PATCH 08/11] MNT: Fix docstring typo. --- lib/matplotlib/quiver.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index 659797c1cdc..da4622f48bf 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -1159,9 +1159,9 @@ def set_UVC(self, U, V, C=None): def set_offsets(self, xy): """ - Set the offsets for the barb polygons. This saves the offets passed in - and actually sets version masked as appropriate for the existing U/V - data. *offsets* should be a sequence. + Set the offsets for the barb polygons. This saves the offsets passed + in and actually sets version masked as appropriate for the existing + U/V data. *offsets* should be a sequence. ACCEPTS: sequence of pairs of floats """ From 263e6753278be11487fdbce259255462638197cf Mon Sep 17 00:00:00 2001 From: Nelle Varoquaux Date: Sat, 5 Nov 2016 00:16:31 -0700 Subject: [PATCH 09/11] Merge pull request #7398 from wgma00/master Moved python files from doc/pyplots to examples folder --- doc/devel/documenting_mpl.rst | 4 ++-- doc/faq/howto_faq.rst | 4 ++-- doc/make.py | 2 +- doc/users/annotations.rst | 4 ++-- doc/users/artists.rst | 8 +++---- doc/users/mathtext.rst | 2 +- doc/users/path_tutorial.rst | 2 +- doc/users/prev_whats_new/whats_new_0.98.4.rst | 6 ++--- doc/users/prev_whats_new/whats_new_0.99.rst | 6 ++--- doc/users/prev_whats_new/whats_new_1.0.rst | 2 +- doc/users/pyplot_tutorial.rst | 14 +++++------ doc/users/screenshots.rst | 2 +- doc/users/text_intro.rst | 2 +- doc/users/text_props.rst | 2 +- doc/users/transforms_tutorial.rst | 2 +- doc/users/usetex.rst | 2 +- {doc => examples}/pyplots/align_ylabels.py | 2 ++ {doc => examples}/pyplots/annotate_transform.py | 0 {doc => examples}/pyplots/annotation_basic.py | 0 {doc => examples}/pyplots/annotation_polar.py | 0 {doc => examples}/pyplots/auto_subplots_adjust.py | 0 {doc => examples}/pyplots/boxplot_demo.py | 3 ++- {doc => examples}/pyplots/compound_path_demo.py | 3 +++ {doc => examples}/pyplots/dollar_ticks.py | 3 +++ .../pyplots/fig_axes_customize_simple.py | 0 .../pyplots/fig_axes_labels_simple.py | 3 +++ {doc => examples}/pyplots/fig_x.py | 0 {doc => examples}/pyplots/matplotlibrc | 0 {doc => examples}/pyplots/pyplot_annotate.py | 0 {doc => examples}/pyplots/pyplot_formatstr.py | 0 {doc => examples}/pyplots/pyplot_mathtext.py | 0 {doc => examples}/pyplots/pyplot_scales.py | 3 +++ {doc => examples}/pyplots/pyplot_simple.py | 0 {doc => examples}/pyplots/pyplot_text.py | 3 +++ {doc => examples}/pyplots/pyplot_three.py | 0 {doc => examples}/pyplots/pyplot_two_subplots.py | 0 {doc => examples}/pyplots/tex_demo.py | 0 {doc => examples}/pyplots/text_commands.py | 0 {doc => examples}/pyplots/text_layout.py | 0 {doc => examples}/pyplots/whats_new_1_subplot3d.py | 0 {doc => examples}/pyplots/whats_new_98_4_fancy.py | 0 .../pyplots/whats_new_98_4_fill_between.py | 0 {doc => examples}/pyplots/whats_new_98_4_legend.py | 0 .../pyplots/whats_new_99_axes_grid.py | 0 {doc => examples}/pyplots/whats_new_99_mplot3d.py | 0 {doc => examples}/pyplots/whats_new_99_spines.py | 0 lib/matplotlib/tests/test_coding_standards.py | 27 +++++++++++++++++++++- 47 files changed, 77 insertions(+), 34 deletions(-) rename {doc => examples}/pyplots/align_ylabels.py (92%) rename {doc => examples}/pyplots/annotate_transform.py (100%) rename {doc => examples}/pyplots/annotation_basic.py (100%) rename {doc => examples}/pyplots/annotation_polar.py (100%) rename {doc => examples}/pyplots/auto_subplots_adjust.py (100%) rename {doc => examples}/pyplots/boxplot_demo.py (96%) rename {doc => examples}/pyplots/compound_path_demo.py (93%) rename {doc => examples}/pyplots/dollar_ticks.py (84%) rename {doc => examples}/pyplots/fig_axes_customize_simple.py (100%) rename {doc => examples}/pyplots/fig_axes_labels_simple.py (86%) rename {doc => examples}/pyplots/fig_x.py (100%) rename {doc => examples}/pyplots/matplotlibrc (100%) rename {doc => examples}/pyplots/pyplot_annotate.py (100%) rename {doc => examples}/pyplots/pyplot_formatstr.py (100%) rename {doc => examples}/pyplots/pyplot_mathtext.py (100%) rename {doc => examples}/pyplots/pyplot_scales.py (94%) rename {doc => examples}/pyplots/pyplot_simple.py (100%) rename {doc => examples}/pyplots/pyplot_text.py (85%) rename {doc => examples}/pyplots/pyplot_three.py (100%) rename {doc => examples}/pyplots/pyplot_two_subplots.py (100%) rename {doc => examples}/pyplots/tex_demo.py (100%) rename {doc => examples}/pyplots/text_commands.py (100%) rename {doc => examples}/pyplots/text_layout.py (100%) rename {doc => examples}/pyplots/whats_new_1_subplot3d.py (100%) rename {doc => examples}/pyplots/whats_new_98_4_fancy.py (100%) rename {doc => examples}/pyplots/whats_new_98_4_fill_between.py (100%) rename {doc => examples}/pyplots/whats_new_98_4_legend.py (100%) rename {doc => examples}/pyplots/whats_new_99_axes_grid.py (100%) rename {doc => examples}/pyplots/whats_new_99_mplot3d.py (100%) rename {doc => examples}/pyplots/whats_new_99_spines.py (100%) diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index 85cb96039a5..cdb4a765c52 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -281,7 +281,7 @@ script, this will be done automatically at build time to ensure that the code that is included runs and produces the advertised figure. The path should be relative to the ``doc`` directory. Any plots -specific to the documentation should be added to the ``doc/pyplots`` +specific to the documentation should be added to the ``doc/mpl_examples/pyplots`` directory and committed to git. Plots from the ``examples`` directory may be referenced through the symlink ``mpl_examples`` in the ``doc`` directory. e.g.:: @@ -310,7 +310,7 @@ git. Please also add a line to the README in doc/pyplots for any additional requirements necessary to generate a new figure. Once these steps have been taken, these figures can be included in the usual way:: - .. plot:: pyplots/tex_unicode_demo.py + .. plot:: mpl_examples/pyplots/tex_unicode_demo.py :include-source: Examples diff --git a/doc/faq/howto_faq.rst b/doc/faq/howto_faq.rst index 0e33c11d3f2..49f30da44c4 100644 --- a/doc/faq/howto_faq.rst +++ b/doc/faq/howto_faq.rst @@ -230,7 +230,7 @@ Here is an example that gets a bounding box in relative figure coordinates (0..1) of each of the labels and uses it to move the left of the subplots over so that the tick labels fit in the figure -.. plot:: pyplots/auto_subplots_adjust.py +.. plot:: mpl_examples/pyplots/auto_subplots_adjust.py :include-source: .. _howto-ticks: @@ -273,7 +273,7 @@ behavior by specifying the coordinates of the label. The example below shows the default behavior in the left subplots, and the manual setting in the right subplots. -.. plot:: pyplots/align_ylabels.py +.. plot:: mpl_examples/pyplots/align_ylabels.py :include-source: .. _date-index-plots: diff --git a/doc/make.py b/doc/make.py index aa00ad1b4a9..2b024c1a11f 100755 --- a/doc/make.py +++ b/doc/make.py @@ -119,7 +119,7 @@ def clean(): 'mpl_examples/pylab_examples/*.png', 'mpl_examples/pylab_examples/*.pdf', 'mpl_examples/units/*.png', - 'pyplots/tex_demo.png', + 'mpl_examples/pyplots/tex_demo.png', '_static/matplotlibrc', '_templates/gallery.html', 'users/installing.rst']: diff --git a/doc/users/annotations.rst b/doc/users/annotations.rst index 4cea03c75ef..3d66c655731 100644 --- a/doc/users/annotations.rst +++ b/doc/users/annotations.rst @@ -19,7 +19,7 @@ consider: the location being annotated represented by the argument ``xy`` and the location of the text ``xytext``. Both of these arguments are ``(x,y)`` tuples. -.. plot:: pyplots/annotation_basic.py +.. plot:: mpl_examples/pyplots/annotation_basic.py :include-source: @@ -80,7 +80,7 @@ keyword args like ``horizontalalignment``, ``verticalalignment`` and ``fontsize`` are passed from `~matplotlib.Axes.annotate` to the ``Text`` instance. -.. plot:: pyplots/annotation_polar.py +.. plot:: mpl_examples/pyplots/annotation_polar.py :include-source: For more on all the wild and wonderful things you can do with diff --git a/doc/users/artists.rst b/doc/users/artists.rst index 17f75fcac29..38c6e4dca56 100644 --- a/doc/users/artists.rst +++ b/doc/users/artists.rst @@ -133,7 +133,7 @@ drawing of the ticks, tick labels and axis labels. Try creating the figure below. -.. plot:: pyplots/fig_axes_labels_simple.py +.. plot:: mpl_examples/pyplots/fig_axes_labels_simple.py .. _customizing-artists: @@ -323,7 +323,7 @@ obtain by setting the ``Artist`` transform to :attr:`fig.transFigure In [195]: fig.canvas.draw() -.. plot:: pyplots/fig_x.py +.. plot:: mpl_examples/pyplots/fig_x.py Here is a summary of the Artists the figure contains @@ -598,7 +598,7 @@ grid Turn the grid on or off for the major or minor ticks Here is an example, not recommended for its beauty, which customizes the axes and tick properties -.. plot:: pyplots/fig_axes_customize_simple.py +.. plot:: mpl_examples/pyplots/fig_axes_customize_simple.py :include-source: @@ -635,5 +635,5 @@ label2On boolean which determines whether to draw tick label Here is an example which sets the formatter for the right side ticks with dollar signs and colors them green on the right side of the yaxis -.. plot:: pyplots/dollar_ticks.py +.. plot:: mpl_examples/pyplots/dollar_ticks.py :include-source: diff --git a/doc/users/mathtext.rst b/doc/users/mathtext.rst index e34f574d9e8..cf906d2caaf 100644 --- a/doc/users/mathtext.rst +++ b/doc/users/mathtext.rst @@ -340,5 +340,5 @@ Example Here is an example illustrating many of these features in context. -.. plot:: pyplots/pyplot_mathtext.py +.. plot:: mpl_examples/pyplots/pyplot_mathtext.py :include-source: diff --git a/doc/users/path_tutorial.rst b/doc/users/path_tutorial.rst index 4e1c1b70831..a29bc1dcdb2 100644 --- a/doc/users/path_tutorial.rst +++ b/doc/users/path_tutorial.rst @@ -184,4 +184,4 @@ All that remains is to create the path, attach it to a Here is the result -.. plot:: pyplots/compound_path_demo.py +.. plot:: mpl_examples/pyplots/compound_path_demo.py diff --git a/doc/users/prev_whats_new/whats_new_0.98.4.rst b/doc/users/prev_whats_new/whats_new_0.98.4.rst index e5749caa040..42a4eb486d2 100644 --- a/doc/users/prev_whats_new/whats_new_0.98.4.rst +++ b/doc/users/prev_whats_new/whats_new_0.98.4.rst @@ -30,7 +30,7 @@ multiple columns and rows, as well as fancy box drawing. See :func:`~matplotlib.pyplot.legend` and :class:`matplotlib.legend.Legend`. -.. plot:: pyplots/whats_new_98_4_legend.py +.. plot:: mpl_examples/pyplots/whats_new_98_4_legend.py .. _fancy-annotations: @@ -44,7 +44,7 @@ boxes and connectors in annotations. See :class:`~matplotlib.patches.ArrowStyle`, and :class:`~matplotlib.patches.ConnectionStyle`. -.. plot:: pyplots/whats_new_98_4_fancy.py +.. plot:: mpl_examples/pyplots/whats_new_98_4_fancy.py .. _psd-amplitude: @@ -84,7 +84,7 @@ can pass an *x* array and a *ylower* and *yupper* array to fill between, and an optional *where* argument which is a logical mask where you want to do the filling. -.. plot:: pyplots/whats_new_98_4_fill_between.py +.. plot:: mpl_examples/pyplots/whats_new_98_4_fill_between.py Lots more ----------- diff --git a/doc/users/prev_whats_new/whats_new_0.99.rst b/doc/users/prev_whats_new/whats_new_0.99.rst index b4e787fd9ca..e251a56b550 100644 --- a/doc/users/prev_whats_new/whats_new_0.99.rst +++ b/doc/users/prev_whats_new/whats_new_0.99.rst @@ -29,7 +29,7 @@ toolkit mpl_toolkits.mplot3d (which now comes standard with all mpl installs). See :ref:`mplot3d-examples-index` and :ref:`toolkit_mplot3d-tutorial` -.. plot:: pyplots/whats_new_99_mplot3d.py +.. plot:: mpl_examples/pyplots/whats_new_99_mplot3d.py .. _whats-new-axes-grid: @@ -42,7 +42,7 @@ the world coordinate system. The toolkit is included standard with all new mpl installs. See :ref:`axes_grid-examples-index` and :ref:`axes_grid_users-guide-index`. -.. plot:: pyplots/whats_new_99_axes_grid.py +.. plot:: mpl_examples/pyplots/whats_new_99_axes_grid.py .. _whats-new-spine: @@ -57,4 +57,4 @@ well as "detach" the spine to offset it away from the data. See :ref:`pylab_examples-spine_placement_demo` and :class:`matplotlib.spines.Spine`. -.. plot:: pyplots/whats_new_99_spines.py +.. plot:: mpl_examples/pyplots/whats_new_99_spines.py diff --git a/doc/users/prev_whats_new/whats_new_1.0.rst b/doc/users/prev_whats_new/whats_new_1.0.rst index 5af33dd4fcb..bc7a336b306 100644 --- a/doc/users/prev_whats_new/whats_new_1.0.rst +++ b/doc/users/prev_whats_new/whats_new_1.0.rst @@ -82,7 +82,7 @@ supporting mixing of 2D and 3D graphs in the same figure, and/or multiple 3D graphs in a single figure, using the "projection" keyword argument to add_axes or add_subplot. Thanks Ben Root. -.. plot:: pyplots/whats_new_1_subplot3d.py +.. plot:: mpl_examples/pyplots/whats_new_1_subplot3d.py tick_params ------------ diff --git a/doc/users/pyplot_tutorial.rst b/doc/users/pyplot_tutorial.rst index 5cdf8f9941b..dfcdcf9b6b3 100644 --- a/doc/users/pyplot_tutorial.rst +++ b/doc/users/pyplot_tutorial.rst @@ -17,7 +17,7 @@ and in most places in the documentation refers to the *axes* `part of a figure `__ and not the strict mathematical term for more than one axis). -.. plot:: pyplots/pyplot_simple.py +.. plot:: mpl_examples/pyplots/pyplot_simple.py :include-source: You may be wondering why the x-axis ranges from 0-3 and the y-axis @@ -41,7 +41,7 @@ MATLAB, and you concatenate a color string with a line style string. The default format string is 'b-', which is a solid blue line. For example, to plot the above with red circles, you would issue -.. plot:: pyplots/pyplot_formatstr.py +.. plot:: mpl_examples/pyplots/pyplot_formatstr.py :include-source: See the :func:`~matplotlib.pyplot.plot` documentation for a complete @@ -57,7 +57,7 @@ converted to numpy arrays internally. The example below illustrates a plotting several lines with different format styles in one command using arrays. -.. plot:: pyplots/pyplot_three.py +.. plot:: mpl_examples/pyplots/pyplot_three.py :include-source: .. _controlling-line-properties: @@ -164,7 +164,7 @@ current axes (a :class:`matplotlib.axes.Axes` instance), and to worry about this, because it is all taken care of behind the scenes. Below is a script to create two subplots. -.. plot:: pyplots/pyplot_two_subplots.py +.. plot:: mpl_examples/pyplots/pyplot_two_subplots.py :include-source: The :func:`~matplotlib.pyplot.figure` command here is optional because @@ -231,7 +231,7 @@ an arbitrary location, and the :func:`~matplotlib.pyplot.xlabel`, are used to add text in the indicated locations (see :ref:`text-intro` for a more detailed example) -.. plot:: pyplots/pyplot_text.py +.. plot:: mpl_examples/pyplots/pyplot_text.py :include-source: @@ -277,7 +277,7 @@ two points to consider: the location being annotated represented by the argument ``xy`` and the location of the text ``xytext``. Both of these arguments are ``(x,y)`` tuples. -.. plot:: pyplots/pyplot_annotate.py +.. plot:: mpl_examples/pyplots/pyplot_annotate.py :include-source: In this basic example, both the ``xy`` (arrow tip) and ``xytext`` @@ -300,7 +300,7 @@ of magnitude. Changing the scale of an axis is easy: An example of four plots with the same data and different scales for the y axis is shown below. -.. plot:: pyplots/pyplot_scales.py +.. plot:: mpl_examples/pyplots/pyplot_scales.py :include-source: It is also possible to add your own scale, see :ref:`adding-new-scales` for diff --git a/doc/users/screenshots.rst b/doc/users/screenshots.rst index 8d3c2ee2e88..35f2810e9c3 100644 --- a/doc/users/screenshots.rst +++ b/doc/users/screenshots.rst @@ -248,7 +248,7 @@ Although matplotlib's internal math rendering engine is quite powerful, sometimes you need TeX. Matplotlib supports external TeX rendering of strings with the *usetex* option. -.. plot:: pyplots/tex_demo.py +.. plot:: mpl_examples/pyplots/tex_demo.py .. _screenshots_eeg_demo: diff --git a/doc/users/text_intro.rst b/doc/users/text_intro.rst index 824cc8d2af8..5c1da5d9ebf 100644 --- a/doc/users/text_intro.rst +++ b/doc/users/text_intro.rst @@ -58,5 +58,5 @@ All of these functions create and return a variety of font and other properties. The example below shows all of these commands in action. -.. plot:: pyplots/text_commands.py +.. plot:: mpl_examples/pyplots/text_commands.py :include-source: diff --git a/doc/users/text_props.rst b/doc/users/text_props.rst index a418ecc2935..38089f48029 100644 --- a/doc/users/text_props.rst +++ b/doc/users/text_props.rst @@ -58,7 +58,7 @@ code indicates that the coordinates are given relative to the axes bounding box, with 0,0 being the lower left of the axes and 1,1 the upper right. -.. plot:: pyplots/text_layout.py +.. plot:: mpl_examples/pyplots/text_layout.py :include-source: diff --git a/doc/users/transforms_tutorial.rst b/doc/users/transforms_tutorial.rst index 46c509dc6ad..fedf693b9f0 100644 --- a/doc/users/transforms_tutorial.rst +++ b/doc/users/transforms_tutorial.rst @@ -112,7 +112,7 @@ dpi setting. Likewise, in the figure below, the display labeled points are probably not the same as in the ipython session because the documentation figure size defaults are different. -.. plot:: pyplots/annotate_transform.py +.. plot:: mpl_examples/pyplots/annotate_transform.py .. note:: diff --git a/doc/users/usetex.rst b/doc/users/usetex.rst index 52a82f1a1b3..1e02f26e8b8 100644 --- a/doc/users/usetex.rst +++ b/doc/users/usetex.rst @@ -52,7 +52,7 @@ matplotlibrc use:: Here is the standard example, `tex_demo.py`: -.. plot:: pyplots/tex_demo.py +.. plot:: mpl_examples/pyplots/tex_demo.py :include-source: Note that display math mode (``$$ e=mc^2 $$``) is not supported, but adding the diff --git a/doc/pyplots/align_ylabels.py b/examples/pyplots/align_ylabels.py similarity index 92% rename from doc/pyplots/align_ylabels.py rename to examples/pyplots/align_ylabels.py index 1241c183629..44f78845b68 100644 --- a/doc/pyplots/align_ylabels.py +++ b/examples/pyplots/align_ylabels.py @@ -6,6 +6,8 @@ fig = plt.figure() fig.subplots_adjust(left=0.2, wspace=0.6) +# Fixing random state for reproducibility +np.random.seed(19680801) ax1 = fig.add_subplot(221) ax1.plot(2000*np.random.rand(10)) diff --git a/doc/pyplots/annotate_transform.py b/examples/pyplots/annotate_transform.py similarity index 100% rename from doc/pyplots/annotate_transform.py rename to examples/pyplots/annotate_transform.py diff --git a/doc/pyplots/annotation_basic.py b/examples/pyplots/annotation_basic.py similarity index 100% rename from doc/pyplots/annotation_basic.py rename to examples/pyplots/annotation_basic.py diff --git a/doc/pyplots/annotation_polar.py b/examples/pyplots/annotation_polar.py similarity index 100% rename from doc/pyplots/annotation_polar.py rename to examples/pyplots/annotation_polar.py diff --git a/doc/pyplots/auto_subplots_adjust.py b/examples/pyplots/auto_subplots_adjust.py similarity index 100% rename from doc/pyplots/auto_subplots_adjust.py rename to examples/pyplots/auto_subplots_adjust.py diff --git a/doc/pyplots/boxplot_demo.py b/examples/pyplots/boxplot_demo.py similarity index 96% rename from doc/pyplots/boxplot_demo.py rename to examples/pyplots/boxplot_demo.py index 8241388f0de..9c38f0aa9e4 100644 --- a/doc/pyplots/boxplot_demo.py +++ b/examples/pyplots/boxplot_demo.py @@ -7,7 +7,8 @@ import numpy as np import matplotlib.pyplot as plt -np.random.seed(0) +# Fixing random state for reproducibility +np.random.seed(19680801) # fake up some data spread = np.random.rand(50) * 100 diff --git a/doc/pyplots/compound_path_demo.py b/examples/pyplots/compound_path_demo.py similarity index 93% rename from doc/pyplots/compound_path_demo.py rename to examples/pyplots/compound_path_demo.py index 06f32ffcbf4..ed7e7d6ce32 100644 --- a/doc/pyplots/compound_path_demo.py +++ b/examples/pyplots/compound_path_demo.py @@ -7,6 +7,9 @@ fig = plt.figure() ax = fig.add_subplot(111) +# Fixing random state for reproducibility +np.random.seed(19680801) + # histogram our data with numpy data = np.random.randn(1000) n, bins = np.histogram(data, 100) diff --git a/doc/pyplots/dollar_ticks.py b/examples/pyplots/dollar_ticks.py similarity index 84% rename from doc/pyplots/dollar_ticks.py rename to examples/pyplots/dollar_ticks.py index c54b17b91b7..9c22eb4e186 100644 --- a/doc/pyplots/dollar_ticks.py +++ b/examples/pyplots/dollar_ticks.py @@ -2,6 +2,9 @@ import matplotlib.pyplot as plt import matplotlib.ticker as ticker +# Fixing random state for reproducibility +np.random.seed(19680801) + fig = plt.figure() ax = fig.add_subplot(111) ax.plot(100*np.random.rand(20)) diff --git a/doc/pyplots/fig_axes_customize_simple.py b/examples/pyplots/fig_axes_customize_simple.py similarity index 100% rename from doc/pyplots/fig_axes_customize_simple.py rename to examples/pyplots/fig_axes_customize_simple.py diff --git a/doc/pyplots/fig_axes_labels_simple.py b/examples/pyplots/fig_axes_labels_simple.py similarity index 86% rename from doc/pyplots/fig_axes_labels_simple.py rename to examples/pyplots/fig_axes_labels_simple.py index 7fd2c53a4f2..b59a9e78048 100644 --- a/doc/pyplots/fig_axes_labels_simple.py +++ b/examples/pyplots/fig_axes_labels_simple.py @@ -11,6 +11,9 @@ s = np.sin(2*np.pi*t) line, = ax1.plot(t, s, color='blue', lw=2) +# Fixing random state for reproducibility +np.random.seed(19680801) + ax2 = fig.add_axes([0.15, 0.1, 0.7, 0.3]) n, bins, patches = ax2.hist(np.random.randn(1000), 50, facecolor='yellow', edgecolor='yellow') diff --git a/doc/pyplots/fig_x.py b/examples/pyplots/fig_x.py similarity index 100% rename from doc/pyplots/fig_x.py rename to examples/pyplots/fig_x.py diff --git a/doc/pyplots/matplotlibrc b/examples/pyplots/matplotlibrc similarity index 100% rename from doc/pyplots/matplotlibrc rename to examples/pyplots/matplotlibrc diff --git a/doc/pyplots/pyplot_annotate.py b/examples/pyplots/pyplot_annotate.py similarity index 100% rename from doc/pyplots/pyplot_annotate.py rename to examples/pyplots/pyplot_annotate.py diff --git a/doc/pyplots/pyplot_formatstr.py b/examples/pyplots/pyplot_formatstr.py similarity index 100% rename from doc/pyplots/pyplot_formatstr.py rename to examples/pyplots/pyplot_formatstr.py diff --git a/doc/pyplots/pyplot_mathtext.py b/examples/pyplots/pyplot_mathtext.py similarity index 100% rename from doc/pyplots/pyplot_mathtext.py rename to examples/pyplots/pyplot_mathtext.py diff --git a/doc/pyplots/pyplot_scales.py b/examples/pyplots/pyplot_scales.py similarity index 94% rename from doc/pyplots/pyplot_scales.py rename to examples/pyplots/pyplot_scales.py index 61dcc0ce2e0..bdf2fb82370 100644 --- a/doc/pyplots/pyplot_scales.py +++ b/examples/pyplots/pyplot_scales.py @@ -3,6 +3,9 @@ from matplotlib.ticker import NullFormatter # useful for `logit` scale +# Fixing random state for reproducibility +np.random.seed(19680801) + # make up some data in the interval ]0, 1[ y = np.random.normal(loc=0.5, scale=0.4, size=1000) y = y[(y > 0) & (y < 1)] diff --git a/doc/pyplots/pyplot_simple.py b/examples/pyplots/pyplot_simple.py similarity index 100% rename from doc/pyplots/pyplot_simple.py rename to examples/pyplots/pyplot_simple.py diff --git a/doc/pyplots/pyplot_text.py b/examples/pyplots/pyplot_text.py similarity index 85% rename from doc/pyplots/pyplot_text.py rename to examples/pyplots/pyplot_text.py index 19aad305f06..b54a0f939da 100644 --- a/doc/pyplots/pyplot_text.py +++ b/examples/pyplots/pyplot_text.py @@ -1,6 +1,9 @@ import numpy as np import matplotlib.pyplot as plt +# Fixing random state for reproducibility +np.random.seed(19680801) + mu, sigma = 100, 15 x = mu + sigma * np.random.randn(10000) diff --git a/doc/pyplots/pyplot_three.py b/examples/pyplots/pyplot_three.py similarity index 100% rename from doc/pyplots/pyplot_three.py rename to examples/pyplots/pyplot_three.py diff --git a/doc/pyplots/pyplot_two_subplots.py b/examples/pyplots/pyplot_two_subplots.py similarity index 100% rename from doc/pyplots/pyplot_two_subplots.py rename to examples/pyplots/pyplot_two_subplots.py diff --git a/doc/pyplots/tex_demo.py b/examples/pyplots/tex_demo.py similarity index 100% rename from doc/pyplots/tex_demo.py rename to examples/pyplots/tex_demo.py diff --git a/doc/pyplots/text_commands.py b/examples/pyplots/text_commands.py similarity index 100% rename from doc/pyplots/text_commands.py rename to examples/pyplots/text_commands.py diff --git a/doc/pyplots/text_layout.py b/examples/pyplots/text_layout.py similarity index 100% rename from doc/pyplots/text_layout.py rename to examples/pyplots/text_layout.py diff --git a/doc/pyplots/whats_new_1_subplot3d.py b/examples/pyplots/whats_new_1_subplot3d.py similarity index 100% rename from doc/pyplots/whats_new_1_subplot3d.py rename to examples/pyplots/whats_new_1_subplot3d.py diff --git a/doc/pyplots/whats_new_98_4_fancy.py b/examples/pyplots/whats_new_98_4_fancy.py similarity index 100% rename from doc/pyplots/whats_new_98_4_fancy.py rename to examples/pyplots/whats_new_98_4_fancy.py diff --git a/doc/pyplots/whats_new_98_4_fill_between.py b/examples/pyplots/whats_new_98_4_fill_between.py similarity index 100% rename from doc/pyplots/whats_new_98_4_fill_between.py rename to examples/pyplots/whats_new_98_4_fill_between.py diff --git a/doc/pyplots/whats_new_98_4_legend.py b/examples/pyplots/whats_new_98_4_legend.py similarity index 100% rename from doc/pyplots/whats_new_98_4_legend.py rename to examples/pyplots/whats_new_98_4_legend.py diff --git a/doc/pyplots/whats_new_99_axes_grid.py b/examples/pyplots/whats_new_99_axes_grid.py similarity index 100% rename from doc/pyplots/whats_new_99_axes_grid.py rename to examples/pyplots/whats_new_99_axes_grid.py diff --git a/doc/pyplots/whats_new_99_mplot3d.py b/examples/pyplots/whats_new_99_mplot3d.py similarity index 100% rename from doc/pyplots/whats_new_99_mplot3d.py rename to examples/pyplots/whats_new_99_mplot3d.py diff --git a/doc/pyplots/whats_new_99_spines.py b/examples/pyplots/whats_new_99_spines.py similarity index 100% rename from doc/pyplots/whats_new_99_spines.py rename to examples/pyplots/whats_new_99_spines.py diff --git a/lib/matplotlib/tests/test_coding_standards.py b/lib/matplotlib/tests/test_coding_standards.py index 82f294d8ea4..d63415a380e 100644 --- a/lib/matplotlib/tests/test_coding_standards.py +++ b/lib/matplotlib/tests/test_coding_standards.py @@ -268,7 +268,32 @@ def test_pep8_conformance_examples(): '*/pylab_examples/tricontour_demo.py', '*/pylab_examples/tripcolor_demo.py', '*/pylab_examples/triplot_demo.py', - '*/shapes_and_collections/artist_reference.py'] + '*/shapes_and_collections/artist_reference.py', + '*/pyplots/align_ylabels.py', + '*/pyplots/annotate_transform.py', + '*/pyplots/pyplot_simple.py', + '*/pyplots/annotation_basic.py', + '*/pyplots/annotation_polar.py', + '*/pyplots/auto_subplots_adjust.py', + '*/pyplots/pyplot_two_subplots.py', + '*/pyplots/boxplot_demo.py', + '*/pyplots/tex_demo.py', + '*/pyplots/compound_path_demo.py', + '*/pyplots/text_commands.py', + '*/pyplots/dollar_ticks.py', + '*/pyplots/text_layout.py', + '*/pyplots/fig_axes_customize_simple.py', + '*/pyplots/whats_new_1_subplot3d.py', + '*/pyplots/fig_axes_labels_simple.py', + '*/pyplots/whats_new_98_4_fancy.py', + '*/pyplots/fig_x.py', + '*/pyplots/whats_new_98_4_fill_between.py', + '*/pyplots/whats_new_98_4_legend.py', + '*/pyplots/pyplot_annotate.py', + '*/pyplots/whats_new_99_axes_grid.py', + '*/pyplots/pyplot_formatstr.py', + '*/pyplots/pyplot_mathtext.py', + '*/pyplots/whats_new_99_spines.py'] assert_pep8_conformance(dirname=exdir, extra_exclude_directories=blacklist, pep8_additional_ignore=PEP8_ADDITIONAL_IGNORE + From 2edf1e364aedb420e0397fd8453f6dcdcfcc4ff0 Mon Sep 17 00:00:00 2001 From: Eric Firing Date: Fri, 4 Nov 2016 21:47:43 -1000 Subject: [PATCH 10/11] BUG: fix autoscale_view with log scale and margins LogLocator.view_limits was always clipping vmin to minpos; now it sets vmin to minpos only if vmin <= 0. --- lib/matplotlib/tests/test_axes.py | 15 +++++++++++++++ lib/matplotlib/ticker.py | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 1c2b1ecd708..ba5a8da95fe 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -4667,6 +4667,21 @@ def test_fillbetween_cycle(): assert tuple(cc.get_edgecolors().squeeze()) == tuple(edge_target) +@cleanup +def test_log_margins(): + plt.rcParams['axes.autolimit_mode'] = 'data' + fig, ax = plt.subplots() + margin = 0.05 + ax.set_xmargin(margin) + ax.semilogx([1, 10], [1, 10]) + xlim0, xlim1 = ax.get_xlim() + transform = ax.xaxis.get_transform() + xlim0t, xlim1t = transform.transform([xlim0, xlim1]) + x0t, x1t = transform.transform([1, 10]) + delta = (x1t - x0t) * margin + assert_allclose([xlim0t + delta, xlim1t - delta], [x0t, x1t]) + + if __name__ == '__main__': import nose import sys diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 0a9f44a1b09..f274ba71a81 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -1912,7 +1912,7 @@ def view_limits(self, vmin, vmax): "Data has no positive values, and therefore can not be " "log-scaled.") - if vmin <= minpos: + if vmin <= 0: vmin = minpos if rcParams['axes.autolimit_mode'] == 'round_numbers': From 1ae616e0b71bb9245e43d8da9aa908db79cb5c92 Mon Sep 17 00:00:00 2001 From: Eric Firing Date: Sat, 5 Nov 2016 07:50:38 -1000 Subject: [PATCH 11/11] Fix all the baseline images that were bad because of the bug --- .../baseline_images/test_axes/auto_numticks_log.png | Bin 19482 -> 18906 bytes .../test_axes/boxplot_no_inverted_whisker.png | Bin 1377 -> 1392 bytes .../baseline_images/test_axes/bxp_baseline.png | Bin 2736 -> 2681 bytes .../baseline_images/test_axes/bxp_custombox.png | Bin 2752 -> 2585 bytes .../baseline_images/test_axes/bxp_customcap.png | Bin 2172 -> 2101 bytes .../baseline_images/test_axes/bxp_custommedian.png | Bin 2072 -> 2009 bytes .../baseline_images/test_axes/bxp_customoutlier.png | Bin 2055 -> 1989 bytes .../test_axes/bxp_custompatchartist.png | Bin 11843 -> 11810 bytes .../test_axes/bxp_custompositions.png | Bin 2021 -> 1968 bytes .../baseline_images/test_axes/bxp_customwhisker.png | Bin 2136 -> 2073 bytes .../baseline_images/test_axes/bxp_customwidths.png | Bin 2101 -> 2078 bytes .../baseline_images/test_axes/bxp_horizontal.png | Bin 2418 -> 2408 bytes .../test_axes/bxp_no_flier_stats.png | Bin 1419 -> 1403 bytes .../tests/baseline_images/test_axes/bxp_nobox.png | Bin 1917 -> 1866 bytes .../tests/baseline_images/test_axes/bxp_nocaps.png | Bin 1934 -> 1877 bytes .../baseline_images/test_axes/bxp_patchartist.png | Bin 2050 -> 1987 bytes .../test_axes/bxp_precentilewhis.png | Bin 2952 -> 2894 bytes .../baseline_images/test_axes/bxp_rangewhis.png | Bin 2171 -> 2135 bytes .../baseline_images/test_axes/bxp_scalarwidth.png | Bin 2020 -> 1960 bytes .../baseline_images/test_axes/bxp_with_xlabels.png | Bin 2775 -> 2721 bytes .../baseline_images/test_axes/bxp_with_ylabels.png | Bin 3080 -> 3072 bytes .../test_axes/bxp_withmean_custompoint.png | Bin 2247 -> 2226 bytes .../baseline_images/test_axes/bxp_withmean_line.png | Bin 2194 -> 2137 bytes .../test_axes/bxp_withmean_point.png | Bin 2197 -> 2163 bytes .../baseline_images/test_axes/bxp_withnotch.png | Bin 4880 -> 4728 bytes 25 files changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/auto_numticks_log.png b/lib/matplotlib/tests/baseline_images/test_axes/auto_numticks_log.png index 248fb669c56a698c9a5da9ad8fb3746807de0e09..7a31434f501fd76d04004e1725bb33de6bc0e9b9 100644 GIT binary patch literal 18906 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 UBbOfiawY^LB`cYIOZUb90R-M*j{pDw literal 19482 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 L)z4*}Q$iB}vMMV| diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_baseline.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_baseline.png index b7ceb650952419eecbf1d62fe2b89fc076da335c..fdaf2e157961fcd1209458cc4f083ab97c08290e 100644 GIT binary patch literal 2681 zcmbtWX;f3!7CylM5dl#OGRUA}EQ2VPP@oXPATuJ92qsF^QYENS2qCvkBcdQ?kUTvl6d_j{5P-c`2JFrHKh*nugTg(> zn4OaLSX zdk+I?GdL*B)_;c@)1H-`JtlmaqNSrl#3`&g0SeOD#f3Q5X()B5v)u18#*?sJC9J<$ zFVWxP7Ka%xHgMar=cs>dY~4Tw2HLKyV@(}szUGmWt!GE;>pR-4X1|ZHfo^dQcJQn5#JRBm-p*~mrCqs_*B;90?k*3v zs5B0w)j**>s)u+S+Fs!LQ7>rbV@ZJ7%%CINMg?8xJA znm$Em`6UgshyliiU_`K?Z$h9N%GooHzyM>K-!VP?$lBU^GixN*Tq2Rg%#U}wB(f6M zm{H?hGcP|r4e!2v$K@Kg;>kf3V78Dj;AU|Pm#~t1S>@ize%F~Io5Vmrx8d;Fz|hr!(-G{s6Feku|>>Hr4t{wJ|dgCiLi8D%Zz{hj-2n zzqL~!QQ?~XEtO!psSFwU!9lTw?X1s!^iC!uA>rtb9XpKFGmY}xpT{jdM(*0R(~Y(A zd!{M2MumG2IBX6ECMG7Q;^MHW4)()uiu|mLxI!Vty)=ipG^EYp#9MYYHaZ<=ZIWBu z{sg#|`ns3;=1|MLi^Ih86Je)MzwhlW)U~-tiCvf+y=J$Hz*~ZC=_fZmqR|cvUI=PB z?xUon#D8(A>P?~5>`Q#uOn?h0-VzKvy}S&I-{Pa94#_KTeV3uS>+?{%_L;6nznxoq z+t#MY+K90HDj0Oc*EHg7RTg8X!xqQA>i#YA2=)_AO zZ67bPrT5lj7bUG2fZjuY2GCE6Ncaqf>~zUQmQkZYvZC>gE@ig-p)F(;z57rhp4SB- zzjgqjnZ8h62ZU(g0qOfl=$5{d7V0KQmeP+@rXvs<&hkLR89)V04Do+(XD}~!Dq|=f zZ&2~}(Mq4$en1IpxVBnCPFyu!S!iE5^4_z>J4@~Tk3WZrt&E!JLggUFm_B+0Y<(QV zv5zyD_r&N;eh1@i?tv{5KCZ8MbprDb^4(mA7)iOZQIEDLZ=;Z!Y!Tk|sDI&XcsTY< z(B8{{a1U$xaIyNPr*kdVv_33klYFw&XG)ll;59*8mC-l}cZypi82h=UyRE`CbpYkH zgXd4@ehx6A!!SMT{rAveLdPEHR0vxCoAOO^z}H_u&Q9|A#_bpkest__yyo5D$A>bNA=AcFv^!BSmM1BM!>;z53 z^^vJ5Ue%9p(aU1!th|M zzk7)kqHqYsf!AQhOJ)kX#W1ogP}TZ=R&pDn8SuRa|1#|>DXzC7Wd6YKs{2xze zZG=liLBG}IZ2 zXa*x$Sy|aV=O`nl)a#ao742?}jV#7%x2b6bo&KJvxu^;Q8n2|tfMzL^{FT1{qDtfw Y-1BNSKc8rV{vCna{sT@lhmhod0mK5s>;M1& literal 2736 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 IYV2|89}d50wg3PC literal 2752 zcmbtWc|4Tc8$UC)A!{fJqbS)&kt~BNrI9RyQnC}SP?iQ`8E(e)OPe7#F)mrMSC+EN zo;AB>7-eZNG>Wl?`?|mT`P}>a{QkV>^LgL%JkL4r^Pcm4&U2n`oQ0V&ACEW>0Dup3 z!3YZg3=%;Df)jc(7He-n9eaQw#u@>&FofH$kj{PU!qor(IFIi=uykQ<831@(Fh)OF z2d6HM>zgLpNwt29b@y{G)R3(_|(+X(yI7RqUlvC94Ucu#lt791(X5Q@*+P*(m84-eMrqFr}S&wNLcV%@Vrk>ju^ zP7xjsJ^=ymkdUiQO-%|SJbU(%gK(G{B=@DS+nB=PL^UqpfxV`8kpl+guy+6G3&5?T zuu5!jq9wGqZ_d&UC7D_nDK5S!9@K@VUz-CGJRPRzdhg-aXvHC0MCSa7i|x>U*P zmF*yeuC>yE=aG)b!sTxTO+ufWo9c4>ZgIlX%}tg$e|UuY z@tDt}X*#&Fy1L@IIj^FU62|Hx6#_UhOOf#I-8;AAWS8WQicf58Y~o1d2)#F5Lr1PvaaU1LD(2xxV>*(m{+XmsIsHj-wKVvfJ+B@3a)ip~g_nx1h@29@;E3c_3 zeEe8wqMIk--g2hG9FKvC>!du#&3#fi(`>-m$!-aC8|QSUsp8Y;Bj6}XODk_!y4<9~! z*v0R}3Lx`sl|p@mu!exWm_qIC>4Eg~eOoe87!Csk;nQuk4@y0H=bK^$jN#JLBT-Ao zL_uD>&O^N9t6I+HsC`kO2>~4(KiJEvD)B|RMgny1pk#T*9{A1D7|2}=H8%iqt_UFZ zg{2LA1s(|MhRQ0deBIq*F>34ac!7v<7NdVKv8+sXdzDI?upyDKk@f1@3bkP&OIyBU zk0LhZ(iK~@9V2=OMb$y=YXG#e;~D8N1@|a+AmQL9?Zru#ka`Fh}l90 zgOjTXy^-Bq%x<(kkG|b8Q!6~s@;+dDGlJ<*aE)7HctX|34;eW$_nD56JPXvbDcNGG`I&)J$H-71pnd?lRqAE(JSyO1VNYd~r3~P(&{19DF-weXFwV_ZpNLkg8JY`E0egu|edp|~wc=s$bzvi#I zdZ#ZVBdJ@}qm*3qaDT!IefLLxeX5_&uNdE77SuC&2_mg&Au3uqFPmp0%p0mJf6(kX zKYAHe^8OZ`th#36v0cEb?OD}d3xy(p!l#Aa4V}6Eb7mnhL|z$EeAs{0pUQZt+4SBp z-6`JxkVQxC8gF>bflQIr8|_xJdk7H{&6yj1&oyH`&-0))@NmQZcsTjL;(6k2`g<3@ zdhd)#H%)U(P6M7PvsHH8LwGm@J;>^}O77%hGS`amhfR!`qPC2sTKGgQNyWaSWL%|r zr~3Z6L>LsGe5n#gWNjrKL)KT#tKVJ6_apDj_0uky*BkI1Aldj9#fn2z{9!@aR zI}*n3!h=6GEx%$y1TTa_uf=)>1~OIJ$~7BE4wk(Jeb)-a3T z{W`yE*7GJc#bq_i%OGB-DWTCK$1)p>X&ZmNjT-rB_{9lTjvHffm%U}1Wxc$-WHtp! zM`^+@i+oDD@^|u9X;2;^nTz9&rzIrOn~^p{x8`F~=@`o;4OKFAzjV$824gwM z6YNfv!(Uh{=m`k?)+Pv0UEbhsnGDKF=q%)y2(b%Z7-$lM1ELx`;Jx>~#{l7&XWif0 z+WNR{WO!Kp&iV~}g0_xM5Yr+2jlMC%2=55)-Y04C?{NaC28*?xly(yPtFE@n{w0$L z1ZV5NnM-hH z$bWCVqyXsX=qPU+eVUxita$V0q3+I??!$ci{8GUSKQ@-DZcm->e86W{QBhG=Rh7~i z;BocK&FC5*91b_~{_%rX<>lG_m4&A~dZzEhD|O0ZVhoSGah+C<8Ik^`Jzrj0`kYLb z3JMII{{Ex9<}!d7l9@x6EQ`g`(lR4sgZcKC$jCY<0uZ6bjriB(Z2RESW@D@8X-YOk OK>_BRnNhK!Q}iEJR@&15 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_customcap.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_customcap.png index 1822473f089caf52272fa96d9336d22c191e53fc..495fd667304d97c05cd1f2a0569cdae2f7527b18 100644 GIT binary patch literal 2101 zcmbtVc{rQd8b4ViL68xq!MGUIwbVA#p+v5|^j<+MV~eFqwf0(~mI|Hf!nC&D+SRRe zp`@y)iZ+_shN)5-YecKoqDJi{_v3cvx%ZFz*L=_OzUO=2bDrn?-tBiTJCKixiO7lo z0K{xRRY$S8ALXAJZuVoqFwY~ctS_b32R2loV4iZ@aQ0L`_v zG;@wCS{Ty{!Jj0wEvt!Hqy+kP@P$q=9OpYku^koLIyI_Gf8*Bswz zwddl~ud9CL_h9BH5O7Sxz55RGaFy0URGQYQHomx!WsqrPansUbg5a6hH=EuP>!aJv zv|VEV{AxVhx9`VlQNS060fIFEXK;`Y)!ia~PTc*k(Ev>t~ zL59_s>=acn;=r(I^m4t``)Y2kLiT6t+ss`v+|1lSrAR6}Mjf%TWy}8Sl}9YreS>gb z(Al&3xQP2++QI(*$}4JuzP{{5UUMab!RWq7=gPA=7bOl8iT90Zi$QU5ZgO&R)qgi{ ztE#HHHxyDqxp#LcH@23t8s_odOirE%WEzp&+}(RWeR|Z^-d@+xaOc-w?OZBdxB(1` z1iyoqfGg>_k4ndVTV%Mll>a$nar`m!WU`6V z!sha-fE=UN+4m9&%Y>QXfAmsTnMypY8k>8~Rwg={Dh5KGhPSB!8P+R#JdTxS% zZ(BR`IbvH~Qz;_*ez9R`Q-x1ll9{pDTJ=Whw}7(v4sEZZj^+FVNncXCs>2ci3f$nQ zCUL3J%Nl^B792WVqqyy{wcEZVomLjM8|_rZ^gMl`NNg=jmMvsxzEDZU-pLsfXQN%w_BIlM5Tg)Uz zAgvdYJ<7p;84&^;{)aD7o`5J6tcB0cHplS{lp>STB$kRPNPwzen>Khtd&jL!9v=?B zGM!7DaMMddsSow^>eLI-I_6x^vu0?1=0K%*pK@&ieCxp?(yJ>3&F4J9NBlejq4+O? z3y8(coWG&tQ?i97uC1@f%=R&yo~?IubO;WKrs072YJ9VkAhgQW35V2kMWhenkh&S- z0FfT7&e1=3E0;W3`@^X2K^FIb6==FGlS0I9Yu^ze=odP%* zz}AIBbpQYhQT_ihyWK&wk-U}Te6x2!Oo>i9ZTrF^I_^j@=9S58RJMzxbir z>l%HDX$Med%EzM9zAxXOs*v9{tbHA+GdMd>{<^6~=;Tbvk~4#jaD4R0avH|v!0jWdqW z9MNm1wyiEGDf$xRQvcIOP|y12y;kB+Oel2$KHgDEH8wI@7F;k_TJyJbRI%0gI=x0g zQ=62Cy4(}#v6)E9in2KK4QTWtH+pGj`CmWAu)K;_Qy`sxF>RAm=FQ|rQIWu4Kioh0 bFzz4_3;#6uRLeO6z5Bq{ifmbJ?wk5=0QPlv delta 1968 zcmYjS3pA8l8{RXfF&qc|j^RXO>Ik8lbI7G~PslZwp+ce+M{>z+p(czEPNLA*+#fOTV(YyBE z3#s9Zyt`(vgbix2%%Rbep68-GeyoZX?C1ljQy9^DnUzy^Y=s$1ksS z(B1RSEo;A6{~}$Z3w~z^rV~)y@{Ua{H~^BVJJ36*`_U@00bK_`=@$UHtYcdii8U4H z+gPQg+h|?jUlqgAM${J(r%vfEq+8a484`PB`Ey{8EjM@L6(?Nkkl zdf3|N5Uds85~>gcGqb64%j6UfIkLoN6zc;Rt|v7k)6;`aYO-;Md+#7Y5T?s(Akxpo z#H5-C)i6~MhJf*dC*9hw)ax~mcS$iTv#Gf`NQJ470o^cPE?Bs`2LpJW z&66f4RKew}7=Czrh&rhMdRFpM!xvnJzFA_~O3w|+yR3K7C7FtV@EsEjT+nR<7{EEi1wfkS%O0X)_``aiFQ!ul^G9d*$7cvw$wF9-J~b&*N?D;=yX-7Gk5 zry3C#cSK`PaR1m?Xk-Ugn^JnXA|Gd+219XcRq7u+qPWHuF0D!8w|FY3qAn%3y9%fITceWC;k$33y%Da+p@iPg)-rU9PWn_w~z85|3Y`BzFLR!^>^jM z`ca<(rdnNi_vystp&+XbN&QvNtNI^5?EK8LY-q;=Z${wmGhty4ErA|SLxpuxdt^fV z*sX9rdtb)hSAU5Ebv8<=k;&wfzR_N&&9CTTwPra3l86KLeWX; zpxrdeL%TcsjlOi_Al#yZF+u*KuIlQ7nWAQDnzplb9dh*S8?*VfGS51w`ev2&+ldZ6 zQ5RJwP(>amG=xCf-Q6RN6NzVlF@R?{7@*63OH`&$_UFXa@!3i$}pje(k zJ`?&mf%z$s2?EioC>Rlm8l_7R=jr@_G{7>* zcboY12L(p}uI}cQlP*3uzDBt0K&;#6tZWFf9|R}nYBSRf407}t$;?`i7I6TI;tFnqp;>Mc9Bqo(aT1n5|aNXkW31n9+ArEa z8iy(Z&1bdTPe*-yey;qrFHDhKA|Vt^>+y79GKR$}?lLJbwb3c(& z^j~xO(PWiH5ANQ|JiY-mWeg%43p)u3jj7-s61c^S&vK*8W+MkdaNIG3X^}gPBmXiC z&NF2SNP2jgLUIX}@KxPlj9_)7REU{e=O*T#{Z|GbhdpMe&apBiqcoc~|B_v^Gb;lY z+1dVgka(iT?!Z_p)S9w7*k14R&QjFdA(<(<;{;_Um&(IM{Du$FlnJsSJdm)Y>A`E6 ze98XUcN;AIVe0UnO!EBx;S1Zxuh=Ri3@t99O&Q%bHbkL|ke3>hx}Y43HI}R7Rk+du zRS>v)NN0vm-OONcoB1nso%JqRPDqwOmJklISgr7`r}s#G8rnjcoWvO(tl-jmX!^m; z8-w0+I(yf}3(as@H3O?nCst;!Ni*WcMBzH=m07(SOXE*&Zds39;-!wfO8-Dhr<~M0 zelbn^xR`8-9)`6w3AwPMVbbay$l}^ru;%uZ&w5*CcUj-So=x^75RUq^TZ8 zWOx>!?4AGUeU$NkujH$A)z27OO0RCJYJr1($Lo)vd Dy-$W* diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_custommedian.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_custommedian.png index 2f9fa480b9a5bd81e47fe038596792322cd998e0..ed012ca2bfb99c51cad2e70d5e89756db737a3ca 100644 GIT binary patch literal 2009 zcmbuAc~sL^7RO&g$iiYGNQXjT0!|S_;ZS98%1&5HIs=I@1wo(@EStj;P-1{$hykez zRTgQ55F?9H1;hdh7>L6Tl^v;UhNLJMBM3sosPq?X=XB1Q|N1-UzUBUwcYmLI-}ik( z_4`a$%Sa0VpiB1gqyYefhCqx)LakgOihw#q5{XPlLsuI5NH#RbB=`g-0f4kn8%&_@ zuoD1OD%sPWexgJ%K=D^!5Og(AlR>i58e#kvq zT^~sq_RRe;r$1hzPD;x?5|~X|>WSd4$ z!Rl&~!C9~Q)s2qYc{>m)N~stWxL&6doAAiG)n zHz75F%@#Xd;&2Z8X-E>QHN?6^z;I*YkH*IOGVv{@eM1W{pph**D3{AGm6kqu{kmCc z=B5dB7%WymLy)gbCi`JLW^!sO$+=vJ17c8FSveMW`*>Q~jpUZ<-d^&Ahmn@A8v|6( z$m20zI66B1;D3EKJ}jwuJ9>G46@4XL`sEc&_84!>8LR0G%FXMavn|oT^-*wh1L5&O z4|h!to%g^Qn>pG7>|n8&s#H@g;{Ou7ql-55)&z!KEEs6N_FuwPi^m*N-n^=F;OEMP z5-T{US~%tq6dX)%2pX44&CSklFG2I@chfd#_ahGM-McrhJSRu@3!*`H863u;JF!Ss=g=}>R2!E zIS@ZKJ5b>A^~lP~9y7_o3fl1cdZRM`WOOunu+({UWF${%hC8OYEbY|J$<2MbIC|B{ z#AF2{70|!6#FZ}M7 z{3ik7XRh?9eBJb5=h=_qoi3Cow-&xJ{H2S-8J2^1^Isayc7~bPrW$iyKEN;f#H<`)OL^QDz&Si?10z{F z!Y1y9zK7n=m>+g|BQKG$=+B$1-!Om-1`NIR zaqoQ=g!jHj$c~}ew#@*nX_`t^_Ss0^nU{}qUapS*bjUh7!aL<%aEfZZ`=q1Oo0TWZ z+QN&t*>=HYIM6ABCs-Cx_$uY*@Z8*Zl5RvqYmOq)%Bn40)W4bk_yUqFLhYVWeqtG? z0ncI|g7KCYqt_0g9^Q*}6WhjHac~d#oTJl_3j9IKewwmipl3y?EE(!VNona*Xt*z3 z5p1Kp+RimYa6I0oZ+5jAdtC^s_UD#mcs)ZPpfJQkc|mAZ?LE*xY1^(v0>)3{@`QXCeHW>36n$77o|^U_bWZ!Jy@Y@*ldOM; zI|yur%qh|)6+;A^smD`1(;ez4wjp3!tAy_&FuohLkZf#x+7BeVnE0#fa|?FhOlO#M z0@Ct4IBmc(ky8o?eq*j+;Hzq3X%ok_u-u hh)ej(pFhA<*nfsKI#mvz{Si8w0olvXvxdar{tEQgLEiuX literal 2072 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 Z1ETe{5>pX#j2W;K1XI+wg}H$Y`d`xUe1`x4 literal 11843 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 P1%hBwN_PwH82kMXOGA+( diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_custompositions.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_custompositions.png index 9eb9b63ea26694aabef0a2606b2ce47c924112ca..4333291d745f0d0c84162ee8de58f652939c0b37 100644 GIT binary patch literal 1968 zcmb7FYgAKL7Cw0ZA(DbtFaly)FlYb)fuclg2s9WN5fD+aXatIYEu~NqQV0nTNz2o8 z5D+k8${Q?BNPs{_D+pR2gdj-32v$LPmZu^iq&JqCY3EN@?^=7GefPcVoV~tppKpKb z?d6U^8=?UK80vmEUjSfG2yUV@AwMxC4uuwE44LYOf}R9a2pf9Wj@o}L1^`XG+F;!G zolF7H@};`D_{9}Z$!+%=51Mq&a=QjoTfgv)G_~Bj?vznceOfGM(AtbVDIDB*%WwL& z@8vUm+OyaoUi-#%jp!Y<4M(N@I@lQ&E_LIM&l4_&o}A^-IAZ+t+0py5p*KBgpY76m zu`-&p8uNOxoo0hYG0T!tO#m|r1#V(t01H(Rj0Chy05aDDrY#)UPyp!o8y_bda~)MP z&r-a+ycTAjwdJ+}^vL+Qhn<}rA^%?CkVP11Wheu<`x1Qx0hm2HSG*rSd}tQFf*AfO zMXTD6P~98xK{~7-J%Fh6BYg0sZa+^OgVKl*;wnS=Rbyk}4n+sHY}t}#BK1asT-MvS@n>5CODqxxJl@eDtqrRo3Cbp%H!YhTmSPT_!NDv`h@Ob<#thVtF z;ni(zt`EApPBU!oNTpIo=XC#?yfGz3KTxB-si|^e;>^_4)Y$TJKt@JJX?iN^MIs@J zV-_I@7>{j%ya&guN0Ai~WP{Zq%Ug$j_2fhd21>4Z_V~HGyI(3Qdd@aq;ndYxSy@_! z(dhvd6%|gqcYE_?I?lDFl#)$6_BD9!YLf6cUlua=JpU`gOq7o%h&ob?-fL{cqNN;S zCAk4y0R)L$9%yA{r7xs@^xcC82THhHPfm7DjsuaXSmak#?Xa@8PB$FTMFHgOXS{#3 z$XAy|mKl0Ydp4JSX&&PL{p_f!(2RP@5k^Gb&Ea>xZlIK?>c02x@*-{C|l?(LGD;Nh(5b_pQmEUZmlG$2%hXIaJdp9F3i}dco z8CZg4<-YWI!195Cj${Ye{8F_kbMTXMcpOvFwgK35{D?qwKuzjIB$^`i#GN@?C+6m& zU!C5xX%l^Z^ns+yqm1+P--$&d62^BWOe`_};GKK-JWGm;pS%?n78Vju#tdC08W=AX z7MO=Tjavt>77H72qXK=s6tXpJ`^YcnjOLrrYnd*YW;P8&hH5K_05j<(BoVXz^`k2zPGg%=whlAkLZ$4H% z+ImB!n0~x1X?(h8w+hNW*aTbG)enj}2;obwESLf*d&4fdIW+^U~wQ4=qzoXVcD7xsn; zIS3a3)sH1MS`m*%C)7xYFqY2~;pCm5yX#|yyyPyfjjm1fe9L4QbZ)MwCWkhV33g=v+sFObrZx!dpSw02};&_B@|u z)Ay01<5>n{b#bV(v(tm)#<6#BC>t3W@piRHC98IVnRCqtXSk(W0Lz2yxdV=tiH0N^ zqKBgKd+rb7({X%_oyIk`*7V&NmHg>fokGbd{2EcZ^6sg**ZiDxbuy?%otA%<1*(wqRZ3YSE z2YQ~EWV;|}p`oEaOi1nX%nsM|DvaNYzW8Ry_M+l2A@9P=jzA3zGrGApx_R&1q99<( z#687(Zk3p=P)-NEQvh8!3EQgiCo%mSlW1**U01=jg`O8Z>Ddg8SpcY?c)498(~^G! DRBAEz literal 2021 zcmbtVc~q0f7N3LwA+jk@0=5t>M6^hQfPj=;lq7v@4PqlmlqD=7P!I(wkcvvhNM3yp zv1}R$MGT9nM2^8gG%NyADijeci&zM83p@?b2B8zJJ^b^|dFQTb&hwk&f?Eb*DBg8m*{mFsf!uPaJ;ifpB(z;r%KT#|m zxl4_8nP^>^DOF}%olq=lN_dgsfq> zblQ5hk-To*y3x^5 zQW81{0qis0{2|;{R1iz2ht^V>nww==B#rgJOZVltn7^lro0q5IWUklO-``R(;N^(; z28;5(oO-ivY%HRvH%8NY60Ua5Hbh^H_BP}#bgr`TI2zU+Tzo9O5k7zh7bkny*oT@d zomNJ#^*Ic{Fa5Z^*sp2of^mykZumRA8m`c$=Lb!oINUy;D(hfr!*5rM)CAzKp z%kD^k-yO_TD$~o$%Hp!K%MF)K0+x=On_Exxj%`IG_#Pb@`O3YTf&(<4wuxizrzo2N z?amw3VtP(a1HHdOzPudXaoB#rK6}Z+RVvff66zojGLj^cpF{`skKVQdx;MYKYq-$@XV=`N_~?UjCPM1 zn_GNP;hEd;IlfBUz~bk7-U%OBS|&1?0nW+ezx?`ZSs{lL5g3nCSZG$1loTAoU&D1* zKdIWw`Gwgm6bQISTk7E^o$ullbR3@Q`*7(~dDLxFQ&XWxbd_W2nUJ0ydiLyDL80^2 z+E(eC?_#fSC2lju_(queeYdc%;OObuZMsDA{w}S!5?Z8i|a#bc?8{vKsw{8 zQdC%2Xhl@1RHAIvLPw&5g9DXHO?46~3_(ieKE7N&SVKKdGIE?fFzg&1 z?);=UmySIR*&SsW6%GRnU{s;d36h5xQg#1ZYtSmbJ(%N*KL=Pw)gkh!f91x+_zfit z&9fPs!DPEEPz6btAlwz~4lZSw01u}y!o%jo|1fs)k158t>iUlRYTv?uOC_IR*-n|F zIUHmQyq7b!prj9?jWSra~peQuY4mN zm;oBBz})uRvW+|99U)yGYN2$==>`(n3}z*5TWQpYs+suvXXn* zqp==X@3n;#Xgv=7VWwG9z1JLiOqog0Un=5!FO{Yupv za-@MYNJ!nz9hp2}3zN$*#u~|fjL{|+HVROZ_M426^2ywoe*ZWHB=5VtYVHC+Nl0u*{Oa=VvIECyrY9dRduy>*caqe zlvO*B68a!{&XNmr-D3d1O!9hHe>E0rQB!NsKi2qQt)fif90s=cSgF_krD0_jIuGPW z;!x&NvuydD?^*uF&KaU>dgyn-*9cur3lJYnzLJb;&6xL5OtckSiL+JvIu6fI2{$@3 zXUD}~M_u|j#bk^b))$+0C9%?mROjt6q*zp)VLN&?KMLg!4ZME+I%wE0*oufbfh&yP zw29cpX=M*TQ~tYOR@6H^b@4$MEY!{Lm!#FZK3qcQh@^-&(M7aO#s+)>0P{Wy^|$J- iIly}!u1WR3&#q`z4D;xS6@~gg4TydLyBmCHC;kMiDMc;- diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_customwhisker.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_customwhisker.png index fc72d64386ac2da50bc7980119bd097c7defb6c8..d7c586645809a1edf26007f74158444aab3694ea 100644 GIT binary patch literal 2073 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 Pp9X+%!pgYhxLf3(rZ|-b diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_customwidths.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_customwidths.png index fa55deeabf827f98cedc36bfc011e7ad73d040d3..63f37ded24c05241cfca41d79cd1e7fef56c38c4 100644 GIT binary patch literal 2078 zcmbtVcT|&E7Jn&($bbZCIf9TC6~tLVP*G|q0|_OxpraUyg^?Cfj1WW&AWc9}L}J9gtxt1JR*H*npwMEJPeY+!x0^Gk@-$edpZ!zI*Tc&bjq>6PzeEGEzIG z001&%l9dYp2>1!uSPbL~OU*v;LI+!rsaSZzvFGEVye)`yDi{FFJ~1J3v1n1~{F2L(MMtIXj#0_AvpIQ2b$tpSLY11xVe@WTHe;_J$TI$NTJlR4Sh?}Rhm2jdVOy`7ygFWx*G z;;;5q@(u&j@Q-{^}~V{Dd7m6>*2EK&NI?Q(J1+BDW4W@9N67@e zQB5j>0B{LVk(?}(Zo4-yAOMFv)RsVu?`RAWP%Am2#W(uoq2=X@+ntYRoFkzV9xdUe zA`yc;w7%ZpSDiH@XRcR;=Hj1*YAGc?9r62ZV!{nZxjNB0cu_0&m$Jc&bueK~liTpI z`872)t4m`Bfq{W?$UBOO-|bRW-4pSzOLY3YXo2(F__%#IHk5{Fy0LL$Wo0EyG@m{@ zH^&GH;)an(b$k(u57j?`gCV9>SmqC(aVpl)*MtbCo9Uddp}X}ExR%`n*Gi)gg;IZc8WUJ=5G2^;`zNMeI{0L0MZK>R}|p6mbU)Frz}qYlqk?H%H>e4p(wc>=UA7mn|bd=x5;{VTdXtaV@)u5bRnGN7}53}z@z z(=m3-Q9C_LRK?woB=}&W+Xiwa&GW1ajC1M0bB|{432aGtR4CpEkLS z?g$vKv0`c|+hvk1{U4H}1MtdkttEiKVdv@gk3(s~qoAUA%k8wQDbj$c0ywTy8UMgM zNlqsImk2xiEilZv^ONpX1`|9+0{h?(zHEzp?)(sl;M&6+K7je8pji3{MD6!T5c?br zq`$Pn4u~&%VV3Io zby7niW1V4p4Wa-H7m_4g2@-#<1!IXn^fUY658~o}-4T}wq$HXdZSJ!sKj_N#CvCo9 zHOypZWQbSPxlyrWLOkv-pa!UTExXZ8BBC!Sz?IcF0xC$Q_vAK zw|JvvXXqO8}ahRDv_YB(-ror7_h(K^Pl+rzle*THO}#cynm`v;DQI_?R2Bx8P Af&c&j literal 2101 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 literal 2418 zcmbuB2~bl>8pk^b7=vhn5k(X+L6BRNg$O7b0s#!iL_p36D#!?8jELL>r503fWW-@2 zqB0DlT!92oLP9BmXha<|fr$a+RANM=NVwS-2ltq&-P);nRqyrtUiYi6?(g^ie|^c* zov4o3ga81jyEqfb0KlMEz=NwoPl=Qh1~tlO@h)C)=t_hi&w%1pRA;}l0I2FKZdl1W z8!YqxXlPqxEPuMfD8%tTPT4YP5`vQ!Oe{@fW`v)QDxwn3BYC4|KHioJ!O_m zqhUA{kFc62$Xr>cvzk3ey!2K(_YDyay0+u%O9t82IJ>u7CF#bqCh{JSKa<)7a*8X6LE z;PXtgWwBdCU0{tS{mL)&y@}JFKMQ`Yw7`_U4DZ%y&4{&&iav5=eStvW-P7HjTTrlW zMkXzO#^*m7Y|qK6ObNP9avGbuKQtLvA(Z4l9lpn>wa%izPP48O`wgf(?&9o0oxSmT zr~6u1vl$Xx_7H8)w^qf9f%dakkbu-Q+Eub-tsK&ibKmiCdc!@g8g*$gNwI7BPwxD_ zYd(h$pURBe1o}@S_Xk+dxYod3%E$wAi50I2sj zeR6ykcVYLNDoJO#N6FB0hVAEpHnn3ZRkj_!g&dQ@Z;GR?Nba-0Ye&<94zn8?LgV86 zpoZAn5-2QmEyJ|8x6`7d^$K0vI;1m`zQF7|iJC zD3i&gN#ZWt+v22H>)U@rz-gb7Z8o-y?4ofgO;2N$VWF#&PQ^uNpq&cO>&)iSPTM27 zPctK=HE-dH6lUg<^dS(8YjU3H0xTM#BEt3~K45n*yUSn@9sV8yq9tG%h!yKp)?I1S zXKPla140KCXUVQ))|zhXj79uaSHf-gO)DcCP9)jC2(6neXHE|G78%UW&8INjPkfN@ zRx2SxTE-7n3)N!YI{9^W^=6&dMPUt0+lD?Zv*>69SpIw&ylAIvCKd`Vw(|ZJyr}fA z?0oeq-|Mco=r&0`0v6sNf)J@3Mp+0>db8Q=A%3wnlf`mWUVZ7ci2gOn_=l5rB5WX( z%p$t z-}P;RGHK&nVlx!rON0Lz01&2d_+FKanq=)Q{N33{+05e(CXmT;BAlw9?2I1P8%${chQbUUlV;OA-5t1!r=RzXIjiTlyRB% z$*X1aAH>pzv+4&tybyC=VZg7W`&Wh~D5s$tvL;r!fiDV0lHXW8PTv5tU_ly#4DBfu zclDb2k;{WPHW9HUf(WEB0f9mm%kIY?B=^Y`UPJHRIcMkOl#wf_3EJB%iQqqT^QLGt z&Pg8HAmYfzA;Di~FbX5Bj4_x84<68{RNgndrCLpTw9P_Jin*z&3(KEn={Ehl(tIJM z-8Vn2Q9#ni7P>lGSz9|2hUVu3eSCZ}`Ie^mNsMlA{veKQRH&Ed?2O6FC09JUy#z0f zLx7?Y+?w;V##CjnL-Tu}SKtD9>z&3^nI7Rvo;%QyIrQ8Cw#B~ERe=6PQJBewwYj7GP1gry3peQohM>Z$Ul3E_=BY{tV{^XqTHc#J)lDqaB*}e JRN;d!`~xLq64L+x diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_no_flier_stats.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_no_flier_stats.png index 4df5cd0905d5c92fc8871a5e2e07b5ab29b5c8b1..87bb56b464b623601a9bee70ccaa73cdf20ca86d 100644 GIT binary patch literal 1403 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K54sfsm$=7f9rU5CIVkgfK4j`!ENa+CbISV`@ ziy0W$)IgYVzOa=t0|Tq9r;B4q#hkZyH~PI!lQ{nHd&pf4Ztfs4l_h!;BO(IcEfBw0 z?Qp6>Z-KJV_Y2%FPRJ^VP4h@xkX^{m>3SSFf?&8um}?)vEhAm-k+B*S6+Kv zDk~$i(w`bf)5@%Sa9y# zxvY&5Kph>ayr}j?Twcv!Py#gO>yIBlo_+oO`?r<7{r~gX>gwvHm6bc!$KK{-Tp%uQ zS+J_D`oo|5cDmC~@7lHN*5`X~<}qC8UMX)8oCq;-_7%+oSHyD?uB(YQtejJx$9?mL z*m;R|Pu2vjZL$}VyCohcAX~jAk|8fYKYMG`)>}3KY78CM-WV;o&)D*9mLEf%pv0{r zE{21%*dBcOvgPSB#d(|zO{RbK9IlrxV_Iw0D00V_@j)-Sb}0gty`Uzsnb{A2fc#oUXNo(ZS$5 z5DPP~NWYajAR;#J*Ds#X!*P{q7H-v|30&O%E49z_v+i5KC>f8H6)tO zgaRd)8WPqqfsH`K-RTB_Gb{`TW7t{})L;>MBconq%EKQ&kK3=x+xPABzUoWY(|8J2DMz_PaY+s%gHh>E6bI!sRJDaq{CZ-!+L9zI<7?DNmv|GxeFxwEgY z@7~{g?d|RNcSW-ZHnf?|KD+yW+0K}2SFeWlS34^$ha^gU=8u`RYf~eRznE{zV0Sj^ zSVix*(+(TF612ca2#~AW(3-QUOJaS$L8R3OIDInbHrwb zJNNEg%i5Z?wQ_+EgTUIG`b@fF-C?uY{#`0zda-LADB6MHf6atJj)y516a}V`K)(iL z0@Fhza|0-huYGyA;2OiS*S~)4l9QLezo)LgKK}I6PiJ34({F$5<9N5jB2I>wN#tKedF3 zVYk^f=3k3J$r4y7)QQP}(pn~qQ^pCrRK4v(Rwt3dswCbDJk~ZErUG~eQ^?bn7VxE)J&!%n8 l+$-!LEe7-xS%r^1W98qhZGR0uyakq?44$rjF6*2UngAkuF8%-j literal 1419 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 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_nocaps.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_nocaps.png index a8daa85349d905cd555f04eb94ab7a693398273b..4d8b9c38e0870810500a3e0a1b3763bd9d0b357c 100644 GIT binary patch literal 1877 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 K#k`8-5%o7!9ytC0 literal 2050 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 CnjIGa delta 2778 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 JMkmUd{{UR{hsFQ^ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_scalarwidth.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_scalarwidth.png index 46e27ffd7677d940c05b4068478eeae8b38ac643..aaa8846321953e87443efbe6541f5030dff401bd 100644 GIT binary patch literal 1960 zcmb7_c~DbV6o+qOf{_4;hP0`)36?-5(kWOg3=I%MSOSy+QiMQ-BAcL~h)4rMkQUTL z2tgo0Hc=^yh!inu4FnMaRn~%{BqE?=1B5EbzV*fGbory5zL|6Hd-uJ$_q_8v=Q}6e z-5j+wH){d_w3$u}PXJ)hEs&x#pmAI!356!aVLHcgoGUEzrwvL&k1>;OESzKkqc=`w!>1 zTotx%LQZ0}w_dms`_-A_nws0RJDeCnhAvJXr*wC`Z}<`~W<2~!dO7djEz#Ukk~3Un z-m=uOw(@-8+tBSISA?{8h>ig?3j_${0l?b`IA(BQ>Ht713P=esK!BXu`#)aJ?rP&E zFTP@ig@v(~=MS}g18&3|J60W0Um0_wV6pzVhICLIJ@f4DyZsUM{ALgnLM6I*F2i2@ z+GFq)1>ZkD11;`Hs$gD}9Dd&Vi5>)kht%c_*6VOg%K^vOkXc$-_<+1FE1hx}~j>8J+)!w`69`^P0WaW2+4x85^6)1$RN45915=Q4!P3Ws_D@k1NtgEZDq*Ar4$hz{?)dsetD8Hi&8g+DZ=oqDKsWmn@G}Nenjr0psz>vvg zEEbD0(WGBhRn<5i5^Gr~HDC+Nw{dcE@Cv#7*C$VC&`~U3-wjq|zuE##d6c+c8M}j^ z)u)W@ixS&GJBAu%x0Cx?9M5NwEB4g<5Ol=^g^rj5Q7VrfxU#}>VI@7_JMBEEaqMUpT# zxt6qtlJjbHW$9}AZ1WWyw&Hr^lhlaj>kAYJb+E z_Q}T}(4^9krWNuL|6+MAFgsKDOPY|uAFkn6!cU~wjc!=5#Q@V*H=302ISjVf3qk`M zGIcInL5BZ>80rdDr*$|S-m3Op&5F!*2KcJAdGV{s=gK6Turf({P4X^%1n{g~8y}jP zwn<)?ZX8<8D?1yZJUdIgkoZ`3%;Ftt*!xA6Z5Rrt;86USzD=nm&NS_a+BFJ?aKDh2 z8?TM}D~#;>5xk~!45?wso|KoD$DVrHesrzOi*nJ*gmDVAiQ0pw6vg7f12ao2Jjc|5 zL;9#do+hXe#u+znH{zAY!9TPK^7&bg5AvkiIv|03_%b&86h3(FBn52!JVnXCs{=yI zeXG!aA<)DJ@Ei;vFpW(C1`_z7XZK0j65?1dNNN^A1jq%P+7g&l#G(0^z`)*rTH>cz zPq9Q&&E=w*y-H=pBh@wXzNjd-$jHbo>7k!g{)VJko3&4KiBNRa_7*B{g;1|){>klV z=m@o5kD<(YD+)ySL;6k`iX(!IJNqo>%^(!VQ_D8SV~i|%TQ@;MM?yls5fy3!wc!El zrb2Y3B<@Zid^+C~lvoa>wlvebkC{YL=Yb9a_FDLX4JZQo5#m-uL+E>8Ig`xXo?xM& z&55YbU;Io!<rB?yJekB~03mSg&4kz9?vy^Wp1hH~hVC_;)^K&9JSq$1fPCCGf9j tQbi(HqwMZffYng{!GFd4UmMnhP1bbU%`+c$FF>spFzwwKm+67We+MU&F3|u0 literal 2020 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 ak7{$6yr(LrXN;j56A-NIEtwW);{FQ?`OU}x literal 2775 zcmbtWdo)yQ8-HgQBpM~R$;zZo3P~SMC?dHfmzW7L?nkZ>=8)SA6$uH4Dc3q;jLQti zB@AOa6OuvhqJwngnuu{3w{JVAbyn+qe|~$dz4!Ax?_O)a&-47A-|vmHFf$YuLIe-BEu>c4``(X(HrZOBTC;T67$;*kc zz`(#alS@P8uCZ@+gE7y{a?Vqfg>WQGwRFG~ zzw2DsLpJvwWkhI3aD!&_h*F>o;TXA|&*gF}!&Yx{I2=zGm*4Tm*du^=DrAO2R#jDf zu3$~|@bEASTb;+_EU_MNxSa@ZRA^Wj{=@GG&dQ3s0DRyFY}0h2jt&Z;`-r=jAZ)6` zR1O7&Qn}Tg;kw}I@$g~oB?OF^vEaMGmY9Qo3#fqJyMDtr82)v_ua$_Ww0(2eqosh8 zBn(Iz01&eu5S@K^;4x=-fY3*l4$+zYPtDa>Em5hlK*tnH=wnNgx3jZuOOlKn?}2D2 zmXMf8VK5xDw6uz7w1L6F$FnJDI8d`xBH>6xVG&RmM{A(4`s5q;3d#;)f>X-$P9#Hx zyVq<5=hc16U@&?eHd9p9)eGOfvu#-al$nv8-4`b+XHUY2(Qbg;@UL+*v$OayCJbeM z|5bbD*}jnx>XqYpD=R<$QGdG!D)=Jz+L-TfbyH}#Pa?9d{Om}GUQbVt=B@F&1!OXZ zJ4>T0QRE#u0kqo&&-3}&r;`w)jfBRB(i*=y61K3052d@dw>F?e(tLl4-B3wQO-*@D zrBVl*1y~lMqM}3eV85b)9M9mde;R)teql}z{?ebOU>&sELJp@^Ng>(m7OrG5ln=e$ z74j99gfKt;g$J}UU0Oqv-ichwAZq_)q(A21x%8E9~TN+#df%HDbVOb@F5LxpH_ z0peY|uop5Yl;w|^rcLw<-K=7;kndd4bz40;znnYjbaf--qX$P(t5Z<%5wYJ(J2=4LW0)`us==_q?1Va>Fys+ zojT<&GWEG~oR^(Q1F zm~3`Jb4v^UW3zC>+IYNX_*z-y&Q|c}_q9uYJEqSp#`a!>#mep_LWoIBN}}!5-{?H- zJIc^1V)5M9^%*8+)~?-N<$oU#dQ`*&9BUFaKmRN(EzNXiySuv^r!unP>E+dJ?HGae z^eq26W2RG6o)#}hk?45y<_$MO;p*(v)cuK?tNtiZzp-(I8ZXx>@$htwn4~g$md3~9 zPoR8;t(DCu%t}9ZJDc-J`fs;#DCA;587~mZ+anSx$*(Y^dbIev_|OAO_Ps)ErIs09sr#_gPkR0!&WCjpYT44 zpun|xXJdb)I&$u=EC5XsE|$J`e2UjxL}E)AvuKUSFm*Q$j=wc|C^ot~1YSfMk|H7# z<(O*o5Nmu#(u!54Ix<(x&HcCv_37#9m4TBTrZRL2h0^_-lK^bYqSk(7`O7{bp%bLG zCL3WzmpwqTxs+LW-QGkh{mi249%9jY*)Q)d-#6aowe|8t@cmkuCX$+R$jxq-eHE)r zK!3Il$MO)+E;$DqfVlTB_S#MOJ2Ly1Th6OP!F0cVegErv{jurywSg#UX-v6If~z_Z zd!Pu!B_!}GbGBmf`oc)0f&e^Q6Mq>ZEd>RIQ0_EY?c6!~_6CGQL6&mS2N(wZ8?bS3 z=+8GHRaRC$_a2~9Dk`jeeSI@>bFKCC?l9KI_i8P_)w?RpkA^2lpp?I%c4lS{Glko%HjhifO#q%0)!$Au-4qsuU!27Ee2?gjgy=<(rIrer?H#?J3G6+(NV|v z?ga_TmIF9;NFq@4E!5gPeyBk|qMamFzKQVhZ*~Upd!bNHz(MP~K%9emva2NDVS+t< z^rhfEcp_8SXZgHVPJXQV!WAa(c(g%jnXrJQ0o2&O-;&^=O39j^l`oG ze8N~T8eM&6{1Z#VD67T2lu9ki%hPLbZ!eeLp+O1{>A!bCN=k2EA2#*Y_@BF98K$Ub z!+?L=#__S$Q9`4$Bigi}pkTSnQ06bqK8dXjS^PC7Hnys)Y^?5=2d1W`)9fcIlpVX0 zMQzZLrIDAMyno;)%*5vU(#+gkFVxk7VryER5?R*O)fM_*&r;_F8l;I`cnz_0gzfsn z5zALgOG>7)gGX-R%=+s05%1kYK;%BtUus7+p$ydqP6lyiuvL|nHA?xikO)=nlU9F< zqyIeJDwi9CGs9lLetns((&=&g_B;GZ?2;zvSIT(uL@HwSk6>yW)_ zZiC7sxie%i_8!+kE@LQ+IiIc0Iscq<)?WKt>wCZNx8C)>>;1jI=l49%eFuB%-9j)S z004F)Y%ClB00RC34bYw7I5Ssw3H%6znIW8^;1dPCa1V@k1>5`*1^_#iw_Zq&xV|C) z2tPqsm^ve~=Y~)D(>VvJi~UxoC(`XiRc;J$2~I*{?hhP0Q4a|J2yYTnkrZuq5>O;` zR@6Ijg(uvpKRzSiFOJak}e|A~|2sIO)29v+Y-}Ka!L#f*fl!1|2Ak64> zYyABWQui&i4Gd;xvZ^E?(9-jzQ|%sBBz_oj6Um`}x<#Y8`1HS-Timz3b-V&#Zf7a9WxyS&fdIvd`irLsb{Ui{E9(`g@t_>4;>`=Vev6*0VO#8S3B?~e0pIMiFo86 zyCg7{b?cvNyy1dFv_dE1@=#dEbek?Cm8lok_PbuPF?YG=gx|nN91%Eq@}z$F)B|;| z>TqtDmX?+dN!)>9|5!h-vC-6Mp@BaOk9UcUjg_CoGxcC{a6hu9=dE3tkjueo8Yn%5dkPZvJY6lg^^ZgwZZ{c5kmt?4{ ztgMP8=1dTgc=6=Z$s1&it~yHvv9|X1wKB=i$-o`YQa5MgoRS#xPmtY)v9)V+sf|g( znN6~WJHEA3F5fo9PU^{}DFPC1-rgc8fh$dm1=&GxKD<$+%VhiGp5Naja5~LJzgDOw zhRRr{q@=J|tZHTs^M;HyBZ{3=d6k~;>V5NFnhD*jy}IHp&KmIb^>z31>H`;E-`u!~ z=>GUIQHHwcdviZiFZpgl!u5qw)7_$?j1|K$8S6r4+apJgR3jIkI2JnhP5K_6p}~CQ zARAwpSX*MxBWJ1AO|qwb%Y~y;no5Xxvmd6!D!1@e%?l+D?LK(Q-d;rxJJS%y|0|W5 zm61_3K7s^MwZ1yvA6QbSjL^Ti^ejI=|9N%4y5F!n(++^aVBs9rnc-L-x8J1y)2C@_ zH{L%eh$2^>dy(`h*Lt9=x!KBfmC>d-&0;w!r<^vFa|K6L$(r%V>gwuL+r04E0Zl}A zbMxKmnwp}lr`gv7li&~}GfB6XPA{@P810NTTFLN^TC_Atk3Zez?_BEkv$(kUukX&k zu9Hf(ddixa=@}TvP$DnEPW+iG-vXHG3=?ZYOFQCP?n@OhNxu`)<-d&AZ3wMz##|4) zUt+RztXZ^IazxM}Zen60*SbMj2Kzw_Eu^&f{`X*;5t})H*|nIMku*lhe84X~{!8V; z;=>+FdlxUt4oO3xWXHm>!OESU^u0~Dh<}?-?QZpDCMS!4ol{m{xsAY^`lpokcFoSd zAO_}!3gou$!&r{9zb@758RW)IVk7mj(o(AN5lEqJ?q;cMGaMiq5;g4V3fYDq@*Z=> z*oRL;SC?2)zh>*?8-?taKVyVE16E>HZB{hm0LFDt$ci;E#@>gvx63tLD!q2%mGEzkVuqPNWm zdzPWPhxZ8;%cgj$A40%nW&76WDJ5>I%7_maj!s}B^P+@LC_L<3UM_FP8x@%+h!m1Y zJscgR&EY@MQf2Dv`!tX`HkedPBwAZz<j-a zpVCr5q2xsJRKDy*kBoSmq{scxa^aD5y)cVKMFW-j#eAJZLo&dwnVJTfIp2e zgh_3R{mw50p@z;*hfYQLv)TNgh0Xx!INWVH2!tsUjDy4ZHrHlKP$1WH7T$=im&ye5 zQ$w_m9m{tteCFyCeWuG_d+OokyKpQ}zquBel$bcQK>l82jgKKRd5%AM)gn)W++myN zm>uyOauYh*VZw6`3nPJQP&DGAj&nMi8Gi2hg33N2Q|zmY@n($`%=Fgr%4H77VS}%O za!@Fg65`M)d~a{>J}lp62OCJlVgo}$PD`nKcETwePbw>qAsqeuCevT{Z7a~qJ;I|c z1v=LXla}@}xaP4N0g8=dVQR9hfihxnV89_F;`I?yFMmf4pQ@VL^czu=-uLhC+2^dR zz`OW#G289`dAOz`a`hUA!wH$E+@Hh(#c8qq#a^iSy46~5kt$1V*tk`!AYn~Y9*Brn z`6fH)5Rs}Q&JY`=y`Tnt3xH8|&<1Ta{iT?gde*n5@1`7Vu~HCY(3)s_&<}n}vn{^j z*O2y7e)hkEV#k^>x)lcx3<&t?y%;(Rr0JD8`edtn+|JR7h;lDXqYIBc9>o~0pRniM zsOiA5$!!OHYBsZ_C|K{7O_kNi+CiVywSgk8L}gfO2_?V$xH{&OaLiAqN1XrFfY$Cc4ILCRDxx&KK>neBU9`zS}UK2i|Qg* zZM)Uh1Fv1PH{orNiap7D7g9MG;agQ#*t_bY*KdH96g*cTHCYzL<@9qv_IXZ-8;&v1 zoiEAHSB_q4Ib@1G)2}CPwA>^N_YV$s;BBz6AXI+5FU>nCDJhxScIo=>O*^hfM1Z-C zs*MPamc_^KsAIPqT)uksjQ(R9BbN6P^lk8|QnTCKarjnsG3fu}dwKkcPhVoZ5#>bC P!UG6Pdy8VTv$y^UlC_pF literal 3080 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 A9RL6T diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_withmean_custompoint.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_withmean_custompoint.png index a951bb32798d6a363d81a9464e2758f972835916..45a0fac0fe81bd48dccb75e7454d21762805df73 100644 GIT binary patch delta 2011 zcmY*Zd0f)j7QZYpxFs%`OC@95%goSBtwzC=6f^r&4)qj~Hrx`aCu(lsGGtAqrKY)N zPo31vrZRV>G%Ir}Ow=M#6I61cByj#;6qyXTvpH>Veuh1JBgQPoJjLUd$lr=tHS*s2%o6yZhuW4bl;*`cK6nF zhc^Rhd6#a*I5nd0&Bzfw&G1dWFVat89Wx!rC4JJ-^BZQ}7-NP#tH}JcQR;SMC`Tdw zrb-_vv^&x<)2SQ^uz4euN5N@tP%{)ez}b@)kH)2mQ6}u>i1S}0-37s+p$CuNqnsVk z#F9NdJ<~hs8J>SQH)rxexcv%?hhFAaUV>C+5u<;CrrTU(?lms4Wqs14h$gB354?U^6Z;8Ur$a3 zjW~1IMgYf|nhMEyb^3sZ#~q4gu)qIvRvLFN0En#oeDcGA-le6c?9LKsQ0xN#p%06P zeLS}-!+m2&NJy!d`NlZC9R3voL3iw2ZL79&hdxZlsGv;JbPL6CnDTVq;kj*qNbq6Dl;tlb7y+6g3>fYMfU5&I#~V;c&66l#*cJ){Em^St z93p`kpHao$0NrFVt6hM1~p0b|>9&DW{_mJn2x-PhOWRsL32 zH5Y1QoSmEN_3zhAVS3^DMm-!FzHQsKiD$pB_V)HRL$2AXuRhq{@1_*_Q7FBQ(TYbk zHCgkR*(lVk=n3M=)vJ@!!g}MiYu~oDaiyDn9`>%dF)6QeFTM`VeFA|mgd)`xZEbC> zJE=Iy#z7g1j`rd6`4=4wi;h_=mEAa0L0(%OU{CD^bbo(VR8*N<&dSTr4+;*Z2HApW#kTBsoMXdC#rO;>hw3YH?A7cS_o&75N{C;%O z3#K_!i2-Uo0XDrsRbCbbdVXQ<*<)j;*REO9AYYiCzPD-fX107_e!fO57T*pUEXINp z(`QCWjnr>r@*}!?X{qt+pGC|n$vNg3?jv?E5|Z$#u~z1CJ-d@`2IsLA@uM1WtT^Uf zWJ09O9K=v6^BksP2Y&2shBs|}akw-+-y!-d8En}20&|eMg0ua@&Rb~)C)`lBaM<^P z>4M+lPi*+Q`Zx!wFTmZk6~0e)#1%-s{N+Ial9OssDK#Sy++9L+?^L)Nto3PUjvXr| z=DkABc6D_feEu-Y@>GO?vW)&Xu^Ix+OUUhXsLNBXl6$$q35U8G{FvFY8x^SEi(l>IS&t* zm@0=8TN#71h1$v6XB4pc`++SN9I^Qg+W)mnQxFNDxl?L}<$O8si$pRV=}>zk0WC`r z3d1ywxZ>GvIhoD-|D1oVow<}J`LH#~QTbVDMFg~f3byi)0^g)`P_JkoTJ=^ex&IfI z_%6litVNA8xnOs)HXW?|XY3@_Q8#+iEp4eMud1~R#2kx&-;)_*aF+qlTn|7C8u0G7 z8o**_=O*|~-*}_r<8DVQsZ)#fM@oB%IV+qGpuvTxM(U7&Y`$uz@fC~@;&*!t5_j1M za1Htnb5DEB>(=XGWWz0o>8Y4BrJ6PL0hET-mL@0LJFO_d_oPK$)B>g@d7R)gNcgpm z&1`>I&qSC$GQRvB0<#0~Z2X&19g;8i7+NC#TnOhjU4ZKd1k6oXk->hz!`*-Yv4Cjq z7#wi_L;}sxf_TiO|LrgHjCP-bl$4ZU2E+1F$*|T%l^i^Hhi|MTox z!=7aI<%dxb@c(mCNky#u?62S8i1a$l1WeE?Pa!($3pSFq4?kH z=@B~e+_|ULU>@&;arw#&GX?`^Z0DkpPFPa=*tx=?trm`RPPa`}?We4-UDkSe78LOV zi}@37(;3~8^|c4HV#X6)@FS;+1X4N04$d)YSaI#uUV|kKS2dmfkR5eZ02(Bsr^~&) Hw1mF_W96y# delta 2058 zcmYL~dpy(o8^AxaS=3%-U7R_jNmM7zat|9)j?0N$BFiYracPI-ZuMP`=n$DMoai{k zXrbkjl$N2k6mb$m?okTaY;(W-zWbeDuiy8N&*$@fzR&mhJkRrap7*B$E5K$tK*0_N zZ9HQ0Cj0i;`*dpx#Q7Fe~Bn?lWQlFgrs9>ID^|eUK%9_N4~2K zF(f9ocdPl|8YS5?8ywTL^m2wPv=_oP{d3ayiMKrPzM0Z&GG1XLjLLg5+nca5;IjW! z@2b|5y8WM_x4mCNOmYt+h+hnaiU1j&0K1 zjEoE;GqZdB{r#^vqmk$%B^@3dA@wHM;mq~*D)USmr8xfz5)u;DCR%r&={&8*@RkD5 zn1|+-9e?cOt4VAP1`k)(^!h7wvaIBIZ#|%{?X)yO%&HBBOE; z5ZHT+N_ky6h>G@}!ot-|}?^P8*P`ya>@TVK8)z#G=Y!4$NqmieD)omygMFn+{ zFAzMcsJJT@pH;LOgvDkgB~+oS3W{APc7ate1#1{xb5-X*ty2KyBHCi}4=CV2^kL>t z{VqjoJ^BZ-M9~nuXm~tn=w}A?p#y&4speO=((5sRcm)8AHXMx-;1R14h{hZQNEV;Q z^N4|faS{bi;1G;1QPkjw7EnneVvJ2qi@97f2Ro}dM^E$xb^=Je0qpuq8KPHiPf3fU^0UPR{Si^~-ua zT2cM@v20F!iWU|Ydf`HUlmks1j}}dI8=f{$BgKjs{7vTmF)?09B=TvTqzH{hSJl>z z!>NN}&u^|NDcSRG_UBOgu?$kY)Lva({Z@Xykk3!nB-6)WomdhQr>-t35?_ygZmCL- zjPz)4Z;xMH;T9Da8=ISdg;gSrw|;B&C^_ojW|Ese@#9Hc2#t2w*4CEon^4r((2!_n zXZL7_3)(wHY~T@pF+&90{a>kOQ+@S+YmZL_sN3m z%MA;j512j2gN=mjH_J0kR>sCG|MIb#?Q==6@->%5N7h~V1X5j~!W1vWpi|?g(z8;j zbgU)Uv{(V(^wD}cZVPx`YSH@R&pmubTS=*azeSPU;5{VQq z``U5ZDebz~PQ;Mi9#a>$u)M}b+m4V&_WcRr;l!-jNmMa{S6sJ^5HFd4dWFK(70SSh z=n79{WU!%weQLvse}|DajF7-@9bCS6DoF3hi5 zjmtg=7ewuAggVqz{f}nM9! zeKyaYwgG>?=y2Y+b7*?;pF?W2l`!`K4D=D+<$s%u^<)dHqM?>3HJaqK#>T_eJR`_i zK_Ph`5?~}`Fk|&CbgVlQo@xoB@8~#WR@34+K-TCHoy6Gda(?~3Bye&WJ5x-^tK*;9 zq^hAtT&543q#Wz|U2_V_OR-faUqLjDL~Q`P`DX))KqQd2avXOZ7^FAD4Gzn!r4fG1 z&@S%8((aeNURKddB=K$qKs&zBIv^d{cH64pp~qbIu=$e4(aXy-{mO>`NF}@|jQzdz zs3rE5R!P3O{rW(#-h27IO+?|$oxhF#V$86j(Sx=hmBZ7|ea8jB*#VHus#YHRJv}{r z-D;AszW(9^pC=JRv){gad2)v0O-use_qxyc&V{YJl<3HEOX}clzX|`Yp=kHvF6H&Z zD}QJ@fvT1i)-QXsbmun(ut{q%k#6u>$MhBD&;~%%d*lQs4Z(RxpQV^vS5Gz?HTVx7VKpz*r9HE z&b$pi$bvPn1rz)UoFU*rLf{0y=^cs&7)~u@8El`%u_pViikNCni*r9+Y+efWo}#W&yg}u_n4TN z0HIRjk*v)qn*ibETN_Sg;sl4bZrvIj9)5(&~thw vvGLb%7>+~(-d=fl|Ggsq?;Nv_sM@8^PBN6XMflbO_;EPoeDJ}66N&!;-E+NQ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_withmean_line.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_withmean_line.png index 923d1f767aa1164fb929bdfc638cc1fcfb4372ad..7333ec55df16a7ed48bce922606119e908986a61 100644 GIT binary patch delta 1938 zcmY+F2~bl>8pk^!!~g*TgN8%S1;vQSA;N+}068+_B*V2qMPW@5LV~zUAF-Bbo;rh&Y-jkpEzR=)lP;lhB7BuEJIZ! zh>*LL+gWMRgTO}~0px7~NRt87%V*FiYy}cv=byk0XSksD zzf;F1zR-Ge8Mp+S5&cu`kw$x5eULuV! znQ1Q;n&-W410rE{roCcdz=kw3H&?Ehl{T+pX`m+xapVaW4_*csDN2ThgwzZN`3t8R zlzwPusp4ppVvDxEeW6pt$D66KnwkjG; z;rsLFxoc|<)6>&%x*IzeDo-(?0b1#Cz{`&0){PUAXZ6XVU!2wuz#^Q`RPq*+G6ugP z3>6#H>NYhqGq$r6zlbkt4vdO&v9q(g9^b=YJQ^GvWF(w6H*ZW$O?}*P>lg;SDGEJv z^>pDQRf_<1)ExHk;A|hCA#|=EH(-d_Yk)2RE9+>^SlAOo8BhjE(_x7eON7pg?Z`TV z6ccZ=?KbIvKU{1SwZD6Jg~p|Avh1i!KJX7=OYNs1<^GEUsr0Yy@b*xTIU^P&GP(*rFqy;5o6EDmBs$MTa zSvz2cK=i*A!^ktq#9loD=+&Emu{3YXQC}UUvEz~1*uzuP(@LLKR=T0_z3y24qL$#u z0;6(f-OMSMlkGTgjJ^Fsh9N?^S=b-~IUr2@H{B2H zKL13cLh3_i2$q36B1P{vl*hcj+W+|g%@c*~8?C0C+(BlWJTlJRjWNWn?csowq;J=c z!%NX38l5IMlwPJdu>S5Eq5ss8SQ=Xl1EuKY-TlVb(Zmwowzk&~q+RqS51J%+LH3EE zNm6ky$h}7Ylg|AKb*P{Pa5v*%k96UKbE2SN@e_**8>`DG*!?$+O1*p@0c#2kt{{CaeYT2ltiPDx`hI+IxK#hu0O4`B)l^J>JEcq> zv6Q8wiHzAR>T8FwK@U^+_mT}~eP90=c!m8O)jXr#@UrcjH&kl^KE(Ov)ZI$>ih=wS z!6K%*`-=F=&J$jy2tFnmkD!pr1!%CRm0mv9bGQgiEOW5$%F<5PBn|lLueasM{&LoS z=9$d`f6JMf_Q3>1w9_NnJqV$B-&Q(LksL7swHvDD3j04gRuSN!DKIxoZY^3nw*`F& a-!zN3D>jiZAIN9`@I$g8pKG-8N%}9Mifi@& literal 2194 zcmbtWeK=HUAAV-W$7!gPXqG}MNn}JRnjv9ks*#T=G%^@vnroNx-53n}W<+GC6~&?= ztdO;q@m)UJlEh$S<#QPySu&=~P~M~W+V|c4@h9vOPu#&zya0!q9ZrdiFkBNYKd6xSWzR%0Bc+xap-jUpKxb#^|NzobCpvJv^JF zBn|3s%RT`+Ql3oLrjj#@ONie+eXR1Wo!jNIAYwDOMYhd$n@xha(5!l5b7+~dpZndb zrgN*GzE3zH)_T6OIJjDO=d0<^n)3+kl&Nq%7~X&Y7<&NXHUW;e9Pq;YgJIvCM^^1y z|DsL?!`HX@f+@##D%j%1#qt-v2foX0n}TvW83jE|{@2Kq!^LM$CfV=29du+nA~Q2n zA3}}?9!YBlFYhY=%!C=x)6?_F(!zFJ0@zi>0UtD2)K@-UTw1zM`M8igrRf546umJ_ zI{mn*scC;-A2AZbA^~fDv_(lR(T?ok@S~d{Gb~IPa!Y0d0In+HV+ph3?uHE;C`CPH zINWSCDe@i!E$To>HMIQfyLSbS`Y;3`c{)*$WNob>e=J3&w2DgLaJ;*Lie~oh4)!si zqh4>6EsX`%hHNTcEMElTuLZRE)qBZt+?IY}PblTLaULQ2Mggr&`DhN(`aLsukxltYh&7+?`En8Sx3VM5Qzk2n`%-md5O>&)ZF=|={^HbXU+GBNI zkB;8=AE>(5($dmBsJ<=k-iz^{vTzX(1NoV%(!#@P*&6!$2g%Pf+O7nE0_VI+;wq#AbWAxVTv0 z@u6$8>eRv+4E?UL2j=)w&$Mu?+>7Of6%_{$W{`30rPuIDj7lIcfB#n*PhI+@3vTmo z-nbhX8_&G02|MTM+57I@qZvKPg@T#OkqE;9yEA ztpUFkkp58Qbrga53xijkth#y?b5WWxpb3I?T zQF=O@({wakG7?h+f_)cOZ}Hhg6>HrAeh?u)KR@mB=jD%ck`<}=WMmke$e31N%M|F2 z_c&Nrb+)zK>Q)jhE>hq^3exQ>qaaSOb%5ozCAre z;?=J-rO9MBX+_nvPfO3ll_JTQRdjd9T-5Ddk*U%XG>=uAq18_jq^^pNl1n2UO0toj zjk0lC1CduR6_|T2dN1}Dm}v#LvPKr`0F_F;o1R|P^)Sa%^n(zlpgU|VGt9n6aqnQ1 zZ~2>F9|EWLwy~qGrO%SZb)c{qv4oxb`CPb7;A2%4>}EPf-_ZV*;ROJ{~}Qe_zm+WWR98Z_gz zEbl?Uy7OB4mVgvV0yoyeSK_Mp{0Y>!qo~1xnB0xu^8HiQ*A3mtfUSQNQBt-MU~ho` zCVt$lj);8y^&#U==+dHEO_il+2ym-$wP_U;gF@#*+dd7q<}L7w;>JlT#pSDqCY^LN zr(TLpo!Z^JD>~M&f*KQZYYiZ@7g#>Xzoq;? z!yt7aVV(EJR9oPH2@;$N3N`oIpB5Ct1gqo0a<7>cYkqulFYrnifZ;nF4)qjFSvnHL znaBg>H3_z^;WS6>*xbWBLm&`D_@SX8*FuWLM`>SQ`h-X{#?Xk`T`?zb{nHhbeAGc0 z7ZcX9Aqp7>r~7gc`pEyp4?jE053T53xhV6J*$n z0=z_VMzf(*2@A)gbG9p#@nWfAu|37VNy{VuqsYyp545lLX%3?Feu=aZR}YpvA7O{h&R| WpF5nG&6|dQDgepO!M4Q4EB4?1)28_V diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_withmean_point.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_withmean_point.png index 27fcbab4d84a75d052b2520fa41dcfaec466c68f..9d47676beee5b6c2f317eb3ab2510bd274378123 100644 GIT binary patch literal 2163 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 Ub#^JK+y=nQ-p0|IcgQdDFEUP{7XSbN diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_withnotch.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_withnotch.png index 9e86d22083d82738e5493f067bcf296538eedaee..1eae658a2ac01bfe6e5af8f9f8f52dba7662f624 100644 GIT binary patch literal 4728 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 a4$bdMG@0Bn6%HO9K?qeHl`18Rm;VCSV$Od6 literal 4880 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