@@ -10,6 +10,293 @@ out what caused the breakage and how to fix it by updating your code.
10
10
For new features that were added to Matplotlib, please see
11
11
:ref: `whats-new `.
12
12
13
+ API Changes in 2.1.0
14
+ ====================
15
+
16
+ `mpl_toolkits.axes_grid ` has been deprecated
17
+ --------------------------------------------
18
+
19
+ All functionallity from `mpl_toolkits.axes_grid ` can be found in either
20
+ `mpl_toolkits.axes_grid1 ` or `mpl_toolkits.axisartist `. Axes classes from
21
+ `mpl_toolkits.axes_grid ` based on `Axis ` from `mpl_toolkits.axisartist ` can be
22
+ found in `mpl_toolkits.axisartist `
23
+
24
+
25
+ Improved toggling of the axes grids
26
+ -----------------------------------
27
+
28
+ The `g ` key binding now switches the states of the `x ` and `y ` grids
29
+ independently (by cycling through all four on/off combinations).
30
+
31
+ The new `G ` key binding switches the states of the minor grids.
32
+
33
+ Both bindings are disabled if only a subset of the grid lines (in either
34
+ direction) is visible, to avoid making irreversible changes to the figure.
35
+
36
+
37
+ Removal of warning on empty legends
38
+ -----------------------------------
39
+
40
+ ``plt.legend `` used to issue a warning when no labeled artist could be
41
+ found. This warning has been removed.
42
+
43
+
44
+ More accurate legend autopositioning
45
+ ------------------------------------
46
+
47
+ Automatic positioning of legends now prefers using the area surrounded
48
+ by a `Line2D ` rather than placing the legend over the line itself.
49
+
50
+
51
+ Cleanup of stock sample data
52
+ ----------------------------
53
+
54
+ The sample data of stocks has been cleaned up to remove redundancies and
55
+ increase portability. The ``AAPL.dat.gz ``, ``INTC.dat.gz `` and ``aapl.csv ``
56
+ files have been removed entirely and will also no longer be available from
57
+ `matplotlib.cbook.get_sample_data `. If a CSV file is required, we suggest using
58
+ the ``msft.csv `` that continues to be shipped in the sample data. If a NumPy
59
+ binary file is acceptable, we suggest using one of the following two new files.
60
+ The ``aapl.npy.gz `` and ``goog.npy `` files have been replaced by ``aapl.npz ``
61
+ and ``goog.npz ``, wherein the first column's type has changed from
62
+ `datetime.date ` to `np.datetime64 ` for better portability across Python
63
+ versions. Note that matplotlib does not fully support `np.datetime64 ` as yet.
64
+
65
+
66
+ Updated qhull to 2015.2
67
+ -----------------------
68
+
69
+ The version of qhull shipped with Matplotlib, which is used for
70
+ Delaunay triangulation, has been updated from version 2012.1 to
71
+ 2015.2.
72
+
73
+
74
+ Use backports.functools_lru_cache instead of functools32
75
+ --------------------------------------------------------
76
+
77
+ It's better maintained and more widely used (by pylint, jaraco, etc).
78
+
79
+
80
+ `cbook.is_numlike ` only performs an instance check, `cbook.is_string_like ` is deprecated
81
+ ----------------------------------------------------------------------------------------
82
+
83
+ `cbook.is_numlike ` now only checks that its argument is an instance of
84
+ ``(numbers.Number, np.Number) ``. In particular, this means that arrays are now
85
+ not num-like.
86
+
87
+ `cbook.is_string_like ` and `cbook.is_sequence_of_strings ` have been
88
+ deprecated. Use ``isinstance(obj, six.string_types) `` and ``iterable(obj) and
89
+ all(isinstance(o, six.string_types) for o in obj) `` instead.
90
+
91
+
92
+ Elliptical arcs now drawn between correct angles
93
+ ------------------------------------------------
94
+
95
+ The `matplotlib.patches.Arc ` patch is now correctly drawn between the given
96
+ angles.
97
+
98
+ Previously a circular arc was drawn and then stretched into an ellipse,
99
+ so the resulting arc did not lie between *theta1 * and *theta2 *.
100
+
101
+
102
+ Changes to PDF backend methods
103
+ ------------------------------
104
+
105
+ The methods `embedTeXFont ` and `tex_font_mapping ` of
106
+ `matplotlib.backend_pdf.PdfFile ` have been removed.
107
+ It is unlikely that external users would have called
108
+ these methods, which are related to the font system
109
+ internal to the PDF backend.
110
+
111
+
112
+ ``-d$backend `` no longer sets the backend
113
+ -----------------------------------------
114
+
115
+ It is no longer possible to set the backend by passing ``-d$backend `` at the command line. Use the ``MPLBACKEND `` environment variable instead.
116
+
117
+
118
+ Path.intersects_bbox always treats the bounding box as filled
119
+ -------------------------------------------------------------
120
+
121
+ Previously, when ``Path.intersects_bbox `` was called with ``filled `` set to
122
+ ``False ``, it would treat both the path and the bounding box as unfilled. This
123
+ behavior was not well documented and it is usually not the desired behavior,
124
+ since bounding boxes are used to represent more complex shapes located inside
125
+ the bounding box. This behavior has now been changed: when ``filled `` is
126
+ ``False ``, the path will be treated as unfilled, but the bounding box is still
127
+ treated as filled. The old behavior was arguably an implementation bug.
128
+
129
+ When ``Path.intersects_bbox `` is called with ``filled `` set to ``True ``
130
+ (the default value), there is no change in behavior. For those rare cases where
131
+ ``Path.intersects_bbox `` was called with ``filled `` set to ``False `` and where
132
+ the old behavior is actually desired, the suggested workaround is to call
133
+ ``Path.intersects_path `` with a rectangle as the path::
134
+
135
+ from matplotlib.path import Path
136
+ from matplotlib.transforms import Bbox, BboxTransformTo
137
+ rect = Path.unit_rectangle().transformed(BboxTransformTo(bbox))
138
+ result = path.intersects_path(rect, filled=False)
139
+
140
+
141
+ Removed resolution kwarg from PolarAxes
142
+ ---------------------------------------
143
+
144
+ The kwarg `resolution ` of `matplotlib.projections.polar.PolarAxes ` has been
145
+ removed. It has triggered a deprecation warning of being with no effect
146
+ beyond version `0.98.x `.
147
+
148
+
149
+ Deprecation of `GraphicsContextBase `\' s ``linestyle `` property.
150
+ ---------------------------------------------------------------
151
+
152
+ The ``GraphicsContextBase.get_linestyle `` and
153
+ ``GraphicsContextBase.set_linestyle `` methods, which effectively had no effect,
154
+ have been deprecated.
155
+
156
+
157
+ NavigationToolbar2.dynamic_update is deprecated
158
+ -----------------------------------------------
159
+
160
+ Use `FigureCanvas.draw_idle ` instead.
161
+
162
+
163
+ Unique identifier added to `RendererBase ` classes
164
+ -------------------------------------------------
165
+
166
+ Since ``id() `` is not guaranteed to be unique between objects that exist at
167
+ different times, a new private property ``_uid `` has been added to
168
+ `RendererBase ` which is used along with the renderer's ``id() `` to cache
169
+ certain expensive operations.
170
+
171
+ If a custom renderer does not subclass `RendererBase ` or `MixedModeRenderer `,
172
+ it is not required to implement this ``_uid `` property, but this may produce
173
+ incorrect behavior when the renderers' ``id() `` clashes.
174
+
175
+
176
+ WX no longer calls generates ``IdleEvent `` events or calls ``idle_event ``
177
+ -------------------------------------------------------------------------
178
+
179
+ Removed unused private method ``_onIdle `` from ``FigureCanvasWx ``.
180
+
181
+ The ``IdleEvent `` class and ``FigureCanvasBase.idle_event `` method
182
+ will be removed in 2.2
183
+
184
+
185
+ Correct scaling of :func: `magnitude_spectrum() `
186
+ -----------------------------------------------
187
+
188
+ The functions :func: `matplotlib.mlab.magnitude_spectrum() ` and :func: `matplotlib.pyplot.magnitude_spectrum() ` implicitly assumed the sum
189
+ of windowing function values to be one. In Matplotlib and Numpy the
190
+ standard windowing functions are scaled to have maximum value of one,
191
+ which usually results in a sum of the order of n/2 for a n-point
192
+ signal. Thus the amplitude scaling :func: `magnitude_spectrum() ` was
193
+ off by that amount when using standard windowing functions (`Bug 8417
194
+ <https://github.com/matplotlib/matplotlib/issues/8417> `_ ). Now the
195
+ behavior is consistent with :func: `matplotlib.pyplot.psd() ` and
196
+ :func: `scipy.signal.welch() `. The following example demonstrates the
197
+ new and old scaling::
198
+
199
+ import matplotlib.pyplot as plt
200
+ import numpy as np
201
+
202
+ tau, n = 10, 1024 # 10 second signal with 1024 points
203
+ T = tau/n # sampling interval
204
+ t = np.arange(n)*T
205
+
206
+ a = 4 # amplitude
207
+ x = a*np.sin(40*np.pi*t) # 20 Hz sine with amplitude a
208
+
209
+ # New correct behavior: Amplitude at 20 Hz is a/2
210
+ plt.magnitude_spectrum(x, Fs=1/T, sides='onesided', scale='linear')
211
+
212
+ # Original behavior: Amplitude at 20 Hz is (a/2)*(n/2) for a Hanning window
213
+ w = np.hanning(n) # default window is a Hanning window
214
+ plt.magnitude_spectrum(x*np.sum(w), Fs=1/T, sides='onesided', scale='linear')
215
+
216
+
217
+
218
+ Default behavior of log scales changed to mask <= 0 values
219
+ ----------------------------------------------------------
220
+
221
+ Calling `matplotlib.axes.Axes.set_xscale ` or `matplotlib.axes.Axes.set_yscale `
222
+ now uses 'mask' as the default method to handle invalid values (as opposed to
223
+ 'clip'). This means that any values <= 0 on a log scale will not be shown.
224
+
225
+ Previously they were clipped to a very small number and shown.
226
+
227
+
228
+ Code Removal
229
+ ------------
230
+
231
+ matplotlib.delaunay
232
+ ~~~~~~~~~~~~~~~~~~~
233
+ Remove the delaunay triangulation code which is now handled by Qhull
234
+ via ``matplotlib.tri ``
235
+
236
+
237
+ qt4_compat.py
238
+ ~~~~~~~~~~~~~
239
+ Moved to ``qt_compat.py ``. Renamed because it now handles Qt5 as well.
240
+
241
+
242
+ Deprecated methods
243
+ ~~~~~~~~~~~~~~~~~~
244
+
245
+ The ``GraphicsContextBase.set_graylevel ``, ``FigureCanvasBase.onHilite `` and
246
+ ``mpl_toolkits.axes_grid1.mpl_axes.Axes.toggle_axisline `` methods have been
247
+ removed.
248
+
249
+ The ``ArtistInspector.findobj `` method, which was never working due to the lack
250
+ of a ``get_children `` method, has been removed.
251
+
252
+ The deprecated ``point_in_path ``, ``get_path_extents ``,
253
+ ``point_in_path_collection ``, ``path_intersects_path ``,
254
+ ``convert_path_to_polygons ``, ``cleanup_path `` and ``clip_path_to_rect ``
255
+ functions in the ``matplotlib.path `` module have been removed. Their
256
+ functionality remains exposed as methods on the ``Path `` class.
257
+
258
+
259
+ `Axes.set_aspect("normal") `
260
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
261
+
262
+ Support for setting an ``Axes ``' aspect to ``"normal" `` has been removed, in
263
+ favor of the synonym ``"auto" ``.
264
+
265
+
266
+ ``shading `` kwarg to ``pcolor ``
267
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
268
+
269
+ The ``shading `` kwarg to ``pcolor `` has been removed. Set ``edgecolors ``
270
+ appropriately instead.
271
+
272
+
273
+ Removed internal functions
274
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
275
+
276
+ The ``matplotlib.backends.backend_ps.seq_allequal `` function has been removed.
277
+ Use ``np.array_equal `` instead.
278
+
279
+ The deprecated ``matplotlib.rcsetup.validate_maskedarray ``,
280
+ ``matplotlib.rcsetup.deprecate_savefig_extension `` and
281
+ ``matplotlib.rcsetup.validate_tkpythoninspect `` functions, and associated
282
+ ``savefig.extension `` and ``tk.pythoninspect `` rcparams entries have been
283
+ removed.
284
+
285
+
286
+ Deprecations
287
+ ------------
288
+
289
+ - `matplotlib.testing.noseclasses ` is deprecated and will be removed in 2.3
290
+
291
+
292
+ Functions removed from the `lines ` module
293
+ -----------------------------------------
294
+
295
+ The `matplotlib.lines ` module no longer imports the `pts_to_prestep `,
296
+ `pts_to_midstep ` and `pts_to_poststep ` functions from the `matplotlib.cbook `
297
+ module.
298
+
299
+
13
300
API Changes in 2.0.1
14
301
====================
15
302
0 commit comments