API 变更于 2.2.0#

新依赖项#

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

弃用#

类、函数和方法#

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

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

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

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

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

更改的函数签名#

参数 figGridSpec.get_subplot_params 中已被弃用,请改用 figure

使用带有 Axes 参数的 pyplot.axes 已被弃用。这将设置当前轴,即它与 pyplot.sca 具有相同的效果。为了清晰起见,应优先使用 plt.sca(ax) 而不是 plt.axes(ax)

使用字符串而不是布尔值来控制网格和刻度的可见性已被弃用。使用 "on""off""true""false" 来控制网格和刻度的可见性已被弃用。相反,请使用正常的布尔值(True/False)或类似布尔值的值。在未来,所有非空字符串可能被解释为 True

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

rc参数#

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

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

已弃用的 Axis.unit_data#

使用 Axis.units (已经存在很久了)代替。

移除#

函数签名#

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

None 而不是 "none" 作为格式传递给 errorbar 不再支持。

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 属性已被移除。

colormaps#

spectral 颜色映射已被移除。Vega* 颜色映射,作为 tab* 颜色映射的别名,也已被移除。

rc参数#

以下已弃用的 rcParams 已被移除:

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

  • legend.isaxes,

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

  • text.fontstyle, text.fontangle, text.fontvariant, text.fontweight, text.fontsize (重命名为 text.style 等),

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

仅接受类似字符串的分类输入#

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

删除未使用的导入#

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

Axes3D.get_xlimget_ylimget_zlim 现在返回一个元组#

它们之前返回的是一个数组。返回一个元组与2D轴的行为一致。

异常类型变化#

如果 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 属性改为输出浮点数。

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

FreeType 不允许字体小于 1 点,因此所有 Agg 后端都静默地将字体大小向上舍入到 1 点。PDF(其他矢量后端?)允许我们编写小于 1 点的字体,但由于位置信息来自 FreeType,它们无法正确放置。此更改使得没有任何后端可以使用小于 1 点的字体,与 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 窗口。