1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364
|
Removals
--------
The following deprecated APIs have been removed:
Removed behaviour
~~~~~~~~~~~~~~~~~
Stricter validation of function parameters
..........................................
- Calling `.Figure.add_axes` with no arguments will raise an error. Adding a
free-floating axes needs a position rectangle. If you want a figure-filling
single axes, use `.Figure.add_subplot` instead.
- `.Figure.add_subplot` validates its inputs; in particular, for
``add_subplot(rows, cols, index)``, all parameters must be integral.
Previously strings and floats were accepted and converted to int.
- Passing *None* as the *which* argument to ``autofmt_xdate`` is no longer
supported; use its more explicit synonym, ``which="major"``, instead.
- Setting the *orientation* of an ``eventplot()`` or `.EventCollection` to
"none" or *None* is no longer supported; set it to "horizontal" instead.
Moreover, the two orientations ("horizontal" and "vertical") are now
case-sensitive.
- Passing parameters *norm* and *vmin*/*vmax* simultaneously to functions using
colormapping such as ``scatter()`` and ``imshow()`` is no longer supported.
Instead of ``norm=LogNorm(), vmin=min_val, vmax=max_val`` pass
``norm=LogNorm(min_val, max_val)``. *vmin* and *vmax* should only be used
without setting *norm*.
- Passing *None* as either the *radius* or *startangle* arguments of an
`.Axes.pie` is no longer accepted; use the explicit defaults of 1 and 0,
respectively, instead.
- Passing *None* as the *normalize* argument of `.Axes.pie` (the former
default) is no longer accepted, and the pie will always be normalized by
default. If you wish to plot an incomplete pie, explicitly pass
``normalize=False``.
- Support for passing *None* to ``subplot_class_factory`` has been removed.
Explicitly pass in the base `~matplotlib.axes.Axes` class instead.
- Passing multiple keys as a single comma-separated string or multiple
arguments to `.ToolManager.update_keymap` is no longer supported; pass keys
as a list of strings instead.
- Passing the dash offset as *None* is no longer accepted, as this was never
universally implemented, e.g. for vector output. Set the offset to 0 instead.
- Setting a custom method overriding `.Artist.contains` using
``Artist.set_contains`` has been removed, as has ``Artist.get_contains``.
There is no replacement, but you may still customize pick events using
`.Artist.set_picker`.
- `~.Axes.semilogx`, `~.Axes.semilogy`, `~.Axes.loglog`, `.LogScale`, and
`.SymmetricalLogScale` used to take keyword arguments that depends on the
axis orientation ("basex" vs "basey", "subsx" vs "subsy", "nonposx" vs
"nonposy"); these parameter names have been removed in favor of "base",
"subs", "nonpositive". This removal also affects e.g. ``ax.set_yscale("log",
basey=...)`` which must now be spelled ``ax.set_yscale("log", base=...)``.
The change from "nonpos" to "nonpositive" also affects
`~.scale.LogTransform`, `~.scale.InvertedLogTransform`,
`~.scale.SymmetricalLogTransform`, etc.
To use *different* bases for the x-axis and y-axis of a `~.Axes.loglog` plot,
use e.g. ``ax.set_xscale("log", base=10); ax.set_yscale("log", base=2)``.
- Passing *None*, or no argument, to ``parasite_axes_class_factory``,
``parasite_axes_auxtrans_class_factory``, ``host_axes_class_factory`` is no
longer accepted; pass an explicit base class instead.
Case-sensitivity is now enforced more
......................................
- Upper or mixed-case property names are no longer normalized to lowercase in
`.Artist.set` and `.Artist.update`. This allows one to pass names such as
*patchA* or *UVC*.
- Case-insensitive capstyles and joinstyles are no longer lower-cased; please
pass capstyles ("miter", "round", "bevel") and joinstyles ("butt", "round",
"projecting") as lowercase.
- Saving metadata in PDF with the PGF backend no longer changes keys to
lowercase. Only the canonically cased keys listed in the PDF specification
(and the `~.backend_pgf.PdfPages` documentation) are accepted.
No implicit initialization of ``Tick`` attributes
.................................................
The `.Tick` constructor no longer initializes the attributes ``tick1line``,
``tick2line``, ``gridline``, ``label1``, and ``label2`` via ``_get_tick1line``,
``_get_tick2line``, ``_get_gridline``, ``_get_text1``, and ``_get_text2``.
Please directly set the attribute in the subclass' ``__init__`` instead.
``NavigationToolbar2`` subclass changes
.......................................
Overriding the ``_init_toolbar`` method of `.NavigationToolbar2` to initialize
third-party toolbars is no longer supported. Instead, the toolbar should be
initialized in the ``__init__`` method of the subclass (which should call the
base-class' ``__init__`` as appropriate).
The ``press`` and ``release`` methods of `.NavigationToolbar2` were called when
pressing or releasing a mouse button, but *only* when an interactive pan or
zoom was occurring (contrary to what the docs stated). They are no longer
called; if you write a backend which needs to customize such events, please
directly override ``press_pan``/``press_zoom``/``release_pan``/``release_zoom``
instead.
Removal of old file mode flag
.............................
Flags containing "U" passed to `.cbook.to_filehandle` and `.cbook.open_file_cm`
are no longer accepted. This is consistent with their removal from `open` in
Python 3.9.
Keymaps toggling ``Axes.get_navigate`` have been removed
........................................................
This includes numeric key events and rcParams.
The ``TTFPATH`` and ``AFMPATH`` environment variables
.....................................................
Support for the (undocumented) ``TTFPATH`` and ``AFMPATH`` environment
variables has been removed. Register additional fonts using
``matplotlib.font_manager.fontManager.addfont()``.
Modules
~~~~~~~
- ``matplotlib.backends.qt_editor.formsubplottool``; use
``matplotlib.backends.backend_qt.SubplotToolQt`` instead.
- ``matplotlib.compat``
- ``matplotlib.ttconv``
- The Qt4-based backends, ``qt4agg`` and ``qt4cairo``, have been removed. Qt4
has reached its end-of-life in 2015 and there are no releases of either PyQt4
or PySide for recent versions of Python. Please use one of the Qt5 or Qt6
backends.
Classes, methods and attributes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following module-level classes/variables have been removed:
- ``backend_bases.StatusbarBase`` and all its subclasses, and ``StatusBarWx``;
messages are displayed in the toolbar
- ``backend_pgf.GraphicsContextPgf``
- ``MODIFIER_KEYS``, ``SUPER``, ``ALT``, ``CTRL``, and ``SHIFT`` of
`matplotlib.backends.backend_qt5agg` and
`matplotlib.backends.backend_qt5cairo`
- ``backend_wx.DEBUG_MSG``
- ``dviread.Encoding``
- ``Fil``, ``Fill``, ``Filll``, ``NegFil``, ``NegFill``, ``NegFilll``, and
``SsGlue`` from `.mathtext`; directly construct glue instances with
``Glue("fil")``, etc.
- ``mathtext.GlueSpec``
- ``OldScalarFormatter``, ``IndexFormatter`` and ``IndexDateFormatter``; use
`.FuncFormatter` instead
- ``OldAutoLocator``
- ``AVConvBase``, ``AVConvWriter`` and ``AVConvFileWriter``. Debian 8 (2015,
EOL 06/2020) and Ubuntu 14.04 (EOL 04/2019) were the last versions of Debian
and Ubuntu to ship avconv. It remains possible to force the use of avconv by
using the FFmpeg-based writers with :rc:`animation.ffmpeg_path` set to
"avconv".
- ``matplotlib.axes._subplots._subplot_classes``
- ``axes_grid1.axes_rgb.RGBAxesBase``; use ``RGBAxes`` instead
The following class attributes have been removed:
- ``backend_pgf.LatexManager.latex_stdin_utf8``
- ``backend_pgf.PdfPages.metadata``
- ``ContourSet.ax`` and ``Quiver.ax``; use ``ContourSet.axes`` or
``Quiver.axes`` as with other artists
- ``DateFormatter.illegal_s``
- ``dates.YearLocator.replaced``; `.YearLocator` is now a subclass of
`.RRuleLocator`, and the attribute ``YearLocator.replaced`` has been removed.
For tick locations that required modifying this, a custom rrule and
`.RRuleLocator` can be used instead.
- ``FigureManagerBase.statusbar``; messages are displayed in the toolbar
- ``FileMovieWriter.clear_temp``
- ``mathtext.Glue.glue_subtype``
- ``MovieWriter.args_key``, ``MovieWriter.exec_key``, and
``HTMLWriter.args_key``
- ``NavigationToolbar2QT.basedir``; the base directory to the icons is
``os.path.join(mpl.get_data_path(), "images")``
- ``NavigationToolbar2QT.ctx``
- ``NavigationToolbar2QT.parent``; to access the parent window, use
``toolbar.canvas.parent()`` or ``toolbar.parent()``
- ``prevZoomRect``, ``retinaFix``, ``savedRetinaImage``, ``wxoverlay``,
``zoomAxes``, ``zoomStartX``, and ``zoomStartY`` attributes of
``NavigationToolbar2Wx``
- ``NonUniformImage.is_grayscale``, ``PcolorImage.is_grayscale``, for
consistency with ``AxesImage.is_grayscale``. (Note that previously, these
attributes were only available *after rendering the image*).
- ``RendererCairo.fontweights``, ``RendererCairo.fontangles``
- ``used_characters`` of `.RendererPdf`, `.PdfFile`, and `.RendererPS`
- ``LogScale.LogTransform``, ``LogScale.InvertedLogTransform``,
``SymmetricalScale.SymmetricalTransform``, and
``SymmetricalScale.InvertedSymmetricalTransform``; directly access the
transform classes from `matplotlib.scale`
- ``cachedir``, ``rgba_arrayd``, ``serif``, ``sans_serif``, ``cursive``, and
``monospace`` attributes of `.TexManager`
- ``axleft``, ``axright``, ``axbottom``, ``axtop``, ``axwspace``, and
``axhspace`` attributes of `.widgets.SubplotTool`; access the ``ax``
attribute of the corresponding slider
- ``widgets.TextBox.params_to_disable``
- ``angle_helper.LocatorBase.den``; it has been renamed to *nbins*
- ``axes_grid.CbarAxesBase.cbid`` and ``axes_grid.CbarAxesBase.locator``; use
``mappable.colorbar_cid`` or ``colorbar.locator`` instead
The following class methods have been removed:
- ``Axes.update_datalim_bounds``; use ``ax.dataLim.set(Bbox.union([ax.dataLim,
bounds]))``
- ``pan`` and ``zoom`` methods of `~.axis.Axis` and `~.ticker.Locator` have
been removed; panning and zooming are now implemented using the
``start_pan``, ``drag_pan``, and ``end_pan`` methods of `~.axes.Axes`
- ``.BboxBase.inverse_transformed``; call `.BboxBase.transformed` on the
`~.Transform.inverted()` transform
- ``Collection.set_offset_position`` and ``Collection.get_offset_position``
have been removed; the ``offset_position`` of the `.Collection` class is now
"screen"
- ``Colorbar.on_mappable_changed`` and ``Colorbar.update_bruteforce``; use
``Colorbar.update_normal()`` instead
- ``docstring.Substitution.from_params`` has been removed; directly assign to
``params`` of ``docstring.Substitution`` instead
- ``DraggableBase.artist_picker``; set the artist's picker instead
- ``DraggableBase.on_motion_blit``; use `.DraggableBase.on_motion` instead
- ``FigureCanvasGTK3._renderer_init``
- ``Locator.refresh()`` and the associated helper methods
``NavigationToolbar2.draw()`` and ``ToolViewsPositions.refresh_locators()``
- ``track_characters`` and ``merge_used_characters`` of `.RendererPdf`,
`.PdfFile`, and `.RendererPS`
- ``RendererWx.get_gc``
- ``SubplotSpec.get_rows_columns``; use the ``GridSpec.nrows``,
``GridSpec.ncols``, ``SubplotSpec.rowspan``, and ``SubplotSpec.colspan``
properties instead.
- ``ScalarMappable.update_dict``, ``ScalarMappable.add_checker()``, and
``ScalarMappable.check_update()``; register a callback in
``ScalarMappable.callbacks`` to be notified of updates
- ``TexManager.make_tex_preview`` and ``TexManager.make_dvi_preview``
- ``funcleft``, ``funcright``, ``funcbottom``, ``functop``, ``funcwspace``, and
``funchspace`` methods of `.widgets.SubplotTool`
- ``axes_grid1.axes_rgb.RGBAxes.add_RGB_to_figure``
- ``axisartist.axis_artist.AxisArtist.dpi_transform``
- ``axisartist.grid_finder.MaxNLocator.set_factor`` and
``axisartist.grid_finder.FixedLocator.set_factor``; the factor is always 1
now
Functions
~~~~~~~~~
- ``bezier.make_path_regular`` has been removed; use ``Path.cleaned()`` (or
``Path.cleaned(curves=True)``, etc.) instead, but note that these methods add
a ``STOP`` code at the end of the path.
- ``bezier.concatenate_paths`` has been removed; use
``Path.make_compound_path()`` instead.
- ``cbook.local_over_kwdict`` has been removed; use `.cbook.normalize_kwargs`
instead.
- ``qt_compat.is_pyqt5`` has been removed due to the release of PyQt6. The Qt
version can be checked using ``QtCore.qVersion()``.
- ``testing.compare.make_external_conversion_command`` has been removed.
- ``axes_grid1.axes_rgb.imshow_rgb`` has been removed; use
``imshow(np.dstack([r, g, b]))`` instead.
Arguments
~~~~~~~~~
- The *s* parameter to `.Axes.annotate` and `.pyplot.annotate` is no longer
supported; use the new name *text*.
- The *inframe* parameter to `matplotlib.axes.Axes.draw` has been removed; use
`.Axes.redraw_in_frame` instead.
- The *required*, *forbidden* and *allowed* parameters of
`.cbook.normalize_kwargs` have been removed.
- The *ismath* parameter of the ``draw_tex`` method of all renderer classes has
been removed (as a call to ``draw_tex`` — not to be confused with
``draw_text``! — means that the entire string should be passed to the
``usetex`` machinery anyways). Likewise, the text machinery will no longer
pass the *ismath* parameter when calling ``draw_tex`` (this should only
matter for backend implementers).
- The *quality*, *optimize*, and *progressive* parameters of `.Figure.savefig`
(which only affected JPEG output) have been removed, as well as from the
corresponding ``print_jpg`` methods. JPEG output options can be set by
directly passing the relevant parameters in *pil_kwargs*.
- The *clear_temp* parameter of `.FileMovieWriter` has been removed; files
placed in a temporary directory (using ``frame_prefix=None``, the default)
will be cleared; files placed elsewhere will not.
- The *copy* parameter of ``mathtext.Glue`` has been removed.
- The *quantize* parameter of `.Path.cleaned()` has been removed.
- The *dummy* parameter of `.RendererPgf` has been removed.
- The *props* parameter of `.Shadow` has been removed; use keyword arguments
instead.
- The *recursionlimit* parameter of ``matplotlib.test`` has been removed.
- The *label* parameter of `.Tick` has no effect and has been removed.
- `~.ticker.MaxNLocator` no longer accepts a positional parameter and the
keyword argument *nbins* simultaneously because they specify the same
quantity.
- The *add_all* parameter to ``axes_grid.Grid``, ``axes_grid.ImageGrid``,
``axes_rgb.make_rgb_axes``, and ``axes_rgb.RGBAxes`` have been removed; the
APIs always behave as if ``add_all=True``.
- The *den* parameter of ``axisartist.angle_helper.LocatorBase`` has been
removed; use *nbins* instead.
- The *s* keyword argument to `.AnnotationBbox.get_fontsize` has no effect and
has been removed.
- The *offset_position* keyword argument of the `.Collection` class has been
removed; the ``offset_position`` now "screen".
- Arbitrary keyword arguments to ``StreamplotSet`` have no effect and have been
removed.
- The *fontdict* and *minor* parameters of `.Axes.set_xticklabels` /
`.Axes.set_yticklabels` are now keyword-only.
- All parameters of `.Figure.subplots` except *nrows* and *ncols* are now
keyword-only; this avoids typing e.g. ``subplots(1, 1, 1)`` when meaning
``subplot(1, 1, 1)``, but actually getting ``subplots(1, 1, sharex=1)``.
- All parameters of `.pyplot.tight_layout` are now keyword-only, to be
consistent with `.Figure.tight_layout`.
- ``ColorbarBase`` only takes a single positional argument now, the ``Axes`` to
create it in, with all other options required to be keyword arguments. The
warning for keyword arguments that were overridden by the mappable is now
removed.
- Omitting the *renderer* parameter to `matplotlib.axes.Axes.draw` is no longer
supported; use ``axes.draw_artist(axes)`` instead.
- Passing ``ismath="TeX!"`` to `.RendererAgg.get_text_width_height_descent` is
no longer supported; pass ``ismath="TeX"`` instead,
- Changes to the signature of the `matplotlib.axes.Axes.draw` method make it
consistent with all other artists; thus additional parameters to
`.Artist.draw` have also been removed.
rcParams
~~~~~~~~
- The ``animation.avconv_path`` and ``animation.avconv_args`` rcParams have
been removed.
- The ``animation.html_args`` rcParam has been removed.
- The ``keymap.all_axes`` rcParam has been removed.
- The ``mathtext.fallback_to_cm`` rcParam has been removed. Use
:rc:`mathtext.fallback` instead.
- The ``savefig.jpeg_quality`` rcParam has been removed.
- The ``text.latex.preview`` rcParam has been removed.
- The following deprecated rcParams validators, defined in `.rcsetup`, have
been removed:
- ``validate_alignment``
- ``validate_axes_titlelocation``
- ``validate_axis_locator``
- ``validate_bool_maybe_none``
- ``validate_fontset``
- ``validate_grid_axis``
- ``validate_hinting``
- ``validate_legend_loc``
- ``validate_mathtext_default``
- ``validate_movie_frame_fmt``
- ``validate_movie_html_fmt``
- ``validate_movie_writer``
- ``validate_nseq_float``
- ``validate_nseq_int``
- ``validate_orientation``
- ``validate_pgf_texsystem``
- ``validate_ps_papersize``
- ``validate_svg_fonttype``
- ``validate_toolbar``
- ``validate_webagg_address``
- Some rcParam validation has become stricter:
- :rc:`axes.axisbelow` no longer accepts strings starting with "line"
(case-insensitive) as "line"; use "line" (case-sensitive) instead.
- :rc:`text.latex.preamble` and ``pdf.preamble`` no longer accept non-string values.
- All ``*.linestyle`` rcParams no longer accept ``offset = None``; set the
offset to 0 instead.
|