1.3.x 中的 API 变更#
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类中的 Pythonic 包装器。请使用以下映射更新您的代码: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现在完全支持使用 RGBA 值为其facecolor和edgecolor属性,这使得面和边可以具有不同的 alpha 值。如果Patch对象的alpha属性设置为None以外的任何值,该值将覆盖面和边颜色中的任何 alpha 通道值。以前,如果Patch的alpha=None,edgecolor的 alpha 分量将应用于边和面。可选的
isRGB参数在set_foreground()(以及从其派生的其他 GraphicsContext 类)中已被重命名为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列表被替换为一个字典,该字典将路径代码映射到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已被增大以产生一个可见的箭头头。这个关键字参数的新值是head_width = 20 * width。现在,在
contourf中使用extend='both'的情况下,可以提供number of levels + 1种颜色(或者对于extend值为min或max的情况,只需number of levels种颜色),以便结果色图的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 Base Directory Specification。font.*rcParams 现在仅影响在设置 rcParam 后创建的文本对象,不会对已存在的文本对象产生追溯影响。这使得它们的行为与其他大多数 rcParams 一致。在
matplotlib.pyplot.plotfile中移除了对grid()的调用。要绘制坐标轴网格,请将axes.gridrcParam 设置为 True,或显式调用grid()。