API Changes in 1.3.x#
Changes in 1.3.1#
It is rare that we make an API change in a bugfix release, however, for 1.3.1 since 1.3.0 the following change was made:
text.Text.cached
(used to cache font objects) has been made into a private variable. Among the obvious encapsulation benefit, this removes this confusing-looking member from the documentation.The method
hist()
now always returns bin occupancies as an array of typefloat
. Previously, it was sometimes an array of typeint
, depending on the call.
Code removal#
The following items that were deprecated in version 1.2 or earlier have now been removed completely.
The Qt 3.x backends (
qt
andqtagg
) have been removed in favor of the Qt 4.x backends (qt4
andqt4agg
).The FltkAgg and Emf backends have been removed.
The
matplotlib.nxutils
module has been removed. Use the functionality onmatplotlib.path.Path.contains_point
and friends instead.Instead of
axes.Axes.get_frame
, useaxes.Axes.patch
.The following keyword arguments to the
legend
function have been renamed:pad -> borderpad
labelsep -> labelspacing
handlelen -> handlelength
handletextsep -> handletextpad
axespad -> borderaxespad
Related to this, the following rcParams have been removed:
legend.pad
,legend.labelsep
,legend.handlelen
,legend.handletextsep
andlegend.axespad
For the
hist
function, instead of width, use rwidth (relative width).On
patches.Circle
, the resolution keyword argument has been removed. For a circle made up of line segments, usepatches.CirclePolygon
.The printing functions in the Wx backend have been removed due to the burden of keeping them up-to-date.
mlab.liaupunov
has been removed.mlab.save
,mlab.load
,pylab.save
andpylab.load
have been removed. We recommend usingnumpy.savetxt
andnumpy.loadtxt
instead.widgets.HorizontalSpanSelector
has been removed. Usewidgets.SpanSelector
instead.
Code deprecation#
The CocoaAgg backend has been deprecated, with the possibility for deletion or resurrection in a future release.
The top-level functions in
matplotlib.path
that are implemented in C++ were never meant to be public. Instead, users should use the Pythonic wrappers for them in thepath.Path
andcollections.Collection
classes. Use the following mapping to update your code:point_in_path
->path.Path.contains_point
get_path_extents
->path.Path.get_extents
point_in_path_collection
->collections.Collection.contains
path_in_path
->path.Path.contains_path
path_intersects_path
->path.Path.intersects_path
convert_path_to_polygons
->path.Path.to_polygons
cleanup_path
->path.Path.cleaned
points_in_path
->path.Path.contains_points
clip_path_to_rect
->path.Path.clip_to_bbox
matplotlib.colors.normalize
andmatplotlib.colors.no_norm
have been deprecated in favour ofmatplotlib.colors.Normalize
andmatplotlib.colors.NoNorm
respectively.The
ScalarMappable
class'set_colorbar
method is now deprecated. Instead, thematplotlib.cm.ScalarMappable.colorbar
attribute should be used. In previous Matplotlib versions this attribute was an undocumented tuple of(colorbar_instance, colorbar_axes)
but is now justcolorbar_instance
. To get the colorbar axes it is possible to just use thematplotlib.colorbar.ColorbarBase.ax
attribute on a colorbar instance.The
matplotlib.mpl
module is now deprecated. Those who relied on this module should transition to simply usingimport matplotlib as mpl
.
Code changes#
Patch
now fully supports using RGBA values for itsfacecolor
andedgecolor
attributes, which enables faces and edges to have different alpha values. If thePatch
object'salpha
attribute is set to anything other thanNone
, that value will override any alpha-channel value in both the face and edge colors. Previously, ifPatch
hadalpha=None
, the alpha component ofedgecolor
would be applied to both the edge and face.The optional
isRGB
argument toset_foreground()
(and the other GraphicsContext classes that descend from it) has been renamed toisRGBA
, and should now only be set toTrue
if thefg
color argument is known to be an RGBA tuple.For
Patch
, thecapstyle
used is nowbutt
, to be consistent with the default for most other objects, and to avoid problems with non-solidlinestyle
appearing solid when using a largelinewidth
. Previously,Patch
usedcapstyle='projecting'
.Path
objects can now be marked as readonly by passingreadonly=True
to its constructor. The built-in path singletons, obtained throughPath.unit*
class methods return readonly paths. If you have code that modified these, you will need to make a deepcopy first, using either:import copy path = copy.deepcopy(Path.unit_circle()) # or path = Path.unit_circle().deepcopy()
Deep copying a
Path
always creates an editable (i.e. non-readonly)Path
.The list at
Path.NUM_VERTICES
was replaced by a dictionary mapping Path codes to the number of expected vertices atNUM_VERTICES_FOR_CODE
.To support XKCD style plots, the
matplotlib.path.cleanup_path
method's signature was updated to require a sketch argument. Users ofmatplotlib.path.cleanup_path
are encouraged to use the newcleaned()
Path method.Data limits on a plot now start from a state of having "null" limits, rather than limits in the range (0, 1). This has an effect on artists that only control limits in one direction, such as
axes.Axes.axvline
andaxes.Axes.axhline
, since their limits will no longer also include the range (0, 1). This fixes some problems where the computed limits would be dependent on the order in which artists were added to the axes.Fixed a bug in setting the position for the right/top spine with data position type. Previously, it would draw the right or top spine at +1 data offset.
In
FancyArrow
, the default arrow head width,head_width
, has been made larger to produce a visible arrow head. The new value of this kwarg ishead_width = 20 * width
.It is now possible to provide
number of levels + 1
colors in the case ofextend='both'
for contourf (or justnumber of levels
colors for an extend valuemin
ormax
) such that the resulting colormap'sset_under
andset_over
are defined appropriately. Any other number of colors will continue to behave as before (if more colors are provided than levels, the colors will be unused). A similar change has been applied to contour, whereextend='both'
would expectnumber of levels + 2
colors.A new keyword extendrect in
colorbar()
andColorbarBase
allows one to control the shape of colorbar extensions.The extension of
MultiCursor
to both vertical (default) and/or horizontal cursor implied thatself.line
is replaced byself.vline
for vertical cursors lines andself.hline
is added for the horizontal cursors lines.On POSIX platforms, the
matplotlib.cbook.report_memory
function raisesNotImplementedError
instead ofOSError
if the ps command cannot be run.The
matplotlib.cbook.check_output
function has been moved tomatplotlib.compat.subprocess
.
Configuration and rcParams#
On Linux, the user-specific
matplotlibrc
configuration file is now located in~/.config/matplotlib/matplotlibrc
to conform to the XDG Base Directory Specification.The
font.*
rcParams now affect only text objects created after the rcParam has been set, and will not retroactively affect already existing text objects. This brings their behavior in line with most other rcParams.Removed call of
grid()
inmatplotlib.pyplot.plotfile
. To draw the axes grid, set theaxes.grid
rcParam to True, or explicitly callgrid()
.