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 的半范围在 vcenter 变化时不会被修改#

之前,halfrange 会根据 vcenter 偏离 vminvmax 的程度按比例扩展。现在,当 vcenter 改变时,halfrange 保持固定,而 vminvmax 根据 vcenterhalfrange 的值进行更新。

例如,这是之前更改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 可以手动设置,或者可以使用 norm.autoscale() 在设置 vcenter 后自动设置限制。

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

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

HPacker底部顶部 的对齐现在正确#

之前,**底部**和**顶部**对齐方式被互换了。现在已经修正,使得对齐方式相应地正确对应。

在Windows上,只有注册表中已知的字体才会被发现#

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

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

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

QuadMesh.set_array 现在总是对形状不正确的输入引发 ValueError#

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

contourcontourf 在接收到布尔输入时会自动选择合适的级别#

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

contour 不再在未绘制等高线时发出警告。#

如果用户显式传递一个 levels 数组,其中没有介于 z.min()z.max() 之间的值;或者如果 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 类型#

依赖 rcParams 作为 dict 子类已被弃用。

普通用户不会受到影响,因为 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之前,没有父坐标轴的mappable的颜色条会从当前的Axes中窃取空间。3.6.0版本对此提出了错误,但没有经过弃用周期。对于3.6.1版本,这一行为被恢复,使用当前的Axes,但会显示一个弃用警告。在这种不确定的情况下,用户和库应明确指定他们希望从哪个坐标轴窃取空间:fig.colorbar(mappable, ax=plt.gca())

Animation 属性#

TimedAnimationrepeat 属性和 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_cube, tunit_cube, 和 tunit_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#

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

弃用未使用的参数 xTextBox.begin_typing#

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

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.vvec, axes3d.eye, axes3d.sx, 和 axes3d.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')

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

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

交互式光标详情#

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

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 模块在无头环境中可导入。

auto_add_to_figure=True 用于 Axes3D#

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

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

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

移除选择器小部件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> 方法的位置参数#

canvas 子类实现的 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 子列表#

更多信息请参见 行为 API 变更 3.5 - 轴子组合;以下子列表的修改不再支持:

  • 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 将不再将输入转换为字符串#

期望接收(非路径类)字符串的 rcParams 不再使用 str 强制转换非字符串输入。这将避免在后续代码中出现混淆的错误,例如,如果列表输入被隐式转换为字符串。

不区分大小写的比例#

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

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

axes_grid1.axes_divider 中,各种内部 API 不再支持传递 nx1 = Noneny1 = None 来表示 nx + 1ny + 1,这是为了准备一个可能的未来 API,该 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 刻度更新参数#

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

plot 指令移除#

公共方法:

  • matplotlib.sphinxext.split_code_at_show

  • matplotlib.sphinxext.unescape_doctest

  • matplotlib.sphinxext.run_code

已被移除。

已弃用的 encoding 选项已从 plot 指令中移除。

杂项移除#

  • 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"] (default: 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 辅助函数已被移除。

  • aspect 开始的 imshow 的所有参数都是仅关键字参数。

  • 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) 已被移除。如果需要,使用 ax.remove() 从图形中移除 Axes。

  • FixedAxisArtistHelper.change_tick_coord 已被移除,没有替代品。

  • floating_axes.GridHelperCurveLinear.get_boundary 已被移除,没有替代方案。

  • ParasiteAxesBase.get_images_artists 已被移除。

  • “units finalize” 信号(之前由 Axis 实例发出)已被移除。请改为连接到 “units”。

  • 不能再通过位置参数向 stem() 传递格式化参数。

  • axisartist.clip_path 已被移除,没有替代品。

开发变更#

Windows wheel 运行时捆绑#

为 Windows 构建的轮子现在捆绑了 MSVC 运行时 DLL msvcp140.dll。这使得在没有安装运行时的系统上也能导入 Matplotlib。

增加到依赖项的最低支持版本#

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

依赖

min in mpl3.6

min in mpl3.7

NumPy

1.19

1.20

pyparsing

2.2.1

2.3.1

Qt

5.10

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

这与我们的 最小依赖策略NEP29 一致。

新的依赖项#

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

新贡献的最大行长度已从79个字符扩展到88个字符。这一更改提供了额外的9个字符,以便允许单个想法的代码占用更少的行(通常为一行)。所选长度与 black 相同。