3.4.0 版本 API 变更#

行为变更#

受限布局重写#

布局管理器 constrained_layout 已被重写,采用了不同的外部约束,应该能更稳定地处理复杂的子图布局。面向用户的变化包括:

  • 一些约束不佳的布局将显示与以前不同的宽度/高度图。

  • 色条现在遵循 matplotlib.colorbar.make_axesanchor 关键字参数。

  • 色条更宽。

  • 不同行或列中的色条对齐更稳定。

  • Figure.set_constrained_layout_padshspacewspace 选项的宽度是文档所述的两倍。现在它们已遵循文档。

此功能将保持“实验性”状态,直到用户充分使用这些新更改,因此我们预计会在 3.5 或 3.6 版本中稳定。另一方面,constrained_layout 在库中的示例中经过了广泛测试和使用,因此使用它应该是安全的,但随着更多开发进行,布局可能不会完全相同。

有关使用 constrained_layout 及其算法的详细信息,请参见 受限布局指南

不带关键字参数的 plt.subplot 重新选择#

pyplot.subplot 的目的是在严格使用隐式 pyplot API 时,方便在 Figure 中创建和重新选择 Axes。创建新的 Axes 时,可以选择投影(例如极坐标、3D 或各种制图投影),并将额外的关键字参数传递给所创建的 Axes 子类。

第一次在 Axes 网格的给定位置调用 pyplot.subplot 时,它总是创建并返回一个带有传递参数和投影(默认为直角坐标)的新 Axes。在后续调用 pyplot.subplot 时,我们必须确定现有 Axes 是否具有 a) 等效参数,在这种情况下应将其选为当前 Axes 并返回,或 b) 不同参数,在这种情况下将创建新的 Axes 并删除现有 Axes。这留下了一个问题,即什么是“等效参数”。

以前,除了 Axes3D 之外,现有的 Axes 子类如果关键字参数(projection 除外)匹配,即使具有不同的投影,也会被视为等效于 2D 直角坐标 Axes。因此

ax1 = plt.subplot(1, 1, 1, projection='polar')
ax2 =  plt.subplots(1, 1, 1)
ax1 is ax2

我们正在采纳这种长期存在的行为,以确保在没有向 pyplot.subplot 传递任何关键字参数的情况下,任何现有 Axes 都将被返回,而不考虑最初创建它时使用的关键字或投影。这将在向原始 Axes 传递额外关键字时导致行为改变。

ax1 = plt.subplot(111, projection='polar', theta_offset=.75)
ax2 = plt.subplots(1, 1, 1)
ax1 is ax2         # new behavior
# ax1 is not ax2   # old behavior, made a new axes

ax1 = plt.subplot(111, label='test')
ax2 = plt.subplots(1, 1, 1)
ax1 is ax2         # new behavior
# ax1 is not ax2   # old behavior, made a new axes

出于同样的原因,如果存在一个非直角坐标的 Axes,传递 projection='rectilinear' 将会重用现有的 Axes。

ax1 = plt.subplot(projection='polar')
ax2 = plt.subplot(projection='rectilinear')
ax1 is not ax2     # new behavior, makes new Axes
# ax1 is ax2       # old behavior

这与用户的请求相悖。

以前,Axes3D 无法通过 pyplot.subplot 重新选择,原因是存在一个不相关的错误(也在 Matplotlib 3.4 中修复)。虽然 Axes3D 现在与其他所有投影保持一致,但在以下情况中存在行为变化:

plt.subplot(projection='3d')  # create a 3D Axes

plt.subplot()                 # now returns existing 3D Axes, but
                              # previously created new 2D Axes

plt.subplot(projection='rectilinear')  # to get a new 2D Axes

ioffion 可用作上下文管理器#

pyplot.ionpyplot.ioff 现在可以作为上下文管理器使用,分别创建交互模式开启或关闭的上下文。调用这些函数的旧行为得以保留。要使用新功能,请按以下方式调用:

with plt.ioff():
   # non-interactive code

定位器和格式化程序必须在类层次结构中#

轴定位器和格式化程序现在必须分别是 LocatorFormatter 的子类。

DAILY 间隔的日期定位器现在返回月中日期#

matplotlib.dates.AutoDateLocator 默认设置为 interval_multiples=True,它尝试将刻度与有意义的间隔(如月初或每日开始)对齐。这导致大约 140 天的间隔映射到每月的第 1 天和第 22 天。现在已更改为选择每月的第 1 天和第 15 天,这可能更符合大多数人的需求。

ScalarFormatteruseLocale 选项遵循分组规则#

ScalarFormatter 选项 useLocale 启用时(或 rcParams["axes.formatter.use_locale"](默认值:False)为 True),并且配置的区域设置使用分组,将按照 locale.format_string 中的描述添加分隔符。

Axes.errorbar 正确循环非颜色属性#

以前,如果明确指定了颜色,即使属性循环器是用于其他属性(如线条样式),Axes.errorbar 也会错误地跳过 Axes 属性循环。现在,Axes.errorbar 将像 Axes.plot 一样推进 Axes 属性循环,即只要循环器中的所有属性都没有明确传递,就会推进循环。

pyplot.specgram 始终使用 origin='upper'#

以前,如果 rcParams["image.origin"](默认值:'upper')设置为非 'upper' 的值,或者 origin 关键字参数传递了非 'upper' 的值,频谱图本身会翻转,但 Axes 仍会以 'upper' 的原点值定向,从而导致生成的图标记不正确。

现在,不再支持 origin 关键字参数,并且 image.origin rcParam 被忽略。函数 matplotlib.pyplot.specgram 被强制使用 origin='upper',以便 Axes 对于绘制的频谱图是正确的。

将 xunits=None 和 yunits=None 作为关键字参数传递时被视为“无操作”#

Axes 上的许多(但不是全部)方法接受(未文档化的)关键字参数 xunitsyunits,它们通过调用 Axis.set_unitsAxis.update_units 来更新给定轴上的单位。

以前,如果传递 None,它会清除存储在 .Axis.units 中的值,这反过来会破坏依赖 .Axis.units 中值才能正常工作的转换器(特别是 StrCategoryConverter)。

这将 ax.meth(..., xunits=None, yunits=None) 的语义从“请清除单位”更改为“执行默认操作,就像它们没有被传递一样”,这与 Matplotlib 关键字参数的标准行为一致。

如果您曾依赖将 xunits=None 传递给绘图方法来清除 .Axes.units 属性,请直接调用 Axis.set_units(如果您还需要更新转换器,则调用 Axis.update_units)。

annotation_clip 的注释不再影响 tight_layout#

以前,text.Annotation.get_tightbbox 总是返回对象的完整 text.Annotation.get_window_extent,而不考虑 annotation_clip 的值。现在,text.Annotation.get_tightbbox 正确地考虑了这个额外的裁剪框,这意味着由于 annotation_clip 而未绘制的 Annotation 将不计入 Axes 边界框的计算,例如 tight_layout 执行的计算。

这现在与 Artist 中描述的 API 一致,该 API 指定 get_window_extent 应返回完整范围,而 get_tightbbox 应“考虑任何裁剪”。

Parasite Axes 的 pcolor 和 pcolormesh 现在默认将网格边缘放置在整数位置,而非半整数位置#

这与 pcolorpcolormesh 一致。

色条轮廓现在是一个 Spine#

Colorbar 的轮廓现在是一个 Spine 并以其形式绘制,而不是作为艺术家绘制的 Polygon。这确保它将始终在所有艺术家之后(即之上)绘制,与普通 Axes 上的 Spines 一致。

Colorbar.dividers 变更#

此属性现在始终是一个 LineCollection——如果 drawedgesFalse,则为空。其默认颜色和线宽(rcParams["axes.edgecolor"](默认值:'black'),rcParams["axes.linewidth"](默认值:0.8))现在在实例化时解析,而非在绘制时解析。

重复注册色图时发出错误或警告#

当使用 matplotlib.cm.register_cmap 注册用户提供或第三方色图时,如果尝试覆盖内置色图,现在将引发 ValueError;如果尝试覆盖用户注册的色图,则会发出警告。未来这可能会对用户注册的色图引发错误。

连续栅格化绘制现在合并#

栅格绘制深度的跟踪已从 backend_mixed.MixedModeRenderer.start_rasterizingbackend_mixed.MixedModeRenderer.stop_rasterizing 转移到 artist.allow_rasterization。这意味着只有在确实需要启动和停止栅格化时,才会调用启动和停止函数。

在栅格化元素合并的情况下,矢量后端输出会发生变化。这不应改变输出的外观。

现在,第三方后端中的渲染器应将 self._raster_depthself._rasterizing 分别初始化为 0False

后端间 draw_if_interactive() 行为一致#

pyplot.draw_if_interactive 不再在 Tk 和 nbAgg 后端显示窗口(如果以前未显示),这与其他所有后端保持一致。

Artist 属性 rasterized 不再能为 None#

它现在只能是布尔值。以前默认是 None,并且 Artist.set_rasterized 文档说明接受 None。然而,None 没有特殊含义,并被视为 False

Canvas 的回调注册表现在存储在 Figure 上#

用于处理 Figure/Canvas 事件的 CallbackRegistry 的规范位置已从 Canvas 移至 Figure。此更改对几乎所有用户都应该是透明的,但是如果您正在 Canvas 上方或下方切换 Figure,您可能会看到行为上的变化。

后端间键盘事件数据统一化#

支持按键转换的不同后端现在将“Shift”作为一种有时修改器处理,如果进行了按键转换,则不会添加 'shift+' 前缀。

在 Qt5 后端中,matplotlib.backends.backend_qt5.SPECIAL_KEYS 字典包含的键 返回其 Unicode 名称,而是具有手动指定的名称。QtCore.Qt.Key_Meta 的名称已更改为 'meta',以与其他 GUI 后端保持一致。

WebAgg 后端现在在非美式键盘布局上正确处理按键转换。

在 GTK 和 Tk 后端中,现在正确报告非 ASCII 键按下(在传递给 key_press_event-处理程序的 KeyEvent 中报告)的 Unicode 字符(例如,€),并且更好地遵循数字键盘上的 NumLock 键。

在 GTK 和 Tk 后端中,以下键名已更改;新名称与 Qt 后端报告的名称一致:

  • “Break/Pause”键(keysym 0xff13)现在报告为 "pause",而不是 "break"(这也与 X 键名一致)。

  • 数字键盘上的“delete”键现在报告为 "delete",而不是 "dec"

WebAgg 后端不再将中键点击报告为右键点击#

以前,在使用 WebAgg 后端时,fig.canvas.mpl_connect('mouse_button_event', callback) 在中键点击时传递给回调的事件会报告 MouseButton.RIGHT 而不是 MouseButton.MIDDLE

SVG 文件中 XML 标签的 ID 属性现在基于 SHA256 而非 MD5#

Matplotlib 为 SVG 文件中的各种标签生成唯一的 ID 属性。Matplotlib 以前使用 MD5 散列的前 10 个字符来生成这些唯一 ID。在启用了联邦信息处理标准 (FIPS) 的系统上,Python 中不提供 MD5 散列算法。Matplotlib 现在改用 SHA256 散列的前 10 个字符。因此,如果 SVG 文件在其他方面与早期版本 Matplotlib 保存的文件匹配,其 ID 属性将有所不同。

在 AFM 模式下 RendererPS.set_font 不再是无操作#

RendererPS.set_font 现在在所有情况下都设置当前的 PostScript 字体。

Axes3D 中的自动缩放#

在 Matplotlib 3.2.0 中,2D Axes 的自动缩放变得更“懒惰”,即只有在实际渲染画布或用户查询 Axes 限制时才重新计算限制。此性能改进现已扩展到 Axes3D。这也修复了 Axes3D 中意外触发自动缩放的一些问题。

有关更多详细信息,请参见 2D Axes 的 API 变更

Axes3D 自动将自身添加到 Figure 的行为已被弃用#

新的 Axes3D 对象以前在创建时会将自己添加到 figure 中,这与其他所有 Axes 类不同,导致如果调用 fig.add_subplot(111, projection='3d') 则会添加两次。

此行为现已弃用并会发出警告。新的关键字参数 auto_add_to_figure 控制此行为,可用于抑制警告。默认值将在 Matplotlib 3.5 中更改为 False,而任何非 False 的值都将在 Matplotlib 3.6 中引发错误。

未来,Axes3D 需要显式添加到 figure 中

fig = Figure()
# create Axes3D
ax = Axes3d(fig)
# add to Figure
fig.add_axes(ax)

就像其他 axes.Axes 子类一样。或者,可以通过以下方式创建 3D 投影:

fig.add_subplot(projection='3d')

mplot3d.art3d.get_dir_vector 总是返回 NumPy 数组#

为保持一致性,get_dir_vector 现在总是返回 NumPy 数组,即使输入是 3 元素可迭代对象。

手写体和幻想字体定义已更改#

Comic Sans 和 Comic Neue 字体已从默认的 rcParams["font.fantasy"](默认值:['Chicago', 'Charcoal', 'Impact', 'Western', 'xkcd script', 'fantasy'])列表移至默认的 rcParams["font.cursive"](默认值:['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'Script MT', 'Felipa', 'Comic Neue', 'Comic Sans MS', 'cursive'])设置,这符合 CSS 字体家族的 示例,并且为了提供 Microsoft 核心字体集中存在的手写体字体。

docstring.Substitution 现在总是在字符串插值前取消文档字符串的缩进#

废弃#

Axes 构造函数的额外参数#

Axes 构造函数中除 figrect 之外的参数将在未来版本中变为仅限关键字参数。

pyplot.gcaFigure.gca 关键字参数#

未来版本中将不再支持向 pyplot.gcafigure.Figure.gca 传递关键字参数。

Axis.claRadialAxis.claThetaAxis.claSpine.cla#

这些方法已弃用,请使用各自的 clear() 方法。

无效的填充图案字符不再被忽略#

指定填充图案时,无法识别的字符将引发弃用警告。未来,这将变为硬错误。

imread 从 URL 读取#

将 URL 传递给 imread() 已弃用。请改为打开 URL 进行读取并直接使用 Pillow API(PIL.Image.open(urllib.request.urlopen(url))PIL.Image.open(io.BytesIO(requests.get(url).content)))。

is_urlURL_REGEX#

……已弃用。(它们以前定义在顶层的 matplotlib 模块中。)

matplotlib.style.core 弃用#

STYLE_FILE_PATTERNload_base_libraryiter_user_libraries 已弃用。

FancyArrowPatchdpi_cor 属性#

此参数被视为内部参数并已弃用。

boxstyle="custom", bbox_transmuter=... 传递给 FancyBboxPatch#

为了使用自定义的 boxstyle,请将其直接作为 boxstyle 参数传递给 FancyBboxPatch。这在以前已经可能,并且与自定义箭头样式和连接样式一致。

BoxStyles 现在在调用时不传递 mutation_aspect 参数#

变异纵横比现在由艺术家本身处理。因此,BoxStyle._Base.__call__mutation_aspect 参数已弃用,自定义 boxstyle 应实现为不要求此参数(为了向后兼容,可以将其保留为默认为 1 的参数)。

ContourLabeler.get_label_coords 已弃用#

它被视为内部辅助功能。

Line2D 和 Patch 不再复制 validJoinvalidCap#

连接样式和帽盖样式的验证现在集中在 rcsetup 中。

通过 set_picker 设置 Line2D 的选择半径不再弃用#

这取消了 Matplotlib 3.3.0 中引入的弃用。

MarkerStyle 被视为不可变#

MarkerStyle.set_fillstyle()MarkerStyle.set_marker() 已弃用。请改为使用相应参数创建新的 MarkerStyle

MovieWriter.cleanup 已弃用#

清理逻辑现在已完全在 MovieWriter.finish 中实现。第三方影片写入器也应将相关清理逻辑移至此处,因为将来将不再调用被重写的 cleanup

TextAreaminimumdescent 参数/属性#

自 Matplotlib 1.3 以来,offsetbox.TextArea 的行为就如同 minimumdescent 始终为 True(无论其设置为何值),因此此参数/属性已弃用。

colorbar 现在在 mappable 的 Axes 与当前 Axes 不同时发出警告#

目前,Figure.colorbarpyplot.colorbar 默认会从当前 Axes 窃取空间来放置色条。在未来版本中,它们将改为从 mappable 的 Axes 窃取空间。为准备此更改,当当前 Axes 与 mappable 的 Axes 不同时,Figure.colorbarpyplot.colorbar 现在会发出警告。

色条文档字符串#

matplotlib.colorbar 中的以下全局变量已弃用:colorbar_doccolormap_kw_docmake_axes_kw_doc

ColorbarPatchcolorbar_factory 已弃用#

所有相关功能已移至 Colorbar 类。

后端弃用#

  • FigureCanvasBase.get_window_titleFigureCanvasBase.set_window_title 已弃用。如果使用 pyplot,请使用 FigureManager 上的相应方法;如果嵌入,请使用 GUI 特定的方法。

  • FigureCanvasTkresize_callback 参数在内部从未被使用,现已弃用。Tk 级别的自定义调整大小事件处理程序可以添加到 FigureCanvasTk,例如使用 get_tk_widget().bind('<Configure>', ..., True)

  • FigureManagerBasekey_pressbutton_press 方法(在使用 toolmanager 时错误地不执行任何操作)已弃用,请改为通过 self.canvas.callbacks.process(event.name, event) 直接将事件传递给 CallbackRegistry

  • RendererAgg.get_content_extentsRendererAgg.tostring_rgba_minimized 已弃用。

  • backend_pgf.TmpDirCleaner 已弃用,无替代方案。

  • GraphicsContextPS 已弃用。PostScript 后端现在使用 GraphicsContextBase

wx 后端清理#

_FigureCanvasWxBase.gui_repaintorigin 参数已弃用,无替代方案;gui_repaint 现在会自动检测与 wx 渲染器一起使用的情况。

NavigationToolbar2Wx.get_canvas 方法已弃用;如果需要,请直接实例化一个画布(FigureCanvasWxAgg(frame, -1, figure))。

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

画布子类实现的 print_<fmt> 方法均未使用除第一个参数(输出文件名或类文件对象)之外的位置参数,因此这些额外参数已弃用。

弃用 FigureCanvas.print_foo 打印机的 dpi 参数#

savefig 机制已经负责将图形 DPI 设置为所需值,因此 print_foo 可以直接从中读取。不将 dpi 传递给 print_foo 可以更清晰地检测传递给 savefig 的未使用参数。

bytes 传递给 FT2Font.set_text#

……已弃用,请改为传递 str

ps.useafm 在数学文本中已弃用#

仅使用标准 PostScript 字体输出数学文本可能已损坏一段时间(问题 #18722)。在 Matplotlib 3.5 中,设置 rcParams["ps.useafm"](默认值:False)将对数学文本无效。

MathTextParser("bitmap") 已弃用#

相关的 API MathtextBackendBitmapMathTextParser.to_maskMathTextParser.to_rgbaMathTextParser.to_pngMathTextParser.get_depth 也已弃用。

要将文本字符串转换为图像,可以直接将文本绘制到空的 Figure 中,并使用紧密边界框保存图形,如 将文本转换为图像 中所示,或者使用 mathtext.math_to_image

使用 math_to_image 时,可以这样设置文本颜色:

with plt.rc_context({"text.color": "tab:blue"}):
    mathtext.math_to_image(text, filename)

并且可以这样获取 RGBA 数组:

from io import BytesIO
buf = BytesIO()
mathtext.math_to_image(text, buf, format="png")
buf.seek(0)
rgba = plt.imread(buf)

数学文本内部实现弃用#

mathtext 模块以前公开的以下 API 元素被视为实现细节,对其的公共访问已弃用:

  • Fonts 及其所有子类,

  • FontConstantsBase 及其所有子类,

  • Node 及其所有子类,

  • Shipship

  • 错误,

  • Parser,

  • SHRINK_FACTORGROW_FACTOR

  • NUM_SIZE_LEVELS,

  • latex_to_bakomalatex_to_cmexlatex_to_standard

  • stix_virtual_fonts,

  • tex2uni.

各种数学文本辅助函数弃用#

mathtext 模块中的 MathtextBackendPdfMathtextBackendPsMathtextBackendSvgMathtextBackendCairo 类,以及 RendererPdfRendererPSRendererSVGRendererCairo 上对应的 .mathtext_parser 属性均已弃用。MathtextBackendPath 类可用于获取数学文本表达式中的字形和矩形列表,并且渲染器特有的逻辑应直接在渲染器中实现。

StandardPsFonts.pswriter 未使用且已弃用。

Widget 类内部实现#

几个 widgets.Widget 类内部实现已私有化并弃用:

  • AxesWidget.cids

  • Button.cntButton.observers

  • CheckButtons.cntCheckButtons.observers

  • RadioButtons.cntRadioButtons.observers

  • Slider.cntSlider.observers

  • TextBox.cntTextBox.change_observersTextBox.submit_observers

渲染器上的 3D 属性#

绘制时放置在渲染器上的 3D Axes 属性现已弃用:

  • renderer.M

  • renderer.eye

  • renderer.vvec

  • renderer.get_axis_position

这些属性都可以通过 Axes3D 访问,而所有 Artist 上都可以通过 self.axes 访问 Axes3D。

Collection3D/Patch3Ddo_3d_projection 方法的 renderer 参数#

Collection3DPatch3D 上的 do_3d_projection 方法的 renderer 参数不再必需,在绘制时传递它已弃用。

Line3DCollectiondraw 方法的 project 参数#

Line3DCollectiondraw 方法的 project 参数已弃用。请改为显式调用 Line3DCollection.do_3d_projection

plot_surfaceplot_wireframe 的额外位置参数#

XYZ 之外,传递给 plot_surfaceplot_wireframe 的位置参数已弃用。请改为将额外的艺术家属性作为关键字参数传递。

ParasiteAxesAuxTransBase#

该混合类的功能已移至基类 ParasiteAxesBase。因此,ParasiteAxesAuxTransBaseParasiteAxesAuxTransparasite_axes_auxtrans_class_factory 已弃用。

通常,建议使用 HostAxes.get_aux_axes 创建寄生 Axes,因为这省去了手动将寄生 Axes 附加到 host.parasites 的麻烦,并确保其 remove() 方法正常工作。

AxisArtist.ZORDER 属性#

请改用 AxisArtist.zorder

GridHelperBase 失效#

GridHelperBase.invalidateGridHelperBase.validaxislines.Axes.invalidate_grid_helper 方法被视为内部方法并已弃用。

sphinext.plot_directive.align#

……已弃用。请改用 docutils.parsers.rst.directives.images.Image.align

移除#

以下已弃用的 API 已移除

已移除的行为#

  • AxisSpine 上的“智能边界”功能已被删除,相关方法也已移除。

  • to_rgba_array 中转换带有单颜色字符的字符串(例如 'cymk')不再受支持。相反,颜色可以作为单独的元素在列表中传递(例如 ['c', 'y', 'm', 'k'])。

  • 不再支持从 mpl_toolkits.axisartist 定位器(与“标准”刻度定位器 不同)返回等于 None 的因子,或将等于 None 的因子传递给 axisartist 格式化器(与“标准”刻度格式化器 不同)。请改为传递等于 1 的因子。

模块#

  • 整个 matplotlib.testing.disable_internet 模块已被移除。可以改为使用 pytest-remotedata 包

  • mpl_toolkits.axes_grid1.colorbar 模块及其色条实现已被移除,取而代之的是 matplotlib.colorbar

类、方法和属性#

  • animation.MovieWriterRegistry 的方法 .set_dirty().ensure_not_dirty().reset_available_writers() 已无作用并被移除。.avail() 方法已移除;请改为使用 .list() 获取可用写入器列表。

  • matplotlib.artist.Artist.eventsonmatplotlib.container.Container.eventson 属性已无作用并被移除。

  • matplotlib.axes.Axes.get_data_ratio_log 已移除。

  • matplotlib.axes.SubplotBase.rowNum;请改用 ax.get_subplotspec().rowspan.start

  • matplotlib.axes.SubplotBase.colNum;请改用 ax.get_subplotspec().colspan.start

  • matplotlib.axis.Axis.set_smart_boundsmatplotlib.axis.Axis.get_smart_bounds 已移除。

  • matplotlib.colors.DivergingNorm 已重命名为 TwoSlopeNorm

  • matplotlib.figure.AxesStack 已被移除。

  • matplotlib.font_manager.JSONEncoder 已被移除;请使用 font_manager.json_dump 来倾倒 FontManager 实例。

  • matplotlib.ft2font.FT2Image 的方法 .as_array(), .as_rgba_str(), .as_str(), .get_height().get_width() 已被移除。在处理 FT2Image 之前,请先用 np.asarray 将其转换为 NumPy 数组。

  • matplotlib.quiver.QuiverKey.quiverkey_doc 已被移除;请改用 matplotlib.quiver.QuiverKey.__init__.__doc__

  • matplotlib.spines.Spine.set_smart_boundsmatplotlib.spines.Spine.get_smart_bounds 已被移除。

  • matplotlib.testing.jpl_units.UnitDbl.checkUnits 已被移除;请改用 units not in self.allowed

  • 未使用的 matplotlib.ticker.Locator.autoscale 方法已被移除(请改为将轴限制传递给 Locator.view_limits)。派生方法 Locator.autoscale, AutoDateLocator.autoscale, RRuleLocator.autoscale, RadialLocator.autoscale, ThetaLocator.autoscale, 和 YearLocator.autoscale 也已被移除。

  • matplotlib.transforms.BboxBase.is_unit 已被移除;如有需要,请检查 Bbox 的范围。

  • matplotlib.transforms.Affine2DBase.matrix_from_values(...) 已被移除;请改用(例如)Affine2D.from_values(...).get_matrix()

  • matplotlib.backend_bases.FigureCanvasBase.draw_cursor 已被移除。

  • matplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.destroymatplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.init_window 方法已被移除。

  • matplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.window 属性已被移除。

  • matplotlib.backends.backend_macosx.FigureCanvasMac.invalidate 已被移除。

  • matplotlib.backends.backend_pgf.RendererPgf.latexManager 已被移除。

  • matplotlib.backends.backend_wx.FigureFrameWx.statusbar, matplotlib.backends.backend_wx.NavigationToolbar2Wx.set_status_bar, 和 matplotlib.backends.backend_wx.NavigationToolbar2Wx.statbar 已被移除。可以通过调用标准 wx 方法(frame.GetStatusBar()toolbar.GetTopLevelParent().GetStatusBar())来获取状态栏。

  • matplotlib.backends.backend_wx.ConfigureSubplotsWx.configure_subplotsmatplotlib.backends.backend_wx.ConfigureSubplotsWx.get_canvas 已被移除。

  • mpl_toolkits.axisartist.grid_finder.GridFinderBase 已被移除;请改用 GridFinder

  • mpl_toolkits.axisartist.axis_artist.BezierPath 已被移除;请改用 patches.PathPatch

函数#

  • matplotlib.backends.backend_pgf.repl_escapetextmatplotlib.backends.backend_pgf.repl_mathdefault 已被移除。

  • matplotlib.checkdep_ps_distiller 已被移除。

  • matplotlib.cm.revcmap 已被移除;请改用 Colormap.reversed

  • matplotlib.colors.makeMappingArray 已被移除。

  • matplotlib.compare_versions 已被移除;请改用 distutils.version.LooseVersion 的版本比较。

  • matplotlib.dates.mx2num 已被移除。

  • matplotlib.font_manager.createFontList 已被移除;现在可以使用 font_manager.FontManager.addfont 在给定路径注册字体。

  • matplotlib.get_home 已被移除;请改用标准库。

  • matplotlib.mlab.apply_windowmatplotlib.mlab.stride_repeat 已被移除。

  • matplotlib.rcsetup.update_savefig_format 已被移除;此功能仅将 'auto' 替换为 'png',因此请执行相同的操作。

  • matplotlib.rcsetup.validate_animation_writer_path 已被移除。

  • matplotlib.rcsetup.validate_path_exists 已被移除;请改用 os.path.existspathlib.Path.exists

  • matplotlib.style.core.is_style_filematplotlib.style.core.iter_style_files 已被移除。

  • matplotlib.testing.is_called_from_pytest 已被移除。

  • mpl_toolkits.mplot3d.axes3d.unit_bbox 已被移除;请改用 Bbox.unit

参数#

rcParams#

示例数据移除#

以下列出的示例数据集已被移除。括号中列出了用于演示的建议替代品。

  • None_vs_nearest-pdf.png,

  • aapl.npz(使用 goog.npz),

  • ada.png, grace_hopper.png(使用 grace_hopper.jpg),

  • ct.raw.gz(使用 s1045.ima.gz),

  • damodata.csv(使用 msft.csv)。

开发变更#

提高 Python 及依赖项的最低支持版本#

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

依赖项

mpl3.3中的最低版本

mpl3.4中的最低版本

Python

3.6

3.7

dateutil

2.1

2.7

numpy

1.15

1.16

pyparsing

2.0.3

2.2.1

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

Qhull 在构建或 sdist 时下载#

与 FreeType 类似,Qhull 现在在构建时或创建 sdist 时下载。要链接到系统 Qhull,请在 setup.cfg 文件中将 system_qhull 选项设置为 True。请注意,Matplotlib 现在需要 Qhull 的可重入版本(qhull_r)。

FigureBase 类已添加,且 Figure 类已成为其子类#

新的子图功能促使 figure.Figure 类进行了一些重组,以便新的 figure.SubFigure 类能够拥有图形的所有功能。

figure.Figure 类现在是 figure.FigureBase 的子类,其中 figure.FigureBase 包含图形级别的艺术家添加例程,而 figure.Figure 子类仅包含外部图形特有的功能。

请注意,有一个新的 transSubfigure 变换与子图相关联。此变换也存在于 Figure 实例中,并且在这种情况下等于 transFigure,因此使用变换堆栈并希望将对象放置在父图形或其中一个子图上的代码应使用 transSubfigure