You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
<divid="unreleased-message"> You are reading an old version of the documentation (v3.4.3). For the latest version see <ahref="/stable/">https://matplotlib.org/stable/</a></div>
<li><aclass="reference internal" href="#rename-first-argument-to-subplot-mosaic">Rename first argument to <codeclass="docutils literal notranslate"><spanclass="pre">subplot_mosaic</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><aclass="reference internal" href="#api-changes-for-3-4-0">API Changes for 3.4.0</a><ul>
<li><aclass="reference internal" href="#plt-subplot-re-selection-without-keyword-arguments"><codeclass="docutils literal notranslate"><spanclass="pre">plt.subplot</span></code> re-selection without keyword arguments</a></li>
<li><aclass="reference internal" href="#ioff-and-ion-can-be-used-as-context-managers"><codeclass="docutils literal notranslate"><spanclass="pre">ioff</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">ion</span></code> can be used as context managers</a></li>
<li><aclass="reference internal" href="#locators-and-formatters-must-be-in-the-class-hierarchy">Locators and formatters must be in the class hierarchy</a></li>
<li><aclass="reference internal" href="#date-locator-for-daily-interval-now-returns-middle-of-month">Date locator for DAILY interval now returns middle of month</a></li>
<li><aclass="reference internal" href="#xunits-none-and-yunits-none-passed-as-keyword-arguments-are-treated-as-no-action">xunits=None and yunits=None passed as keyword arguments are treated as "no action"</a></li>
<li><aclass="reference internal" href="#annotations-with-annotation-clip-no-longer-affect-tight-layout">Annotations with <codeclass="docutils literal notranslate"><spanclass="pre">annotation_clip</span></code> no longer affect <codeclass="docutils literal notranslate"><spanclass="pre">tight_layout</span></code></a></li>
<li><aclass="reference internal" href="#parasite-axes-pcolor-and-pcolormesh-now-defaults-to-placing-grid-edges-at-integers-not-half-integers">Parasite Axes pcolor and pcolormesh now defaults to placing grid edges at integers, not half-integers</a></li>
<li><aclass="reference internal" href="#colorbar-outline-is-now-a-spine"><codeclass="docutils literal notranslate"><spanclass="pre">Colorbar</span></code> outline is now a <codeclass="docutils literal notranslate"><spanclass="pre">Spine</span></code></a></li>
<li><aclass="reference internal" href="#raise-or-warn-on-registering-a-colormap-twice">Raise or warn on registering a colormap twice</a></li>
<li><aclass="reference internal" href="#consecutive-rasterized-draws-now-merged">Consecutive rasterized draws now merged</a></li>
<li><aclass="reference internal" href="#consistent-behavior-of-draw-if-interactive-across-backends">Consistent behavior of <codeclass="docutils literal notranslate"><spanclass="pre">draw_if_interactive()</span></code> across backends</a></li>
<li><aclass="reference internal" href="#the-artist-property-rasterized-cannot-be-none-anymore">The Artist property <em>rasterized</em> cannot be <em>None</em> anymore</a></li>
<li><aclass="reference internal" href="#canvas-s-callback-registry-now-stored-on-figure">Canvas's callback registry now stored on Figure</a></li>
<li><aclass="reference internal" href="#harmonized-key-event-data-across-backends">Harmonized key event data across backends</a></li>
<li><aclass="reference internal" href="#webagg-backend-no-longer-reports-a-middle-click-as-a-right-click">WebAgg backend no longer reports a middle click as a right click</a></li>
<li><aclass="reference internal" href="#id-attribute-of-xml-tags-in-svg-files-now-based-on-sha256-rather-than-md5">ID attribute of XML tags in SVG files now based on SHA256 rather than MD5</a></li>
<li><aclass="reference internal" href="#rendererps-set-font-is-no-longer-a-no-op-in-afm-mode"><codeclass="docutils literal notranslate"><spanclass="pre">RendererPS.set_font</span></code> is no longer a no-op in AFM mode</a></li>
<li><aclass="reference internal" href="#autoscaling-in-axes3d">Autoscaling in Axes3D</a></li>
<li><aclass="reference internal" href="#axes3d-automatically-adding-itself-to-figure-is-deprecated">Axes3D automatically adding itself to Figure is deprecated</a></li>
<li><aclass="reference internal" href="#changed-cursive-and-fantasy-font-definitions">Changed cursive and fantasy font definitions</a></li>
<li><aclass="reference internal" href="#docstring-substitution-now-always-dedents-docstrings-before-string-interpolation">docstring.Substitution now always dedents docstrings before string interpolation</a></li>
<li><aclass="reference internal" href="#invalid-hatch-pattern-characters-are-no-longer-ignored">Invalid hatch pattern characters are no longer ignored</a></li>
<li><aclass="reference internal" href="#imread-reading-from-urls"><codeclass="docutils literal notranslate"><spanclass="pre">imread</span></code> reading from URLs</a></li>
<li><aclass="reference internal" href="#subplot-related-attributes-and-methods">Subplot-related attributes and methods</a></li>
<li><aclass="reference internal" href="#is-url-and-url-regex"><codeclass="docutils literal notranslate"><spanclass="pre">is_url</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">URL_REGEX</span></code></a></li>
<li><aclass="reference internal" href="#passing-boxstyle-custom-bbox-transmuter-to-fancybboxpatch">Passing <codeclass="docutils literal notranslate"><spanclass="pre">boxstyle="custom",</span><spanclass="pre">bbox_transmuter=...</span></code> to <codeclass="docutils literal notranslate"><spanclass="pre">FancyBboxPatch</span></code></a></li>
<li><aclass="reference internal" href="#boxstyles-are-now-called-without-passing-the-mutation-aspect-parameter">BoxStyles are now called without passing the <em>mutation_aspect</em> parameter</a></li>
<li><aclass="reference internal" href="#contourlabeler-get-label-coords-is-deprecated"><codeclass="docutils literal notranslate"><spanclass="pre">ContourLabeler.get_label_coords</span></code> is deprecated</a></li>
<li><aclass="reference internal" href="#line2d-and-patch-no-longer-duplicate-validjoin-and-validcap">Line2D and Patch no longer duplicate <codeclass="docutils literal notranslate"><spanclass="pre">validJoin</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">validCap</span></code></a></li>
<li><aclass="reference internal" href="#setting-a-line2d-s-pickradius-via-set-picker-is-undeprecated">Setting a Line2D's pickradius via <codeclass="docutils literal notranslate"><spanclass="pre">set_picker</span></code> is undeprecated</a></li>
<li><aclass="reference internal" href="#markerstyle-is-considered-immutable"><codeclass="docutils literal notranslate"><spanclass="pre">MarkerStyle</span></code> is considered immutable</a></li>
<li><aclass="reference internal" href="#moviewriter-cleanup-is-deprecated"><codeclass="docutils literal notranslate"><spanclass="pre">MovieWriter.cleanup</span></code> is deprecated</a></li>
<li><aclass="reference internal" href="#minimumdescent-parameter-property-of-textarea"><em>minimumdescent</em> parameter/property of <codeclass="docutils literal notranslate"><spanclass="pre">TextArea</span></code></a></li>
<li><aclass="reference internal" href="#colorbar-now-warns-when-the-mappable-s-axes-is-different-from-the-current-axes"><codeclass="docutils literal notranslate"><spanclass="pre">colorbar</span></code> now warns when the mappable's Axes is different from the current Axes</a></li>
<li><aclass="reference internal" href="#deprecation-related-functionality-is-considered-internal">Deprecation-related functionality is considered internal</a></li>
<li><aclass="reference internal" href="#increase-to-minimum-supported-versions-of-python-and-dependencies">Increase to minimum supported versions of Python and dependencies</a></li>
<li><aclass="reference internal" href="#qhull-downloaded-at-build-or-sdist-time">Qhull downloaded at build-or-sdist time</a></li>
<li><aclass="reference internal" href="#figurebase-class-added-and-figure-class-made-a-child"><codeclass="docutils literal notranslate"><spanclass="pre">FigureBase</span></code> class added, and <codeclass="docutils literal notranslate"><spanclass="pre">Figure</span></code> class made a child</a></li>
<h4>Rename first argument to <codeclass="docutils literal notranslate"><spanclass="pre">subplot_mosaic</span></code><aclass="headerlink" href="#rename-first-argument-to-subplot-mosaic" title="Permalink to this headline">¶</a></h4>
<p>Both <aclass="reference internal" href="figure_api.html#matplotlib.figure.FigureBase.subplot_mosaic" title="matplotlib.figure.FigureBase.subplot_mosaic"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">FigureBase.subplot_mosaic</span></code></a>, and <aclass="reference internal" href="_as_gen/matplotlib.pyplot.subplot_mosaic.html#matplotlib.pyplot.subplot_mosaic" title="matplotlib.pyplot.subplot_mosaic"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.subplot_mosaic</span></code></a> have had the
first position argument renamed from <em>layout</em> to <em>mosaic</em>. This is because we
are considering to consolidate <em>constrained_layout</em> and <em>tight_layout</em> keyword
arguments in the Figure creation functions of <aclass="reference internal" href="_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot" title="matplotlib.pyplot"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot</span></code></a> into a single <em>layout</em>
keyword argument which would collide.</p>
<p>As this API is provisional, we are changing this with no deprecation period.</p>
</div>
</div>
</div>
<divclass="section" id="api-changes-for-3-4-0">
<h2>API Changes for 3.4.0<aclass="headerlink" href="#api-changes-for-3-4-0" title="Permalink to this headline">¶</a></h2>
<li>colorbars in different rows or columns line up more robustly.</li>
<li><em>hspace</em> and <em>wspace</em> options to <aclass="reference internal" href="figure_api.html#matplotlib.figure.Figure.set_constrained_layout_pads" title="matplotlib.figure.Figure.set_constrained_layout_pads"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Figure.set_constrained_layout_pads</span></code></a> were
twice as wide as the docs said they should be. So these now follow the docs.</li>
</ul>
<p>This feature will remain "experimental" until the new changes have been used
enough by users, so we anticipate version 3.5 or 3.6. On the other hand,
<codeclass="docutils literal notranslate"><spanclass="pre">constrained_layout</span></code> is extensively tested and used in examples in the
library, so using it should be safe, but layouts may not be exactly the same as
more development takes place.</p>
<p>Details of using <codeclass="docutils literal notranslate"><spanclass="pre">constrained_layout</span></code>, and its algorithm are available at
<h4><codeclass="docutils literal notranslate"><spanclass="pre">plt.subplot</span></code> re-selection without keyword arguments<aclass="headerlink" href="#plt-subplot-re-selection-without-keyword-arguments" title="Permalink to this headline">¶</a></h4>
<p>The purpose of <aclass="reference internal" href="_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot" title="matplotlib.pyplot.subplot"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.subplot</span></code></a> is to facilitate creating and re-selecting
Axes in a Figure when working strictly in the implicit pyplot API. When
creating new Axes it is possible to select the projection (e.g. polar, 3D, or
various cartographic projections) as well as to pass additional keyword
arguments through to the Axes-subclass that is created.</p>
<p>The first time <aclass="reference internal" href="_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot" title="matplotlib.pyplot.subplot"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.subplot</span></code></a> is called for a given position in the Axes
grid it always creates and returns a new Axes with the passed arguments and
projection (defaulting to rectilinear). On subsequent calls to
<aclass="reference internal" href="_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot" title="matplotlib.pyplot.subplot"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.subplot</span></code></a> we have to determine if an existing Axes has a) equivalent
parameters, in which case it should be selected as the current Axes and
returned, or b) different parameters, in which case a new Axes is created and
the existing Axes is removed. This leaves the question of what is "equivalent
parameters".</p>
<p>Previously it was the case that an existing Axes subclass, except for Axes3D,
would be considered equivalent to a 2D rectilinear Axes, despite having
different projections, if the keyword arguments (other than <em>projection</em>)
<p>We are embracing this long standing behavior to ensure that in the case when no
keyword arguments (of any sort) are passed to <aclass="reference internal" href="_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot" title="matplotlib.pyplot.subplot"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.subplot</span></code></a> any existing
Axes is returned, without consideration for keywords or projection used to
initially create it. This will cause a change in behavior when additional
<spanclass="n">ax1</span><spanclass="ow">is</span><spanclass="ow">not</span><spanclass="n">ax2</span><spanclass="c1"># new behavior, makes new Axes</span>
<spanclass="c1"># ax1 is ax2 # old behavior</span>
</pre></div>
</div>
<p>contrary to the user's request.</p>
<p>Previously Axes3D could not be re-selected with <aclass="reference internal" href="_as_gen/matplotlib.pyplot.subplot.html#matplotlib.pyplot.subplot" title="matplotlib.pyplot.subplot"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.subplot</span></code></a> due to an
unrelated bug (also fixed in Matplotlib 3.4). While Axes3D are now consistent
with all other projections there is a change in behavior for</p>
<divclass="highlight-default notranslate"><divclass="highlight"><pre><span></span><spanclass="n">plt</span><spanclass="o">.</span><spanclass="n">subplot</span><spanclass="p">(</span><spanclass="n">projection</span><spanclass="o">=</span><spanclass="s1">'3d'</span><spanclass="p">)</span><spanclass="c1"># create a 3D Axes</span>
<spanclass="n">plt</span><spanclass="o">.</span><spanclass="n">subplot</span><spanclass="p">()</span><spanclass="c1"># now returns existing 3D Axes, but</span>
<spanclass="c1"># previously created new 2D Axes</span>
<spanclass="n">plt</span><spanclass="o">.</span><spanclass="n">subplot</span><spanclass="p">(</span><spanclass="n">projection</span><spanclass="o">=</span><spanclass="s1">'rectilinear'</span><spanclass="p">)</span><spanclass="c1"># to get a new 2D Axes</span>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">ioff</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">ion</span></code> can be used as context managers<aclass="headerlink" href="#ioff-and-ion-can-be-used-as-context-managers" title="Permalink to this headline">¶</a></h4>
<p><aclass="reference internal" href="_as_gen/matplotlib.pyplot.ion.html#matplotlib.pyplot.ion" title="matplotlib.pyplot.ion"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.ion</span></code></a> and <aclass="reference internal" href="_as_gen/matplotlib.pyplot.ioff.html#matplotlib.pyplot.ioff" title="matplotlib.pyplot.ioff"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.ioff</span></code></a> may now be used as context managers to create
a context with interactive mode on or off, respectively. The old behavior of
calling these functions is maintained. To use the new functionality call as:</p>
<h4>Locators and formatters must be in the class hierarchy<aclass="headerlink" href="#locators-and-formatters-must-be-in-the-class-hierarchy" title="Permalink to this headline">¶</a></h4>
<p>Axis locators and formatters must now be subclasses of
<h4>Date locator for DAILY interval now returns middle of month<aclass="headerlink" href="#date-locator-for-daily-interval-now-returns-middle-of-month" title="Permalink to this headline">¶</a></h4>
<p>The <aclass="reference internal" href="dates_api.html#matplotlib.dates.AutoDateLocator" title="matplotlib.dates.AutoDateLocator"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">matplotlib.dates.AutoDateLocator</span></code></a> has a default of
<codeclass="docutils literal notranslate"><spanclass="pre">interval_multiples=True</span></code> that attempts to align ticks with the start of
meaningful intervals like the start of the month, or start of the day, etc.
That lead to approximately 140-day intervals being mapped to the first and 22nd
of the month. This has now been changed so that it chooses the first and 15th
of the month, which is probably what most people want.</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">ScalarFormatter</span></code><em>useLocale</em> option obeys grouping<aclass="headerlink" href="#scalarformatter-uselocale-option-obeys-grouping" title="Permalink to this headline">¶</a></h4>
<p>When the <aclass="reference internal" href="ticker_api.html#matplotlib.ticker.ScalarFormatter" title="matplotlib.ticker.ScalarFormatter"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">ScalarFormatter</span></code></a> option <em>useLocale</em> is enabled (or
<codeclass="docutils literal notranslate"><aclass="reference external" href="../tutorials/introductory/customizing.html?highlight=axes.formatter.use_locale#a-sample-matplotlibrc-file"><spanclass="pre">rcParams["axes.formatter.use_locale"]</span></a></code> (default: <codeclass="docutils literal notranslate"><spanclass="pre">False</span></code>) is <em>True</em>) and the configured locale uses
grouping, a separator will be added as described in <aclass="reference external" href="https://docs.python.org/3/library/locale.html#locale.format_string" title="(in Python v3.9)"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">locale.format_string</span></code></a>.</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">Axes.errorbar</span></code> cycles non-color properties correctly<aclass="headerlink" href="#axes-errorbar-cycles-non-color-properties-correctly" title="Permalink to this headline">¶</a></h4>
<p>Formerly, <aclass="reference internal" href="_as_gen/matplotlib.axes.Axes.errorbar.html#matplotlib.axes.Axes.errorbar" title="matplotlib.axes.Axes.errorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes.errorbar</span></code></a> incorrectly skipped the Axes property cycle if a
color was explicitly specified, even if the property cycler was for other
properties (such as line style). Now, <aclass="reference internal" href="_as_gen/matplotlib.axes.Axes.errorbar.html#matplotlib.axes.Axes.errorbar" title="matplotlib.axes.Axes.errorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes.errorbar</span></code></a> will advance the Axes
property cycle as done for <aclass="reference internal" href="_as_gen/matplotlib.axes.Axes.plot.html#matplotlib.axes.Axes.plot" title="matplotlib.axes.Axes.plot"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes.plot</span></code></a>, i.e., as long as all properties in the
<h4>pyplot.specgram always uses origin='upper'<aclass="headerlink" href="#pyplot-specgram-always-uses-origin-upper" title="Permalink to this headline">¶</a></h4>
<p>Previously if <codeclass="docutils literal notranslate"><aclass="reference external" href="../tutorials/introductory/customizing.html?highlight=image.origin#a-sample-matplotlibrc-file"><spanclass="pre">rcParams["image.origin"]</span></a></code> (default: <codeclass="docutils literal notranslate"><spanclass="pre">'upper'</span></code>) was set to something other than <codeclass="docutils literal notranslate"><spanclass="pre">'upper'</span></code> or
if the <em>origin</em> keyword argument was passed with a value other than
<codeclass="docutils literal notranslate"><spanclass="pre">'upper'</span></code>, the spectrogram itself would flip, but the Axes would remain
oriented for an origin value of <codeclass="docutils literal notranslate"><spanclass="pre">'upper'</span></code>, so that the resulting plot was
incorrectly labelled.</p>
<p>Now, the <em>origin</em> keyword argument is not supported and the <codeclass="docutils literal notranslate"><spanclass="pre">image.origin</span></code>
rcParam is ignored. The function <aclass="reference internal" href="_as_gen/matplotlib.pyplot.specgram.html#matplotlib.pyplot.specgram" title="matplotlib.pyplot.specgram"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">matplotlib.pyplot.specgram</span></code></a> is forced to use
<codeclass="docutils literal notranslate"><spanclass="pre">origin='upper'</span></code>, so that the Axes are correct for the plotted spectrogram.</p>
<h4>xunits=None and yunits=None passed as keyword arguments are treated as "no action"<aclass="headerlink" href="#xunits-none-and-yunits-none-passed-as-keyword-arguments-are-treated-as-no-action" title="Permalink to this headline">¶</a></h4>
<p>Many (but not all) of the methods on <aclass="reference internal" href="axes_api.html#matplotlib.axes.Axes" title="matplotlib.axes.Axes"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes</span></code></a> take the (undocumented)
keyword arguments <em>xunits</em> and <em>yunits</em> that will update the units on the given
<p>Previously if <em>None</em> was passed it would clear the value stored in
<codeclass="docutils literal notranslate"><spanclass="pre">.Axis.units</span></code> which will in turn break converters which rely on the value in
<codeclass="docutils literal notranslate"><spanclass="pre">.Axis.units</span></code> to work properly (notably <aclass="reference internal" href="category_api.html#matplotlib.category.StrCategoryConverter" title="matplotlib.category.StrCategoryConverter"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">StrCategoryConverter</span></code></a>).</p>
<p>This changes the semantics of <codeclass="docutils literal notranslate"><spanclass="pre">ax.meth(...,</span><spanclass="pre">xunits=None,</span><spanclass="pre">yunits=None)</span></code> from
"please clear the units" to "do the default thing as if they had not been
passed" which is consistent with the standard behavior of Matplotlib keyword
arguments.</p>
<p>If you were relying on passing <codeclass="docutils literal notranslate"><spanclass="pre">xunits=None</span></code> to plotting methods to clear the
<aclass="reference internal" href="_as_gen/matplotlib.axis.Axis.update_units.html#matplotlib.axis.Axis.update_units" title="matplotlib.axis.Axis.update_units"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axis.update_units</span></code></a> if you also require the converter to be updated).</p>
<h4>Annotations with <codeclass="docutils literal notranslate"><spanclass="pre">annotation_clip</span></code> no longer affect <codeclass="docutils literal notranslate"><spanclass="pre">tight_layout</span></code><aclass="headerlink" href="#annotations-with-annotation-clip-no-longer-affect-tight-layout" title="Permalink to this headline">¶</a></h4>
<p>Previously, <aclass="reference internal" href="text_api.html#matplotlib.text.Annotation.get_tightbbox" title="matplotlib.text.Annotation.get_tightbbox"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">text.Annotation.get_tightbbox</span></code></a> always returned the full
<aclass="reference internal" href="text_api.html#matplotlib.text.Annotation.get_window_extent" title="matplotlib.text.Annotation.get_window_extent"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">text.Annotation.get_window_extent</span></code></a> of the object, independent of the value of
<codeclass="docutils literal notranslate"><spanclass="pre">annotation_clip</span></code>. <aclass="reference internal" href="text_api.html#matplotlib.text.Annotation.get_tightbbox" title="matplotlib.text.Annotation.get_tightbbox"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">text.Annotation.get_tightbbox</span></code></a> now correctly takes this
extra clipping box into account, meaning that <aclass="reference internal" href="text_api.html#matplotlib.text.Annotation" title="matplotlib.text.Annotation"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Annotation</span></code></a>s that are
not drawn because of <codeclass="docutils literal notranslate"><spanclass="pre">annotation_clip</span></code> will not count towards the Axes
bounding box calculations, such as those done by <aclass="reference internal" href="_as_gen/matplotlib.pyplot.tight_layout.html#matplotlib.pyplot.tight_layout" title="matplotlib.pyplot.tight_layout"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">tight_layout</span></code></a>.</p>
<p>This is now consistent with the API described in <aclass="reference internal" href="artist_api.html#matplotlib.artist.Artist" title="matplotlib.artist.Artist"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Artist</span></code></a>, which
specifies that <codeclass="docutils literal notranslate"><spanclass="pre">get_window_extent</span></code> should return the full extents and
<codeclass="docutils literal notranslate"><spanclass="pre">get_tightbbox</span></code> should "account for any clipping".</p>
<h4>Parasite Axes pcolor and pcolormesh now defaults to placing grid edges at integers, not half-integers<aclass="headerlink" href="#parasite-axes-pcolor-and-pcolormesh-now-defaults-to-placing-grid-edges-at-integers-not-half-integers" title="Permalink to this headline">¶</a></h4>
<p>This is consistent with <aclass="reference internal" href="_as_gen/matplotlib.axes.Axes.pcolor.html#matplotlib.axes.Axes.pcolor" title="matplotlib.axes.Axes.pcolor"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pcolor</span></code></a> and <aclass="reference internal" href="_as_gen/matplotlib.axes.Axes.pcolormesh.html#matplotlib.axes.Axes.pcolormesh" title="matplotlib.axes.Axes.pcolormesh"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pcolormesh</span></code></a>.</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">Colorbar</span></code> outline is now a <codeclass="docutils literal notranslate"><spanclass="pre">Spine</span></code><aclass="headerlink" href="#colorbar-outline-is-now-a-spine" title="Permalink to this headline">¶</a></h4>
<p>The outline of <aclass="reference internal" href="colorbar_api.html#matplotlib.colorbar.Colorbar" title="matplotlib.colorbar.Colorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Colorbar</span></code></a> is now a <aclass="reference internal" href="spines_api.html#matplotlib.spines.Spine" title="matplotlib.spines.Spine"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Spine</span></code></a> and drawn as
one, instead of a <aclass="reference internal" href="_as_gen/matplotlib.patches.Polygon.html#matplotlib.patches.Polygon" title="matplotlib.patches.Polygon"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Polygon</span></code></a> drawn as an artist. This ensures it will always be
drawn after (i.e., on top of) all artists, consistent with Spines on normal
<h4><codeclass="docutils literal notranslate"><spanclass="pre">Colorbar.dividers</span></code> changes<aclass="headerlink" href="#colorbar-dividers-changes" title="Permalink to this headline">¶</a></h4>
<p>This attribute is now always a <aclass="reference internal" href="collections_api.html#matplotlib.collections.LineCollection" title="matplotlib.collections.LineCollection"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">LineCollection</span></code></a> -- an empty one if
<codeclass="docutils literal notranslate"><spanclass="pre">drawedges</span></code> is <em>False</em>. Its default colors and linewidth
(<codeclass="docutils literal notranslate"><aclass="reference external" href="../tutorials/introductory/customizing.html?highlight=axes.edgecolor#a-sample-matplotlibrc-file"><spanclass="pre">rcParams["axes.edgecolor"]</span></a></code> (default: <codeclass="docutils literal notranslate"><spanclass="pre">'black'</span></code>), <codeclass="docutils literal notranslate"><aclass="reference external" href="../tutorials/introductory/customizing.html?highlight=axes.linewidth#a-sample-matplotlibrc-file"><spanclass="pre">rcParams["axes.linewidth"]</span></a></code> (default: <codeclass="docutils literal notranslate"><spanclass="pre">0.8</span></code>)) are now resolved at instantiation
<h4>Raise or warn on registering a colormap twice<aclass="headerlink" href="#raise-or-warn-on-registering-a-colormap-twice" title="Permalink to this headline">¶</a></h4>
<p>When using <aclass="reference internal" href="cm_api.html#matplotlib.cm.register_cmap" title="matplotlib.cm.register_cmap"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">matplotlib.cm.register_cmap</span></code></a> to register a user provided or
third-party colormap it will now raise a <aclass="reference external" href="https://docs.python.org/3/library/exceptions.html#ValueError" title="(in Python v3.9)"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">ValueError</span></code></a> if trying to over-write
one of the built in colormaps and warn if trying to over write a user
registered colormap. This may raise for user-registered colormaps in the
<h4>Consecutive rasterized draws now merged<aclass="headerlink" href="#consecutive-rasterized-draws-now-merged" title="Permalink to this headline">¶</a></h4>
<p>Tracking of depth of raster draws has moved from
<aclass="reference internal" href="backend_mixed_api.html#matplotlib.backends.backend_mixed.MixedModeRenderer.start_rasterizing" title="matplotlib.backends.backend_mixed.MixedModeRenderer.start_rasterizing"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">backend_mixed.MixedModeRenderer.start_rasterizing</span></code></a> and
<aclass="reference internal" href="backend_mixed_api.html#matplotlib.backends.backend_mixed.MixedModeRenderer.stop_rasterizing" title="matplotlib.backends.backend_mixed.MixedModeRenderer.stop_rasterizing"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">backend_mixed.MixedModeRenderer.stop_rasterizing</span></code></a> into
<aclass="reference internal" href="_as_gen/matplotlib.artist.allow_rasterization.html#matplotlib.artist.allow_rasterization" title="matplotlib.artist.allow_rasterization"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">artist.allow_rasterization</span></code></a>. This means the start and stop functions are only
called when the rasterization actually needs to be started and stopped.</p>
<p>The output of vector backends will change in the case that rasterized elements
are merged. This should not change the appearance of outputs.</p>
<p>The renders in 3rd party backends are now expected to have
<codeclass="docutils literal notranslate"><spanclass="pre">self._raster_depth</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">self._rasterizing</span></code> initialized to <codeclass="docutils literal notranslate"><spanclass="pre">0</span></code> and
<h4>Consistent behavior of <codeclass="docutils literal notranslate"><spanclass="pre">draw_if_interactive()</span></code> across backends<aclass="headerlink" href="#consistent-behavior-of-draw-if-interactive-across-backends" title="Permalink to this headline">¶</a></h4>
<p><aclass="reference internal" href="_as_gen/matplotlib.pyplot.draw_if_interactive.html#matplotlib.pyplot.draw_if_interactive" title="matplotlib.pyplot.draw_if_interactive"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.draw_if_interactive</span></code></a> no longer shows the window (if it was previously
unshown) on the Tk and nbAgg backends, consistently with all other backends.</p>
<h4>The Artist property <em>rasterized</em> cannot be <em>None</em> anymore<aclass="headerlink" href="#the-artist-property-rasterized-cannot-be-none-anymore" title="Permalink to this headline">¶</a></h4>
<p>It is now a boolean only. Before the default was <em>None</em> and
<aclass="reference internal" href="_as_gen/matplotlib.artist.Artist.set_rasterized.html#matplotlib.artist.Artist.set_rasterized" title="matplotlib.artist.Artist.set_rasterized"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Artist.set_rasterized</span></code></a> was documented to accept <em>None</em>. However, <em>None</em> did
not have a special meaning and was treated as <em>False</em>.</p>
<h4>Canvas's callback registry now stored on Figure<aclass="headerlink" href="#canvas-s-callback-registry-now-stored-on-figure" title="Permalink to this headline">¶</a></h4>
<p>The canonical location of the <aclass="reference internal" href="cbook_api.html#matplotlib.cbook.CallbackRegistry" title="matplotlib.cbook.CallbackRegistry"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">CallbackRegistry</span></code></a> used to handle
Figure/Canvas events has been moved from the Canvas to the Figure. This change
should be transparent to almost all users, however if you are swapping
switching the Figure out from on top of a Canvas or visa versa you may see a
<h4>Harmonized key event data across backends<aclass="headerlink" href="#harmonized-key-event-data-across-backends" title="Permalink to this headline">¶</a></h4>
<p>The different backends with key translation support, now handle "Shift" as a
sometimes modifier, where the <codeclass="docutils literal notranslate"><spanclass="pre">'shift+'</span></code> prefix won't be added if a key
translation was made.</p>
<p>In the Qt5 backend, the <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.backends.backend_qt5.SPECIAL_KEYS</span></code>
dictionary contains keys that do <em>not</em> return their unicode name instead they
have manually specified names. The name for <codeclass="docutils literal notranslate"><spanclass="pre">QtCore.Qt.Key_Meta</span></code> has changed
to <codeclass="docutils literal notranslate"><spanclass="pre">'meta'</span></code> to be consistent with the other GUI backends.</p>
<p>The WebAgg backend now handles key translations correctly on non-US keyboard
layouts.</p>
<p>In the GTK and Tk backends, the handling of non-ASCII keypresses (as reported
in the KeyEvent passed to <codeclass="docutils literal notranslate"><spanclass="pre">key_press_event</span></code>-handlers) now correctly reports
Unicode characters (e.g., €), and better respects NumLock on the numpad.</p>
<p>In the GTK and Tk backends, the following key names have changed; the new names
are consistent with those reported by the Qt backends:</p>
<ulclass="simple">
<li>The "Break/Pause" key (keysym 0xff13) is now reported as <codeclass="docutils literal notranslate"><spanclass="pre">"pause"</span></code> instead
of <codeclass="docutils literal notranslate"><spanclass="pre">"break"</span></code> (this is also consistent with the X key name).</li>
<li>The numpad "delete" key is now reported as <codeclass="docutils literal notranslate"><spanclass="pre">"delete"</span></code> instead of <codeclass="docutils literal notranslate"><spanclass="pre">"dec"</span></code>.</li>
<h4>WebAgg backend no longer reports a middle click as a right click<aclass="headerlink" href="#webagg-backend-no-longer-reports-a-middle-click-as-a-right-click" title="Permalink to this headline">¶</a></h4>
<p>Previously when using the WebAgg backend the event passed to a callback by
<codeclass="docutils literal notranslate"><spanclass="pre">fig.canvas.mpl_connect('mouse_button_event',</span><spanclass="pre">callback)</span></code> on a middle click
<h4>ID attribute of XML tags in SVG files now based on SHA256 rather than MD5<aclass="headerlink" href="#id-attribute-of-xml-tags-in-svg-files-now-based-on-sha256-rather-than-md5" title="Permalink to this headline">¶</a></h4>
<p>Matplotlib generates unique ID attributes for various tags in SVG files.
Matplotlib previously generated these unique IDs using the first 10 characters
of an MD5 hash. The MD5 hashing algorithm is not available in Python on systems
with Federal Information Processing Standards (FIPS) enabled. Matplotlib now
uses the first 10 characters of an SHA256 hash instead. SVG files that would
otherwise match those saved with earlier versions of matplotlib, will have
<h4><codeclass="docutils literal notranslate"><spanclass="pre">RendererPS.set_font</span></code> is no longer a no-op in AFM mode<aclass="headerlink" href="#rendererps-set-font-is-no-longer-a-no-op-in-afm-mode" title="Permalink to this headline">¶</a></h4>
<p><aclass="reference internal" href="backend_ps_api.html#matplotlib.backends.backend_ps.RendererPS.set_font" title="matplotlib.backends.backend_ps.RendererPS.set_font"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">RendererPS.set_font</span></code></a> now sets the current PostScript font in all cases.</p>
</div>
<divclass="section" id="autoscaling-in-axes3d">
<h4>Autoscaling in Axes3D<aclass="headerlink" href="#autoscaling-in-axes3d" title="Permalink to this headline">¶</a></h4>
<p>In Matplotlib 3.2.0, autoscaling was made lazier for 2D Axes, i.e., limits
would only be recomputed when actually rendering the canvas, or when the user
queries the Axes limits. This performance improvement is now extended to
<aclass="reference internal" href="_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html#mpl_toolkits.mplot3d.axes3d.Axes3D" title="mpl_toolkits.mplot3d.axes3d.Axes3D"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes3D</span></code></a>. This also fixes some issues with autoscaling being triggered
unexpectedly in Axes3D.</p>
<p>Please see <aclass="reference internal" href="prev_api_changes/api_changes_3.2.0.html#api-changes-3-2-0-autoscaling"><spanclass="std std-ref">the API change for 2D Axes</span></a>
<h4>Axes3D automatically adding itself to Figure is deprecated<aclass="headerlink" href="#axes3d-automatically-adding-itself-to-figure-is-deprecated" title="Permalink to this headline">¶</a></h4>
<p>New <aclass="reference internal" href="_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html#mpl_toolkits.mplot3d.axes3d.Axes3D" title="mpl_toolkits.mplot3d.axes3d.Axes3D"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes3D</span></code></a> objects previously added themselves to figures when they were
created, unlike all other Axes classes, which lead to them being added twice if
<codeclass="docutils literal notranslate"><spanclass="pre">fig.add_subplot(111,</span><spanclass="pre">projection='3d')</span></code> was called.</p>
<p>This behavior is now deprecated and will warn. The new keyword argument
<em>auto_add_to_figure</em> controls the behavior and can be used to suppress the
warning. The default value will change to <em>False</em> in Matplotlib 3.5, and any
non-<em>False</em> value will be an error in Matplotlib 3.6.</p>
<p>In the future, <aclass="reference internal" href="_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html#mpl_toolkits.mplot3d.axes3d.Axes3D" title="mpl_toolkits.mplot3d.axes3d.Axes3D"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes3D</span></code></a> will need to be explicitly added to the figure</p>
<p>as needs to be done for other <aclass="reference internal" href="axes_api.html#matplotlib.axes.Axes" title="matplotlib.axes.Axes"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">axes.Axes</span></code></a> sub-classes. Or, a 3D projection can
<h4>Changed cursive and fantasy font definitions<aclass="headerlink" href="#changed-cursive-and-fantasy-font-definitions" title="Permalink to this headline">¶</a></h4>
<p>The Comic Sans and Comic Neue fonts were moved from the default
<codeclass="docutils literal notranslate"><aclass="reference external" href="../tutorials/introductory/customizing.html?highlight=font.fantasy#a-sample-matplotlibrc-file"><spanclass="pre">rcParams["font.fantasy"]</span></a></code> (default: <codeclass="docutils literal notranslate"><spanclass="pre">['Chicago',</span><spanclass="pre">'Charcoal',</span><spanclass="pre">'Impact',</span><spanclass="pre">'Western',</span><spanclass="pre">'Humor</span><spanclass="pre">Sans',</span><spanclass="pre">'xkcd',</span><spanclass="pre">'fantasy']</span></code>) list to the default <codeclass="docutils literal notranslate"><aclass="reference external" href="../tutorials/introductory/customizing.html?highlight=font.cursive#a-sample-matplotlibrc-file"><spanclass="pre">rcParams["font.cursive"]</span></a></code> (default: <codeclass="docutils literal notranslate"><spanclass="pre">['Apple</span><spanclass="pre">Chancery',</span><spanclass="pre">'Textile',</span><spanclass="pre">'Zapf</span><spanclass="pre">Chancery',</span><spanclass="pre">'Sand',</span><spanclass="pre">'Script</span><spanclass="pre">MT',</span><spanclass="pre">'Felipa',</span><spanclass="pre">'Comic</span><spanclass="pre">Neue',</span><spanclass="pre">'Comic</span><spanclass="pre">Sans</span><spanclass="pre">MS',</span><spanclass="pre">'cursive']</span></code>) setting, in
accordance with the CSS font families <aclass="reference external" href="https://www.w3.org/Style/Examples/007/fonts.en.html">example</a> and in order to provide a
cursive font present in Microsoft's Core Fonts set.</p>
<h4>docstring.Substitution now always dedents docstrings before string interpolation<aclass="headerlink" href="#docstring-substitution-now-always-dedents-docstrings-before-string-interpolation" title="Permalink to this headline">¶</a></h4>
</div>
</div>
<divclass="section" id="deprecations">
<h3><aclass="toc-backref" href="#id4">Deprecations</a><aclass="headerlink" href="#deprecations" title="Permalink to this headline">¶</a></h3>
<h4>Extra parameters to Axes constructor<aclass="headerlink" href="#extra-parameters-to-axes-constructor" title="Permalink to this headline">¶</a></h4>
<p>Parameters of the Axes constructor other than <em>fig</em> and <em>rect</em> will become
<h4><codeclass="docutils literal notranslate"><spanclass="pre">pyplot.gca</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Figure.gca</span></code> keyword arguments<aclass="headerlink" href="#pyplot-gca-and-figure-gca-keyword-arguments" title="Permalink to this headline">¶</a></h4>
<p>Passing keyword arguments to <aclass="reference internal" href="_as_gen/matplotlib.pyplot.gca.html#matplotlib.pyplot.gca" title="matplotlib.pyplot.gca"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.gca</span></code></a> or <aclass="reference internal" href="figure_api.html#matplotlib.figure.Figure.gca" title="matplotlib.figure.Figure.gca"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">figure.Figure.gca</span></code></a> will not be
<h4><codeclass="docutils literal notranslate"><spanclass="pre">Axis.cla</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">RadialAxis.cla</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">ThetaAxis.cla</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Spine.cla</span></code><aclass="headerlink" href="#axis-cla-radialaxis-cla-thetaaxis-cla-and-spine-cla" title="Permalink to this headline">¶</a></h4>
<p>These methods are deprecated in favor of the respective <codeclass="docutils literal notranslate"><spanclass="pre">clear()</span></code> methods.</p>
<h4>Invalid hatch pattern characters are no longer ignored<aclass="headerlink" href="#invalid-hatch-pattern-characters-are-no-longer-ignored" title="Permalink to this headline">¶</a></h4>
<p>When specifying hatching patterns, characters that are not recognized will
raise a deprecation warning. In the future, this will become a hard error.</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">imread</span></code> reading from URLs<aclass="headerlink" href="#imread-reading-from-urls" title="Permalink to this headline">¶</a></h4>
<p>Passing a URL to <aclass="reference internal" href="_as_gen/matplotlib.pyplot.imread.html#matplotlib.pyplot.imread" title="matplotlib.pyplot.imread"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">imread()</span></code></a> is deprecated. Please open the URL for
reading and directly use the Pillow API
(<codeclass="docutils literal notranslate"><spanclass="pre">PIL.Image.open(urllib.request.urlopen(url))</span></code>, or
<h4>Subplot-related attributes and methods<aclass="headerlink" href="#subplot-related-attributes-and-methods" title="Permalink to this headline">¶</a></h4>
<p>Some <codeclass="docutils literal notranslate"><spanclass="pre">SubplotBase</span></code> methods and attributes have been deprecated and/or moved
to <aclass="reference internal" href="_as_gen/matplotlib.gridspec.SubplotSpec.html#matplotlib.gridspec.SubplotSpec" title="matplotlib.gridspec.SubplotSpec"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">SubplotSpec</span></code></a>:</p>
corresponding methods on the <aclass="reference internal" href="_as_gen/matplotlib.gridspec.SubplotSpec.html#matplotlib.gridspec.SubplotSpec" title="matplotlib.gridspec.SubplotSpec"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">SubplotSpec</span></code></a> instance instead),</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">update_params</span></code> (now a no-op),</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">figbox</span></code> (use <codeclass="docutils literal notranslate"><spanclass="pre">ax.get_subplotspec().get_geometry(ax.figure)</span></code> instead to
recompute the geometry, or <codeclass="docutils literal notranslate"><spanclass="pre">ax.get_position()</span></code> to read its current value),</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">numRows</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">numCols</span></code> (use the <codeclass="docutils literal notranslate"><spanclass="pre">nrows</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">ncols</span></code> attribute on the
<p>Likewise, the <codeclass="docutils literal notranslate"><spanclass="pre">get_geometry</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">change_geometry</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">update_params</span></code>, and
<codeclass="docutils literal notranslate"><spanclass="pre">figbox</span></code> methods/attributes of <aclass="reference internal" href="_as_gen/mpl_toolkits.axes_grid1.axes_divider.SubplotDivider.html#mpl_toolkits.axes_grid1.axes_divider.SubplotDivider" title="mpl_toolkits.axes_grid1.axes_divider.SubplotDivider"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">SubplotDivider</span></code></a> have been deprecated, with
similar replacements.</p>
</div>
<divclass="section" id="is-url-and-url-regex">
<h4><codeclass="docutils literal notranslate"><spanclass="pre">is_url</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">URL_REGEX</span></code><aclass="headerlink" href="#is-url-and-url-regex" title="Permalink to this headline">¶</a></h4>
<p>... are deprecated. (They were previously defined in the toplevel
<h4><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.style.core</span></code> deprecations<aclass="headerlink" href="#matplotlib-style-core-deprecations" title="Permalink to this headline">¶</a></h4>
<p><codeclass="docutils literal notranslate"><spanclass="pre">STYLE_FILE_PATTERN</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">load_base_library</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">iter_user_libraries</span></code> are
<h4>Passing <codeclass="docutils literal notranslate"><spanclass="pre">boxstyle="custom",</span><spanclass="pre">bbox_transmuter=...</span></code> to <codeclass="docutils literal notranslate"><spanclass="pre">FancyBboxPatch</span></code><aclass="headerlink" href="#passing-boxstyle-custom-bbox-transmuter-to-fancybboxpatch" title="Permalink to this headline">¶</a></h4>
<p>In order to use a custom boxstyle, directly pass it as the <em>boxstyle</em> argument
to <aclass="reference internal" href="_as_gen/matplotlib.patches.FancyBboxPatch.html#matplotlib.patches.FancyBboxPatch" title="matplotlib.patches.FancyBboxPatch"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">FancyBboxPatch</span></code></a>. This was previously already possible, and is consistent
with custom arrow styles and connection styles.</p>
<h4>BoxStyles are now called without passing the <em>mutation_aspect</em> parameter<aclass="headerlink" href="#boxstyles-are-now-called-without-passing-the-mutation-aspect-parameter" title="Permalink to this headline">¶</a></h4>
<p>Mutation aspect is now handled by the artist itself. Hence the
<em>mutation_aspect</em> parameter of <codeclass="docutils literal notranslate"><spanclass="pre">BoxStyle._Base.__call__</span></code> is deprecated, and
custom boxstyles should be implemented to not require this parameter (it can be
left as a parameter defaulting to 1 for back-compatibility).</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">ContourLabeler.get_label_coords</span></code> is deprecated<aclass="headerlink" href="#contourlabeler-get-label-coords-is-deprecated" title="Permalink to this headline">¶</a></h4>
<h4>Line2D and Patch no longer duplicate <codeclass="docutils literal notranslate"><spanclass="pre">validJoin</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">validCap</span></code><aclass="headerlink" href="#line2d-and-patch-no-longer-duplicate-validjoin-and-validcap" title="Permalink to this headline">¶</a></h4>
<p>Validation of joinstyle and capstyles is now centralized in <codeclass="docutils literal notranslate"><spanclass="pre">rcsetup</span></code>.</p>
<h4>Setting a Line2D's pickradius via <codeclass="docutils literal notranslate"><spanclass="pre">set_picker</span></code> is undeprecated<aclass="headerlink" href="#setting-a-line2d-s-pickradius-via-set-picker-is-undeprecated" title="Permalink to this headline">¶</a></h4>
<p>This cancels the deprecation introduced in Matplotlib 3.3.0.</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">MarkerStyle</span></code> is considered immutable<aclass="headerlink" href="#markerstyle-is-considered-immutable" title="Permalink to this headline">¶</a></h4>
<p><codeclass="docutils literal notranslate"><spanclass="pre">MarkerStyle.set_fillstyle()</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">MarkerStyle.set_marker()</span></code> are
deprecated. Create a new <codeclass="docutils literal notranslate"><spanclass="pre">MarkerStyle</span></code> with the respective parameters
<h4><codeclass="docutils literal notranslate"><spanclass="pre">MovieWriter.cleanup</span></code> is deprecated<aclass="headerlink" href="#moviewriter-cleanup-is-deprecated" title="Permalink to this headline">¶</a></h4>
<p>Cleanup logic is now fully implemented in <aclass="reference internal" href="_as_gen/matplotlib.animation.MovieWriter.html#matplotlib.animation.MovieWriter.finish" title="matplotlib.animation.MovieWriter.finish"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">MovieWriter.finish</span></code></a>. Third-party
movie writers should likewise move the relevant cleanup logic there, as
overridden <codeclass="docutils literal notranslate"><spanclass="pre">cleanup</span></code>s will no longer be called in the future.</p>
<h4><em>minimumdescent</em> parameter/property of <codeclass="docutils literal notranslate"><spanclass="pre">TextArea</span></code><aclass="headerlink" href="#minimumdescent-parameter-property-of-textarea" title="Permalink to this headline">¶</a></h4>
<p><aclass="reference internal" href="offsetbox_api.html#matplotlib.offsetbox.TextArea" title="matplotlib.offsetbox.TextArea"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">offsetbox.TextArea</span></code></a> has behaved as if <em>minimumdescent</em> was always True
(regardless of the value to which it was set) since Matplotlib 1.3, so the
<h4><codeclass="docutils literal notranslate"><spanclass="pre">colorbar</span></code> now warns when the mappable's Axes is different from the current Axes<aclass="headerlink" href="#colorbar-now-warns-when-the-mappable-s-axes-is-different-from-the-current-axes" title="Permalink to this headline">¶</a></h4>
<p>Currently, <aclass="reference internal" href="figure_api.html#matplotlib.figure.Figure.colorbar" title="matplotlib.figure.Figure.colorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Figure.colorbar</span></code></a> and <aclass="reference internal" href="_as_gen/matplotlib.pyplot.colorbar.html#matplotlib.pyplot.colorbar" title="matplotlib.pyplot.colorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.colorbar</span></code></a> steal space by default
from the current Axes to place the colorbar. In a future version, they will
steal space from the mappable's Axes instead. In preparation for this change,
<aclass="reference internal" href="figure_api.html#matplotlib.figure.Figure.colorbar" title="matplotlib.figure.Figure.colorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Figure.colorbar</span></code></a> and <aclass="reference internal" href="_as_gen/matplotlib.pyplot.colorbar.html#matplotlib.pyplot.colorbar" title="matplotlib.pyplot.colorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">pyplot.colorbar</span></code></a> now emits a warning when the current
Axes is not the same as the mappable's Axes.</p>
</div>
<divclass="section" id="colorbar-docstrings">
<h4>Colorbar docstrings<aclass="headerlink" href="#colorbar-docstrings" title="Permalink to this headline">¶</a></h4>
<p>The following globals in <aclass="reference internal" href="colorbar_api.html#module-matplotlib.colorbar" title="matplotlib.colorbar"><codeclass="xref py py-mod docutils literal notranslate"><spanclass="pre">matplotlib.colorbar</span></code></a> are deprecated:
<h4><codeclass="docutils literal notranslate"><spanclass="pre">ColorbarPatch</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">colorbar_factory</span></code> are deprecated<aclass="headerlink" href="#colorbarpatch-and-colorbar-factory-are-deprecated" title="Permalink to this headline">¶</a></h4>
<p>All the relevant functionality has been moved to the
<li>The <codeclass="docutils literal notranslate"><spanclass="pre">key_press</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">button_press</span></code> methods of <aclass="reference internal" href="backend_bases_api.html#matplotlib.backend_bases.FigureManagerBase" title="matplotlib.backend_bases.FigureManagerBase"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">FigureManagerBase</span></code></a>, which
incorrectly did nothing when using <codeclass="docutils literal notranslate"><spanclass="pre">toolmanager</span></code>, are deprecated in favor
of directly passing the event to the <aclass="reference internal" href="cbook_api.html#matplotlib.cbook.CallbackRegistry" title="matplotlib.cbook.CallbackRegistry"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">CallbackRegistry</span></code></a> via
<h4>wx backend cleanups<aclass="headerlink" href="#wx-backend-cleanups" title="Permalink to this headline">¶</a></h4>
<p>The <em>origin</em> parameter to <codeclass="docutils literal notranslate"><spanclass="pre">_FigureCanvasWxBase.gui_repaint</span></code> is deprecated
with no replacement; <codeclass="docutils literal notranslate"><spanclass="pre">gui_repaint</span></code> now automatically detects the case where
it is used with the wx renderer.</p>
<p>The <codeclass="docutils literal notranslate"><spanclass="pre">NavigationToolbar2Wx.get_canvas</span></code> method is deprecated; directly
instantiate a canvas (<codeclass="docutils literal notranslate"><spanclass="pre">FigureCanvasWxAgg(frame,</span><spanclass="pre">-1,</span><spanclass="pre">figure)</span></code>) if needed.</p>
<h4>Unused positional parameters to <codeclass="docutils literal notranslate"><spanclass="pre">print_<fmt></span></code> methods are deprecated<aclass="headerlink" href="#unused-positional-parameters-to-print-fmt-methods-are-deprecated" title="Permalink to this headline">¶</a></h4>
<p>None of the <codeclass="docutils literal notranslate"><spanclass="pre">print_<fmt></span></code> methods implemented by canvas subclasses used
positional arguments other that the first (the output filename or file-like),
<h4>The <em>dpi</em> parameter of <codeclass="docutils literal notranslate"><spanclass="pre">FigureCanvas.print_foo</span></code> printers is deprecated<aclass="headerlink" href="#the-dpi-parameter-of-figurecanvas-print-foo-printers-is-deprecated" title="Permalink to this headline">¶</a></h4>
<p>The <aclass="reference internal" href="figure_api.html#matplotlib.figure.Figure.savefig" title="matplotlib.figure.Figure.savefig"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">savefig</span></code></a> machinery already took care of setting the figure DPI
to the desired value, so <codeclass="docutils literal notranslate"><spanclass="pre">print_foo</span></code> can directly read it from there. Not
passing <em>dpi</em> to <codeclass="docutils literal notranslate"><spanclass="pre">print_foo</span></code> allows clearer detection of unused parameters
<h4><codeclass="docutils literal notranslate"><spanclass="pre">ps.useafm</span></code> deprecated for mathtext<aclass="headerlink" href="#ps-useafm-deprecated-for-mathtext" title="Permalink to this headline">¶</a></h4>
<p>Outputting mathtext using only standard PostScript fonts has likely been broken
for a while (issue <aclass="reference external" href="https://github.com/matplotlib/matplotlib/issues/18722">#18722</a>). In Matplotlib 3.5,
the setting <codeclass="docutils literal notranslate"><aclass="reference external" href="../tutorials/introductory/customizing.html?highlight=ps.useafm#a-sample-matplotlibrc-file"><spanclass="pre">rcParams["ps.useafm"]</span></a></code> (default: <codeclass="docutils literal notranslate"><spanclass="pre">False</span></code>) will have no effect on mathtext.</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">MathTextParser("bitmap")</span></code> is deprecated<aclass="headerlink" href="#mathtextparser-bitmap-is-deprecated" title="Permalink to this headline">¶</a></h4>
<codeclass="docutils literal notranslate"><spanclass="pre">MathTextParser.to_rgba</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">MathTextParser.to_png</span></code>, and
<codeclass="docutils literal notranslate"><spanclass="pre">MathTextParser.get_depth</span></code> are likewise deprecated.</p>
<p>To convert a text string to an image, either directly draw the text to an
empty <aclass="reference internal" href="figure_api.html#matplotlib.figure.Figure" title="matplotlib.figure.Figure"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Figure</span></code></a> and save the figure using a tight bbox, as demonstrated in
<aclass="reference internal" href="../gallery/text_labels_and_annotations/mathtext_asarray.html"><spanclass="doc">Convert texts to images</span></a>, or use
<p>When using <aclass="reference internal" href="mathtext_api.html#matplotlib.mathtext.math_to_image" title="matplotlib.mathtext.math_to_image"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">math_to_image</span></code></a>, text color can be set with e.g.:</p>
<h4>Deprecation of mathtext internals<aclass="headerlink" href="#deprecation-of-mathtext-internals" title="Permalink to this headline">¶</a></h4>
<p>The following API elements previously exposed by the <aclass="reference internal" href="mathtext_api.html#module-matplotlib.mathtext" title="matplotlib.mathtext"><codeclass="xref py py-mod docutils literal notranslate"><spanclass="pre">mathtext</span></code></a> module
are considered to be implementation details and public access to them is
deprecated:</p>
<ulclass="simple">
<li><codeclass="docutils literal notranslate"><spanclass="pre">Fonts</span></code> and all its subclasses,</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">FontConstantsBase</span></code> and all its subclasses,</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">Node</span></code> and all its subclasses,</li>
<h4>Deprecation of various mathtext helpers<aclass="headerlink" href="#deprecation-of-various-mathtext-helpers" title="Permalink to this headline">¶</a></h4>
and <codeclass="docutils literal notranslate"><spanclass="pre">MathtextBackendCairo</span></code> classes from the <aclass="reference internal" href="mathtext_api.html#module-matplotlib.mathtext" title="matplotlib.mathtext"><codeclass="xref py py-mod docutils literal notranslate"><spanclass="pre">mathtext</span></code></a> module, as
well as the corresponding <codeclass="docutils literal notranslate"><spanclass="pre">.mathtext_parser</span></code> attributes on <codeclass="docutils literal notranslate"><spanclass="pre">RendererPdf</span></code>,
<codeclass="docutils literal notranslate"><spanclass="pre">RendererPS</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">RendererSVG</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">RendererCairo</span></code>, are deprecated. The
<codeclass="docutils literal notranslate"><spanclass="pre">MathtextBackendPath</span></code> class can be used to obtain a list of glyphs and
rectangles in a mathtext expression, and renderer-specific logic should be
directly implemented in the renderer.</p>
<p><codeclass="docutils literal notranslate"><spanclass="pre">StandardPsFonts.pswriter</span></code> is unused and deprecated.</p>
</div>
<divclass="section" id="widget-class-internals">
<h4>Widget class internals<aclass="headerlink" href="#widget-class-internals" title="Permalink to this headline">¶</a></h4>
<p>Several <aclass="reference internal" href="widgets_api.html#matplotlib.widgets.Widget" title="matplotlib.widgets.Widget"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">widgets.Widget</span></code></a> class internals have been privatized and deprecated:</p>
<p>These attributes are all available via <aclass="reference internal" href="_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html#mpl_toolkits.mplot3d.axes3d.Axes3D" title="mpl_toolkits.mplot3d.axes3d.Axes3D"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axes3D</span></code></a>, which can be accessed via
<codeclass="docutils literal notranslate"><spanclass="pre">self.axes</span></code> on all <aclass="reference internal" href="artist_api.html#matplotlib.artist.Artist" title="matplotlib.artist.Artist"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Artist</span></code></a>s.</p>
<h4><em>renderer</em> argument of <codeclass="docutils literal notranslate"><spanclass="pre">do_3d_projection</span></code> method for <codeclass="docutils literal notranslate"><spanclass="pre">Collection3D</span></code>/<codeclass="docutils literal notranslate"><spanclass="pre">Patch3D</span></code><aclass="headerlink" href="#renderer-argument-of-do-3d-projection-method-for-collection3d-patch3d" title="Permalink to this headline">¶</a></h4>
<p>The <em>renderer</em> argument for the <codeclass="docutils literal notranslate"><spanclass="pre">do_3d_projection</span></code> method on <codeclass="docutils literal notranslate"><spanclass="pre">Collection3D</span></code>
and <codeclass="docutils literal notranslate"><spanclass="pre">Patch3D</span></code> is no longer necessary, and passing it during draw is
<h4><em>project</em> argument of <codeclass="docutils literal notranslate"><spanclass="pre">draw</span></code> method for <codeclass="docutils literal notranslate"><spanclass="pre">Line3DCollection</span></code><aclass="headerlink" href="#project-argument-of-draw-method-for-line3dcollection" title="Permalink to this headline">¶</a></h4>
<p>The <em>project</em> argument for the <codeclass="docutils literal notranslate"><spanclass="pre">draw</span></code> method on <codeclass="docutils literal notranslate"><spanclass="pre">Line3DCollection</span></code> is
<h4>Extra positional parameters to <codeclass="docutils literal notranslate"><spanclass="pre">plot_surface</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">plot_wireframe</span></code><aclass="headerlink" href="#extra-positional-parameters-to-plot-surface-and-plot-wireframe" title="Permalink to this headline">¶</a></h4>
<p>Positional parameters to <aclass="reference internal" href="_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html#mpl_toolkits.mplot3d.axes3d.Axes3D.plot_surface" title="mpl_toolkits.mplot3d.axes3d.Axes3D.plot_surface"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">plot_surface</span></code></a> and
<aclass="reference internal" href="_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html#mpl_toolkits.mplot3d.axes3d.Axes3D.plot_wireframe" title="mpl_toolkits.mplot3d.axes3d.Axes3D.plot_wireframe"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">plot_wireframe</span></code></a> other than <codeclass="docutils literal notranslate"><spanclass="pre">X</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">Y</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">Z</span></code> are
deprecated. Pass additional artist properties as keyword arguments instead.</p>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">ParasiteAxesAuxTransBase</span></code> class<aclass="headerlink" href="#parasiteaxesauxtransbase-class" title="Permalink to this headline">¶</a></h4>
<p>The functionality of that mixin class has been moved to the base
<codeclass="docutils literal notranslate"><spanclass="pre">ParasiteAxesAuxTrans</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">parasite_axes_auxtrans_class_factory</span></code> are
deprecated.</p>
<p>In general, it is suggested to use <codeclass="docutils literal notranslate"><spanclass="pre">HostAxes.get_aux_axes</span></code> to create
parasite Axes, as this saves the need of manually appending the parasite
to <codeclass="docutils literal notranslate"><spanclass="pre">host.parasites</span></code> and makes sure that their <codeclass="docutils literal notranslate"><spanclass="pre">remove()</span></code> method works
<h4><codeclass="docutils literal notranslate"><spanclass="pre">AxisArtist.ZORDER</span></code> attribute<aclass="headerlink" href="#axisartist-zorder-attribute" title="Permalink to this headline">¶</a></h4>
<h4><codeclass="docutils literal notranslate"><spanclass="pre">GridHelperBase</span></code> invalidation<aclass="headerlink" href="#gridhelperbase-invalidation" title="Permalink to this headline">¶</a></h4>
<p>The <codeclass="docutils literal notranslate"><spanclass="pre">GridHelperBase.invalidate</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">GridHelperBase.valid</span></code>, and
<codeclass="docutils literal notranslate"><spanclass="pre">axislines.Axes.invalidate_grid_helper</span></code> methods are considered internal
<h4><codeclass="docutils literal notranslate"><spanclass="pre">sphinext.plot_directive.align</span></code><aclass="headerlink" href="#sphinext-plot-directive-align" title="Permalink to this headline">¶</a></h4>
<p>... is deprecated. Use <codeclass="docutils literal notranslate"><spanclass="pre">docutils.parsers.rst.directives.images.Image.align</span></code>
<h4>Deprecation-related functionality is considered internal<aclass="headerlink" href="#deprecation-related-functionality-is-considered-internal" title="Permalink to this headline">¶</a></h4>
<p>The module <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.cbook.deprecation</span></code> is considered internal and will be
removed from the public API. This also holds for deprecation-related re-imports
in <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.cbook</span></code>, i.e. <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.cbook.deprecated()</span></code>,
<p>If needed, external users may import <codeclass="docutils literal notranslate"><spanclass="pre">MatplotlibDeprecationWarning</span></code> directly
from the <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib</span></code> namespace. <codeclass="docutils literal notranslate"><spanclass="pre">mplDeprecation</span></code> is only an alias of
<codeclass="docutils literal notranslate"><spanclass="pre">MatplotlibDeprecationWarning</span></code> and should not be used anymore.</p>
</div>
</div>
<divclass="section" id="removals">
<h3><aclass="toc-backref" href="#id5">Removals</a><aclass="headerlink" href="#removals" title="Permalink to this headline">¶</a></h3>
<p>The following deprecated APIs have been removed:</p>
<divclass="section" id="removed-behaviour">
<h4>Removed behaviour<aclass="headerlink" href="#removed-behaviour" title="Permalink to this headline">¶</a></h4>
<ulclass="simple">
<li>The "smart bounds" functionality on <aclass="reference internal" href="axis_api.html#matplotlib.axis.Axis" title="matplotlib.axis.Axis"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Axis</span></code></a> and <aclass="reference internal" href="spines_api.html#matplotlib.spines.Spine" title="matplotlib.spines.Spine"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">Spine</span></code></a> has been
deleted, and the related methods have been removed.</li>
<li>Converting a string with single color characters (e.g. <codeclass="docutils literal notranslate"><spanclass="pre">'cymk'</span></code>) in
<aclass="reference internal" href="_as_gen/matplotlib.colors.to_rgba_array.html#matplotlib.colors.to_rgba_array" title="matplotlib.colors.to_rgba_array"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">to_rgba_array</span></code></a> is no longer supported. Instead, the colors can be
passed individually in a list (e.g. <codeclass="docutils literal notranslate"><spanclass="pre">['c',</span><spanclass="pre">'y',</span><spanclass="pre">'m',</span><spanclass="pre">'k']</span></code>).</li>
<li>Returning a factor equal to <codeclass="docutils literal notranslate"><spanclass="pre">None</span></code> from <codeclass="docutils literal notranslate"><spanclass="pre">mpl_toolkits.axisartist</span></code>
Locators (which are <strong>not</strong> the same as "standard" tick Locators), or passing
a factor equal to <codeclass="docutils literal notranslate"><spanclass="pre">None</span></code> to axisartist Formatters (which are <strong>not</strong> the
same as "standard" tick Formatters) is no longer supported. Pass a factor
equal to 1 instead.</li>
</ul>
</div>
<divclass="section" id="modules">
<h4>Modules<aclass="headerlink" href="#modules" title="Permalink to this headline">¶</a></h4>
<ulclass="simple">
<li>The entire <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.testing.disable_internet</span></code> module has been removed.
The <aclass="reference external" href="https://github.com/astropy/pytest-remotedata">pytest-remotedata package</a> can be used instead.</li>
<li>The <codeclass="docutils literal notranslate"><spanclass="pre">mpl_toolkits.axes_grid1.colorbar</span></code> module and its colorbar
implementation have been removed in favor of <aclass="reference internal" href="colorbar_api.html#module-matplotlib.colorbar" title="matplotlib.colorbar"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">matplotlib.colorbar</span></code></a>.</li>
<codeclass="docutils literal notranslate"><spanclass="pre">.ensure_not_dirty()</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">.reset_available_writers()</span></code> do nothing and
have been removed. The <codeclass="docutils literal notranslate"><spanclass="pre">.avail()</span></code> method has been removed; use <codeclass="docutils literal notranslate"><spanclass="pre">.list()</span></code>
instead to get a list of available writers.</li>
<li>The <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.artist.Artist.eventson</span></code> and
<codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.container.Container.eventson</span></code> attributes have no effect and
have been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.axes.Axes.get_data_ratio_log</span></code> has been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.axes.SubplotBase.rowNum</span></code>; use
<codeclass="docutils literal notranslate"><spanclass="pre">ThetaLocator.autoscale</span></code>, and <codeclass="docutils literal notranslate"><spanclass="pre">YearLocator.autoscale</span></code> have also been
removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.transforms.BboxBase.is_unit</span></code> has been removed; check the
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.transforms.Affine2DBase.matrix_from_values(...)</span></code> has been
removed; use (for example) <codeclass="docutils literal notranslate"><spanclass="pre">Affine2D.from_values(...).get_matrix()</span></code>
instead.</li>
</ul>
<ulclass="simple">
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.backend_bases.FigureCanvasBase.draw_cursor</span></code> has been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.destroy</span></code> and
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.window</span></code> property has
been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.backends.backend_macosx.FigureCanvasMac.invalidate</span></code> has been
removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.backends.backend_pgf.RendererPgf.latexManager</span></code> has been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.dates.mx2num</span></code> has been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.font_manager.createFontList</span></code> has been removed;
<aclass="reference internal" href="font_manager_api.html#matplotlib.font_manager.FontManager.addfont" title="matplotlib.font_manager.FontManager.addfont"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">font_manager.FontManager.addfont</span></code></a> is now available to register a font at a
given path.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.get_home</span></code> has been removed; use standard library instead.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.mlab.apply_window</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.mlab.stride_repeat</span></code> have
been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.rcsetup.update_savefig_format</span></code> has been removed; this just
replaced <codeclass="docutils literal notranslate"><spanclass="pre">'auto'</span></code> with <codeclass="docutils literal notranslate"><spanclass="pre">'png'</span></code>, so do the same.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.rcsetup.validate_animation_writer_path</span></code> has been removed.</li>
<li><codeclass="docutils literal notranslate"><spanclass="pre">matplotlib.rcsetup.validate_path_exists</span></code> has been removed; use