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)相同,用户也不太可能设置过多的刻度定位器。
stem 的 markerfmt 参数#
stem 的 markerfmt 参数的行为已更改
如果 markerfmt 不包含颜色,则颜色取自 linefmt。
如果 markerfmt 不包含标记,则默认值为 'o'。
之前,markerfmt 被原样传递给 plot(..., fmt),这导致了一些意外的副作用;例如,只给出颜色会导致实线而不带标记。
对于不带参数的简单调用 stem(x, y),新规则仍然会重现旧行为。
get_ticklabels 现在总是填充标签#
以前,Axis.get_ticklabels(以及 Axes.get_xticklabels, Axes.get_yticklabels)除非已经执行了绘制,否则只会返回空字符串。现在,当请求标签时,刻度及其标签会进行更新。
散点图颜色设置被丢弃时的警告#
在创建散点图动画时,如果初始化 artist 时不设置 c(颜色值参数),则颜色设置会被忽略。Axes.scatter 现在在未设置 c 的情况下更改与颜色相关的设置时会发出警告。
3D contourf 多边形放置在级别之间#
3D contourf 绘图中使用的多边形现在放置在等高线级别之间,因为每个多边形代表介于两个级别之间的值的位置。
坐标轴标题现在避免 Y 轴偏移#
以前,坐标轴标题可能会与 Y 轴偏移文本重叠,Y 轴偏移文本通常位于坐标轴的左上角。现在,如果标题在自动标题定位生效时(即如果 Axes.set_title 中的 y 为 None 且 rcParams["axes.titley"] (默认: None) 也为 None)发生重叠,则标题将移到偏移文本上方。
点操作符在数学文本中获得额外空间#
在数学文本中,\doteq \doteqdot \dotminus \dotplus \dots 现在被额外空间包围,因为它们被正确地视为关系或二元运算符。
mathtext.get_unicode_index 的 math 参数默认为 False#
在数学模式下,ASCII 连字符 (U+002D) 现在在解析阶段被 Unicode 减号 (U+2212) 替换。
ArtistList 代理在迭代时复制内容#
当迭代 Artist 类型访问器(参见 Axes 子对象不再按类型分离)的动态生成代理列表内容时,会创建内容的副本。这确保了在迭代其子对象时,可以安全地向 Axes 添加或从 Axes 中移除 Artist。
这与 Python 中可变可迭代数据类型的预期行为不同——在迭代列表时修改它会产生令人惊讶的后果,并且如果字典在迭代期间更改大小,则会出错。因为所有访问器都是同一底层列表的过滤视图,所以看似不相关的更改,例如删除 Line,可能会影响对任何其他访问器的迭代。在这种情况下,我们选择在将相关子对象提供给用户之前创建它们的副本。
此更改也符合我们计划在 Matplotlib 3.7 中使这些访问器不可变的计划。
AxesImage 字符串表示#
AxesImage 的字符串表示从声明图中位置的 "AxesImage(80,52.8;496x369.6)" 更改为给出像素数的 "AxesImage(size=(300, 200))"。
改进了贝塞尔曲线的自动缩放#
贝塞尔曲线现在会自动缩放到其范围——以前它们会自动缩放到其端点和控制点,这在某些情况下会导致不必要的大范围。
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#
由于我们在导入时读取样式库,Matplotlib 以前无法在非 UTF-8 兼容的本地编码下导入。此更改正在正式化和记录现状,因此没有弃用期。
MacOSX 后端使用 sRGB 而不是 GenericRGB 颜色空间#
MacOSX 后端现在显示 sRGB 标记图像,而不是 GenericRGB,GenericRGB 是一个旧的(现已弃用)Apple 颜色空间。这是 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 方法已被弃用。FigureFrameWxAgg 和 FigureFrameWxCairo 子类(它们重写了 get_canvas)已被弃用。
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 构造函数的参数#
在弃用期过后,pyplot.figure 和 Figure 构造函数的所有参数(除了 num、figsize 和 dpi)都将变为仅限关键字参数。
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 已取消弃用#
stem 中所有格式参数的位置参数使用自 Matplotlib 3.5 以来已被弃用。此弃用已放宽,因此仍可以位置参数传递 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 只接受 renderer 参数。这使 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)。
小部件#
从 useblit 开始,MultiCursor 的所有参数都将变为仅限关键字(以位置参数传递它们已被弃用)。
MultiCursor 的 canvas 和 background 属性已弃用,没有替代方案。
Selector 小部件的 visible 属性已弃用;请改用 set_visible 或 get_visible。
Selector 小部件的 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 轴的新签名;现在是 (self, axes, *, rotate_label=None, **kwargs),其中 kwargs 会转发到 2D 轴构造函数。轴方向现在从轴类的 axis_name 属性推断(如在 2D 情况中);adir 属性已弃用。
3D 轴的 init3d 方法也已弃用;所有相关的初始化都作为构造函数的一部分完成。
3D 轴的 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 已弃用#
Figure 的 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已弃用,取而代之的是enum.Enum上单一的标准backend_pdf.Op接口。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 + padaxes_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 和 box 样式的 transmute 方法#
... 已被移除。作为类的 box 样式不再需要继承自基类。
已加载模块日志记录#
在 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中的 Axes 类可以在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 Axes 绘制期间的 Renderer 上;这些属性均可通过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.figboxcids、cnt、observers、change_observers和submit_observers,适用于所有Widgets
以下类方法已被移除
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。
参数#
以下参数已被移除
PS 后端中
print_ps()和 PDF 后端中print_pdf()的 dpi 参数。现在,这些方法将从savefig机制中获取 DPI。FancyArrowPatch的 dpi_cor 参数TextArea的 minimum_descent 参数;它现在实际上总是 True。FigureCanvasWx.gui_repaint()的 origin 参数Line3DCollection.draw()的 project 参数Line3DCollection.do_3d_projection、Patch3D.do_3d_projection、PathPatch3D.do_3d_projection、Path3DCollection.do_3d_projection、Patch3DCollection.do_3d_projection、Poly3DCollection.do_3d_projection的 renderer 参数Tk 后端中 resize_callback 参数;请改用
get_tk_widget().bind('<Configure>', ..., True)。gridspec.get_position()的 return_all 参数gca()的关键字参数;没有替代品。
rcParams#
设置 rcParams["ps.useafm"](默认值: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。
新 wheel 架构#
已添加以下 wheel:
Python 3.11
PyPy 3.8 和 3.9