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 窗口。