2.2.0 中的 API 变更#
新依赖#
kiwisolver 现在是支持新 constrained_layout 所必需的依赖项,更多详情请参见受约束布局指南。
弃用#
类、函数和方法#
未使用的、未经测试的 Artist.onRemove 和 Artist.hitlist 方法已被弃用。
现在未使用的 mlab.less_simple_linear_interpolation 函数已被弃用。
未使用的 ContourLabeler.get_real_label_width 方法已被弃用。
未使用的 FigureManagerBase.show_popup 方法已被弃用。此方法于 2005 年在 e945059b327d42a99938b939a1be867fa023e7ba 中引入,但从未在任何后端中实现。
backend_tkagg.AxisMenu 已被弃用,因为它在移除“经典”工具栏后变得未使用。
函数签名变更#
kwarg fig 到 GridSpec.get_subplot_params 已被弃用,请改用 figure。
将 pyplot.axes 与 Axes 作为参数使用已被弃用。这会设置当前坐标轴,即其效果与 pyplot.sca 相同。为了清晰起见,应优先使用 plt.sca(ax) 而非 plt.axes(ax)。
使用字符串而非布尔值来控制网格和刻度可见性已被弃用。使用 "on"、"off"、"true" 或 "false" 来控制网格和刻度可见性已被弃用。请改用普通的布尔值 (True/False) 或类似布尔值的对象。未来,所有非空字符串都可能被解释为 True。
当给定列数不匹配的二维输入时,plot 当前会循环遍历较窄输入的列,直到较宽输入的所有列都已绘制。此行为已被弃用;未来,将只执行广播(1 列到 n 列)。
rcparams#
backend.qt4 和 backend.qt5 rcParams 在 2.2 版本中已被弃用。为了强制使用特定的 Qt 绑定,可以先导入该绑定,或者设置 QT_API 环境变量。
nbagg.transparent rcParam 已弃用。要控制 nbagg(或任何其他)后端中图形补丁的透明度,请直接设置 figure.patch.facecolor,或 figure.facecolor rcParam。
弃用 Axis.unit_data#
请改用 Axis.units(该属性早已存在)。
移除#
函数签名#
等高线图不再支持 legacy 角点掩码。已弃用的 ContourSet.vmin 和 ContourSet.vmax 属性已被移除。
在 errorbar 中,传入 None 而非 "none" 作为格式参数已不再受支持。
Axes 的 bgcolor 关键字参数已被移除。
模块、方法和函数#
matplotlib.finance、mpl_toolkits.exceltools 和 mpl_toolkits.gtktools 模块已被移除。matplotlib.finance 仍可在 matplotlib/mpl_finance 获取。
mpl_toolkits.mplot3d.art3d.iscolor 函数已被移除。
Axes.get_axis_bgcolor、Axes.set_axis_bgcolor、Bbox.update_from_data、Bbox.update_datalim_numerix、MaxNLocator.bin_boundaries 方法已被移除。
mencoder 不再能用于编码动画。
RendererSVG 类的未使用属性 FONT_SCALE 和 fontd 已被移除。
颜色映射#
spectral 颜色映射已被移除。Vega* 颜色映射(tab* 颜色映射的别名)已被移除。
rcparams#
以下已弃用的 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 导入 Figure 而不是从 matplotlib.figure 导入)现在将引发 ImportError。
Axes3D.get_xlim、get_ylim 和 get_zlim 现在返回元组#
它们以前返回数组。返回元组与二维坐标轴的行为一致。
异常类型变更#
如果 MovieWriterRegistry 找不到请求的 MovieWriter,现在会引发更具提示性的 RuntimeError 消息,而不是以前引发的 KeyError。
matplotlib.tight_layout.auto_adjust_subplotpars 在输入列表大小不匹配时现在会引发 ValueError 而不是 RuntimeError
Figure.set_figwidth 和 Figure.set_figheight 默认将 forward 设置为 True#
matplotlib.figure.Figure.set_figwidth 和 matplotlib.figure.Figure.set_figheight 默认情况下 forward=False,但 figure.Figure.set_size_inches 现在默认 forward=True。这使得这些函数保持一致。
不将 SVG 大小截断到最接近的点#
没有理由将 SVG 输出大小设为整数点,将 svg 元素的 height、width 和 viewBox 属性更改为输出浮点数。
小于 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.paintEvent、FigureCanvasQTAggBase.blit 和 FigureCanvasQTAggBase.print_figure 方法已移至 FigureCanvasQTAgg.paintEvent、FigureCanvasQTAgg.blit 和 FigureCanvasQTAgg.print_figure。前两种方法假设实例也是一个 QWidget,因此要使用 FigureCanvasQTAggBase,需要多重继承自一个 QWidget 子类。
在将其所有方法上移或下移类层次结构后,FigureCanvasQTAggBase 已被弃用。为了在不发出警告并尽可能保留 API 的情况下完成此操作,.backend_qt5agg.FigureCanvasQTAggBase 现在继承自 backend_qt5.FigureCanvasQTAgg。
FigureCanvasQTAgg 和 FigureCanvasQTAggBase 的 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,并且其使用已被劝退一段时间。请改用 GTK3Agg 和 GTK3Cairo 后端来渲染到 GTK+ 3 窗口。