API 在 1.3.x 中的变更#
1.3.1 中的变更#
我们很少在微型版本中进行 API 更改,但在 1.3.1 版本中,自 1.3.0 以来进行了以下更改:
代码移除#
以下在 1.2 或更早版本中已弃用的项目现已完全移除。
Qt 3.x 后端 (
qt和qtagg) 已被移除,取而代之的是 Qt 4.x 后端 (qt4和qt4agg)。FltkAgg 和 Emf 后端已移除。
matplotlib.nxutils模块已移除。请改用matplotlib.path.Path.contains_point及其相关功能。请使用
axes.Axes.patch而非axes.Axes.get_frame。legend函数的以下关键字参数已重命名:pad -> borderpad
labelsep -> labelspacing
handlelen -> handlelength
handletextsep -> handletextpad
axespad -> borderaxespad
与此相关,以下 rcParams 已移除:
legend.pad,legend.labelsep,legend.handlelen,legend.handletextsep和legend.axespad
对于
hist函数,请使用 rwidth(相对宽度)而非 width。在
patches.Circle中,resolution 关键字参数已移除。对于由线段构成的圆,请使用patches.CirclePolygon。Wx 后端中的打印功能已移除,因为维护它们的负担过重。
mlab.liaupunov已移除。mlab.save、mlab.load、pylab.save和pylab.load已移除。我们建议改用numpy.savetxt和numpy.loadtxt。widgets.HorizontalSpanSelector已移除。请改用widgets.SpanSelector。
代码弃用#
CocoaAgg 后端已弃用,未来版本中可能会删除或恢复。
matplotlib.path中以 C++ 实现的顶级函数从未打算公开。相反,用户应该使用path.Path和collections.Collection类中它们的 Python 封装器。使用以下映射来更新您的代码:point_in_path->path.Path.contains_pointget_path_extents->path.Path.get_extentspoint_in_path_collection->collections.Collection.containspath_in_path->path.Path.contains_pathpath_intersects_path->path.Path.intersects_pathconvert_path_to_polygons->path.Path.to_polygonscleanup_path->path.Path.cleanedpoints_in_path->path.Path.contains_pointsclip_path_to_rect->path.Path.clip_to_bbox
matplotlib.colors.normalize和matplotlib.colors.no_norm已弃用,分别改用matplotlib.colors.Normalize和matplotlib.colors.NoNorm。ScalarMappable类的set_colorbar方法现已弃用。应改用matplotlib.cm.ScalarMappable.colorbar属性。在以前的 Matplotlib 版本中,此属性是一个未文档化的元组(colorbar_instance, colorbar_axes),但现在它只是colorbar_instance。要获取颜色条轴,只需使用颜色条实例上的matplotlib.colorbar.ColorbarBase.ax属性即可。matplotlib.mpl模块现已弃用。依赖此模块的用户应过渡到直接使用import matplotlib as mpl。
代码更改#
Patch现在完全支持为其facecolor和edgecolor属性使用 RGBA 值,这使得面和边可以具有不同的 alpha 值。如果Patch对象的alpha属性设置为非None的任何值,则该值将覆盖面和边颜色中的任何 alpha 通道值。此前,如果Patch的alpha=None,则edgecolor的 alpha 分量会应用于边和面。set_foreground()(以及其他继承自它的 GraphicsContext 类)的可选isRGB参数已重命名为isRGBA,并且现在仅在fg颜色参数已知为 RGBA 元组时才应设置为True。对于
Patch,现在使用的capstyle是butt,以与大多数其他对象的默认值保持一致,并避免当使用较大的linewidth时非实心linestyle显示为实心的问题。此前,Patch使用capstyle='projecting'。Path对象现在可以通过向其构造函数传入readonly=True来标记为 只读。通过Path.unit*类方法获取的内置路径单例返回只读路径。如果您的代码修改了这些路径,您需要首先进行深拷贝,使用以下方法之一:import copy path = copy.deepcopy(Path.unit_circle()) # or path = Path.unit_circle().deepcopy()
Path.NUM_VERTICES处的列表已替换为将 Path 代码映射到NUM_VERTICES_FOR_CODE处预期顶点数的字典。为了支持 XKCD 风格绘图,
matplotlib.path.cleanup_path方法的签名已更新,要求传入一个 sketch 参数。matplotlib.path.cleanup_path的用户被鼓励使用新的cleaned()Path 方法。绘图上的数据限制现在从“空”限制状态开始,而不是 (0, 1) 范围内的限制。这对于只控制一个方向限制的艺术家(如
axes.Axes.axvline和axes.Axes.axhline)有影响,因为它们的限制将不再包含 (0, 1) 范围。这修复了一些计算出的限制会依赖于艺术家添加到轴的顺序的问题。修复了使用数据位置类型设置右/上脊线位置时的错误。此前,它会在 +1 数据偏移处绘制右或上脊线。
在
FancyArrow中,默认箭头头部宽度head_width已增大,以生成可见的箭头头部。此 kwarg 的新值是head_width = 20 * width。现在可以为
contourf(或仅为 extend 值min或max指定number of levels颜色) 的extend='both'情况提供number of levels + 1种颜色,以便正确定义生成的色彩图的set_under和set_over。任何其他数量的颜色将继续像以前一样工作(如果提供的颜色多于级别,则这些颜色将不被使用)。类似的更改已应用于 contour,其中extend='both'将期望number of levels + 2种颜色。colorbar()和ColorbarBase中新增关键字 extendrect 允许控制颜色条扩展的形状。MultiCursor扩展到垂直(默认)和/或水平光标意味着self.line被垂直光标线替换为self.vline,并且为水平光标线添加了self.hline。在 POSIX 平台上,如果无法运行 ps 命令,
matplotlib.cbook.report_memory函数会引发NotImplementedError而不是OSError。matplotlib.cbook.check_output函数已移至matplotlib.compat.subprocess。
配置和 rcParams#
在 Linux 上,用户特定的
matplotlibrc配置文件现在位于~/.config/matplotlib/matplotlibrc,以符合 XDG 基本目录规范。font.*rcParams 现在只影响在设置 rcParam 后创建的文本对象,而不会追溯影响已存在的文本对象。这使得它们的行为与大多数其他 rcParams 一致。已移除
matplotlib.pyplot.plotfile中对grid()的调用。要绘制坐标轴网格,请将axes.gridrcParam 设置为 True,或显式调用grid()。