2.2.0 中的 API 变更#

新依赖#

kiwisolver 现在是支持新 constrained_layout 所必需的依赖项,更多详情请参见受约束布局指南

弃用#

类、函数和方法#

未使用的、未经测试的 Artist.onRemoveArtist.hitlist 方法已被弃用。

现在未使用的 mlab.less_simple_linear_interpolation 函数已被弃用。

未使用的 ContourLabeler.get_real_label_width 方法已被弃用。

未使用的 FigureManagerBase.show_popup 方法已被弃用。此方法于 2005 年在 e945059b327d42a99938b939a1be867fa023e7ba 中引入,但从未在任何后端中实现。

backend_tkagg.AxisMenu 已被弃用,因为它在移除“经典”工具栏后变得未使用。

函数签名变更#

kwarg figGridSpec.get_subplot_params 已被弃用,请改用 figure

pyplot.axesAxes 作为参数使用已被弃用。这会设置当前坐标轴,即其效果与 pyplot.sca 相同。为了清晰起见,应优先使用 plt.sca(ax) 而非 plt.axes(ax)

使用字符串而非布尔值来控制网格和刻度可见性已被弃用。使用 "on""off""true""false" 来控制网格和刻度可见性已被弃用。请改用普通的布尔值 (True/False) 或类似布尔值的对象。未来,所有非空字符串都可能被解释为 True

当给定列数不匹配的二维输入时,plot 当前会循环遍历较窄输入的列,直到较宽输入的所有列都已绘制。此行为已被弃用;未来,将只执行广播(1 列到 n 列)。

rcparams#

backend.qt4backend.qt5 rcParams 在 2.2 版本中已被弃用。为了强制使用特定的 Qt 绑定,可以先导入该绑定,或者设置 QT_API 环境变量。

nbagg.transparent rcParam 已弃用。要控制 nbagg(或任何其他)后端中图形补丁的透明度,请直接设置 figure.patch.facecolor,或 figure.facecolor rcParam。

弃用 Axis.unit_data#

请改用 Axis.units(该属性早已存在)。

移除#

函数签名#

等高线图不再支持 legacy 角点掩码。已弃用的 ContourSet.vminContourSet.vmax 属性已被移除。

errorbar 中,传入 None 而非 "none" 作为格式参数已不再受支持。

Axesbgcolor 关键字参数已被移除。

模块、方法和函数#

matplotlib.financempl_toolkits.exceltoolsmpl_toolkits.gtktools 模块已被移除。matplotlib.finance 仍可在 matplotlib/mpl_finance 获取。

mpl_toolkits.mplot3d.art3d.iscolor 函数已被移除。

Axes.get_axis_bgcolorAxes.set_axis_bgcolorBbox.update_from_dataBbox.update_datalim_numerixMaxNLocator.bin_boundaries 方法已被移除。

mencoder 不再能用于编码动画。

RendererSVG 类的未使用属性 FONT_SCALEfontd 已被移除。

颜色映射#

spectral 颜色映射已被移除。Vega* 颜色映射(tab* 颜色映射的别名)已被移除。

rcparams#

以下已弃用的 rcParams 已被移除

  • axes.color_cycle (参见 axes.prop_cycle),

  • legend.isaxes,

  • svg.embed_char_paths (参见 svg.fonttype),

  • text.fontstyletext.fontangletext.fontvarianttext.fontweighttext.fontsize(已重命名为 text.style 等),

  • tick.size(已重命名为 tick.major.size)。

分类输入只接受字符串类型#

不接受混合字符串/浮点数/整数输入,只有字符串是有效的分类变量。

移除未使用的导入#

代码库中移除了许多未使用的导入。因此,尝试从“错误”模块导入某些类或函数(例如,从 matplotlib.backends.backend_agg 导入 Figure 而不是从 matplotlib.figure 导入)现在将引发 ImportError

Axes3D.get_xlimget_ylimget_zlim 现在返回元组#

它们以前返回数组。返回元组与二维坐标轴的行为一致。

异常类型变更#

如果 MovieWriterRegistry 找不到请求的 MovieWriter,现在会引发更具提示性的 RuntimeError 消息,而不是以前引发的 KeyError

matplotlib.tight_layout.auto_adjust_subplotpars 在输入列表大小不匹配时现在会引发 ValueError 而不是 RuntimeError

Figure.set_figwidthFigure.set_figheight 默认将 forward 设置为 True#

matplotlib.figure.Figure.set_figwidthmatplotlib.figure.Figure.set_figheight 默认情况下 forward=False,但 figure.Figure.set_size_inches 现在默认 forward=True。这使得这些函数保持一致。

不将 SVG 大小截断到最接近的点#

没有理由将 SVG 输出大小设为整数点,将 svg 元素的 heightwidthviewBox 属性更改为输出浮点数。

小于 1pt 的字体大小被裁剪为 1pt。#

FreeType 不允许字体小于 1pt,因此所有 Agg 后端都默默地向上舍入到 1pt。PDF(其他矢量后端?)允许我们写入小于 1pt 的字体,但由于位置信息来自 FreeType,它们无法正确放置。此更改使得所有后端都不能使用小于 1pt 的字体,这与 FreeType 一致,并确保了后端之间更一致的结果。

Qt 后端类 MRO 的变更#

为了支持 Qt 后端的 Agg 和 cairo 渲染,所有以前在 backend_qt5agg.FigureCanvasQTAggBase 中的非 Agg 特定代码都已移至 backend_qt5.FigureCanvasQT,以便与 cairo 实现共享。FigureCanvasQTAggBase.paintEventFigureCanvasQTAggBase.blitFigureCanvasQTAggBase.print_figure 方法已移至 FigureCanvasQTAgg.paintEventFigureCanvasQTAgg.blitFigureCanvasQTAgg.print_figure。前两种方法假设实例也是一个 QWidget,因此要使用 FigureCanvasQTAggBase,需要多重继承自一个 QWidget 子类。

在将其所有方法上移或下移类层次结构后,FigureCanvasQTAggBase 已被弃用。为了在不发出警告并尽可能保留 API 的情况下完成此操作,.backend_qt5agg.FigureCanvasQTAggBase 现在继承自 backend_qt5.FigureCanvasQTAgg

FigureCanvasQTAggFigureCanvasQTAggBase 的 MRO 曾经是

[matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
 matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
 matplotlib.backends.backend_agg.FigureCanvasAgg,
 matplotlib.backends.backend_qt5.FigureCanvasQT,
 PyQt5.QtWidgets.QWidget,
 PyQt5.QtCore.QObject,
 sip.wrapper,
 PyQt5.QtGui.QPaintDevice,
 sip.simplewrapper,
 matplotlib.backend_bases.FigureCanvasBase,
 object]

[matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
 matplotlib.backends.backend_agg.FigureCanvasAgg,
 matplotlib.backend_bases.FigureCanvasBase,
 object]

现在是

[matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
 matplotlib.backends.backend_agg.FigureCanvasAgg,
 matplotlib.backends.backend_qt5.FigureCanvasQT,
 PyQt5.QtWidgets.QWidget,
 PyQt5.QtCore.QObject,
 sip.wrapper,
 PyQt5.QtGui.QPaintDevice,
 sip.simplewrapper,
 matplotlib.backend_bases.FigureCanvasBase,
 object]

[matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
 matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
 matplotlib.backends.backend_agg.FigureCanvasAgg,
 matplotlib.backends.backend_qt5.FigureCanvasQT,
 PyQt5.QtWidgets.QWidget,
 PyQt5.QtCore.QObject,
 sip.wrapper,
 PyQt5.QtGui.QPaintDevice,
 sip.simplewrapper,
 matplotlib.backend_bases.FigureCanvasBase,
 object]

axes.Axes.imshow 将 RGB 值裁剪到有效范围#

axes.Axes.imshow 传入超出范围的 RGB 或 RGBA 值时,它现在会记录警告并将其裁剪到有效范围。旧的行为(环绕回范围)通常会隐藏异常值并使 RGB 图像的解释不可靠。

GTKAgg 和 GTKCairo 后端已被弃用#

GTKAgg 和 GTKCairo 后端已被弃用。这些过时的后端允许通过 GTK+ 2 工具包渲染图形。它们未经测试,已知存在问题,不适用于 Python 3,并且其使用已被劝退一段时间。请改用 GTK3AggGTK3Cairo 后端来渲染到 GTK+ 3 窗口。