1.3.x 中的 API 变更#

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 现在完全支持使用 RGBA 值为其 facecoloredgecolor 属性,这使得面和边可以具有不同的 alpha 值。如果 Patch 对象的 alpha 属性设置为 None 以外的任何值,该值将覆盖面和边颜色中的任何 alpha 通道值。以前,如果 Patchalpha=Noneedgecolor 的 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 总是创建一个可编辑的(即非只读的) Path

  • Path.NUM_VERTICES 列表被替换为一个字典,该字典将路径代码映射到 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 已被增大以产生一个可见的箭头头。这个关键字参数的新值是 head_width = 20 * width

  • 现在,在 contourf 中使用 extend='both' 的情况下,可以提供 number of levels + 1 种颜色(或者对于 extend 值为 minmax 的情况,只需 number of levels 种颜色),以便结果色图的 set_underset_over 被适当地定义。其他数量的颜色将继续像以前一样行为(如果提供的颜色比级别多,多余的颜色将被忽略)。类似的更改已应用于 contour,其中 extend='both' 将期望 number of levels + 2 种颜色。

  • colorbar()ColorbarBase 中新增的关键字 extendrect 允许用户控制颜色条扩展的形状。

  • MultiCursor 的扩展,使其同时支持垂直(默认)和/或水平光标,意味着 self.lineself.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.grid rcParam 设置为 True,或显式调用 grid()