3.6.0 的 API 变更#
行为变化#
plt.get_cmap 和 matplotlib.cm.get_cmap 返回一个副本#
以前,get_cmap 和 matplotlib.cm.get_cmap 返回的是 Colormap 的全局版本。这容易导致错误,因为对色图的修改会在没有警告的情况下从一个位置传播到另一个位置。现在,返回的是色图的新副本。
大型 imshow 图像现在被降采样#
当使用 imshow 显示一个列数超过 \(2^{24}\) 或行数超过 \(2^{23}\) 的图像时,图像现在会在被AGG渲染器重新采样显示之前,先被降采样到低于此分辨率。以前,如此大的图像会显示不正确。要防止这种降采样及其引发的警告,请在将数据传递给 imshow 之前手动降采样。
默认日期限制已更改为 1970-01-01 – 1970-01-02#
之前,为日期设置的空轴(Axis.axis_date)的默认限制是从2000-01-01到2010-01-01。这一限制已更改为1970-01-01至1970-01-02。使用默认纪元,这使得日期轴的数值限制与其他轴(0.0-1.0)相同,用户设置的定位器不太可能包含过多的刻度。
markerfmt 参数用于 stem#
stem 的 markerfmt 参数的行为已更改:
如果 markerfmt 不包含颜色,颜色将从 linefmt 中获取。
如果 markerfmt 不包含标记,默认值为 'o'。
之前,markerfmt 未经修改直接传递给 plot(..., fmt),这导致了一系列意外的副作用;例如,仅提供颜色会切换到没有标记的实线。
对于没有参数的简单调用 stem(x, y),新规则仍然重现旧的行为。
get_ticklabels 现在总是填充标签#
以前,Axis.get_ticklabels`(以及 `.Axes.get_xticklabels,Axes.get_yticklabels)只有在已经执行了绘制操作的情况下才会返回空字符串。现在,当请求标签时,刻度和它们的标签会更新。
警告:散点图颜色设置被丢弃#
在制作散点图动画时,如果在初始化艺术家时没有设置 c*(颜色值参数),颜色设置将被忽略。现在,如果更改了与颜色相关的设置而没有设置 *c,Axes.scatter 会发出警告。
3D contourf 多边形放置在层级之间#
在3D contourf 图中使用的多边形现在被放置在等高线级别之间的中间位置,因为每个多边形代表位于两个级别之间的值的位置。
轴标题现在避免y轴偏移#
之前,轴标题可能会与y轴偏移文本重叠,该文本通常位于轴的左上角。现在,如果启用了自动标题定位(即,如果 Axes.set_title 中的 y 为 None 且 rcParams["axes.titley"] (default: None) 也为 None),标题会在重叠时移动到偏移文本上方。
在mathtext中,点操作符获得额外的空间#
在mathtext中,\doteq \doteqdot \dotminus \dotplus \dots 现在被额外的空格包围,因为它们被正确地视为关系或二元运算符。
math 参数 mathtext.get_unicode_index 默认为 False#
在数学模式下,ASCII 连字符 (U+002D) 现在在解析阶段被替换为 Unicode 减号 (U+2212)。
ArtistList 在迭代时复制内容#
在迭代动态生成的 Artist-type 访问器的代理列表内容时(参见 行为 API 变更 3.5 - 合并 Axes 子元素),会创建内容的副本。这确保了在迭代其子元素时,可以从 Axes 中安全地添加或移除艺术家。
这与Python中可变可迭代数据类型的预期行为有所不同——在迭代列表的同时对其进行修改会产生意想不到的后果,而字典如果在迭代过程中改变大小则会报错。由于所有的访问器都是对同一底层列表的过滤视图,因此看似不相关的更改,例如删除一行,可能会影响对任何其他访问器的迭代。在这种情况下,我们选择在将相关子项提供给用户之前,先对其进行复制。
这一更改也与我们计划在 Matplotlib 3.7 中使这些访问器不可变的计划一致。
AxesImage 字符串表示#
AxesImage 的字符串表示从显示在图中的位置 "AxesImage(80,52.8;496x369.6)" 变为显示像素数量 "AxesImage(size=(300, 200))"。
改进了贝塞尔曲线的自动缩放#
Bézier曲线现在会自动缩放到其范围 - 以前它们会自动缩放到其端点和控制点,这在某些情况下会导致不必要的较大限制。
QuadMesh 鼠标悬停默认为 False#
在 3.5 版本中新增,QuadMesh.get_cursor_data 允许在光标下显示数据值。然而,对于大型网格,这可能会非常慢,因此现在鼠标悬停默认设置为 False。
更改了pgf后端文档类#
pgf 后端现在使用 article 文档类作为编译的基础。
MathtextBackendAgg.get_results 不再返回 used_characters#
元组 MathtextBackendAgg.get_results 返回的最后一个元素 (used_characters) 已被移除。为了以向后和向前兼容的方式解包此元组,请使用例如 ox, oy, width, height, descent, image, *_ = parse(...),如果存在 used_characters,它将被忽略。
Type1Font 对象包含更多属性#
matplotlib._type1font.Type1Font.prop 字典现在包含更多键,例如 CharStrings 和 Subrs。Encoding 键的值现在是一个将代码映射到字形名称的字典。matplotlib._type1font.Type1Font.transform 方法现在正确地从字体中移除 UniqueID 属性。
rcParams.copy() 返回 RcParams 而不是 dict#
从 RcParams.copy 返回一个 RcParams 实例,使得复制仍然验证输入,并且在使用先前复制的实例更新全局实例时(即使某些条目已弃用),还可以避免发出弃用警告。
rc_context 不再重置 'backend' 的值#
matplotlib.rc_context 如果在上下文中触发了后端解析,错误地重置了 rcParams["backend"] 的值。这仅影响了值,实际后端并未改变。现在,matplotlib.rc_context 不再重置 rcParams["backend"]。
默认的 rcParams["animation.convert_args"] 已更改#
现在默认设置为 ["-layers", "OptimizePlus"] 以尝试生成更小的 GIF。将其设置回空列表以恢复之前的行为。
样式文件编码现在指定为 UTF-8#
由于我们在导入时读取样式库,因此使用非 UTF-8 兼容的区域设置编码导入 Matplotlib 是不可能的。此更改正在正式化和记录当前状态,因此没有弃用期。
MacOSX 后端使用 sRGB 而不是 GenericRGB 色彩空间#
MacOSX 后端现在显示 sRGB 标记的图像,而不是旧的(现已弃用)Apple 色彩空间 GenericRGB。这是 ColorSync 用于转换到当前显示配置文件的源色彩空间。
get_tightbbox 和 get_window_extent 的渲染器是可选的#
Artist.get_tightbbox 和 Artist.get_window_extent 方法不再需要 renderer 关键字参数,从而避免了用户必须从 fig.canvas.get_renderer 查询它。如果未提供 renderer 关键字参数,这些方法首先检查是否存在先前绘制的缓存渲染器并使用它。如果没有缓存的渲染器,则这些方法将使用 fig.canvas.get_renderer() 作为后备。
FigureFrameWx 构造函数、子类和 get_canvas#
FigureCanvasWx 构造函数增加了一个仅关键字的 canvas_class 参数,用于指定应使用的画布类。此参数在未来将成为必需。用于自定义画布创建的 get_canvas 方法已被弃用。重写了 get_canvas 的 FigureFrameWxAgg 和 FigureFrameWxCairo 子类也已被弃用。
FigureFrameWx.sizer#
... 已被移除。框架布局不再基于sizer,因为画布现在是唯一的子部件;工具栏现在是一个使用 SetToolBar 添加的常规工具栏。
不兼容的布局引擎会引发#
如果一个颜色条已经添加到图形中,你不能在 tight_layout 和 constrained_layout 之间切换。调用不兼容的布局引擎过去会警告,但现在会引发 RuntimeError。
CallbackRegistry 在遇到未知信号时触发#
当 Matplotlib 实例化一个 CallbackRegistry 时,它现在将回调限制为注册表已知的信号。实际上,这意味着使用无效的信号名称调用 mpl_connect 现在会引发 ValueError。
更改了SVG日期元数据不正确时的异常类型#
向SVG后端提供类型错误的日期元数据之前会导致 ValueError。现在,改为引发 TypeError。
Grid 中指定的异常类型#
在少数情况下,当在 mpl_toolkits.axes_grid1.axes_grid.Grid`(= `mpl_toolkits.axisartist.axes_grid.Grid)构造函数中设置了不正确的参数值时,会抛出 Exception。这些被替换如下:
为 ngrids 提供一个不正确的值现在会引发
ValueError为 rect 提供不正确的类型现在会引发
TypeError
弃用#
plt.figure() 的参数和 Figure 构造函数#
除了 num、figsize 和 dpi 之外,所有传递给 pyplot.figure 和 Figure 构造函数的参数,在弃用期之后将成为仅关键字参数。
cbook 中的弃用别名#
模块 matplotlib.cbook.deprecation 在 Matplotlib 3.4 中已被弃用,同时被弃用的还有 matplotlib.cbook 中的相关 API。由于技术问题,matplotlib.cbook.MatplotlibDeprecationWarning 和 matplotlib.cbook.mplDeprecation 在使用时并未引发弃用警告。Python 的更改现在使得在使用这些别名时可以发出警告。
为了避免下游的破坏,这些别名现在将发出警告,并且它们的移除时间已从3.6推迟到3.8,以便有时间注意到这些警告。作为替代,请使用 matplotlib.MatplotlibDeprecationWarning。
Axes 子类应重写 clear 而不是 cla#
为了清晰起见,现在更推荐使用 axes.Axes.clear 而不是 Axes.cla。然而,为了向后兼容,后者将作为前者的别名保留。
为了与第三方库保持额外的兼容性,Matplotlib 将继续调用任何 Axes 子类中定义的 cla 方法。未来,这种情况将不再发生,Matplotlib 将只在 Axes 子类中调用 clear 方法。
建议在 Matplotlib 3.6 上仅定义 clear 方法,而在旧版本上仅定义 cla。
mpl.cm 中待弃用的顶级颜色映射注册和访问函数#
作为 多步骤过程 的一部分,我们正在重构用于管理已注册色图的全局状态。
在 Matplotlib 3.5 中,我们添加了一个 ColormapRegistry 类,并在顶层以 matplotlib.colormaps 的形式公开了一个实例。matplotlib.cm 中现有的顶层函数(get_cmap、register_cmap、unregister_cmap)被更改为围绕同一实例的别名。
在 Matplotlib 3.6 中,我们将这些顶级函数标记为待弃用,计划在 Matplotlib 3.7 中弃用。以下函数已被标记为待弃用:
matplotlib.cm.get_cmap;如果你有一个str,请使用matplotlib.colormaps[name]代替。添加于 3.6.1 如果你有一个字符串、
None或一个matplotlib.colors.Colormap对象,并希望将其转换为matplotlib.colors.Colormap实例,请使用matplotlib.cm.ColormapRegistry.get_cmap。matplotlib.cm.register_cmap;请改用matplotlib.colormaps.registermatplotlib.cm.unregister_cmap;请改用matplotlib.colormaps.unregistermatplotlib.pyplot.register_cmap;请改用matplotlib.colormaps.register
matplotlib.pyplot.get_cmap 函数将保持可用以确保向后兼容性。
布局方法的待弃用#
不推荐使用方法 set_tight_layout, set_constrained_layout,现在会发出 PendingDeprecationWarning,建议通过 figure.set_layout_engine('tight') 和 figure.set_layout_engine('constrained') 显式引用布局引擎。最终用户不应看到此警告,但库作者应进行调整。
方法 set_constrained_layout_pads 和 get_constrained_layout_pads 将被弃用,取而代之的是 figure.get_layout_engine().set() 和 figure.get_layout_engine().get(),并且当前会发出 PendingDeprecationWarning。
seaborn 样式重命名#
Matplotlib 目前提供了许多受 seaborn 库启发的样式文件(如“seaborn”、“seaborn-bright”、“seaborn-colorblind”等),但由于 seaborn 0.9 版本的发布,这些样式文件与库本身已经不同步。为了避免混淆,这些样式文件已被重命名为“seaborn-v0_8”、“seaborn-v0_8-bright”、“seaborn-v0_8-colorblind”等。建议用户直接使用 seaborn 来访问最新的样式。
通过 plt.subplot 和 plt.subplot2grid 自动移除重叠的 Axes#
之前,pyplot.subplot 和 pyplot.subplot2grid 会自动移除与新添加的 Axes 重叠的现有 Axes。这种行为被认为令人困惑,现在已被弃用。需要移除的 Axes 应显式调用 ax.remove()。
将 linefmt 按位置传递给 stem 是不被弃用的#
自 Matplotlib 3.5 起,stem 中所有格式参数的位置使用已被弃用。这一弃用有所放宽,因此仍然可以通过位置传递 linefmt,即 stem(x, y, 'r')。
stem(..., use_line_collection=False)#
... 已被弃用,没有替代方案。这是一个兼容性回退,用于以前效率较低的主干线表示。
位置 / 关键字参数#
在Artists的构造函数中,除了前几个非常少的参数外,其他所有参数都已弃用。在未来的版本中,大多数参数将成为仅关键字参数。
向 tripcolor 传递过多的位置参数现在已被弃用(额外的参数之前会被静默忽略)。
传递 set_xlim、set_ylim、set_zlim、set_rlim 的 emit 和 auto 参数作为位置参数已被弃用;它们将在未来的版本中成为仅关键字参数。
Collection.set_offset_transform 的 transOffset 参数和图例处理器的各种 create_collection 方法已重命名为 *offset_transform*(与属性名称一致)。
调用 MarkerStyle() 时不带参数或使用 MarkerStyle(None) 已被弃用;请使用 MarkerStyle("") 来构造一个空的标记样式。
Axes.get_window_extent / Figure.get_window_extent 仅接受 渲染器。这使得API与一般的 Artist.get_window_extent API 保持一致。无论如何,所有其他参数都被忽略了。
get_renderer 的 cleared 参数,该参数仅存在于基于 AGG 的后端,已被弃用。请改用 renderer.clear() 来显式清除渲染器缓冲区。
在 LogLocator 和 LogFormatter* 中设置参数的方法#
在 LogFormatter 及其派生子类中,用于设置相应参数的方法 base 和 label_minor 已被弃用,并分别被 set_base 和 set_label_minor 取代。
在 LogLocator 中,用于设置相应参数的方法 base 和 subs 已被弃用。请改用 set_params(base=..., subs=...)。
Axes.get_renderer_cache#
现在,画布负责渲染器以及是否缓存它。另一种方法是调用 axes.figure.canvas.get_renderer()。
Axis、Tick、XAxis 和 YAxis 中的未使用方法#
Tick.label 自 3.1 版本起已处于待弃用状态,现在已被弃用。请改用 Tick.label1。
以下方法已不再使用且已被弃用,没有替代方案:
Axis.get_ticklabel_extentsTick.get_pad_pixelsXAxis.get_text_heightsYAxis.get_text_widths
mlab.stride_windows#
... 已被弃用。请使用 np.lib.stride_tricks.sliding_window_view 代替(或者在 NumPy < 1.20 上使用 np.lib.stride_tricks.as_strided)。
事件处理程序#
FigureCanvasBase 的 draw_event、resize_event、close_event、key_press_event、key_release_event、pick_event、scroll_event、button_press_event、button_release_event、motion_notify_event、enter_notify_event 和 leave_notify_event 方法已被弃用。它们在不同后端之间签名不一致,并且使得改进事件元数据变得困难。
为了在画布上触发一个事件,直接构造一个正确类的 Event 对象,并调用 canvas.callbacks.process(event.name, event)。
小部件#
所有传递给 MultiCursor 的参数,从 useblit 开始,都将成为仅关键字参数(按位置传递它们已被弃用)。
MultiCursor 的 canvas 和 background 属性已被弃用,没有替代方案。
Selector 小部件的 visible 属性已被弃用;请改用 set_visible 或 get_visible。
选择器小部件的 state_modifier_keys 属性已被私有化,修改键必须在创建小部件时设置。
Axes3D.dist#
... 已被私有化。请改用 Axes3D.set_box_aspect 中的 zoom 关键字参数。
3D 轴#
axis3d.Axis 的先前构造函数,其签名 (self, adir, v_intervalx, d_intervalx, axes, *args, rotate_label=None, **kwargs) 已被弃用,取而代之的是更接近 2D Axis 的新签名;现在为 (self, axes, *, rotate_label=None, **kwargs),其中 kwargs 被转发到 2D Axis 构造函数。轴方向现在从轴类的 axis_name 属性推断(如 2D 情况中);adir 属性已被弃用。
3D 轴的 init3d 方法也被弃用;所有相关的初始化工作都在构造函数中完成。
3D Axis 的 d_interval 和 v_interval 属性已被弃用;请改用 get_data_interval 和 get_view_interval。
Axis3D 的 w_xaxis、w_yaxis 和 w_zaxis 属性自 3.1 版本起已计划弃用。现在它们已被弃用。请改用 xaxis、yaxis 和 zaxis。
mplot3d.axis3d.Axis.set_pane_pos 已被弃用。这是一个内部方法,提供的值在绘图过程中会被覆盖。因此,它没有直接访问的目的。
两个辅助函数 mplot3d.axis3d.move_from_center 和 mplot3d.axis3d.tick_update_position 被视为内部函数且已弃用。如果需要这些函数,请从相应的私有方法 _move_from_center 和 _tick_update_position 中获取代码。
Figure.callbacks 已被弃用#
图 callbacks 属性已被弃用。唯一的信号是 "dpi_changed",可以用连接到画布上的 "resize_event" 来替代,即 figure.canvas.mpl_connect("resize_event", func)。
没有 required_interactive_framework 属性的 FigureCanvas#
对这种画布类的支持已被弃用。请注意,继承自 FigureCanvasBase 的画布类总是具有这样的属性。
特定后端的弃用#
backend_gtk3.FigureManagerGTK3Agg和backend_gtk4.FigureManagerGTK4Agg;直接使用backend_gtk3.FigureManagerGTK3和backend_gtk4.FigureManagerGTK4代替。backend_gtk3.NavigationToolbar2GTK3的 window 参数没有效果,现已弃用。backend_gtk3.NavigationToolbar2GTK3.winbackend_gtk3.RendererGTK3Cairo和backend_gtk4.RendererGTK4Cairo;请改用RendererCairo,它增加了set_context方法,该方法还能自动推断底层表面的尺寸。backend_cairo.RendererCairo.set_ctx_from_surface和backend_cairo.RendererCairo.set_width_height改为使用RendererCairo.set_context。backend_gtk3.error_msg_gtkbackend_gtk3.icon_filename和backend_gtk3.window_iconbackend_macosx.NavigationToolbar2Mac.prepare_configure_subplots已被configure_subplots()取代。backend_pdf.Name.hexifybackend_pdf.Operator和backend_pdf.Op.op已被弃用,取而代之的是backend_pdf.Op上的单一标准enum.Enum接口。backend_pdf.fill;如果你依赖这些函数,请将同名的私有函数的代码纳入你的代码库。backend_pgf.LatexManager.texcommand和backend_pgf.LatexManager.latex_headerbackend_pgf.NO_ESCAPEbackend_pgf.common_texificationbackend_pgf.get_fontspecbackend_pgf.get_preamblebackend_pgf.re_mathsepbackend_pgf.writelnbackend_ps.convert_psfragsbackend_ps.quote_ps_string;如果你依赖它,请将同名的私有函数的代码纳入你的项目中。backend_qt.qApp;请改用QtWidgets.QApplication.instance()。backend_svg.escape_attrib;如果你依赖它,请将类似名称的私有函数的代码纳入你的项目中。backend_svg.escape_cdata;如果你依赖它,请将类似名称的私有函数的代码纳入你的项目中。backend_svg.escape_comment;如果你依赖它,请将类似名称的私有函数的代码纳入。backend_svg.short_float_fmt;如果你依赖它,请将类似名称的私有函数的代码纳入你的项目。backend_svg.generate_transform和backend_svg.generate_cssbackend_tk.NavigationToolbar2Tk.lastrect和backend_tk.RubberbandTk.lastrectbackend_tk.NavigationToolbar2Tk.window;请改用toolbar.master。backend_tools.ToolBase.destroy;要在工具移除时运行代码,请连接到tool_removed_event事件。backend_wx.RendererWx.offset_text_heightbackend_wx.error_msg_wxFigureCanvasBase.pick;直接调用Figure.pick,它也接管了检查画布小部件锁的责任。FigureCanvasBase.resize,此方法无效;请改用FigureManagerBase.resize。FigureManagerMac.closeFigureFrameWx.sizer;请改用frame.GetSizer()。FigureFrameWx.figmgr和FigureFrameWx.get_figure_manager;请改用frame.canvas.manager。FigureFrameWx.num;请改用frame.canvas.manager.num。FigureFrameWx.toolbar;请改用frame.GetToolBar()。FigureFrameWx.toolmanager;请改用frame.canvas.manager.toolmanager。
模块#
模块 matplotlib.afm, matplotlib.docstring, matplotlib.fontconfig_pattern, matplotlib.tight_bbox, matplotlib.tight_layout, 和 matplotlib.type1font 被视为内部模块,不推荐公开访问。
checkdep_usetex 已弃用#
此方法仅用于在没有找到 LaTeX 安装时禁用测试。因此,它被认为是私有的,仅供内部使用。
如果你需要这个,请将代码纳入供应商管理。
date_ticker_factory 已弃用#
matplotlib.dates 模块中的 date_ticker_factory 方法已被弃用。请改用 AutoDateLocator 和 AutoDateFormatter 以获得更灵活和可扩展的定位器和格式化器。
如果你需要 date_ticker_factory 的确切行为,请复制代码。
dviread.find_tex_file 将引发 FileNotFoundError#
在未来,dviread.find_tex_file 将为缺失的文件引发 FileNotFoundError。之前,在这种情况下它会返回一个空字符串。引发异常允许附加一个用户友好的消息。在过渡期间,会引发一个警告。
transforms.Affine2D.identity()#
... 已被弃用,建议直接调用不带参数的 Affine2D 构造函数。
testing.decorators 中的弃用#
未使用的类 CleanupTestCase 和装饰器 cleanup 已被弃用,并将被移除。请将代码,包括私有函数 _cleanup_cm,纳入供应商代码库。
函数 check_freetype_version 被视为内部函数且已弃用。请将私有函数 _check_freetype_version 的代码纳入供应商代码中。
text.get_rotation()#
... 已被弃用,没有替代方案。如有需要,请复制原始实现。
杂项内部机制#
axes_grid1.axes_size.AddList;使用 ``sum(sizes, start=Fixed(0))``(例如)来求多个尺寸对象的和。axes_size.Padded;请使用size + pad代替axes_size.SizeFromFunc,axes_size.GetExtentHelperAxisArtistHelper.delta1和AxisArtistHelper.delta2axislines.GridHelperBase.new_gridlines和axislines.Axes.new_gridlinescbook.maxdict;请改用标准库functools.lru_cache。_DummyAxis.dataLim和_DummyAxis.viewLim;请改用get_data_interval()、set_data_interval()、get_view_interval()和set_view_interval()。GridSpecBase.get_grid_positions(..., raw=True)ImageMagickBase.delay和ImageMagickBase.output_argsMathtextBackend,MathtextBackendAgg,MathtextBackendPath,MathTextWarningTexManager.get_font_config;它之前返回的是用于缓存目的的内部哈希键。TextToPath.get_texmanager;直接构造一个texmanager.TexManager代替。ticker.is_close_to_int;请改用math.isclose(x, round(x))。ticker.is_decade;请改用y = numpy.log(x)/numpy.log(base); numpy.isclose(y, numpy.round(y))。
移除#
以下已弃用的API已被移除:
移除的行为#
更严格的函数参数验证#
对
Figure.savefig、pyplot.savefig以及FigureCanvas.print_*方法的未知关键字参数现在会引发TypeError,而不是被忽略。Axes构造函数的额外参数,即除 fig 和 rect 之外的参数,现在仅限关键字。不再支持在
Axes3D.plot_surface和Axes3D.plot_wireframe的签名中未明确列出的参数传递;请改为将任何额外参数作为关键字参数传递。传递位置参数给
LineCollection已被移除;现在请使用特定的关键字参数名称。
imread 不再接受URL#
传递 URL 给 imread() 已被移除。请打开 URL 进行读取并直接使用 Pillow API(例如,PIL.Image.open(urllib.request.urlopen(url)),或 PIL.Image.open(io.BytesIO(requests.get(url).content)))代替。
MarkerStyle 是不可变的#
方法 MarkerStyle.set_fillstyle 和 MarkerStyle.set_marker 已被移除。请使用相应的参数创建一个新的 MarkerStyle。
将字节传递给 FT2Font.set_text#
... 不再支持。请传递 str 代替。
支持将工具名称传递给 ToolManager.add_tool#
... 已被移除。ToolManager.add_tool 的第二个参数现在必须始终是一个工具类。
backend_tools.ToolFullScreen 现在继承自 ToolBase,而不是 ToolToggleBase#
ToolFullScreen 只能切换非全屏和全屏状态,但不能无条件地将窗口置于给定状态;因此,enable 和 disable 方法被误导性地命名。因此,ToolToggleBase 相关的 API(enable、disable 等)被移除。
BoxStyle._Base 和 transmute 方法的框样式#
... 已被移除。作为类的盒子样式不再需要继承自基类。
已加载模块日志#
当前加载的模块列表不再在 Matplotlib 导入时以 DEBUG 级别记录,因为它可能产生大量输出,并使其他有价值的 DEBUG 语句难以找到。如果你依赖此输出,请自行安排日志记录(可以使用内置的 sys.modules 来获取当前加载的模块)。
模块#
cbook.deprecation模块已从公共 API 中移除,因为它被视为内部模块。mpl_toolkits.axes_grid模块已被移除。所有mpl_toolkits.axes_grid的功能都可以在mpl_toolkits.axes_grid1或mpl_toolkits.axisartist中找到。基于mpl_toolkits.axisartist中的Axis的mpl_toolkits.axes_grid的轴类可以在mpl_toolkits.axisartist中找到。
类、方法和属性#
以下模块级别的类/变量已被移除:
cm.cmap_dcolorbar.colorbar_doc,colorbar.colorbar_kw_docColorbarPatchmathtext.Fonts及其所有子类mathtext.FontConstantsBase及其所有子类mathtext.latex_to_bakoma,mathtext.latex_to_cmex,mathtext.latex_to_standardmathtext.MathtextBackendPdf,mathtext.MathtextBackendPs,mathtext.MathtextBackendSvg,mathtext.MathtextBackendCairo; 请使用.MathtextBackendPath代替。mathtext.Node及其所有子类mathtext.NUM_SIZE_LEVELSmathtext.Parsermathtext.Shipmathtext.SHRINK_FACTOR和mathtext.GROW_FACTORmathtext.stix_virtual_fonts,mathtext.tex2unibackend_pgf.TmpDirCleanerbackend_ps.GraphicsContextPS;请改用GraphicsContextBase。backend_wx.IDLE_DELAYaxes_grid1.parasite_axes.ParasiteAxesAuxTransBase;请改用ParasiteAxesBase。axes_grid1.parasite_axes.ParasiteAxesAuxTrans;请改用ParasiteAxes。
以下类属性已被移除:
Line2D.validCap和Line2D.validJoin;验证集中在rcsetup中。Patch.validCap和Patch.validJoin;验证集中在rcsetup中。renderer.M,renderer.eye,renderer.vvec,renderer.get_axis_position在3D轴绘制期间放置在渲染器上;这些属性都可以通过Axes3D访问,所有Artist可以通过self.axes访问。RendererPdf.mathtext_parser,RendererPS.mathtext_parser,RendererSVG.mathtext_parser,RendererCairo.mathtext_parserStandardPsFonts.pswriterSubplot.figbox;请改用Axes.get_position。Subplot.numRows;请改用ax.get_gridspec().nrows。Subplot.numCols;请改用ax.get_gridspec().ncols。SubplotDivider.figbox所有
Widget上的cids、cnt、observers、change_observers和submit_observers
以下类方法已被移除:
Axis.cla();请改用Axis.clear。RadialAxis.cla()和ThetaAxis.cla();请使用RadialAxis.clear或ThetaAxis.clear代替。Spine.cla(); 请改用Spine.clear。ContourLabeler.get_label_coords();由于被视为内部辅助函数,因此没有替代方法。FancyArrowPatch.get_dpi_cor和FancyArrowPatch.set_dpi_corFigureCanvas.get_window_title()和FigureCanvas.set_window_title();如果使用 pyplot,请使用FigureManagerBase.get_window_title或FigureManagerBase.set_window_title,或者如果嵌入,请使用特定于 GUI 的方法。FigureManager.key_press()和FigureManager.button_press();使用canvas.callbacks.process(event.name, event)直接在画布上触发按键和按钮事件。RendererAgg.get_content_extents()和RendererAgg.tostring_rgba_minimized()NavigationToolbar2Wx.get_canvas()ParasiteAxesBase.update_viewlim();请改用ParasiteAxesBase.apply_aspect。Subplot.get_geometry();请改用SubplotBase.get_subplotspec。Subplot.change_geometry();请改用SubplotBase.set_subplotspec。Subplot.update_params();这个方法没有做任何事情。Subplot.is_first_row();请改用ax.get_subplotspec().is_first_row。Subplot.is_first_col();请改用ax.get_subplotspec().is_first_col。Subplot.is_last_row();请改用ax.get_subplotspec().is_last_row。Subplot.is_last_col();请改用ax.get_subplotspec().is_last_col。SubplotDivider.change_geometry();请改用SubplotDivider.set_subplotspec。SubplotDivider.get_geometry();请改用SubplotDivider.get_subplotspec。SubplotDivider.update_params()MathTextParser的get_depth、parse、to_mask、to_rgba和to_png;请改用mathtext.math_to_image。MovieWriter.cleanup();清理逻辑现在完全实现在MovieWriter.finish中,cleanup不再被调用。
函数#
以下函数已被移除;
backend_template.new_figure_manager()、backend_template.new_figure_manager_given_figure()和backend_template.draw_if_interactive()已被移除,作为简化后端 API 引入的一部分。与弃用相关的重新导入
cbook.deprecated()和cbook.warn_deprecated()。colorbar.colorbar_factory();请改用Colorbar。colorbar.make_axes_kw_doc()mathtext.Error()mathtext.ship()mathtext.tex2uni()axes_grid1.parasite_axes.parasite_axes_auxtrans_class_factory();请改用parasite_axes_class_factory。sphinext.plot_directive.align();请改用docutils.parsers.rst.directives.images.Image.align。
参数#
以下参数已被移除:
dpi 从 PS 后端的
print_ps()和 PDF 后端的print_pdf()中获取。相反,这些方法将从savefig机制中获取 DPI。dpi_cor 来自
FancyArrowPatchminimum_descent 来自
TextArea;现在它实际上总是为 Trueorigin 来自
FigureCanvasWx.gui_repaint()项目 来自
Line3DCollection.draw()渲染器 来自
Line3DCollection.do_3d_projection,Patch3D.do_3d_projection,PathPatch3D.do_3d_projection,Path3DCollection.do_3d_projection,Patch3DCollection.do_3d_projection,Poly3DCollection.do_3d_projectionresize_callback 来自 Tk 后端;请改用
get_tk_widget().bind('<Configure>', ..., True)。return_all 来自
gridspec.get_position()gca()的关键字参数;没有替代方案。
rcParams#
设置 rcParams["ps.useafm"] (default: False) 对 matplotlib.mathtext 不再有任何影响。
开发变化#
增加到依赖项的最低支持版本#
对于 Matplotlib 3.6,最低支持版本 正在提升:
依赖 |
mpl3.5 中的最小值 |
mpl3.6 中的最小值 |
|---|---|---|
Python |
3.7 |
3.8 |
NumPy |
1.17 |
1.19 |
构建设置选项更改#
gui_support.macosx 设置选项已重命名为 packages.macosx。
新的轮子架构#
已添加以下轮子:
Python 3.11
PyPy 3.8 和 3.9