3.8.0 版 API 变更#
行为变更#
Tk 后端在保存图片时会尊重文件格式选择#
现在,当从 Tkinter GUI 保存图形到没有扩展名的文件名时,文件格式会根据下拉菜单的值进行选择,而不是默认使用 PNG。当文件名包含扩展名或操作系统自动附加扩展名时,行为保持不变。
最大和最小次刻度的放置#
次刻度位置的计算已得到修正,以使最大和最小次刻度更加一致。在某些情况下,这会导致轴上多出一个次刻度。
hexbin
现在默认使用 rcParams["patch.linewidth"]
#
Axes.hexbin
的 linewidths 参数的默认值已从 1.0
更改为 rcParams["patch.linewidth"]
(默认值:1.0
)。这提高了与 QuadMesh
在 Axes.pcolormesh
和 Axes.hist2d
中的一致性。
TwoSlopeNorm 现在会自动扩展以始终具有两个斜率#
在未手动为 TwoSlopeNorm
指定 vmin
或 vmax
,并且要缩放的数据全部小于或大于中心点的情况下,现在会自动扩展限制,以使中心点两侧有两个对称大小的斜率。
以前 vmin
和 vmax
会在中心点处裁剪,这在显示颜色条时导致问题。
当用户手动指定 vmin
和 vmax
时,此行为不受影响。
为 axes_leave_event
发出的事件对象#
axes_leave_event
现在发出一个合成的 LocationEvent
,而不是重用与 motion_notify_event
关联的最后一个事件对象。
Streamplot 现在在没有宽度或颜色变化时将流线绘制成一个整体#
由于在没有颜色或宽度变化的情况下不需要逐段绘制流线,现在 streamplot 将每条流线绘制成一个整体。
对于宽度或颜色变化的流线图,行为没有改变,仍使用相同的逻辑。
FigureFrameWx
现在需要 canvas
参数#
FigureFrameWx
在构造时现在需要一个仅限关键字的 canvas
参数。
ContourSet
现在是一个单一的 Collection#
在此版本之前,ContourSet
(由 contour
返回的对象)是一个自定义对象,包含多个 Collection
(而不是 Artist
)——每个级别一个 Collection,该级别等高线的每个连接组件都是相应 Collection 中的一个条目。
ContourSet
现在是一个普通的 Collection
(因此也是一个 Artist
)。该 Collection 包含每条等高线级别的一条路径;如果存在多个不连续的组件,则此路径可能不连续。
现在,通常可以使用标准 Collection 设置器来设置 ContourSet 的属性(例如 cset.set_linewidth(3)
用于所有等高线使用相同的线宽,或 cset.set_linewidth([1, 2, 3, ...])
用于为每个级别设置不同的线宽),而无需通过各个子组件(例如 cset.collections[0].set_linewidth(...)
)。请注意,在过渡期内,仍然可以访问(已弃用的).collections
属性;这会导致 ContourSet 修改自身以使用旧式的多 Collection 表示。
SubFigure
默认填充色现在是透明的#
子图的默认填充色已更改为 "none"
。以前的默认值是 figure.facecolor
的值。
弃用后的 API 变更#
dviread.find_tex_file
在找不到请求的文件名时现在会引发FileNotFoundError
。Figure.colorbar
现在在未给定 cax 且无法确定从哪个 Axes 窃取空间时(即,如果也未给定 ax 且 mappable 未添加到 Axes 时)会引发错误。pyplot.subplot
和pyplot.subplot2grid
不再自动删除预先存在的重叠 Axes;请根据需要显式调用Axes.remove
。
Annotation xycoords 的无效类型现在会引发 TypeError#
以前,在某些情况下会引发 RuntimeError
。
Text
和 Annotation
的默认抗锯齿行为变更#
matplotlib.pyplot.annotate()
和 matplotlib.pyplot.text()
现在在初始化时支持参数 antialiased。示例
mpl.text.Text(.5, .5, "foo\nbar", antialiased=True)
plt.text(0.5, 0.5, '6 inches x 2 inches', antialiased=True)
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5), antialiased=False)
有关用法的更多详细信息,请参阅“新功能”。
有了这个新功能,您可能需要确保在相同的上下文下创建和保存/显示图形。
# previously this was a no-op, now it is what works
with rccontext(text.antialiased=False):
fig, ax = plt.subplots()
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5))
fig.savefig('/tmp/test.png')
# previously this had an effect, now this is a no-op
fig, ax = plt.subplots()
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5))
with rccontext(text.antialiased=False):
fig.savefig('/tmp/test.png')
另请注意,刻度标签的抗锯齿将在创建时(通常在创建 Figure
时)使用 rcParams["text.antialiased"]
(默认值:True
)设置——这意味着通过修改 rcParams["text.antialiased"]
(默认值:True
)无法再更改它们的抗锯齿设置。
ScalarMappable.to_rgba()
现在会尊重 RGB(A) 数组的掩码#
以前,掩码会被忽略。现在,如果任何组件(R、G、B 或 A)被掩码,则 alpha 通道将设置为 0。
Text.get_rotation_mode
返回值#
将 None
作为 rotation_mode
传递给 Text
(默认值)或将其传递给 Text.set_rotation_mode
将使 Text.get_rotation_mode
返回 "default"
而不是 None
。其他行为保持不变。
PostScript 纸张尺寸新增使用图形尺寸的选项#
rcParams["ps.papersize"]
(默认值:'letter'
)rcParam 现在可以设置为 'figure'
,这将使用与正在保存的图形尺寸完全对应的纸张尺寸。
hexbin
的 mincnt 参数现在始终包含边界值#
以前,在未提供 C 时,mincnt 包含边界值;在提供 C 时,则不包含边界值。现在,在两种情况下,它都包含 mincnt。
matplotlib.mpl_toolkits
现在是一个隐式命名空间包#
在 setuptools
67.3.0 中弃用 pkg_resources.declare_namespace
之后,matplotlib.mpl_toolkits
现在按照 PEP 420 实现为隐式命名空间。
因此,如果使用 pip
在 Matplotlib < 3.8 的版本之上安装 Matplotlib >= 3.8 的版本(例如通过 pip install --local
或 python -m venv --system-site-packages ...
),将会失败,因为会找到旧的 matplotlib.mpl_toolkits
文件,而所有其他模块都会找到较新的文件。这将导致版本不匹配的错误。
为避免此问题,您需要避免在 sys.path
的不同条目中存在多个 Matplotlib 版本。要么在系统级别卸载 Matplotlib,要么使用更独立的虚拟环境。
弃用#
调用 paths.get_path_collection_extents
并传入空的 offsets#
调用 get_path_collection_extents
时传入空的 offsets 参数的解释不明确,因此已弃用。当弃用期结束时,这将产生一个错误。
axes_grid1.axes_divider
API 变更#
AxesLocator
类已弃用。divider 实例的 new_locator
方法现在返回一个不透明的可调用对象(该对象仍然可以传递给 ax.set_axes_locator
)。
Divider.locate
已弃用;请改用 Divider.new_locator(...)(ax, renderer)
。
bbox.anchored()
没有显式容器#
在调用 BboxBase.anchored
时不传递 container 参数现已弃用。
mpl_toolkits.mplot3d.proj3d
中的函数#
函数 transform
只是 proj_transform
的别名,请改用后者。
以下函数要么未使用(因此 Matplotlib 中不再需要),要么被视为私有。如果您依赖它们,请复制代码,包括所有以下划线 _
开头的函数(被视为私有)。
ortho_transformation
persp_transformation
proj_points
proj_trans_points
rot_x
rotation_about_vector
view_transformation
get_tightbbox
中除 renderer
之外的参数#
... 仅为关键字参数。这是为了保持一致性,并且不同类有不同的附加参数。
pcolor()
返回的对象已更改为 PolyQuadMesh
类#
旧对象是 PolyCollection
,带有扁平化的顶点和数组数据。新的 PolyQuadMesh
类继承自 PolyCollection
,但在 2D 坐标和数组处理方面与 QuadMesh
保持一致,提供了更好的处理能力。以前,如果输入的是掩码数组,集合中的多边形列表会缩小到有效多边形的大小,用户需要跟踪哪些多边形被绘制,并使用较小的“压缩”数组大小调用 set_array()
。现在,传递“压缩”和扁平化数组值已被弃用,应将完整的 2D 数组值(包括掩码)传递给 PolyQuadMesh.set_array
。
LocationEvent.lastevent
#
... 已弃用,没有替代方案。
ContourSet
的 allsegs
、allkinds
、tcolors
和 tlinewidths
属性#
这些属性已弃用;如果需要,请直接从 ContourSet.get_paths()
中检索 Path 对象的顶点和代码,并通过 ContourSet.get_facecolor()
、ContourSet.get_edgecolor()
和 ContourSet.get_linewidths()
检索颜色和线宽。
ContourSet.collections
#
... 已弃用。ContourSet
现在实现为单一的 Path Collection
,每个 Path 对应一个等高线级别,可能包含多个不连接的组件。
在弃用期间,访问 ContourSet.collections
会将当前的 ContourSet 实例恢复到旧的对象布局,即每个等高线级别一个独立的 PathCollection
。
TransformNode
的 INVALID_NON_AFFINE
、INVALID_AFFINE
、INVALID
属性#
这些属性已弃用。
Grouper.clean()
#
没有替代方案。Grouper 类现在会自动清理自身。
GridHelperCurveLinear.get_data_boundary
#
... 已弃用。请改用 grid_finder.extreme_finder(*[None] * 5)
来获取网格的极值。
cbook.get_sample_data
的 np_load 参数#
此参数已弃用;get_sample_data
现在会自动加载 numpy 数组。如果需要,请改用 get_sample_data(..., asfileobj=False)
来获取数据文件的文件名,然后可以将其传递给 open
。
RendererAgg.tostring_rgb
和 FigureCanvasAgg.tostring_rgb
#
... 已弃用,没有直接替代。请考虑使用 buffer_rgba
,它应该涵盖大多数用例。
Annotation.contains
和 Legend.contains
的参数已重命名为 mouseevent#
... 与 Artist.contains
保持一致。
事件处理程序返回后访问 event.guiEvent
#
... 已弃用:对于某些 GUI 工具包,这样做是不安全的。将来,事件处理程序返回后,event.guiEvent
将设置为 None;您可以自行承担风险单独存储该对象。
小部件#
Selector 小部件的 visible 属性 getter 已弃用;请使用 get_visible
。
方法参数已重命名以匹配基类#
Transform
子类中 transform_affine
和 transform_non_affine
的唯一参数已重命名为 values。
transforms.IdentityTransform.transform
的 points 参数已重命名为 values。
table.Cell.set_transform
的 trans 参数已重命名为 t,与 Artist.set_transform
保持一致。
axis.Axis.set_clip_path
和 axis.Tick.set_clip_path
的 clippath 参数已重命名为 path,与 Artist.set_clip_path
保持一致。
images.NonUniformImage.set_filternorm
的 s 参数已重命名为 filternorm,与 _ImageBase.set_filternorm
保持一致。
images.NonUniformImage.set_filterrad
的 s 参数已重命名为 filterrad,与 _ImageBase.set_filterrad
保持一致。
LogLocator
的 numdecs 参数和属性#
... 已弃用,没有替代方案,因为它们没有效果。
ft2font.FT2Image.draw_rect
和 ft2font.FT2Font.get_xys
#
... 已弃用,因为它们未使用。如果您依赖这些,请告诉我们。
backend_ps.psDefs
#
backend_ps
中的模块级变量 psDefs
已弃用,没有替代方案。
可调用的 axisartist Axes#
将 axisartist Axes 作为 axis
的含义调用已弃用;请显式调用该方法。
AnchoredEllipse
已弃用#
请改用 AnchoredOffsetbox
、AuxTransformBox
和 Ellipse
,具体示例请参见Anchored Artists。
PostScript 中的自动纸张尺寸选择#
将 rcParams["ps.papersize"]
(默认值:'letter'
)设置为 'auto'
或将 papersize='auto'
传递给 Figure.savefig
已弃用。请显式传递纸张类型名称,或省略此参数以使用 rcParam 中的默认值。
Tick.set_label1
和 Tick.set_label2
#
... 已弃用。从第三方代码调用这些方法通常没有效果,因为标签会在绘制时被刻度格式化器覆盖。
向 Figure.add_axes
传递额外的位置参数#
目前,除了 rect 或现有 Axes
之外,传递给 Figure.add_axes
的位置参数会被忽略,这样做现已弃用。
CbarAxesBase.toggle_label
#
... 已弃用。请改用操作颜色条标签(Colorbar.set_label
)和刻度标签(Axes.tick_params
)的标准方法。
TexManager.texcache
#
... 被认为是私有的并已弃用。缓存目录的位置在 doc-string 中已明确。
显式传入的 Artist 不再根据其标签被 legend() 过滤#
目前,显式传递给 legend(handles=[...])
的 artist 如果其标签以下划线开头,则会被过滤掉。此行为已弃用;如有必要,请显式过滤掉此类 artist([art for art in artists if not art.get_label().startswith('_')]
)。
FigureCanvasBase.switch_backends
#
... 已弃用,没有替代方案。
cbook.Stack
已弃用#
... 无替代。
inset_location.InsetPosition
已弃用#
请改用 inset_axes
。
axisartist.axes_grid
和 axisartist.axes_rgb
#
这些模块提供了结合 axes_grid1
和 axisartist
功能的包装器,现已弃用;请直接使用例如 AxesGrid(..., axes_class=axislines.Axes)
。
ContourSet.antialiased
#
... 已弃用;请改用 get_antialiased
或 set_antialiased
。请注意,get_antialiased
返回一个数组。
向 Table.auto_set_column_width
传递非整数或非整数序列#
列号是整数,以前传递任何其他类型实际上都会被忽略。将来这将成为一个错误。
PdfPages(keep_empty=True)
#
零页的 PDF 文件无效,因此传递 keep_empty=True
给 backend_pdf.PdfPages
和 backend_pgf.PdfPages
,以及这些类的 keep_empty
属性均已弃用。目前,这些类默认保留空输出,但该行为也已弃用。显式传递 keep_empty=False
目前仍受支持,以帮助过渡到新行为。
此外,backend_pdf.PdfPages
不再在实例化时立即创建目标文件,而是在保存第一个图形时才创建。要完全控制文件创建,请直接传递已打开的文件对象作为参数(with open(path, "wb") as file, PdfPages(file) as pdf: ...
)。
切换后端时自动关闭图形#
... 已弃用。如有必要,请显式调用 plt.close("all")
。将来,允许的后端切换(即,那些不与另一个 GUI 事件循环交换的切换)将不会关闭现有图形。
对 annotate(..., arrowprops={"frac": ...})
中传递 "frac" 键的支持#
... 已移除。此键自 Matplotlib 1.5 以来已无效。
移除#
cbook 移除#
matplotlib.cbook.MatplotlibDeprecationWarning
和matplotlib.cbook.mplDeprecation
已移除;请改用matplotlib.MatplotlibDeprecationWarning
。cbook.maxdict
;请改用标准库的functools.lru_cache
。
已移除的弃用模块#
以下弃用模块已移除:
afm
docstring
fontconfig_pattern
tight_bbox
tight_layout
type1font
传递给 plt.figure()
和 Figure
构造函数的参数#
传递给 pyplot.figure
和 Figure
构造函数的所有参数,除了 num、figsize 和 dpi,现在都只能作为关键字参数。
stem(..., use_line_collection=False)
#
... 不再受支持。这曾是对旧版低效线段表示的兼容性回退。
位置参数 / 关键字参数#
在 Artist 的构造函数中,除了极少数前几个参数外,不再可能将所有其他参数作为位置参数传递。大多数参数现在都只能作为关键字参数。
set_xlim
、set_ylim
、set_zlim
、set_rlim
的 emit 和 auto 参数现在仅为关键字参数。
Collection.set_offset_transform
以及 legend handler 的各种 create_collection
方法的 transOffset 参数已重命名为 offset_transform(与属性名称保持一致)。
Axes.get_window_extent
/ Figure.get_window_extent
仅接受 renderer。这使 API 与通用的 Artist.get_window_extent
API 对齐。所有其他参数无论如何都会被忽略。
在 LogLocator
和 LogFormatter*
中设置参数的方法#
在 LogFormatter
及其派生子类中,用于设置相应参数的 base
和 label_minor
方法已被移除,并分别由 set_base
和 set_label_minor
替代。
在 LogLocator
中,用于设置相应参数的 base
和 subs
方法已被移除。请改用 set_params(base=..., subs=...)
。
Axes.get_renderer_cache
#
画布现在负责渲染器以及是否缓存它,因此 Axes.get_renderer_cache
方法已被移除。替代方法是调用 axes.figure.canvas.get_renderer()
。
Axis
、Tick
、XAxis
和 YAxis
中未使用的函数#
Tick.label
现已移除。请改用 Tick.label1
。
以下方法不再使用并已移除,没有替代方案
Axis.get_ticklabel_extents
Tick.get_pad_pixels
XAxis.get_text_heights
YAxis.get_text_widths
mlab.stride_windows
#
... 已移除。请改用 numpy.lib.stride_tricks.sliding_window_view
。
Axes3D
#
dist
属性已私有化。请改用 Axes3D.set_box_aspect
中的 zoom 关键字参数。
w_xaxis
、w_yaxis
和 w_zaxis
属性现已移除。请改用 xaxis
、yaxis
和 zaxis
。
3D 轴#
mplot3d.axis3d.Axis.set_pane_pos
已移除。这是一个内部方法,其提供的值在绘制时会被覆盖。因此,它没有直接可访问的任何目的。
两个辅助函数 mplot3d.axis3d.move_from_center
和 mplot3d.axis3d.tick_update_position
被认为是内部函数并已弃用。如果需要它们,请从相应的私有方法 _move_from_center
和 _tick_update_position
中复制代码。
checkdep_usetex
已移除#
此方法仅用于在找不到 latex 安装时禁用测试。因此,它被认为是私有的,仅供内部使用。
如果您需要此功能,请从旧版本中复制代码。
date_ticker_factory
已移除#
matplotlib.dates
模块中的 date_ticker_factory
方法已移除。请改用 AutoDateLocator
和 AutoDateFormatter
,以获得更灵活、可扩展的定位器和格式化器。
如果您需要精确的 date_ticker_factory
行为,请从旧版本中复制代码。
transforms.Affine2D.identity()
#
... 已移除,取而代之的是直接调用不带参数的 Affine2D
构造函数。
testing.decorators
中的移除#
未使用的类 CleanupTestCase
和装饰器 cleanup
已移除。函数 check_freetype_version
被认为是内部函数并已移除。请从旧版本中复制代码。
text.get_rotation()
#
... 已移除,没有替代方案。如果需要,请复制以前的实现。Figure.callbacks
已移除 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Figure 的 callbacks
属性已移除。唯一的信号是“dpi_changed”,可以用连接到画布上的“resize_event”来代替 figure.canvas.mpl_connect("resize_event", func)
。
向 tripcolor
传递过多的位置参数#
... 将引发 TypeError
(以前,额外的参数会被忽略)。
Colorbar
的 filled 参数已移除#
此行为已由底层 ScalarMappable
控制。
小部件#
Selector 小部件的 visible 属性设置器已移除;请使用 set_visible
。相关的 getter 也已弃用,但尚未到期。
Axes3D.set_frame_on
和 Axes3D.get_frame_on
已移除#
Axes3D.set_frame_on
文档说明为“设置是否绘制 3D 轴面板”。然而,它对 3D 轴没有影响,因此已被移除,并推荐使用 Axes3D.set_axis_on
和 Axes3D.set_axis_off
。
杂项内部功能#
axes_grid1.axes_size.AddList
;请改用sum(sizes, start=Fixed(0))
(例如)来求和多个尺寸对象。axes_size.Padded
;请改用size + pad
axes_size.SizeFromFunc
,axes_size.GetExtentHelper
AxisArtistHelper.delta1
和AxisArtistHelper.delta2
axislines.GridHelperBase.new_gridlines
和axislines.Axes.new_gridlines
_DummyAxis.dataLim
和_DummyAxis.viewLim
;请改用get_data_interval()
、set_data_interval()
、get_view_interval()
和set_view_interval()
。ImageMagickBase.delay
和ImageMagickBase.output_args
MathtextBackend
、MathtextBackendAgg
、MathtextBackendPath
、MathTextWarning
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))
。
特定于后端的功能移除#
backend_pdf.Name.hexify
backend_pdf.Operator
和backend_pdf.Op.op
已移除,取而代之的是backend_pdf.Op
上的单一标准enum.Enum
接口。backend_pdf.fill
;如果您依赖这些函数,请复制同名私有函数的代码。backend_pgf.LatexManager.texcommand
和backend_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_svg.escape_attrib
;如果您依赖此功能,请复制同名私有函数的代码。backend_svg.escape_cdata
;如果您依赖此功能,请复制同名私有函数的代码。backend_svg.escape_comment
;如果您依赖此功能,请复制同名私有函数的代码。backend_svg.short_float_fmt
;如果您依赖此功能,请复制同名私有函数的代码。backend_svg.generate_transform
和backend_svg.generate_css
已移除的弃用 API#
以下已弃用的 API 已被移除。除非另有说明,否则如果需要,请复制以前的实现。
FigureCanvasBase
的以下方法:pick
(请改用Figure.pick
)、resize
、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
、leave_notify_event
、enter_notify_event
(对于所有foo_event
方法,请构造相关的Event
对象并调用canvas.callbacks.process(event.name, event)
)。ToolBase.destroy
(请改连接到tool_removed_event
)。FigureCanvasAgg.get_renderer
的 cleared 参数(请改调用renderer.clear()
)。RendererCairo
的以下方法:set_ctx_from_surface
和set_width_height
(请改用set_context
,它会自动推断画布大小)。NavigationToolbar2Tk
、NavigationToolbar2GTK3
和NavigationToolbar2GTK4
的window
或win
参数和/或属性,以及NavigationToolbar2Tk
的lastrect
属性。backend_gtk3
中的error_msg_gtk
函数以及icon_filename
和window_icon
全局变量;backend_wx
中的error_msg_wx
函数。FigureManagerGTK3Agg
和FigureManagerGTK4Agg
(请改用FigureManagerGTK3
);RendererGTK3Cairo
和RendererGTK4Cairo
。NavigationToolbar2Mac.prepare_configure_subplots
(请改用configure_subplots
)。FigureManagerMac.close
.backend_qt
中的qApp
全局变量(请改用QtWidgets.QApplication.instance()
)。RendererWx
的offset_text_height
方法;FigureFrameWx
的sizer
、figmgr
、num
、toolbar
、toolmanager
、get_canvas
和get_figure_manager
属性或方法(请分别改用frame.GetSizer()
、frame.canvas.manager
、frame.canvas.manager.num
、frame.GetToolBar()
、frame.canvas.manager.toolmanager
、canvas_class 构造函数参数以及frame.canvas.manager
)。FigureFrameWxAgg
和FigureFrameWxCairo
(请分别改用FigureFrameWx(..., canvas_class=FigureCanvasWxAgg)
和FigureFrameWx(..., canvas_class=FigureCanvasWxCairo)
)。Colorbar
的filled
属性和draw_all
方法(请改用figure.draw_without_rendering
,而不是draw_all
)。调用
MarkerStyle
时不设置 marker 参数或将其设置为 None(请改用MarkerStyle("")
)。支持没有
required_interactive_framework
属性的第三方画布类(这仅当画布类不继承自FigureCanvasBase
时才会发生)。MultiCursor
的canvas
和background
属性;选择器小部件的state_modifier_keys
属性。将 useblit、horizOn 或 vertOn 作为位置参数传递给
MultiCursor
。支持
seaborn-<foo>
样式;请改用seaborn-v0_8-<foo>
,或直接使用 seaborn API。
开发变更#
依赖项的最低支持版本提升#
对于 Matplotlib 3.8,最低支持版本正在提升。
依赖项 |
mpl3.7 中的最低版本 |
mpl3.8 中的最低版本 |
---|---|---|
Python |
3.8 |
3.9 |
kiwisolver |
1.0.1 |
1.3.1 |
NumPy |
1.20.0 |
1.21.0 |
Pillow |
6.2.1 |
8.0 |
提高可选依赖项的最低支持版本#
对于 Matplotlib 3.8,可选依赖项的最低支持版本正在提升。
依赖项 |
mpl3.7 中的最低版本 |
mpl3.8 中的最低版本 |
---|---|---|
Tk |
8.4 |
8.5 |
Qt |
5.10 |
5.12 |
没有同时支持 Qt 5.11(或更早版本)和 Python 3.9(或更新版本)的 wheels 或 conda 包。
这与我们的 依赖版本策略 一致。
PEP484 类型提示注解的临时支持#
新的公共 API 应在 .pyi
存根文件中进行类型提示(pyplot
和在线类型化的测试除外)。测试应进行最低限度的类型提示,基本上仅在 mypy
产生错误时进行。
已添加用于运行 mypy
的 CI 和配置。
pyplot.py
的生成需要 black
#
pyplot.py
的自动生成部分使用 black
自动格式化,以确保输出代码语法正确、可读。
因此,black
现在是开发和测试的必需项(对于重新生成 pyplot
的测试)。
部分系统的 Wheels 不再分发#
自 Matplotlib 3.8 起,PyPI 不再提供 32 位 Linux 和 Windows 的预编译 wheels。
自 Matplotlib 3.8 起,PyPI 不再提供 macOS 的多架构 universal2
wheels。通常,pip
总是会优先选择特定架构(仅限 amd64
或 arm64
)的 wheels,因此这些提供的益处很小。
新的 Wheel 架构#
已添加以下 Wheel:
基于 musl 的系统