API 变更于 2.2.0#
新依赖项#
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
已被弃用,因为在移除“经典”工具栏后,它已不再使用。
更改的函数签名#
参数 fig
在 GridSpec.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.vmin
和 ContourSet.vmax
属性已被移除。
将 None
而不是 "none"
作为格式传递给 errorbar
不再支持。
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
属性已被移除。
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_xlim
、get_ylim
和 get_zlim
现在返回一个元组#
它们之前返回的是一个数组。返回一个元组与2D轴的行为一致。
异常类型变化#
如果 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 属性改为输出浮点数。
小于 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.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 窗口。