3.7.0 的 API 变更#
行为变化#
所有 Axes 现在都有 get_subplotspec
和 get_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.twin
、HostAxesBase.twinx
和 HostAxesBase.twiny
一致。
plt.get_cmap
和 matplotlib.cm.get_cmap
返回一个副本#
以前,get_cmap
和 matplotlib.cm.get_cmap
返回的是一个 Colormap
的全局版本。这容易导致错误,因为对色图的修改会在没有警告的情况下从一个位置传播到另一个位置。现在,返回的是色图的一个新副本。
TrapezoidMapTriFinder
使用不同的随机数生成器#
用于确定 TrapezoidMapTriFinder
中三角形边插入顺序的随机数生成器已更改。这可能导致对于恰好位于两个三角形之间边上的点,返回不同的三角形索引。这也可能影响使用 TrapezoidMapTriFinder
的三角剖分插值和细化算法。
FuncAnimation(save_count=None)
#
将 save_count=None
传递给 FuncAnimation
不再将帧数限制为100。请确保它可以从 frames 推断出来,或者提供一个整数 save_count。
CenteredNorm
的半范围在 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 可以手动设置,或者可以使用 norm.autoscale()
在设置 vcenter 后自动设置限制。
fig.subplot_mosaic
不再将 gridspec_kw
参数传递给嵌套的 gridspecs。#
对于嵌套的 Figure.subplot_mosaic
布局,传递 gridspec_kw 参数到较低的嵌套级别几乎总是不合适的,并且在许多情况下这些参数与较低级别不兼容。此字典不再传递到内部布局。需要在多个级别修改 gridspec_kw 的用户应使用 Figure.subfigures
来实现嵌套,并使用 Figure.subplots
或 Figure.subplot_mosaic
构建内部布局。
HPacker
与 底部 或 顶部 的对齐现在正确#
之前,**底部**和**顶部**对齐方式被互换了。现在已经修正,使得对齐方式相应地正确对应。
在Windows上,只有注册表中已知的字体才会被发现#
之前,Matplotlib 会递归遍历用户和系统字体目录以发现字体,但这导致了一些不良行为,包括找到已删除的字体。现在,Matplotlib 只会找到 Windows 注册表中已知的字体。
这意味着任何用户安装的字体必须通过Windows字体安装程序,而不能简单地复制到正确的文件夹中。
这只会影响 Matplotlib 在使用 matplotlib.font_manager.findfont
时考虑的字体集。要使用任意字体,请直接传递字体路径,如 使用 ttf 字体文件 所示。
QuadMesh.set_array
现在总是对形状不正确的输入引发 ValueError
#
在某些情况下,它以前也可能引发 TypeError
。
contour
和 contourf
在接收到布尔输入时会自动选择合适的级别#
如果传递给 Axes.contour
或 Axes.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")
行为的变化#
弃用#
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.MatplotlibDeprecationWarning
和 matplotlib.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.Grid
、mpl_toolkits.axes_grid1.axes_grid.AxesGrid
和 mpl_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
属性#
TimedAnimation
的 repeat
属性和 FuncAnimation
的 save_count
属性被视为私有且已弃用。
contour.ClabelText
和 ContourLabeler.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
属性#
.ContourLabeler
的 labelFontProps
、labelFontSizeList
和 labelTextsList
属性已被弃用。请改用 labelTexts
属性和相应文本对象的字体属性。
backend_ps.PsBackendHelper
和 backend_ps.ps_backend_helper
#
... 已被弃用,没有替代品。
backend_webagg.ServerThread
已被弃用#
... 没有替换。
parse_fontconfig_pattern
将不再忽略未知的常量名称#
以前,在像 DejaVu Sans:foo
这样的 fontconfig 模式中,未知的 foo
常量名称会被静默忽略。现在这会引发警告,并且将来会变成错误。
BufferRegion.to_string
和 BufferRegion.to_string_argb
#
... 已被弃用。使用 np.asarray(buffer_region)
在不复制的情况下获取缓冲区区域的数组视图;要将该视图从 RGBA(默认)转换为 ARGB,请使用 np.take(..., [2, 1, 0, 3], axis=2)
。
num2julian
、julian2num
和 JULIAN_OFFSET
#
... dates
模块中的内容已被弃用,没有替代品。这些内容未被记录且未导出。如果您依赖这些内容,请制作一个本地副本。
unit_cube
, tunit_cube
, 和 tunit_edges
#
... Axes3D
的方法已被弃用,且没有替代品。如果你依赖它们,请复制相应私有函数(名称以 _
开头)的代码。
大多数小部件的参数已改为仅关键字参数#
在 Widgets 的构造函数中,除了前几个参数外,其余参数都以位置方式传递的做法已被弃用。大多数参数在未来的版本中将成为仅关键字参数。
SimpleEvent
#
SimpleEvent
嵌套类(之前可以通过 ConnectionStyle._Base
的公共子类访问,例如 ConnectionStyle.Arc
,已被弃用。
OffsetBox.get_extent_offsets
和 OffsetBox.get_extent
#
... 已被弃用;这些方法在 OffsetBox
的所有子类上也被弃用。
要获取 offsetbox 的范围,请使用 OffsetBox.get_bbox
而不是 get_extent
,它直接返回一个 Bbox
实例。
要获取子对象的偏移量,请在触发绘制后,对每个子对象分别调用 get_offset
,而不是使用 get_extent_offsets
。
legend.legendHandles
#
... 未被记录且已被重命名为 legend_handles
。使用 legendHandles
已被弃用。
Axis.set_ticklabels
的 ticklabels
参数已重命名为 labels
#
offsetbox.bbox_artist
#
... 已被弃用。这只是一个调用 patches.bbox_artist
的包装器,如果文件中设置了标志,则直接使用该方法以获得所需的行为。
Quiver.quiver_doc
和 Barbs.barbs_doc
#
... 已被弃用。这些是文档字符串,不应作为命名类成员访问。
弃用未使用的参数 x 到 TextBox.begin_typing
#
此参数在方法中未被使用,但它是必需的参数。
在 mpl.cm
中弃用顶级 cmap 注册和访问函数#
作为 多步骤过程 的一部分,我们正在重构用于管理已注册色图的全局状态。
在 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.register
matplotlib.cm.unregister_cmap
;请改用matplotlib.colormaps.unregister
matplotlib.pyplot.register_cmap
;请改用matplotlib.colormaps.register
matplotlib.pyplot.get_cmap
函数将保持可用,以确保向后兼容性。
BrokenBarHCollection
已被弃用#
它只是一个继承自 PolyCollection
的薄包装;broken_barh
现在已被修改为返回一个 PolyCollection
。
BrokenBarHCollection.span_where
辅助函数同样已被弃用;在弃用期间,它已被移至父类 PolyCollection
中。请使用 fill_between
作为替代;示例请参见 使用 fill_between 填充由逻辑掩码定义的阴影区域。
将不一致的 loc
和 nth_coord
传递给 axisartist 助手#
尝试构建例如“顶部 y 轴”或“左侧 x 轴”现在已被弃用。
passthru_pt
#
AxisArtistHelper
的这个属性已被弃用。
axes3d.vvec
, axes3d.eye
, axes3d.sx
, 和 axes3d.sy
#
... 已被弃用,没有替代品。
Line2D
#
在创建 Line2D 或使用 Line2D.set_xdata
和 Line2D.set_ydata
时,传递非序列的 x/y 数据已被弃用。
移除#
epoch2num
和 num2epoch
已被移除#
这些方法将unix时间戳转换为matplotlib浮点数,但它们在Matplotlib内部并不使用,并且终端用户通常不需要使用。要将unix时间戳转换为datetime,只需使用 datetime.datetime.fromtimestamp
,或者使用NumPy datetime64
dt = np.datetime64(e*1e6, 'us')
。
定位器和格式化器包装方法#
Locator
和 Formatter
的 set_view_interval
、set_data_interval
和 set_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.cursord
和 backend_wx.cursord
字典已被移除。这使得 GTK 模块在无头环境中可导入。
auto_add_to_figure=True
用于 Axes3D
#
... 不再被支持。请改用 fig.add_axes(ax)
。
Axes.grid
和 Axis.grid
的第一个参数已重命名为 visible#
该参数之前名为 b。这个名称更改仅在通过关键字参数传递该参数时才重要,例如 grid(b=False)
。
移除选择器小部件API中的弃用项#
RectangleSelector 和 EllipseSelector#
RectangleSelector
的 drawtype 关键字参数已被移除。从现在开始,唯一的行为将是 drawtype='box'
。
drawtype=line
的支持已被完全移除。因此,RectangleSelector
的 lineprops 关键字参数也被移除。
要保留 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_props
或set_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。
onpress
和onrelease
方法已被移除。它们是press
和release
的直接别名。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_scale 和 mutation_aspect 参数也变成了仅关键字参数。
mutation_aspect 参数现在在内部处理,并且在修改补丁路径时不再传递给 boxstyle 可调用对象。
测试支持#
matplotlib.test()
已被移除#
使用命令行中的 pytest
运行测试。变量 matplotlib.default_test_modules
仅用于 matplotlib.test()
,因此也被移除。
要测试已安装的副本,请确保使用 --pyargs
指定 matplotlib
和 mpl_toolkits
:
pytest --pyargs matplotlib.tests mpl_toolkits.tests
更多详情请参见 测试。
通过 pcolor
和 pcolormesh
自动移除网格#
pcolor
和 pcolormesh
之前会移除任何可见的轴主要网格。此行为已被移除;请显式调用 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")
)。现在所有内置刻度都使用小写名称。
在 AxesLocator
和 Divider.locate
中支持 nx1 = None
或 ny1 = None
#
在 axes_grid1.axes_divider
中,各种内部 API 不再支持传递 nx1 = None
或 ny1 = None
来表示 nx + 1
或 ny + 1
,这是为了准备一个可能的未来 API,该 API 允许对分隔符进行索引和切片(可能是 divider[a:b] == divider.new_locator(a, b)
,但也可能是 divider[a:] == divider.new_locator(a, <end>)
)。面向用户的 Divider.new_locator
API 不受影响——它正确地将 nx1 = None
和 ny1 = None
按需规范化。
更改 .FigureCanvasBase.enter_notify_event
的签名#
xy 参数现在是必需的且仅限关键字。这在3.0版本中已被弃用,最初计划在3.5版本中移除。
Colorbar
刻度更新参数#
自3.5版本起,Colorbar.set_ticks
和 Colorbar.set_ticklabels
的 update_ticks 参数已被忽略并移除。
plot 指令移除#
公共方法:
matplotlib.sphinxext.split_code_at_show
matplotlib.sphinxext.unescape_doctest
matplotlib.sphinxext.run_code
已被移除。
已弃用的 encoding 选项已从 plot 指令中移除。
杂项移除#
is_url
和URL_REGEX
已被移除。(它们之前在顶层matplotlib
模块中定义。)ArrowStyle.beginarrow
和ArrowStyle.endarrow
属性已被移除;使用arrow
属性来定义箭头的所需头尾。backend_pgf.LatexManager.str_cache
已被移除。backends.qt_compat.ETS
和backends.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_file
的 format 参数已被移除(无替代品)。FancyArrowPatch.get_path_in_displaycoord
和ConnectionPath.get_path_in_displaycoord
已被移除。显示坐标中的路径仍然可以通过使用patch.get_transform().transform_path(patch.get_path())
获取,就像其他补丁一样。font_manager.win32InstalledFonts
和font_manager.get_fontconfig_fonts
辅助函数已被移除。从 aspect 开始的
imshow
的所有参数都是仅关键字参数。QuadMesh.convert_mesh_to_paths
和QuadMesh.convert_mesh_to_triangles
已被移除。QuadMesh.get_paths()
可以作为前者的替代;后者没有替代方案。ScalarMappable.callbacksSM
已被移除。请改用ScalarMappable.callbacks
。streamplot.get_integrator
已被移除。style.core.STYLE_FILE_PATTERN
、style.core.load_base_library
和style.core.iter_user_libraries
已被移除。SubplotParams.validate
已被移除。使用SubplotParams.update
来更改SubplotParams
,同时始终保持其处于有效状态。TexManager
的grey_arrayd
、font_family
、font_families
和font_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.CbarAxes
和axisartist.axes_grid.CbarAxes
已被移除(它们现在基于所属的轴类动态生成)。axes_grid1.Divider.get_vsize_hsize
和axes_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 一致。
新的依赖项#
importlib-resources (>= 3.2.0; 仅在 Python < 3.10 时需要)
最大行长度增加到88个字符#
新贡献的最大行长度已从79个字符扩展到88个字符。这一更改提供了额外的9个字符,以便允许单个想法的代码占用更少的行(通常为一行)。所选长度与 black 相同。