3.7.0 的 API 变更#

行为变更#

所有 Axes 现在都具有 get_subplotspecget_gridspec 方法,对于未通过 gridspec 定位的 Axes,这些方法返回 None#

此前,此方法仅适用于通过 gridspec 定位的 Axes。此更改后,检查 hasattr(ax, "get_gridspec") 应该替换为 ax.get_gridspec() is not None。为了与旧版 Matplotlib 兼容,也可以检查 hasattr(ax, "get_gridspec") and ax.get_gridspec() is not None

HostAxesBase.get_aux_axes 现在默认为使用与宿主轴相同的基本轴类#

如果使用基于 mpl_toolkits.axisartist 的宿主轴,寄生轴也将基于 mpl_toolkits.axisartist。此行为与 HostAxesBase.twinHostAxesBase.twinxHostAxesBase.twiny 一致。

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

以前,get_cmapmatplotlib.cm.get_cmap 返回 Colormap 的全局版本。这容易出错,因为色图的修改会在不发出警告的情况下从一个位置传播到另一个位置。现在,返回色图的新副本。

TrapezoidMapTriFinder 使用不同的随机数生成器#

TrapezoidMapTriFinder 中用于确定三角形边插入顺序的随机数生成器已更改。这可能导致对于恰好位于两个三角形之间边缘上的点返回不同的三角形索引。这还会影响使用 TrapezoidMapTriFinder 的三角剖分插值和细化算法。

FuncAnimation(save_count=None)#

save_count=None 传递给 FuncAnimation 不再将帧数限制为 100。请确保它可以从 frames 推断,或者提供一个整数 save_count

CenteredNorm 的 halfrange 不随 vcenter 更改而修改#

以前,**halfrange** 会与 **vcenter** 远离 **vmin** 或 **vmax** 的量成比例地扩展。现在,当 vcenter 改变时,halfrange 保持固定,并且 **vmin** 和 **vmax** 根据 **vcenter** 和 **halfrange** 值进行更新。

例如,这是以前更改 vcenter 时的值。

norm = CenteredNorm(vcenter=0, halfrange=1)
# Move vcenter up by one
norm.vcenter = 1
# updates halfrange and vmax (vmin stays the same)
# norm.halfrange == 2, vmin == -1, vmax == 3

而现在,对于相同的示例

norm = CenteredNorm(vcenter=0, halfrange=1)
norm.vcenter = 1
# updates vmin and vmax (halfrange stays the same)
# norm.halfrange == 1, vmin == 0, vmax == 2

可以手动设置 **halfrange**,或者在设置 **vcenter** 后使用 norm.autoscale() 自动设置限制。

fig.subplot_mosaic 不再将 gridspec_kw 参数传递给嵌套的 gridspecs。#

对于嵌套的 Figure.subplot_mosaic 布局,将 gridspec_kw 参数传递到较低的嵌套级别几乎总是不合适的,并且在许多情况下这些参数与较低级别不兼容。此字典不再传递给内部布局。需要在多个级别修改 gridspec_kw 的用户应使用 Figure.subfigures 来实现嵌套,并使用 Figure.subplotsFigure.subplot_mosaic 构造内部布局。

HPacker 与 **bottom** 或 **top** 的对齐现在正确#

以前,**bottom** 和 **top** 对齐是交换的。现在已纠正此问题,使对齐正确对应。

在 Windows 上,将只发现注册表中已知的字体#

此前,Matplotlib 会递归遍历用户和系统字体目录以发现字体,但这导致了一些不理想的行为,包括找到已删除的字体。现在 Matplotlib 只会找到 Windows 注册表中已知的字体。

这意味着任何用户安装的字体都必须通过 Windows 字体安装程序,而不能仅仅复制到正确的文件夹中。

这仅影响 Matplotlib 在使用 matplotlib.font_manager.findfont 时考虑的字体集。要使用任意字体,请直接传递字体路径,如 使用 ttf 字体文件 中所示。

QuadMesh.set_array 现在对于形状不正确的输入始终引发 ValueError#

它以前在某些情况下也可能引发 TypeError

当给定布尔输入时,contourcontourf 自动选择合适的级别#

如果传递给 Axes.contourAxes.contourf 的高度数组是布尔类型且未指定 levels,则 levels 现在默认为 contour[0.5]Axes.contourf[0, 0.5, 1]

如果未绘制等高线,contour 不再发出警告。#

如果用户显式传递一个在 z.min()z.max() 之间没有值的 levels 数组,或者如果 z 在所有位置都具有相同的值,则可能发生这种情况。

AxesImage.set_extent 现在对未知关键字参数引发 TypeError#

它以前引发的是 ValueError

legend(loc="best") 行为的改变#

自动图例定位器的算法已进行了调整,以更好地处理非矩形图形。有关此更改的更多详细信息,请参阅 #9580#9598

弃用#

Axes 子类应重写 clear 而不是 cla#

为了清晰起见,现在推荐使用 axes.Axes.clear 而不是 Axes.cla。但是,为了向后兼容,后者仍将作为前者的别名。

为了与第三方库进一步兼容,Matplotlib 将继续调用任何 Axes 子类(如果它们定义了 cla 方法)。将来,这将不再发生,Matplotlib 将只调用 Axes 子类中的 clear 方法。

建议在 Matplotlib 3.6 上只定义 clear 方法,对于旧版本则只定义 cla

rcParams 类型#

依赖 rcParamsdict 子类已弃用。

对于普通用户来说,不会有任何变化,因为 rcParams 将继续保持类似字典的行为(技术上符合 MutableMapping 接口)。

RcParams 类在调用 .RcParams.__getitem__.RcParams.__setitem__ 时进行验证检查。但是,在极少数情况下,我们希望规避验证逻辑并直接访问底层数据值。以前,这可以通过调用父方法 dict.__getitem__(rcParams, key)dict.__setitem__(rcParams, key, val) 来实现。

Matplotlib 3.7 引入了 rcParams._set(key, val)rcParams._get(key) 作为调用父方法的替代。它们被故意标记为私有,以阻止外部使用;但是,如果需要直接访问 RcParams 数据,请从字典函数切换到新的 _get()_set()。即使标记为私有,我们仍保证这些方法的 API 稳定性,并且它们受 Matplotlib 的 API 和弃用策略约束。

如果您以其他方式依赖 rcParams 作为字典子类,而目前没有迁移路径,请通知 Matplotlib 开发人员。

cbook 中的弃用别名#

模块 matplotlib.cbook.deprecation 此前已在 Matplotlib 3.4 中弃用,同时 matplotlib.cbook 中与弃用相关的 API 也被弃用。由于技术问题,matplotlib.cbook.MatplotlibDeprecationWarningmatplotlib.cbook.mplDeprecation 在使用时未引发弃用警告。Python 中的更改现在使得在使用这些别名时可以发出警告。

为了避免下游中断,这些别名现在将发出警告,并且它们的移除已从 3.6 推迟到 3.8,以留出时间注意这些警告。作为替代,请使用 matplotlib.MatplotlibDeprecationWarning

draw_gouraud_triangle#

... 已弃用,因为在大多数后端中,这是一个冗余调用。请改用 draw_gouraud_triangles。自定义 Artist 中的 draw_gouraud_triangle 调用可以轻松替换为

self.draw_gouraud_triangles(gc, points.reshape((1, 3, 2)),
                            colors.reshape((1, 3, 4)), trans)

可以从现有 draw_gouraud_triangle 方法实现 draw_gouraud_triangles 方法,如下所示

transform = transform.frozen()
for tri, col in zip(triangles_array, colors_array):
    self.draw_gouraud_triangle(gc, tri, col, transform)

matplotlib.pyplot.get_plot_commands#

... 正在等待弃用。这被认为是内部的,终端用户不应需要它。

matplotlib.tri 子模块已弃用#

matplotlib.tri.* 子模块已弃用。所有功能都直接在 matplotlib.tri 中可用,应从那里导入。

将未定义的 label_mode 传递给 Grid#

... 已弃用。这包括 mpl_toolkits.axes_grid1.axes_grid.Gridmpl_toolkits.axes_grid1.axes_grid.AxesGridmpl_toolkits.axes_grid1.axes_grid.ImageGrid,以及从 mpl_toolkits.axisartist.axes_grid 导入的相应类。

请传递 label_mode='keep' 以获得不修改标签的先前行为。

孤立的可映射对象的颜色条已弃用,但不再引发异常#

在 3.6.0 之前,对于没有父轴的可映射对象,颜色条会占用当前 Axes 的空间。3.6.0 对此引发了错误,但没有弃用周期。对于 3.6.1,此行为已恢复,使用当前轴,但显示弃用警告。在这种不确定的情况下,用户和库应明确指定要从哪个轴窃取空间:fig.colorbar(mappable, ax=plt.gca())

Animation 属性#

TimedAnimation 及其子类的 repeat 属性和 FuncAnimationsave_count 属性被认为是私有且已弃用。

contour.ClabelTextContourLabeler.set_label_props#

... 已弃用。

使用 Text(..., transform_rotates_text=True) 替代 contour.ClabelText(...),使用 text.set(text=text, color=color, fontproperties=labeler.labelFontProps, clip_box=labeler.axes.bbox) 替代 ContourLabeler.set_label_props(label, text, color)

ContourLabeler 属性#

ContourLabelerlabelFontPropslabelFontSizeListlabelTextsList 属性已弃用。请改用 labelTexts 属性和相应文本对象的字体属性。

backend_ps.PsBackendHelperbackend_ps.ps_backend_helper#

... 已弃用,无替代。

backend_webagg.ServerThread 已弃用#

... 无替代。

parse_fontconfig_pattern 将不再忽略未知常量名#

以前,在像 DejaVu Sans:foo 这样的 fontconfig 模式中,未知的 foo 常量名会被默默忽略。现在这会引发警告,将来会变成错误。

BufferRegion.to_stringBufferRegion.to_string_argb#

... 已弃用。使用 np.asarray(buffer_region) 获取缓冲区区域的数组视图,而不创建副本;要将该视图从 RGBA(默认)转换为 ARGB,请使用 np.take(..., [2, 1, 0, 3], axis=2)

num2julianjulian2numJULIAN_OFFSET#

... dates 模块中的这些函数已弃用,没有替代品。它们未文档化且未导出。如果您依赖它们,请进行本地复制。

unit_cubetunit_cubetunit_edges#

... Axes3D 中的这些函数已弃用,没有替代品。如果您依赖它们,请复制相应私有函数(名称以 _ 开头)的代码。

小部件的大多数参数已变为仅限关键字#

在 Widgets 构造函数中按位置传递除少数前几个参数之外的所有参数已弃用。大多数参数将在未来版本中成为仅限关键字的参数。

SimpleEvent#

SimpleEvent 嵌套类(以前可通过 ConnectionStyle._Base 的公共子类(例如 ConnectionStyle.Arc)访问)已弃用。

RadioButtons.circles#

... 已弃用。(RadioButtons 现在使用 scatter 自身绘制。)

CheckButtons.rectanglesCheckButtons.lines#

CheckButtons.rectanglesCheckButtons.lines 已弃用。(CheckButtons 现在使用 scatter 自身绘制。)

OffsetBox.get_extent_offsetsOffsetBox.get_extent#

... 已弃用;这些方法在 OffsetBox 的所有子类上也已弃用。

要获取 offsetbox 范围,请改用 OffsetBox.get_bbox 而不是 get_extent,它直接返回一个 Bbox 实例。

要同时获取子偏移量,请在触发绘制后,分别对每个子项调用 get_offset,而不是使用 get_extent_offsets

legend.legendHandles#

... 未文档化,已重命名为 legend_handles。使用 legendHandles 已弃用。

Axis.set_ticklabelsticklabels 参数已重命名为 labels#

offsetbox.bbox_artist#

... 已弃用。这只是一个包装器,用于在文件中设置标志时调用 patches.bbox_artist,因此如果需要该行为,请直接使用它。

Quiver.quiver_docBarbs.barbs_doc#

... 已弃用。这些是文档字符串,不应作为命名的类成员访问。

弃用 TextBox.begin_typing 中未使用的参数 x#

此参数在方法中未使用,但却是必需的参数。

弃用 mpl.cm 中顶层 cmap 注册和访问函数#

作为 多步骤过程 的一部分,我们正在重构用于管理注册色图的全局状态。

在 Matplotlib 3.5 中,我们添加了 ColormapRegistry 类,并在顶层公开了一个实例作为 matplotlib.colormapsmatplotlib.cm 中的现有顶层函数(get_cmapregister_cmapunregister_cmap)已更改为围绕同一实例的别名。在 Matplotlib 3.6 中,我们已将这些顶层函数标记为待弃用。

在 Matplotlib 3.7 中,以下函数已被标记为弃用

matplotlib.pyplot.get_cmap 函数将继续可用以实现向后兼容性。

BrokenBarHCollection 已弃用#

它只是一个继承自 PolyCollection 的薄包装;broken_barh 现在已更改为返回 PolyCollection

BrokenBarHCollection.span_where 助手也已弃用;在弃用期间,它已移至父 PolyCollection 类。请改用 fill_between;有关示例,请参阅 使用 fill_between 绘制由逻辑掩码定义的区域阴影

将不一致的 locnth_coord 传递给 axisartist 助手#

尝试构造例如“顶部 y 轴”或“左侧 x 轴”现在已弃用。

passthru_pt#

AxisArtistHelper 的此属性已弃用。

axes3d.vvecaxes3d.eyeaxes3d.sxaxes3d.sy#

... 已弃用,无替代。

Line2D#

在创建 Line2D 或使用 Line2D.set_xdataLine2D.set_ydata 时,传递非序列的 x/y 数据已弃用。

移除#

epoch2numnum2epoch 已移除#

这些方法将 Unix 时间戳转换为 Matplotlib 浮点数,但在 Matplotlib 内部不使用,终端用户也不应需要。要将 Unix 时间戳转换为 datetime,只需使用 datetime.datetime.fromtimestamp,或者使用 NumPy datetime64 dt = np.datetime64(e*1e6, 'us')

定位器和格式化器包装器方法#

LocatorFormatter(以及它们的共同基类 TickHelper)的 set_view_intervalset_data_intervalset_bounds 方法已移除。请直接操作底层轴的视图和数据间隔。

交互式光标详细信息#

在窗口上设置鼠标光标已从工具栏移至画布。因此,工具栏上和后端内的几个实现细节已被移除。

backend_tools.SetCursorBase 及其子类#

backend_tools.SetCursorBase 被子类化以提供 set_cursor 的后端特定实现。由于该功能现已移除,因此不再需要子类化。因此,以下子类也已移除

  • matplotlib.backends.backend_gtk3.SetCursorGTK3

  • matplotlib.backends.backend_qt5.SetCursorQt

  • matplotlib.backends._backend_tk.SetCursorTk

  • matplotlib.backends.backend_wx.SetCursorWx

请改用 backend_tools.ToolSetCursor 类。

GTK 和 wx 后端中的 cursord#

backend_gtk3.cursordbackend_wx.cursord 字典已移除。这使得 GTK 模块在无头环境中可以导入。

Axes3Dauto_add_to_figure=True#

... 不再支持。请改用 fig.add_axes(ax)

Axes.gridAxis.grid 的第一个参数已重命名为 visible#

此参数以前名为 b。此名称更改仅在参数通过关键字参数传递时才重要,例如 grid(b=False)

移除 Selector 小部件 API 中的弃用#

RectangleSelector 和 EllipseSelector#

RectangleSelectordrawtype 关键字参数已移除。从现在起,唯一行为将是 drawtype='box'

完全移除了对 drawtype=line 的支持。因此,RectangleSelectorlineprops 关键字参数也已移除。

要保留 drawtype='none' 的行为,请使用 rectprops={'visible': False} 使绘制的 Rectangle 不可见。

清理后的属性和参数有

  • active_handle 属性已私有化并移除。

  • drawtype 属性已私有化并移除。

  • eventpress 属性已私有化并移除。

  • eventrelease 属性已私有化并移除。

  • interactive 属性已私有化并移除。

  • marker_props 参数已移除,请改用 handle_props

  • maxdist 参数已移除,请改用 grab_range

  • rectprops 参数已移除,请改用 props

  • rectprops 属性已私有化并移除。

  • state 属性已私有化并移除。

  • to_draw 属性已私有化并移除。

PolygonSelector#

  • line 属性已移除。如果想更改选择器艺术家属性,请使用 set_propsset_handle_props 方法。

  • lineprops 参数已移除,请改用 props

  • markerprops 参数已移除,请改用 handle_props

  • maxdist 参数和属性已移除,请改用 grab_range

  • vertex_select_radius 参数和属性已移除,请改用 grab_range

SpanSelector#

  • active_handle 属性已私有化并移除。

  • eventpress 属性已私有化并移除。

  • eventrelease 属性已私有化并移除。

  • pressv 属性已私有化并移除。

  • prev 属性已私有化并移除。

  • rect 属性已私有化并移除。

  • rectprops 参数已重命名为 props

  • rectprops 属性已私有化并移除。

  • span_stays 参数已重命名为 interactive

  • span_stays 属性已私有化并移除。

  • state 属性已私有化并移除。

LassoSelector#

  • lineprops 参数已移除,请改用 props

  • onpressonrelease 方法已移除。它们是 pressrelease 的直接别名。

  • matplotlib.widgets.TextBox.DIST_FROM_LEFT 属性已移除。它在 3.5 版本中被标记为私有。

backend_template.show#

... 已移除,以便更好地演示新的后端定义 API。

print_<fmt> 方法中未使用的位置参数#

画布子类实现的所有 print_<fmt> 方法都没有使用除了第一个参数(输出文件名或类文件对象)以外的位置参数,因此这些额外参数已被移除。

QuadMesh 签名#

QuadMesh 签名

def __init__(meshWidth, meshHeight, coordinates,
             antialiased=True, shading='flat', **kwargs)

已移除,并替换为新签名

def __init__(coordinates, *, antialiased=True, shading='flat', **kwargs)

特别是

  • coordinates 参数现在必须是 (M, N, 2) 数组类。以前,网格形状单独指定为 (meshHeight + 1, meshWidth + 1),并且 coordinates 可以是任何形状的数组类,其中包含 M * N * 2 个元素。

  • coordinates 外,所有参数现在都是仅限关键字的。

FancyBboxPatch 弃用过期#

FancyBboxPatch 构造函数不再接受 bbox_transmuter 参数,boxstyle 参数也不能设置为“custom”——相反,直接将 boxstyle 设置为相关的 boxstyle 实例。mutation_scalemutation_aspect 参数也已变为仅限关键字。

mutation_aspect 参数现在在内部处理,不再在修改补丁路径时传递给 boxstyle 可调用对象。

测试支持#

matplotlib.test() 已移除#

请改为从命令行运行 pytest 进行测试。matplotlib.default_test_modules 变量仅用于 matplotlib.test(),因此也已移除。

要测试已安装的副本,请务必使用 --pyargs 指定 matplotlibmpl_toolkits

pytest --pyargs matplotlib.tests mpl_toolkits.tests

有关更多详细信息,请参阅 测试

pcolorpcolormesh 自动移除网格#

pcolorpcolormesh 以前会移除任何可见的轴主网格。此行为已移除;请明确调用 ax.grid(False) 来移除网格。

修改 Axes 子列表#

有关更多信息,请参阅 Axes 子项不再按类型分离;以下子列表的修改不再受支持

  • Axes.artists

  • Axes.collections

  • Axes.images

  • Axes.lines

  • Axes.patches

  • Axes.tables

  • Axes.texts

要移除 Artist,请使用其 Artist.remove 方法。要添加 Artist,请使用相应的 Axes.add_* 方法。

Axes.add_* 方法传递不正确的类型#

以下 Axes.add_* 方法在传递意外类型时将引发异常。有关它们期望的类型,请参阅其文档。

ConversionInterface.convert 不再接受无单位值#

此前,units.ConversionInterface 的自定义子类需要实现一个 convert 方法,该方法不仅接受单位实例,还接受无单位值(按原样传递)。现在情况不再如此(convert 从不使用无单位值调用),并且 .StrCategoryConverter 中的此类支持已移除。同样,.ConversionInterface.is_numlike 助手也已移除。

请考虑改用 Axis.convert_units,它仍然支持无单位值。

HandlerLine2D.create_artists 现在返回普通的 Artist 对象列表#

对于 Matplotlib 3.5 和 3.6,返回了一个代理列表,它模拟了 HandlerLine2DCompound.create_artists 的返回。现在返回一个只包含单个艺术家的列表。

rcParams 将不再将输入强制转换为 str#

期望(非路径类)str 的 rcParams 不再使用 str 强制转换非 str 输入。这将避免后续代码中出现令人困惑的错误,例如列表输入被隐式强制转换为 str。

不区分大小写的刻度#

以前,刻度可以不区分大小写地设置(例如,set_xscale("LoG"))。现在所有内置刻度都使用小写名称。

支持 AxesLocatorDivider.locate 中的 nx1 = Noneny1 = None#

axes_grid1.axes_divider 中,各种内部 API 不再支持传递 nx1 = Noneny1 = None 表示 nx + 1ny + 1,这是为未来可能支持索引和切片分隔符的 API 做准备(可能 divider[a:b] == divider.new_locator(a, b),也可能 divider[a:] == divider.new_locator(a, <end>))。用户可见的 Divider.new_locator API 未受影响——它会根据需要正确规范化 nx1 = Noneny1 = None

更改 .FigureCanvasBase.enter_notify_event 的签名#

xy 参数现在是必需的且仅限关键字。这在 3.0 中已弃用,最初计划在 3.5 中移除。

Colorbar 刻度更新参数#

Colorbar.set_ticksColorbar.set_ticklabelsupdate_ticks 参数自 3.5 起被忽略,现已移除。

绘图指令移除#

公共方法

  • matplotlib.sphinxext.split_code_at_show

  • matplotlib.sphinxext.unescape_doctest

  • matplotlib.sphinxext.run_code

已被移除。

绘图指令中已弃用的 encoding 选项已移除。

杂项移除#

  • is_urlURL_REGEX 已移除。(它们以前在顶层 matplotlib 模块中定义。)

  • ArrowStyle.beginarrowArrowStyle.endarrow 属性已移除;请使用 arrow 属性来定义所需的箭头头部和尾部。

  • backend_pgf.LatexManager.str_cache 已移除。

  • backends.qt_compat.ETSbackends.qt_compat.QT_RC_MAJOR_VERSION 已移除,无替代。

  • blocking_input 模块已移除。请改用 canvas.start_event_loop()canvas.stop_event_loop(),同时根据需要连接事件回调。

  • cbook.report_memory 已移除;请改用 psutil.virtual_memory

  • cm.LUTSIZE 已移除。请改用 rcParams["image.lut"](默认值:256)。此值仅影响在模块导入时生成的默认色图的色图量化级别。

  • Colorbar.patch 已移除;此属性不再正确更新。

  • ContourLabeler.get_label_width 已移除。

  • Dvi.baseline 已移除(无替代)。

  • dviread.find_tex_fileformat 参数已移除(无替代)。

  • FancyArrowPatch.get_path_in_displaycoordConnectionPath.get_path_in_displaycoord 已移除。在显示坐标中的路径仍然可以通过 patch.get_transform().transform_path(patch.get_path()) 获得,与其他补丁类似。

  • font_manager.win32InstalledFontsfont_manager.get_fontconfig_fonts 辅助函数已移除。

  • imshow 的所有参数从 aspect 开始都变为仅限关键字。

  • QuadMesh.convert_mesh_to_pathsQuadMesh.convert_mesh_to_triangles 已移除。QuadMesh.get_paths() 可用作前者的替代;后者无替代。

  • ScalarMappable.callbacksSM 已移除。请改用 ScalarMappable.callbacks

  • streamplot.get_integrator 已移除。

  • style.core.STYLE_FILE_PATTERNstyle.core.load_base_librarystyle.core.iter_user_libraries 已移除。

  • SubplotParams.validate 已移除。请使用 SubplotParams.update 来更改 SubplotParams,同时始终保持其处于有效状态。

  • TexManagergrey_arraydfont_familyfont_familiesfont_info 属性已移除。

  • Text.get_prop_tup 已移除,无替代(因为 Text 类无法知道后端是否需要更新缓存,例如当文本颜色更改时)。

  • Tick.apply_tickdir 实际上并未更新用于绘制刻度的现有 Line2D 对象上的刻度标记,现已移除;请改用 Axis.set_tick_params

  • tight_layout.auto_adjust_subplotpars 已移除。

  • axisartist 类的 grid_info 属性已移除。

  • axes_grid1.axes_grid.CbarAxesaxisartist.axes_grid.CbarAxes 已移除(它们现在根据所属轴类动态生成)。

  • axes_grid1.Divider.get_vsize_hsizeaxes_grid1.Grid.get_vsize_hsize 方法已移除。

  • AxesDivider.append_axes(..., add_to_figure=False) 已移除。如果需要从图形中移除 Axes,请使用 ax.remove()

  • FixedAxisArtistHelper.change_tick_coord 已移除,无替代。

  • floating_axes.GridHelperCurveLinear.get_boundary 已移除,无替代。

  • ParasiteAxesBase.get_images_artists 已移除。

  • “单位终结”信号(以前由 Axis 实例发出)已移除。请改连接到“units”。

  • 不再可能以位置方式将格式化参数传递给 stem()

  • axisartist.clip_path 已移除,无替代。

开发变更#

Windows wheel 运行时捆绑#

为 Windows 构建的 wheel 现在捆绑了 MSVC 运行时 DLL msvcp140.dll。这使得在未安装运行时的系统上导入 Matplotlib 成为可能。

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

对于 Matplotlib 3.7,最低支持版本 正在提升

依赖项

mpl3.6 中的最小值

mpl3.7 中的最小值

NumPy

1.19

1.20

pyparsing

2.2.1

2.3.1

Qt

5.10

  • 没有同时支持 Qt 5.9(或更旧版本)和 Python 3.8(或更新版本)的 wheel 或 conda 包。

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

新依赖项#

最大行长度增加到 88 个字符#

新贡献的最大行长度已从 79 个字符扩展到 88 个字符。此更改额外提供了 9 个字符,允许将单个想法的代码放在更少的行中(通常是单行)。所选长度与 black 相同。