All parameters to .pyplot.figure and the .Figure constructor, other than num, figsize, and dpi, will become keyword-only after a deprecation period.
The module matplotlib.cbook.deprecation
was previously deprecated in Matplotlib 3.4, along with deprecation-related API in matplotlib.cbook
. Due to technical issues, matplotlib.cbook.MatplotlibDeprecationWarning
and matplotlib.cbook.mplDeprecation
did not raise deprecation warnings on use. Changes in Python have now made it possible to warn when these aliases are being used.
In order to avoid downstream breakage, these aliases will now warn, and their removal has been pushed from 3.6 to 3.8 to give time to notice said warnings. As replacement, please use matplotlib.MatplotlibDeprecationWarning.
For clarity, .axes.Axes.clear is now preferred over .Axes.cla. However, for backwards compatibility, the latter will remain as an alias for the former.
For additional compatibility with third-party libraries, Matplotlib will continue to call the cla
method of any ~.axes.Axes subclasses if they define it. In the future, this will no longer occur, and Matplotlib will only call the clear
method in ~.axes.Axes subclasses.
It is recommended to define only the clear
method when on Matplotlib 3.6, and only cla
for older versions.
As part of a multi-step process we are refactoring the global state for managing the registered colormaps.
In Matplotlib 3.5 we added a .ColormapRegistry class and exposed an instance at the top level as matplotlib.colormaps
. The existing top level functions in matplotlib.cm (get_cmap
, register_cmap
, unregister_cmap
) were changed to be aliases around the same instance.
In Matplotlib 3.6 we have marked those top level functions as pending deprecation with the intention of deprecation in Matplotlib 3.7. The following functions have been marked for pending deprecation:
matplotlib.cm.get_cmap
; usematplotlib.colormaps[name]
instead if you have a str.Added 3.6.1 Use matplotlib.cm.ColormapRegistry.get_cmap if you have a string, None or a matplotlib.colors.Colormap object that you want to convert to a matplotlib.colors.Colormap instance.
matplotlib.cm.register_cmap
; use matplotlib.colormaps.register <.ColormapRegistry.register> insteadmatplotlib.cm.unregister_cmap
; use matplotlib.colormaps.unregister <.ColormapRegistry.unregister> insteadmatplotlib.pyplot.register_cmap
; use matplotlib.colormaps.register <.ColormapRegistry.register> instead
The matplotlib.pyplot.get_cmap function will stay available for backward compatibility.
The methods ~.Figure.set_tight_layout, ~.Figure.set_constrained_layout, are discouraged, and now emit a PendingDeprecationWarning in favor of explicitly referencing the layout engine via figure.set_layout_engine('tight')
and figure.set_layout_engine('constrained')
. End users should not see the warning, but library authors should adjust.
The methods ~.Figure.set_constrained_layout_pads and ~.Figure.get_constrained_layout_pads are will be deprecated in favor of figure.get_layout_engine().set()
and figure.get_layout_engine().get()
, and currently emit a PendingDeprecationWarning.
Matplotlib currently ships many style files inspired from the seaborn library ("seaborn", "seaborn-bright", "seaborn-colorblind", etc.) but they have gone out of sync with the library itself since the release of seaborn 0.9. To prevent confusion, the style files have been renamed "seaborn-v0_8", "seaborn-v0_8-bright", "seaborn-v0_8-colorblind", etc. Users are encouraged to directly use seaborn to access the up-to-date styles.
Previously, .pyplot.subplot and .pyplot.subplot2grid would automatically remove preexisting Axes that overlap with the newly added Axes. This behavior was deemed confusing, and is now deprecated. Explicitly call ax.remove()
on Axes that need to be removed.
Positional use of all formatting parameters in ~.Axes.stem has been deprecated since Matplotlib 3.5. This deprecation is relaxed so that one can still pass linefmt positionally, i.e. stem(x, y, 'r')
.
... is deprecated with no replacement. This was a compatibility fallback to a former more inefficient representation of the stem lines.
Passing all but the very few first arguments positionally in the constructors of Artists is deprecated. Most arguments will become keyword-only in a future version.
Passing too many positional arguments to tripcolor
is now deprecated (extra arguments were previously silently ignored).
Passing emit and auto parameters of set_xlim
, set_ylim
, set_zlim
, set_rlim
positionally is deprecated; they will become keyword-only in a future release.
The transOffset parameter of .Collection.set_offset_transform and the various create_collection
methods of legend handlers has been renamed to offset_transform (consistently with the property name).
Calling MarkerStyle()
with no arguments or MarkerStyle(None)
is deprecated; use MarkerStyle("")
to construct an empty marker style.
Axes.get_window_extent
/ Figure.get_window_extent
accept only renderer. This aligns the API with the general .Artist.get_window_extent API. All other parameters were ignored anyway.
The cleared parameter of get_renderer
, which only existed for AGG-based backends, has been deprecated. Use renderer.clear()
instead to explicitly clear the renderer buffer.
In ~.LogFormatter and derived subclasses, the methods base
and label_minor
for setting the respective parameter are deprecated and replaced by set_base
and set_label_minor
, respectively.
In ~.LogLocator, the methods base
and subs
for setting the respective parameter are deprecated. Instead, use set_params(base=..., subs=...)
.
The canvas now takes care of the renderer and whether to cache it or not. The alternative is to call axes.figure.canvas.get_renderer()
.
Modifications to the Groupers returned by get_shared_x_axes
and get_shared_y_axes
are deprecated. In the future, these methods will return immutable views on the grouper structures. Note that previously, calling e.g. join()
would already fail to set up the correct structures for sharing axes; use .Axes.sharex or .Axes.sharey instead.
Tick.label
has been pending deprecation since 3.1 and is now deprecated. Use Tick.label1
instead.
The following methods are no longer used and deprecated without a replacement:
Axis.get_ticklabel_extents
Tick.get_pad_pixels
XAxis.get_text_heights
YAxis.get_text_widths
... is deprecated. Use np.lib.stride_tricks.sliding_window_view
instead (or np.lib.stride_tricks.as_strided
on NumPy < 1.20).
The draw_event
, resize_event
, close_event
, key_press_event
, key_release_event
, pick_event
, scroll_event
, button_press_event
, button_release_event
, motion_notify_event
, enter_notify_event
and leave_notify_event
methods of .FigureCanvasBase are deprecated. They had inconsistent signatures across backends, and made it difficult to improve event metadata.
In order to trigger an event on a canvas, directly construct an .Event object of the correct class and call canvas.callbacks.process(event.name, event)
.
All parameters to MultiCursor
starting from useblit are becoming keyword-only (passing them positionally is deprecated).
The canvas
and background
attributes of MultiCursor
are deprecated with no replacement.
The visible attribute of Selector widgets has been deprecated; use set_visible
or get_visible
instead.
The state_modifier_keys attribute of Selector widgets has been privatized and the modifier keys must be set when creating the widget.
... has been privatized. Use the zoom keyword argument in .Axes3D.set_box_aspect instead.
The previous constructor of .axis3d.Axis, with signature (self, adir, v_intervalx, d_intervalx, axes, *args, rotate_label=None, **kwargs)
is deprecated in favor of a new signature closer to the one of 2D Axis; it is now (self, axes, *, rotate_label=None, **kwargs)
where kwargs
are forwarded to the 2D Axis constructor. The axis direction is now inferred from the axis class' axis_name
attribute (as in the 2D case); the adir
attribute is deprecated.
The init3d
method of 3D Axis is also deprecated; all the relevant initialization is done as part of the constructor.
The d_interval
and v_interval
attributes of 3D Axis are deprecated; use get_data_interval
and get_view_interval
instead.
The w_xaxis
, w_yaxis
, and w_zaxis
attributes of Axis3D
have been pending deprecation since 3.1. They are now deprecated. Instead use xaxis
, yaxis
, and zaxis
.
mplot3d.axis3d.Axis.set_pane_pos
is deprecated. This is an internal method where the provided values are overwritten during drawing. Hence, it does not serve any purpose to be directly accessible.
The two helper functions mplot3d.axis3d.move_from_center
and mplot3d.axis3d.tick_update_position
are considered internal and deprecated. If these are required, please vendor the code from the corresponding private methods _move_from_center
and _tick_update_position
.
The Figure callbacks
property is deprecated. The only signal was "dpi_changed", which can be replaced by connecting to the "resize_event" on the canvas figure.canvas.mpl_connect("resize_event", func)
instead.
Support for such canvas classes is deprecated. Note that canvas classes which inherit from FigureCanvasBase
always have such an attribute.
backend_gtk3.FigureManagerGTK3Agg
andbackend_gtk4.FigureManagerGTK4Agg
; directly usebackend_gtk3.FigureManagerGTK3
andbackend_gtk4.FigureManagerGTK4
instead.- The window parameter to
backend_gtk3.NavigationToolbar2GTK3
had no effect, and is now deprecated. backend_gtk3.NavigationToolbar2GTK3.win
backend_gtk3.RendererGTK3Cairo
andbackend_gtk4.RendererGTK4Cairo
; use .RendererCairo instead, which has gained theset_context
method, which also auto-infers the size of the underlying surface.backend_cairo.RendererCairo.set_ctx_from_surface
andbackend_cairo.RendererCairo.set_width_height
in favor of .RendererCairo.set_context.backend_gtk3.error_msg_gtk
backend_gtk3.icon_filename
andbackend_gtk3.window_icon
backend_macosx.NavigationToolbar2Mac.prepare_configure_subplots
has been replaced byconfigure_subplots()
.backend_pdf.Name.hexify
backend_pdf.Operator
andbackend_pdf.Op.op
are deprecated in favor of a single standard enum.Enum interface on .backend_pdf.Op.backend_pdf.fill
; vendor the code of the similarly named private functions if you rely on these functions.backend_pgf.LatexManager.texcommand
andbackend_pgf.LatexManager.latex_header
backend_pgf.NO_ESCAPE
backend_pgf.common_texification
backend_pgf.get_fontspec
backend_pgf.get_preamble
backend_pgf.re_mathsep
backend_pgf.writeln
backend_ps.convert_psfrags
backend_ps.quote_ps_string
; vendor the code of the similarly named private functions if you rely on it.backend_qt.qApp
; useQtWidgets.QApplication.instance()
instead.backend_svg.escape_attrib
; vendor the code of the similarly named private functions if you rely on it.backend_svg.escape_cdata
; vendor the code of the similarly named private functions if you rely on it.backend_svg.escape_comment
; vendor the code of the similarly named private functions if you rely on it.backend_svg.short_float_fmt
; vendor the code of the similarly named private functions if you rely on it.backend_svg.generate_transform
andbackend_svg.generate_css
backend_tk.NavigationToolbar2Tk.lastrect
andbackend_tk.RubberbandTk.lastrect
backend_tk.NavigationToolbar2Tk.window
; usetoolbar.master
instead.backend_tools.ToolBase.destroy
; To run code upon tool removal, connect to thetool_removed_event
event.backend_wx.RendererWx.offset_text_height
backend_wx.error_msg_wx
FigureCanvasBase.pick
; directly call .Figure.pick, which has taken over the responsibility of checking the canvas widget lock as well.FigureCanvasBase.resize
, which has no effect; useFigureManagerBase.resize
instead.FigureManagerMac.close
FigureFrameWx.sizer
; useframe.GetSizer()
instead.FigureFrameWx.figmgr
andFigureFrameWx.get_figure_manager
; useframe.canvas.manager
instead.FigureFrameWx.num
; useframe.canvas.manager.num
instead.FigureFrameWx.toolbar
; useframe.GetToolBar()
instead.FigureFrameWx.toolmanager
; useframe.canvas.manager.toolmanager
instead.
The modules matplotlib.afm
, matplotlib.docstring
, matplotlib.fontconfig_pattern
, matplotlib.tight_bbox
, matplotlib.tight_layout
, and matplotlib.type1font
are considered internal and public access is deprecated.
This method was only intended to disable tests in case no latex install was found. As such, it is considered to be private and for internal use only.
Please vendor the code if you need this.
The date_ticker_factory
method in the matplotlib.dates module is deprecated. Instead use ~.AutoDateLocator and ~.AutoDateFormatter for a more flexible and scalable locator and formatter.
If you need the exact date_ticker_factory
behavior, please copy the code.
In the future, dviread.find_tex_file
will raise a FileNotFoundError for missing files. Previously, it would return an empty string in such cases. Raising an exception allows attaching a user-friendly message instead. During the transition period, a warning is raised.
... is deprecated in favor of directly calling the .Affine2D constructor with no arguments.
The unused class CleanupTestCase
and decorator cleanup
are deprecated and will be removed. Vendor the code, including the private function _cleanup_cm
.
The function check_freetype_version
is considered internal and deprecated. Vendor the code of the private function _check_freetype_version
.
... is deprecated with no replacement. Copy the original implementation if needed.
axes_grid1.axes_size.AddList
; usesum(sizes, start=Fixed(0))
(for example) to sum multiple size objects.axes_size.Padded
; usesize + pad
insteadaxes_size.SizeFromFunc
,axes_size.GetExtentHelper
AxisArtistHelper.delta1
andAxisArtistHelper.delta2
axislines.GridHelperBase.new_gridlines
andaxislines.Axes.new_gridlines
cbook.maxdict
; use the standard libraryfunctools.lru_cache
instead._DummyAxis.dataLim
and_DummyAxis.viewLim
; useget_data_interval()
,set_data_interval()
,get_view_interval()
, andset_view_interval()
instead.GridSpecBase.get_grid_positions(..., raw=True)
ImageMagickBase.delay
andImageMagickBase.output_args
MathtextBackend
,MathtextBackendAgg
,MathtextBackendPath
,MathTextWarning
TexManager.get_font_config
; it previously returned an internal hashed key for used for caching purposes.TextToPath.get_texmanager
; directly construct a .texmanager.TexManager instead.ticker.is_close_to_int
; usemath.isclose(x, round(x))
instead.ticker.is_decade
; usey = numpy.log(x)/numpy.log(base); numpy.isclose(y, numpy.round(y))
instead.