@@ -13,11 +13,281 @@ For new features that were added to Matplotlib, please see
1313API Changes in 2.2.0
1414====================
1515
16- .. toctree ::
17- :glob:
18- :maxdepth: 1
16+ ..
17+
18+ .. toctree ::
19+ :glob:
20+ :maxdepth: 1
21+
22+ next_api_changes/*
23+
24+
25+ Deprecations
26+ ------------
27+
28+ Classes, functions, and methods
29+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30+
31+ The unused and untested ``Artist.onRemove `` and ``Artist.hitlist `` methods have
32+ been deprecated.
33+
34+ The now unused ``mlab.less_simple_linear_interpolation `` function is
35+ deprecated.
36+
37+ The unused ``ContourLabeler.get_real_label_width `` method is deprecated.
38+
39+ The unused ``FigureManagerBase.show_popup `` method is deprecated. This
40+ introduced in e945059b327d42a99938b939a1be867fa023e7ba in 2005 but never built
41+ out into any of the backends.
42+
43+ :class: `backend_tkagg.AxisMenu ` is deprecated, as it has become
44+ unused since the removal of "classic" toolbars.
45+
46+
47+ Changed function signatures
48+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
49+
50+ kwarg ``fig `` to `.GridSpec.get_subplot_params ` is
51+ deprecated, use ``figure `` instead.
52+
53+ Using `.pyplot.axes ` with an `.Axes ` as argument is deprecated. This sets
54+ the current axes, i.e. it has the same effect as `.pyplot.sca `. For clarity
55+ ``plt.sca(ax) `` should be preferred over ``plt.axes(ax) ``.
56+
57+
58+ Using strings instead of booleans to control grid and tick visibility
59+ is deprecated. Using ``"on" ``, ``"off" ``, ``"true" ``, or ``"false" ``
60+ to control grid and tick visibility has been deprecated. Instead, use
61+ normal booleans (``True ``/``False ``) or boolean-likes. In the future,
62+ all non-empty strings may be interpreted as ``True ``.
63+
64+ When given 2D inputs with non-matching numbers of columns, `~.pyplot.plot `
65+ currently cycles through the columns of the narrower input, until all the
66+ columns of the wider input have been plotted. This behavior is deprecated; in
67+ the future, only broadcasting (1 column to *n * columns) will be performed.
68+
69+
70+ rcparams
71+ ~~~~~~~~
72+
73+ The :rc: `backend.qt4 ` and :rc: `backend.qt5 ` rcParams were deprecated
74+ in version 2.2. In order to force the use of a specific Qt binding,
75+ either import that binding first, or set the ``QT_API `` environment
76+ variable.
77+
78+ Deprecation of the ``nbagg.transparent `` rcParam. To control
79+ transparency of figure patches in the nbagg (or any other) backend,
80+ directly set ``figure.patch.facecolor ``, or the ``figure.facecolor ``
81+ rcParam.
82+
83+
84+
85+ Removals
86+ --------
87+
88+ Function Signatures
89+ ~~~~~~~~~~~~~~~~~~~
90+
91+ Contouring no longer supports ``legacy `` corner masking. The
92+ deprecated ``ContourSet.vmin `` and ``ContourSet.vmax `` properties have
93+ been removed.
94+
95+ Passing ``None `` instead of ``"none" `` as format to `~.Axes.errorbar ` is no
96+ longer supported.
97+
98+ The ``bgcolor `` keyword argument to ``Axes `` has been removed.
99+
100+ Modules, methods, and functions
101+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102+
103+ The ``matplotlib.finance ``, ``mpl_toolkits.exceltools `` and
104+ ``mpl_toolkits.gtktools `` modules have been removed. ``matplotlib.finance ``
105+ remains available at https://github.com/matplotlib/mpl_finance.
106+
107+ The ``mpl_toolkits.mplot3d.art3d.iscolor `` function has been removed.
108+
109+ The ``Axes.get_axis_bgcolor ``, ``Axes.set_axis_bgcolor ``,
110+ ``Bbox.update_from_data ``, ``Bbox.update_datalim_numerix ``,
111+ ``MaxNLocator.bin_boundaries `` methods have been removed.
112+
113+ ``mencoder `` can no longer be used to encode animations.
114+
115+ The unused `FONT_SCALE ` and `fontd ` attributes of the `RendererSVG `
116+ class have been removed.
117+
118+ color maps
119+ ~~~~~~~~~~
120+
121+ The ``spectral `` colormap has been removed. The ``Vega* `` colormaps, which
122+ were aliases for the ``tab* `` colormaps, have been removed.
123+
124+
125+ rcparams
126+ ~~~~~~~~
127+
128+ The following deprecated rcParams have been removed:
129+
130+ - ``axes.color_cycle `` (see ``axes.prop_cycle ``),
131+ - ``legend.isaxes ``,
132+ - ``svg.embed_char_paths `` (see ``svg.fonttype ``),
133+ - ``text.fontstyle ``, ``text.fontangle ``, ``text.fontvariant ``,
134+ ``text.fontweight ``, ``text.fontsize `` (renamed to ``text.style ``, etc.),
135+ - ``tick.size `` (renamed to ``tick.major.size ``).
136+
137+
138+
139+ Removal of unused imports
140+ -------------------------
141+ Many unused imports were removed from the codebase. As a result,
142+ trying to import certain classes or functions from the "wrong" module
143+ (e.g. `~.Figure ` from :mod: `matplotlib.backends.backend_agg ` instead of
144+ :mod: `matplotlib.figure `) will now raise an `ImportError `.
145+
146+
147+ Exception type changes
148+ ----------------------
149+
150+ If `MovieWriterRegistry ` can't find the requested `MovieWriter `, a
151+ more helpful `RuntimeError ` message is now raised instead of the
152+ previously raised `KeyError `.
153+
154+ `~.tight_layout.auto_adjust_subplotpars ` now raises `ValueError `
155+ instead of `RuntimeError ` when sizes of input lists don't match
156+
157+
158+ `Figure.set_figwidth ` and `Figure.set_figheight ` default forward to True
159+ ------------------------------------------------------------------------
160+
161+ `matplotlib.Figure.set_figwidth ` and `matplotlib.Figure.set_figheight `
162+ had the kwarg `forward=False `
163+ by default, but `Figure.set_size_inches ` now defaults to `forward=True `.
164+ This makes these functions conistent.
165+
166+
167+ Do not truncate svg sizes to nearest point
168+ ------------------------------------------
169+
170+ There is no reason to size the SVG out put in integer points, change
171+ to out putting floats for the *height *, *width *, and *viewBox * attributes
172+ of the *svg * element.
173+
174+
175+ Fontsizes less than 1 pt are clipped to be 1 pt.
176+ ------------------------------------------------
177+
178+ FreeType doesn't allow fonts to get smaller than 1 pt, so all Agg
179+ backends were silently rounding up to 1 pt. PDF (other vector
180+ backends?) were letting us write fonts that were less than 1 pt, but
181+ they could not be placed properly because position information comes from
182+ FreeType. This change makes it so no backends can use fonts smaller than
183+ 1 pt, consistent with FreeType and ensuring more consistent results across
184+ backends.
185+
186+
187+
188+ Changes to Qt backend class MRO
189+ -------------------------------
190+
191+ To support both Agg and cairo rendering for Qt backends all of the
192+ non-Agg specific code previously in
193+ :class: `.backend_qt5agg.FigureCanvasQTAggBase ` has been moved to
194+ :class: `.backend_qt5.FigureCanvasQT ` so it can be shared with the cairo
195+ implementation. The :meth: `.FigureCanvasQTAggBase.paintEvent `,
196+ :meth: `.FigureCanvasQTAggBase.blit `, and
197+ :meth: `.FigureCanvasQTAggBase.print_figure ` methods have moved to
198+ :meth: `.FigureCanvasQTAgg.paintEvent `, :meth: `.FigureCanvasQTAgg.blit `, and
199+ :meth: `.FigureCanvasQTAgg.print_figure `. The first two methods assume that
200+ the instance is also a :class: `QWidget ` so to use
201+ :class: `FigureCanvasQTAggBase ` it was required to multiple inherit
202+ from a :class: `QWidget ` sub-class.
203+
204+ Having moved all of its methods either up or down the class hierarchy
205+ :class: `FigureCanvasQTAggBase ` has been deprecated. To do this with
206+ out warning and to preserve as much API as possible,
207+ :class: `.backend_qt5.FigureCanvasQTAggBase ` now inherits from
208+ :class: `.backend_qt5.FigureCanvasQTAgg `.
209+
210+ The MRO for :class: `FigureCanvasQTAgg ` and
211+ :class: `FigureCanvasQTAggBase ` used to be ::
212+
213+
214+ [matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
215+ matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
216+ matplotlib.backends.backend_agg.FigureCanvasAgg,
217+ matplotlib.backends.backend_qt5.FigureCanvasQT,
218+ PyQt5.QtWidgets.QWidget,
219+ PyQt5.QtCore.QObject,
220+ sip.wrapper,
221+ PyQt5.QtGui.QPaintDevice,
222+ sip.simplewrapper,
223+ matplotlib.backend_bases.FigureCanvasBase,
224+ object]
225+
226+ and ::
227+
228+
229+ [matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
230+ matplotlib.backends.backend_agg.FigureCanvasAgg,
231+ matplotlib.backend_bases.FigureCanvasBase,
232+ object]
233+
234+
235+ respectively. They are now ::
236+
237+ [matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
238+ matplotlib.backends.backend_agg.FigureCanvasAgg,
239+ matplotlib.backends.backend_qt5.FigureCanvasQT,
240+ PyQt5.QtWidgets.QWidget,
241+ PyQt5.QtCore.QObject,
242+ sip.wrapper,
243+ PyQt5.QtGui.QPaintDevice,
244+ sip.simplewrapper,
245+ matplotlib.backend_bases.FigureCanvasBase,
246+ object]
247+
248+ and ::
249+
250+ [matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
251+ matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
252+ matplotlib.backends.backend_agg.FigureCanvasAgg,
253+ matplotlib.backends.backend_qt5.FigureCanvasQT,
254+ PyQt5.QtWidgets.QWidget,
255+ PyQt5.QtCore.QObject,
256+ sip.wrapper,
257+ PyQt5.QtGui.QPaintDevice,
258+ sip.simplewrapper,
259+ matplotlib.backend_bases.FigureCanvasBase,
260+ object]
261+
262+
263+
264+ New dependency
265+ --------------
266+
267+ `kiwisolver <https://github.com/nucleic/kiwi >`__ is now a required
268+ dependency to support the new constrained_layout, see
269+ :ref: `sphx_glr_tutorials_intermediate_constrainedlayout_guide.py ` for
270+ more details.
271+
272+
273+ `Axes.imshow ` clips RGB values to the valid range
274+ -------------------------------------------------
275+
276+ When `Axes.imshow ` is passed an RGB or RGBA value with out-of-range
277+ values, it now logs a warning and clips them to the valid range.
278+ The old behaviour, wrapping back in to the range, often hid outliers
279+ and made interpreting RGB images unreliable.
280+
281+
282+ GTKAgg and GTKCairo backends deprecated
283+ ---------------------------------------
284+
285+ The GTKAgg and GTKCairo backends have been deprecated. These obsolete backends
286+ allow figures to be rendered via the GTK+ 2 toolkit. They are untested, known
287+ to be broken, will not work with Python 3, and their use has been discouraged
288+ for some time. Instead, use the `GTK3Agg ` and `GTK3Cairo ` backends for
289+ rendering to GTK+ 3 windows.
19290
20- next_api_changes/*
21291
22292
23293API Changes in 2.1.2
0 commit comments