3.6.0 版 API 变更#

行为变更#

plt.get_cmapmatplotlib.cm.get_cmap 返回副本#

以前,get_cmapmatplotlib.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)相同,用户也不太可能设置过多的刻度定位器。

stemmarkerfmt 参数#

stemmarkerfmt 参数的行为已更改

  • 如果 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 中的 yNonercParams["axes.titley"] (默认: None) 也为 None)发生重叠,则标题将移到偏移文本上方。

点操作符在数学文本中获得额外空间#

在数学文本中,\doteq \doteqdot \dotminus \dotplus \dots 现在被额外空间包围,因为它们被正确地视为关系或二元运算符。

mathtext.get_unicode_indexmath 参数默认为 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 字典现在包含更多键,例如 CharStringsSubrsEncoding 键的值现在是一个将代码映射到字形名称的字典。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_tightbboxget_window_extent 的渲染器可选#

Artist.get_tightbboxArtist.get_window_extent 方法不再需要 renderer 关键字参数,从而省去了用户从 fig.canvas.get_renderer 查询它的麻烦。如果未提供 renderer 关键字参数,这些方法会首先检查是否存在来自先前绘制的缓存渲染器并使用它。如果没有缓存渲染器,则这些方法将使用 fig.canvas.get_renderer() 作为备用。

FigureFrameWx 构造函数、子类和 get_canvas#

FigureCanvasWx 构造函数增加了一个仅限关键字的参数 canvas_class,用于指定应使用的画布类。此参数将来将成为必需。以前用于自定义画布创建的 get_canvas 方法已被弃用。FigureFrameWxAggFigureFrameWxCairo 子类(它们重写了 get_canvas)已被弃用。

FigureFrameWx.sizer#

... 已被移除。框架布局不再基于 sizer,因为画布现在是唯一的子部件;工具栏现在是使用 SetToolBar 添加的常规工具栏。

不兼容的布局引擎引发错误#

如果已将色条添加到图中,则无法在 tight_layoutconstrained_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.figureFigure 构造函数的所有参数(除了 numfigsizedpi)都将变为仅限关键字参数。

cbook 中的弃用别名#

模块 matplotlib.cbook.deprecation 以前在 Matplotlib 3.4 中已弃用,同时弃用的还有 matplotlib.cbook 中与弃用相关的 API。由于技术问题,matplotlib.cbook.MatplotlibDeprecationWarningmatplotlib.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.colormapsmatplotlib.cm 中现有的顶级函数(get_cmapregister_cmapunregister_cmap)已更改为围绕同一实例的别名。

在 Matplotlib 3.6 中,我们已将这些顶级函数标记为待定弃用,并计划在 Matplotlib 3.7 中弃用。以下函数已标记为待定弃用:

matplotlib.pyplot.get_cmap 函数将继续可用于向后兼容。

布局方法待定弃用#

方法 set_tight_layoutset_constrained_layout 已不再推荐使用,现在会发出 PendingDeprecationWarning,取而代之的是通过 figure.set_layout_engine('tight')figure.set_layout_engine('constrained') 明确引用布局引擎。最终用户不应看到警告,但库作者应进行调整。

方法 set_constrained_layout_padsget_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.subplotplt.subplot2grid 自动移除重叠 Axes#

以前,pyplot.subplotpyplot.subplot2grid 会自动移除与新添加的 Axes 重叠的现有 Axes。此行为被认为是令人困惑的,现已弃用。请在需要移除的 Axes 上显式调用 ax.remove()

以位置参数传递 linefmtstem 已取消弃用#

stem 中所有格式参数的位置参数使用自 Matplotlib 3.5 以来已被弃用。此弃用已放宽,因此仍可以位置参数传递 linefmt,即 stem(x, y, 'r')

stem(..., use_line_collection=False)#

... 已弃用,没有替代方案。这是一个兼容性回退,用于以前效率较低的茎线表示。

位置参数 / 关键字参数#

在 Artists 的构造函数中,除了少数前几个参数外,所有参数都以位置方式传递已被弃用。大多数参数将在未来版本中变为仅限关键字。

tripcolor 传递过多位置参数现已弃用(以前多余的参数会被静默忽略)。

以位置参数传递 set_xlim, set_ylim, set_zlim, set_rlimemitauto 参数已弃用;它们将在未来版本中变为仅限关键字。

Collection.set_offset_transformtransOffset 参数和图例处理程序中各种 create_collection 方法已重命名为 offset_transform(与属性名称一致)。

不带参数调用 MarkerStyle()MarkerStyle(None) 已弃用;请使用 MarkerStyle("") 构造空标记样式。

Axes.get_window_extent / Figure.get_window_extent 只接受 renderer 参数。这使 API 与通用 Artist.get_window_extent API 对齐。所有其他参数无论如何都会被忽略。

get_renderercleared 参数(仅存在于基于 AGG 的后端)已弃用。请改用 renderer.clear() 显式清除渲染器缓冲区。

LogLocatorLogFormatter* 中设置参数的方法#

LogFormatter 及其派生子类中,用于设置相应参数的 baselabel_minor 方法已被弃用,并分别替换为 set_baseset_label_minor

LogLocator 中,用于设置相应参数的 basesubs 方法已弃用。请改用 set_params(base=..., subs=...)

Axes.get_renderer_cache#

画布现在负责渲染器以及是否缓存它。替代方案是调用 axes.figure.canvas.get_renderer()

get_shared_x_axes / get_shared_y_axes 返回的 Groupers 将是不可变的#

get_shared_x_axesget_shared_y_axes 返回的 Groupers 的修改已被弃用。将来,这些方法将返回 grouper 结构的不可变视图。请注意,以前,调用例如 join() 已经无法为共享坐标轴设置正确的结构;请改用 Axes.sharexAxes.sharey

AxisTickXAxisYAxis 中未使用的函数#

Tick.label 自 3.1 以来一直处于待定弃用状态,现在已弃用。请改用 Tick.label1

以下方法不再使用并已弃用,没有替代方案:

  • Axis.get_ticklabel_extents

  • Tick.get_pad_pixels

  • XAxis.get_text_heights

  • YAxis.get_text_widths

mlab.stride_windows#

... 已弃用。请改用 np.lib.stride_tricks.sliding_window_view (或在 NumPy < 1.20 上使用 np.lib.stride_tricks.as_strided)。

事件处理程序#

FigureCanvasBasedraw_eventresize_eventclose_eventkey_press_eventkey_release_eventpick_eventscroll_eventbutton_press_eventbutton_release_eventmotion_notify_evententer_notify_eventleave_notify_event 方法已弃用。它们在不同后端具有不一致的签名,这使得改进事件元数据变得困难。

为了在画布上触发事件,直接构造正确类的 Event 对象并调用 canvas.callbacks.process(event.name, event)

小部件#

useblit 开始,MultiCursor 的所有参数都将变为仅限关键字(以位置参数传递它们已被弃用)。

MultiCursorcanvasbackground 属性已弃用,没有替代方案。

Selector 小部件的 visible 属性已弃用;请改用 set_visibleget_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_intervalv_interval 属性已弃用;请改用 get_data_intervalget_view_interval

Axis3Dw_xaxisw_yaxisw_zaxis 属性自 3.1 版以来一直处于待定弃用状态。它们现已弃用。请改用 xaxisyaxiszaxis

mplot3d.axis3d.Axis.set_pane_pos 已弃用。这是一个内部方法,其提供的值在绘图期间会被覆盖。因此,它没有直接访问的任何目的。

两个辅助函数 mplot3d.axis3d.move_from_centermplot3d.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.FigureManagerGTK3Aggbackend_gtk4.FigureManagerGTK4Agg;请直接使用 backend_gtk3.FigureManagerGTK3backend_gtk4.FigureManagerGTK4

  • backend_gtk3.NavigationToolbar2GTK3window 参数没有效果,现已弃用。

  • backend_gtk3.NavigationToolbar2GTK3.win

  • backend_gtk3.RendererGTK3Cairobackend_gtk4.RendererGTK4Cairo;请改用 RendererCairo,它已获得 set_context 方法,该方法还会自动推断底层表面的大小。

  • backend_cairo.RendererCairo.set_ctx_from_surfacebackend_cairo.RendererCairo.set_width_height 已被弃用,取而代之的是 RendererCairo.set_context

  • backend_gtk3.error_msg_gtk

  • backend_gtk3.icon_filenamebackend_gtk3.window_icon

  • backend_macosx.NavigationToolbar2Mac.prepare_configure_subplots 已被 configure_subplots() 替换。

  • backend_pdf.Name.hexify

  • backend_pdf.Operatorbackend_pdf.Op.op 已弃用,取而代之的是 enum.Enum 上单一的标准 backend_pdf.Op 接口。

  • backend_pdf.fill;如果您依赖这些函数,请获取同名私有函数的代码。

  • backend_pgf.LatexManager.texcommandbackend_pgf.LatexManager.latex_header

  • backend_pgf.NO_ESCAPE

  • backend_pgf.common_texification

  • backend_pgf.get_fontspec

  • backend_pgf.get_preamble

  • backend_pgf.re_mathsep

  • backend_pgf.writeln

  • backend_ps.convert_psfrags

  • backend_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_transformbackend_svg.generate_css

  • backend_tk.NavigationToolbar2Tk.lastrectbackend_tk.RubberbandTk.lastrect

  • backend_tk.NavigationToolbar2Tk.window;请改用 toolbar.master

  • backend_tools.ToolBase.destroy;要在工具移除时运行代码,请连接到 tool_removed_event 事件。

  • backend_wx.RendererWx.offset_text_height

  • backend_wx.error_msg_wx

  • FigureCanvasBase.pick;直接调用 Figure.pick,它也承担了检查画布小部件锁的责任。

  • FigureCanvasBase.resize,它没有效果;请改用 FigureManagerBase.resize

  • FigureManagerMac.close

  • FigureFrameWx.sizer;请改用 frame.GetSizer()

  • FigureFrameWx.figmgrFigureFrameWx.get_figure_manager;请改用 frame.canvas.manager

  • FigureFrameWx.num;请改用 frame.canvas.manager.num

  • FigureFrameWx.toolbar;请改用 frame.GetToolBar()

  • FigureFrameWx.toolmanager;请改用 frame.canvas.manager.toolmanager

模块#

模块 matplotlib.afmmatplotlib.docstringmatplotlib.fontconfig_patternmatplotlib.tight_bboxmatplotlib.tight_layoutmatplotlib.type1font 被视为内部模块,公共访问已弃用。

checkdep_usetex 已弃用#

此方法仅旨在在未找到 latex 安装时禁用测试。因此,它被视为私有和内部使用。

如果您需要此功能,请获取代码。

date_ticker_factory 已弃用#

matplotlib.dates 模块中的 date_ticker_factory 方法已弃用。请改用 AutoDateLocatorAutoDateFormatter,以获得更灵活和可伸缩的定位器和格式化器。

如果您需要 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.GetExtentHelper

  • AxisArtistHelper.delta1AxisArtistHelper.delta2

  • axislines.GridHelperBase.new_gridlinesaxislines.Axes.new_gridlines

  • cbook.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.delayImageMagickBase.output_args

  • MathtextBackendMathtextBackendAggMathtextBackendPathMathTextWarning

  • TexManager.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.savefigpyplot.savefigFigureCanvas.print_* 方法的未知关键字参数现在会引发 TypeError,而不是被忽略。

  • Axes 构造函数的额外参数(即,除了 figrect 之外的参数)现在仅限关键字。

  • 不再支持向 Axes3D.plot_surfaceAxes3D.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_fillstyleMarkerStyle.set_marker 已被移除。请改用相应参数创建新的 MarkerStyle

FT2Font.set_text 传递字节#

... 已不再支持。请改传 str

ToolManager.add_tool 传递工具名称的支持#

... 已被移除。ToolManager.add_tool 的第二个参数现在必须始终是工具类。

backend_tools.ToolFullScreen 现在继承自 ToolBase,而不是 ToolToggleBase#

ToolFullScreen 只能在非全屏和全屏状态之间切换,而不能无条件地将窗口置于给定状态;因此 enabledisable 方法的命名具有误导性。因此,已移除与 ToolToggleBase 相关的 API(enabledisable 等)。

BoxStyle._Base 和 box 样式的 transmute 方法#

... 已被移除。作为类的 box 样式不再需要继承自基类。

已加载模块日志记录#

在 Matplotlib 导入时,不再以 DEBUG 级别记录当前加载模块列表,因为它可能会产生大量输出,使其他有价值的 DEBUG 语句难以查找。如果您依赖此输出,请自行安排日志记录(可以使用内置的 sys.modules 来获取当前加载的模块)。

模块#

类、方法和属性#

以下模块级类/变量已移除

  • cm.cmap_d

  • colorbar.colorbar_doc, colorbar.colorbar_kw_doc

  • ColorbarPatch

  • mathtext.Fonts 及其所有子类

  • mathtext.FontConstantsBase 及其所有子类

  • mathtext.latex_to_bakoma, mathtext.latex_to_cmex, mathtext.latex_to_standard

  • mathtext.MathtextBackendPdf, mathtext.MathtextBackendPs, mathtext.MathtextBackendSvg, mathtext.MathtextBackendCairo;请改用 .MathtextBackendPath

  • mathtext.Node 及其所有子类

  • mathtext.NUM_SIZE_LEVELS

  • mathtext.Parser

  • mathtext.Ship

  • mathtext.SHRINK_FACTORmathtext.GROW_FACTOR

  • mathtext.stix_virtual_fonts,

  • mathtext.tex2uni

  • backend_pgf.TmpDirCleaner

  • backend_ps.GraphicsContextPS;请改用 GraphicsContextBase

  • backend_wx.IDLE_DELAY

  • axes_grid1.parasite_axes.ParasiteAxesAuxTransBase;请改用 ParasiteAxesBase

  • axes_grid1.parasite_axes.ParasiteAxesAuxTrans;请改用 ParasiteAxes

以下类属性已被移除

  • Line2D.validCapLine2D.validJoin;验证已集中在 rcsetup 中。

  • Patch.validCapPatch.validJoin;验证已集中在 rcsetup 中。

  • renderer.Mrenderer.eyerenderer.vvecrenderer.get_axis_position 放置在 3D Axes 绘制期间的 Renderer 上;这些属性均可通过 Axes3D 访问,而 Artist 可通过 self.axes 访问。

  • RendererPdf.mathtext_parser, RendererPS.mathtext_parser, RendererSVG.mathtext_parser, RendererCairo.mathtext_parser

  • StandardPsFonts.pswriter

  • Subplot.figbox;请改用 Axes.get_position

  • Subplot.numRows;请改用 ax.get_gridspec().nrows

  • Subplot.numCols;请改用 ax.get_gridspec().ncols

  • SubplotDivider.figbox

  • cidscntobserverschange_observerssubmit_observers,适用于所有 Widgets

以下类方法已被移除

  • Axis.cla();请改用 Axis.clear

  • RadialAxis.cla()ThetaAxis.cla();请改用 RadialAxis.clearThetaAxis.clear

  • Spine.cla();请改用 Spine.clear

  • ContourLabeler.get_label_coords();没有替代品,因为它被视为内部辅助函数。

  • FancyArrowPatch.get_dpi_corFancyArrowPatch.set_dpi_cor

  • FigureCanvas.get_window_title()FigureCanvas.set_window_title();如果使用 pyplot,请改用 FigureManagerBase.get_window_titleFigureManagerBase.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_depthparseto_maskto_rgbato_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();请改用 Colorbarcolorbar.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

参数#

以下参数已被移除

rcParams#

设置 rcParams["ps.useafm"](默认值:False)对 matplotlib.mathtext 不再有任何影响。

开发变更#

依赖项的最低支持版本提升#

对于 Matplotlib 3.6,最低支持版本已提高

依赖项

mpl3.5 中的最低版本

mpl3.6 中的最低版本

Python

3.7

3.8

NumPy

1.17

1.19

这与我们的依赖版本策略NEP29 保持一致。

构建设置选项变更#

gui_support.macosx 设置选项已重命名为 packages.macosx

新 wheel 架构#

已添加以下 wheel:

  • Python 3.11

  • PyPy 3.8 和 3.9

文档依赖的所需版本已提高#

sphinx >= 3.0 和 numpydoc >= 1.0 现在是构建文档的必需条件。