API 在 1.3.x 中的变更#

1.3.1 中的变更#

我们很少在微型版本中进行 API 更改,但在 1.3.1 版本中,自 1.3.0 以来进行了以下更改:

  • text.Text.cached(用于缓存字体对象)已改为私有变量。除了明显的封装优势外,这还从文档中移除了这个令人困惑的成员。

  • 方法 hist() 现在总是以 float 类型数组的形式返回 bin 占用率。此前,它有时是 int 类型数组,具体取决于调用方式。

代码移除#

  • 以下在 1.2 或更早版本中已弃用的项目现已完全移除。

    • Qt 3.x 后端 (qtqtagg) 已被移除,取而代之的是 Qt 4.x 后端 (qt4qt4agg)。

    • 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.savemlab.loadpylab.savepylab.load 已移除。我们建议改用 numpy.savetxtnumpy.loadtxt

    • widgets.HorizontalSpanSelector 已移除。请改用 widgets.SpanSelector

代码弃用#

代码更改#

  • Patch 现在完全支持为其 facecoloredgecolor 属性使用 RGBA 值,这使得面和边可以具有不同的 alpha 值。如果 Patch 对象的 alpha 属性设置为非 None 的任何值,则该值将覆盖面和边颜色中的任何 alpha 通道值。此前,如果 Patchalpha=None,则 edgecolor 的 alpha 分量会应用于边和面。

  • set_foreground()(以及其他继承自它的 GraphicsContext 类)的可选 isRGB 参数已重命名为 isRGBA,并且现在仅在 fg 颜色参数已知为 RGBA 元组时才应设置为 True

  • 对于 Patch,现在使用的 capstylebutt,以与大多数其他对象的默认值保持一致,并避免当使用较大的 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 总是会创建一个可编辑(即非只读)的 Path

  • Path.NUM_VERTICES 处的列表已替换为将 Path 代码映射到 NUM_VERTICES_FOR_CODE 处预期顶点数的字典。

  • 为了支持 XKCD 风格绘图,matplotlib.path.cleanup_path 方法的签名已更新,要求传入一个 sketch 参数。matplotlib.path.cleanup_path 的用户被鼓励使用新的 cleaned() Path 方法。

  • 绘图上的数据限制现在从“空”限制状态开始,而不是 (0, 1) 范围内的限制。这对于只控制一个方向限制的艺术家(如 axes.Axes.axvlineaxes.Axes.axhline)有影响,因为它们的限制将不再包含 (0, 1) 范围。这修复了一些计算出的限制会依赖于艺术家添加到轴的顺序的问题。

  • 修复了使用数据位置类型设置右/上脊线位置时的错误。此前,它会在 +1 数据偏移处绘制右或上脊线。

  • FancyArrow 中,默认箭头头部宽度 head_width 已增大,以生成可见的箭头头部。此 kwarg 的新值是 head_width = 20 * width

  • 现在可以为 contourf (或仅为 extend 值 minmax 指定 number of levels 颜色) 的 extend='both' 情况提供 number of levels + 1 种颜色,以便正确定义生成的色彩图的 set_underset_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.grid rcParam 设置为 True,或显式调用 grid()