3.6.0 版 API 变更#
行为变更#
plt.get_cmap
和 matplotlib.cm.get_cmap
返回副本#
以前,get_cmap
和 matplotlib.cm.get_cmap
返回 Colormap
的全局版本。这容易出错,因为修改色彩映射会无警告地从一个位置传播到另一个位置。现在,返回色彩映射的一个新副本。
大型 imshow
图像现在被降采样#
当使用 imshow
显示列数超过 \(2^{24}\) 或行数超过 \(2^{23}\) 的图像时,该图像将首先被降采样到此分辨率以下,然后再由 AGG 渲染器进行重采样显示。以前,如此大的图像会显示不正确。为防止此降采样及其引发的警告,请在将数据传递给 imshow
之前手动降采样数据。
默认日期限制更改为 1970-01-01 – 1970-01-02#
以前,为日期(Axis.axis_date
)设置的空坐标轴的默认限制是 2000-01-01 到 2010-01-01。这已更改为 1970-01-01 到 1970-01-02。在默认纪元下,这使得日期坐标轴的数字限制与其他坐标轴(0.0-1.0)相同,用户也不太可能设置过多的刻度定位器。
stem
的 markerfmt 参数#
stem
的 markerfmt 参数的行为已更改
如果 markerfmt 不包含颜色,则颜色取自 linefmt。
如果 markerfmt 不包含标记,则默认值为 'o'。
之前,markerfmt 被原样传递给 plot(..., fmt)
,这导致了一些意外的副作用;例如,只给出颜色会导致实线而不带标记。
对于不带参数的简单调用 stem(x, y)
,新规则仍然会重现旧行为。
get_ticklabels
现在总是填充标签#
以前,Axis.get_ticklabels
(以及 Axes.get_xticklabels
, Axes.get_yticklabels
)除非已经执行了绘制,否则只会返回空字符串。现在,当请求标签时,刻度及其标签会进行更新。
散点图颜色设置被丢弃时的警告#
在创建散点图动画时,如果初始化 artist 时不设置 c(颜色值参数),则颜色设置会被忽略。Axes.scatter
现在在未设置 c 的情况下更改与颜色相关的设置时会发出警告。
3D contourf
多边形放置在级别之间#
3D contourf
绘图中使用的多边形现在放置在等高线级别之间,因为每个多边形代表介于两个级别之间的值的位置。
坐标轴标题现在避免 Y 轴偏移#
以前,坐标轴标题可能会与 Y 轴偏移文本重叠,Y 轴偏移文本通常位于坐标轴的左上角。现在,如果标题在自动标题定位生效时(即如果 Axes.set_title
中的 y 为 None 且 rcParams["axes.titley"]
(默认: None
) 也为 None)发生重叠,则标题将移到偏移文本上方。
点操作符在数学文本中获得额外空间#
在数学文本中,\doteq \doteqdot \dotminus \dotplus \dots
现在被额外空间包围,因为它们被正确地视为关系或二元运算符。
mathtext.get_unicode_index
的 math 参数默认为 False#
在数学模式下,ASCII 连字符 (U+002D) 现在在解析阶段被 Unicode 减号 (U+2212) 替换。
ArtistList
代理在迭代时复制内容#
当迭代 Artist 类型访问器(参见 Axes 子对象不再按类型分离)的动态生成代理列表内容时,会创建内容的副本。这确保了在迭代其子对象时,可以安全地向 Axes 添加或从 Axes 中移除 Artist。
这与 Python 中可变可迭代数据类型的预期行为不同——在迭代列表时修改它会产生令人惊讶的后果,并且如果字典在迭代期间更改大小,则会出错。因为所有访问器都是同一底层列表的过滤视图,所以看似不相关的更改,例如删除 Line,可能会影响对任何其他访问器的迭代。在这种情况下,我们选择在将相关子对象提供给用户之前创建它们的副本。
此更改也符合我们计划在 Matplotlib 3.7 中使这些访问器不可变的计划。
AxesImage
字符串表示#
AxesImage
的字符串表示从声明图中位置的 "AxesImage(80,52.8;496x369.6)"
更改为给出像素数的 "AxesImage(size=(300, 200))"
。
改进了贝塞尔曲线的自动缩放#
贝塞尔曲线现在会自动缩放到其范围——以前它们会自动缩放到其端点和控制点,这在某些情况下会导致不必要的大范围。
QuadMesh
鼠标悬停默认为 False#
自 3.5 版新增以来,QuadMesh.get_cursor_data
允许显示光标下的数据值。然而,对于大型网格,这可能非常慢,因此鼠标悬停现在默认为 False。
更改 pgf 后端文档类#
pgf 后端现在使用 article
文档类作为编译基础。
MathtextBackendAgg.get_results
不再返回 used_characters
#
MathtextBackendAgg.get_results
返回的元组中的最后一项 (used_characters
) 已被移除。为了以向前和向后兼容的方式解包此元组,请使用例如 ox, oy, width, height, descent, image, *_ = parse(...)
,如果 used_characters
存在,它将被忽略。
Type1Font
对象包含更多属性#
matplotlib._type1font.Type1Font.prop
字典现在包含更多键,例如 CharStrings
和 Subrs
。Encoding
键的值现在是一个将代码映射到字形名称的字典。matplotlib._type1font.Type1Font.transform
方法现在正确地从字体中删除了 UniqueID
属性。
rcParams.copy()
返回 RcParams
而不是 dict
#
从 RcParams.copy
返回 RcParams
实例使得副本仍然可以验证输入,此外还避免了在使用先前复制的实例更新全局实例时发出弃用警告(即使某些条目已被弃用)。
rc_context
不再重置 'backend'
的值#
matplotlib.rc_context
不正确地重置了 rcParams["backend"]
的值,如果后端解析在上下文中被触发。这只影响了值。实际的后端并未更改。现在,matplotlib.rc_context
不再重置 rcParams["backend"]
。
默认 rcParams["animation.convert_args"]
已更改#
它现在默认为 ["-layers", "OptimizePlus"]
,以尝试生成更小的 GIF。将其设置回空列表以恢复以前的行为。
样式文件编码现在指定为 UTF-8#
由于我们在导入时读取样式库,Matplotlib 以前无法在非 UTF-8 兼容的本地编码下导入。此更改正在正式化和记录现状,因此没有弃用期。
MacOSX 后端使用 sRGB 而不是 GenericRGB 颜色空间#
MacOSX 后端现在显示 sRGB 标记图像,而不是 GenericRGB,GenericRGB 是一个旧的(现已弃用)Apple 颜色空间。这是 ColorSync 用于转换为当前显示配置文件源颜色空间。
get_tightbbox
和 get_window_extent
的渲染器可选#
Artist.get_tightbbox
和 Artist.get_window_extent
方法不再需要 renderer 关键字参数,从而省去了用户从 fig.canvas.get_renderer
查询它的麻烦。如果未提供 renderer 关键字参数,这些方法会首先检查是否存在来自先前绘制的缓存渲染器并使用它。如果没有缓存渲染器,则这些方法将使用 fig.canvas.get_renderer()
作为备用。
FigureFrameWx
构造函数、子类和 get_canvas
#
FigureCanvasWx
构造函数增加了一个仅限关键字的参数 canvas_class,用于指定应使用的画布类。此参数将来将成为必需。以前用于自定义画布创建的 get_canvas
方法已被弃用。FigureFrameWxAgg
和 FigureFrameWxCairo
子类(它们重写了 get_canvas
)已被弃用。
FigureFrameWx.sizer
#
... 已被移除。框架布局不再基于 sizer,因为画布现在是唯一的子部件;工具栏现在是使用 SetToolBar
添加的常规工具栏。
不兼容的布局引擎引发错误#
如果已将色条添加到图中,则无法在 tight_layout
和 constrained_layout
之间切换。调用不兼容的布局引擎以前会发出警告,但现在会引发 RuntimeError
。
CallbackRegistry
在未知信号时引发错误#
当 Matplotlib 实例化 CallbackRegistry
时,它现在将回调限制为注册表所知的信号。实际上,这意味着调用 mpl_connect
时使用无效信号名称现在会引发 ValueError
。
SVG 日期元数据不正确时的异常类型已更改#
以前,向 SVG 后端提供类型不正确的日期元数据会导致 ValueError
。现在,会引发 TypeError
。
Grid
中指定的异常类型#
在少数情况下,当 mpl_toolkits.axes_grid1.axes_grid.Grid
(= mpl_toolkits.axisartist.axes_grid.Grid
) 构造函数中设置了不正确的参数值时,会抛出 Exception
。这些已替换为以下内容:
为 ngrids 提供不正确的值现在会引发
ValueError
为 rect 提供不正确的类型现在会引发
TypeError
废弃#
plt.figure()
和 Figure
构造函数的参数#
在弃用期过后,pyplot.figure
和 Figure
构造函数的所有参数(除了 num、figsize 和 dpi)都将变为仅限关键字参数。
cbook 中的弃用别名#
模块 matplotlib.cbook.deprecation
以前在 Matplotlib 3.4 中已弃用,同时弃用的还有 matplotlib.cbook
中与弃用相关的 API。由于技术问题,matplotlib.cbook.MatplotlibDeprecationWarning
和 matplotlib.cbook.mplDeprecation
在使用时没有发出弃用警告。Python 中的更改现在使得在使用这些别名时发出警告成为可能。
为了避免下游中断,这些别名现在将发出警告,并且它们的移除已从 3.6 推迟到 3.8,以便有时间注意到这些警告。作为替代,请使用 matplotlib.MatplotlibDeprecationWarning
。
Axes
子类应覆盖 clear
而不是 cla
#
为了清晰起见,现在推荐使用 axes.Axes.clear
而不是 Axes.cla
。但是,为了向后兼容,后者将作为前者的别名保留。
为了与第三方库进一步兼容,Matplotlib 将继续调用任何 Axes
子类的 cla
方法,如果它们定义了它。将来,这种情况将不再发生,Matplotlib 将仅在 Axes
子类中调用 clear
方法。
建议在 Matplotlib 3.6 上只定义 clear
方法,而对于旧版本只定义 cla
。
mpl.cm 中顶级色彩映射注册和访问函数的待定弃用#
作为 多步骤过程 的一部分,我们正在重构用于管理注册色彩映射的全局状态。
在 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
函数将继续可用于向后兼容。
布局方法待定弃用#
方法 set_tight_layout
、set_constrained_layout
已不再推荐使用,现在会发出 PendingDeprecationWarning
,取而代之的是通过 figure.set_layout_engine('tight')
和 figure.set_layout_engine('constrained')
明确引用布局引擎。最终用户不应看到警告,但库作者应进行调整。
方法 set_constrained_layout_pads
和 get_constrained_layout_pads
将被弃用,取而代之的是 figure.get_layout_engine().set()
和 figure.get_layout_engine().get()
,目前会发出 PendingDeprecationWarning
。
seaborn 样式已重命名#
Matplotlib 目前附带许多受 seaborn 库启发("seaborn"、"seaborn-bright"、"seaborn-colorblind" 等)的样式文件,但自 seaborn 0.9 发布以来,它们已与库本身不同步。为防止混淆,样式文件已重命名为 "seaborn-v0_8"、"seaborn-v0_8-bright"、"seaborn-v0_8-colorblind" 等。建议用户直接使用 seaborn 访问最新样式。
plt.subplot
和 plt.subplot2grid
自动移除重叠 Axes#
以前,pyplot.subplot
和 pyplot.subplot2grid
会自动移除与新添加的 Axes 重叠的现有 Axes。此行为被认为是令人困惑的,现已弃用。请在需要移除的 Axes 上显式调用 ax.remove()
。
以位置参数传递 linefmt 给 stem
已取消弃用#
stem
中所有格式参数的位置参数使用自 Matplotlib 3.5 以来已被弃用。此弃用已放宽,因此仍可以位置参数传递 linefmt,即 stem(x, y, 'r')
。
stem(..., use_line_collection=False)
#
... 已弃用,没有替代方案。这是一个兼容性回退,用于以前效率较低的茎线表示。
位置参数 / 关键字参数#
在 Artists 的构造函数中,除了少数前几个参数外,所有参数都以位置方式传递已被弃用。大多数参数将在未来版本中变为仅限关键字。
向 tripcolor
传递过多位置参数现已弃用(以前多余的参数会被静默忽略)。
以位置参数传递 set_xlim
, set_ylim
, set_zlim
, set_rlim
的 emit 和 auto 参数已弃用;它们将在未来版本中变为仅限关键字。
Collection.set_offset_transform
的 transOffset 参数和图例处理程序中各种 create_collection
方法已重命名为 offset_transform(与属性名称一致)。
不带参数调用 MarkerStyle()
或 MarkerStyle(None)
已弃用;请使用 MarkerStyle("")
构造空标记样式。
Axes.get_window_extent
/ Figure.get_window_extent
只接受 renderer 参数。这使 API 与通用 Artist.get_window_extent
API 对齐。所有其他参数无论如何都会被忽略。
get_renderer
的 cleared 参数(仅存在于基于 AGG 的后端)已弃用。请改用 renderer.clear()
显式清除渲染器缓冲区。
在 LogLocator
和 LogFormatter*
中设置参数的方法#
在 LogFormatter
及其派生子类中,用于设置相应参数的 base
和 label_minor
方法已被弃用,并分别替换为 set_base
和 set_label_minor
。
在 LogLocator
中,用于设置相应参数的 base
和 subs
方法已弃用。请改用 set_params(base=..., subs=...)
。
Axes.get_renderer_cache
#
画布现在负责渲染器以及是否缓存它。替代方案是调用 axes.figure.canvas.get_renderer()
。
Axis
、Tick
、XAxis
和 YAxis
中未使用的函数#
Tick.label
自 3.1 以来一直处于待定弃用状态,现在已弃用。请改用 Tick.label1
。
以下方法不再使用并已弃用,没有替代方案:
Axis.get_ticklabel_extents
Tick.get_pad_pixels
XAxis.get_text_heights
YAxis.get_text_widths
mlab.stride_windows
#
... 已弃用。请改用 np.lib.stride_tricks.sliding_window_view
(或在 NumPy < 1.20 上使用 np.lib.stride_tricks.as_strided
)。
事件处理程序#
FigureCanvasBase
的 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
、enter_notify_event
和 leave_notify_event
方法已弃用。它们在不同后端具有不一致的签名,这使得改进事件元数据变得困难。
为了在画布上触发事件,直接构造正确类的 Event
对象并调用 canvas.callbacks.process(event.name, event)
。
小部件#
从 useblit 开始,MultiCursor
的所有参数都将变为仅限关键字(以位置参数传递它们已被弃用)。
MultiCursor
的 canvas
和 background
属性已弃用,没有替代方案。
Selector 小部件的 visible 属性已弃用;请改用 set_visible
或 get_visible
。
Selector 小部件的 state_modifier_keys 属性已私有化,修改键必须在创建小部件时设置。
Axes3D.dist
#
... 已私有化。请改用 Axes3D.set_box_aspect
中的 zoom 关键字参数。
3D 轴#
axis3d.Axis
以前的构造函数,其签名为 (self, adir, v_intervalx, d_intervalx, axes, *args, rotate_label=None, **kwargs)
,已弃用,取而代之的是更接近 2D 轴的新签名;现在是 (self, axes, *, rotate_label=None, **kwargs)
,其中 kwargs
会转发到 2D 轴构造函数。轴方向现在从轴类的 axis_name
属性推断(如在 2D 情况中);adir
属性已弃用。
3D 轴的 init3d
方法也已弃用;所有相关的初始化都作为构造函数的一部分完成。
3D 轴的 d_interval
和 v_interval
属性已弃用;请改用 get_data_interval
和 get_view_interval
。
Axis3D
的 w_xaxis
、w_yaxis
和 w_zaxis
属性自 3.1 版以来一直处于待定弃用状态。它们现已弃用。请改用 xaxis
、yaxis
和 zaxis
。
mplot3d.axis3d.Axis.set_pane_pos
已弃用。这是一个内部方法,其提供的值在绘图期间会被覆盖。因此,它没有直接访问的任何目的。
两个辅助函数 mplot3d.axis3d.move_from_center
和 mplot3d.axis3d.tick_update_position
被视为内部函数并已弃用。如果需要这些函数,请从相应的私有方法 _move_from_center
和 _tick_update_position
中获取代码。
Figure.callbacks
已弃用#
Figure 的 callbacks
属性已弃用。唯一的信号是 "dpi_changed",可以连接到画布上的 "resize_event" (figure.canvas.mpl_connect("resize_event", func)
) 来替代。
不带 required_interactive_framework
属性的 FigureCanvas
#
对这类画布类的支持已弃用。请注意,继承自 FigureCanvasBase
的画布类始终具有此属性。
后端特定弃用#
backend_gtk3.FigureManagerGTK3Agg
和backend_gtk4.FigureManagerGTK4Agg
;请直接使用backend_gtk3.FigureManagerGTK3
和backend_gtk4.FigureManagerGTK4
。backend_gtk3.NavigationToolbar2GTK3
的 window 参数没有效果,现已弃用。backend_gtk3.NavigationToolbar2GTK3.win
backend_gtk3.RendererGTK3Cairo
和backend_gtk4.RendererGTK4Cairo
;请改用RendererCairo
,它已获得set_context
方法,该方法还会自动推断底层表面的大小。backend_cairo.RendererCairo.set_ctx_from_surface
和backend_cairo.RendererCairo.set_width_height
已被弃用,取而代之的是RendererCairo.set_context
。backend_gtk3.error_msg_gtk
backend_gtk3.icon_filename
和backend_gtk3.window_icon
backend_macosx.NavigationToolbar2Mac.prepare_configure_subplots
已被configure_subplots()
替换。backend_pdf.Name.hexify
backend_pdf.Operator
和backend_pdf.Op.op
已弃用,取而代之的是enum.Enum
上单一的标准backend_pdf.Op
接口。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_qt.qApp
;请改用QtWidgets.QApplication.instance()
。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
backend_tk.NavigationToolbar2Tk.lastrect
和backend_tk.RubberbandTk.lastrect
backend_tk.NavigationToolbar2Tk.window
;请改用toolbar.master
。backend_tools.ToolBase.destroy
;要在工具移除时运行代码,请连接到tool_removed_event
事件。backend_wx.RendererWx.offset_text_height
backend_wx.error_msg_wx
FigureCanvasBase.pick
;直接调用Figure.pick
,它也承担了检查画布小部件锁的责任。FigureCanvasBase.resize
,它没有效果;请改用FigureManagerBase.resize
。FigureManagerMac.close
FigureFrameWx.sizer
;请改用frame.GetSizer()
。FigureFrameWx.figmgr
和FigureFrameWx.get_figure_manager
;请改用frame.canvas.manager
。FigureFrameWx.num
;请改用frame.canvas.manager.num
。FigureFrameWx.toolbar
;请改用frame.GetToolBar()
。FigureFrameWx.toolmanager
;请改用frame.canvas.manager.toolmanager
。
模块#
模块 matplotlib.afm
、matplotlib.docstring
、matplotlib.fontconfig_pattern
、matplotlib.tight_bbox
、matplotlib.tight_layout
和 matplotlib.type1font
被视为内部模块,公共访问已弃用。
checkdep_usetex
已弃用#
此方法仅旨在在未找到 latex 安装时禁用测试。因此,它被视为私有和内部使用。
如果您需要此功能,请获取代码。
date_ticker_factory
已弃用#
matplotlib.dates
模块中的 date_ticker_factory
方法已弃用。请改用 AutoDateLocator
和 AutoDateFormatter
,以获得更灵活和可伸缩的定位器和格式化器。
如果您需要 date_ticker_factory
的精确行为,请复制其代码。
dviread.find_tex_file
将引发 FileNotFoundError
#
将来,dviread.find_tex_file
在文件缺失时将引发 FileNotFoundError
。以前,在这种情况下它会返回一个空字符串。引发异常允许附加用户友好的消息。在过渡期内,会引发警告。
transforms.Affine2D.identity()
#
... 已弃用,取而代之的是直接调用不带参数的 Affine2D
构造函数。
testing.decorators
中的弃用#
未使用的类 CleanupTestCase
和装饰器 cleanup
已弃用并将被移除。请获取代码,包括私有函数 _cleanup_cm
。
函数 check_freetype_version
被视为内部函数并已弃用。请获取私有函数 _check_freetype_version
的代码。
text.get_rotation()
#
... 已弃用,没有替代方案。如果需要,请复制原始实现。
杂项内部#
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
cbook.maxdict
;请改用标准库functools.lru_cache
。_DummyAxis.dataLim
和_DummyAxis.viewLim
;请改用get_data_interval()
、set_data_interval()
、get_view_interval()
和set_view_interval()
。GridSpecBase.get_grid_positions(..., raw=True)
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))
。
移除#
以下已弃用的 API 已移除
已移除的行为#
函数参数的更严格验证#
传递给
Figure.savefig
、pyplot.savefig
和FigureCanvas.print_*
方法的未知关键字参数现在会引发TypeError
,而不是被忽略。Axes
构造函数的额外参数(即,除了 fig 和 rect 之外的参数)现在仅限关键字。不再支持向
Axes3D.plot_surface
和Axes3D.plot_wireframe
传递签名中未明确列出的参数;请改为将任何额外参数作为关键字参数传递。已移除向
LineCollection
传递位置参数的功能;现在请使用特定的关键字参数名称。
imread
不再接受 URL#
已移除将 URL 传递给 imread()
的功能。请打开 URL 进行读取并直接使用 Pillow API(例如,PIL.Image.open(urllib.request.urlopen(url))
或 PIL.Image.open(io.BytesIO(requests.get(url).content))
)代替。
MarkerStyle 是不可变的#
方法 MarkerStyle.set_fillstyle
和 MarkerStyle.set_marker
已被移除。请改用相应参数创建新的 MarkerStyle
。
向 FT2Font.set_text
传递字节#
... 已不再支持。请改传 str
。
对 ToolManager.add_tool
传递工具名称的支持#
... 已被移除。ToolManager.add_tool
的第二个参数现在必须始终是工具类。
backend_tools.ToolFullScreen
现在继承自 ToolBase
,而不是 ToolToggleBase
#
ToolFullScreen
只能在非全屏和全屏状态之间切换,而不能无条件地将窗口置于给定状态;因此 enable
和 disable
方法的命名具有误导性。因此,已移除与 ToolToggleBase
相关的 API(enable
、disable
等)。
BoxStyle._Base
和 box 样式的 transmute
方法#
... 已被移除。作为类的 box 样式不再需要继承自基类。
已加载模块日志记录#
在 Matplotlib 导入时,不再以 DEBUG 级别记录当前加载模块列表,因为它可能会产生大量输出,使其他有价值的 DEBUG 语句难以查找。如果您依赖此输出,请自行安排日志记录(可以使用内置的 sys.modules
来获取当前加载的模块)。
模块#
cbook.deprecation
模块已从公共 API 中移除,因为它被视为内部模块。mpl_toolkits.axes_grid
模块已移除。mpl_toolkits.axes_grid
的所有功能都可以在mpl_toolkits.axes_grid1
或mpl_toolkits.axisartist
中找到。基于mpl_toolkits.axisartist
的Axis
的mpl_toolkits.axes_grid
中的 Axes 类可以在mpl_toolkits.axisartist
中找到。
类、方法和属性#
以下模块级类/变量已移除
cm.cmap_d
colorbar.colorbar_doc
,colorbar.colorbar_kw_doc
ColorbarPatch
mathtext.Fonts
及其所有子类mathtext.FontConstantsBase
及其所有子类mathtext.latex_to_bakoma
,mathtext.latex_to_cmex
,mathtext.latex_to_standard
mathtext.MathtextBackendPdf
,mathtext.MathtextBackendPs
,mathtext.MathtextBackendSvg
,mathtext.MathtextBackendCairo
;请改用.MathtextBackendPath
。mathtext.Node
及其所有子类mathtext.NUM_SIZE_LEVELS
mathtext.Parser
mathtext.Ship
mathtext.SHRINK_FACTOR
和mathtext.GROW_FACTOR
mathtext.stix_virtual_fonts
,mathtext.tex2uni
backend_pgf.TmpDirCleaner
backend_ps.GraphicsContextPS
;请改用GraphicsContextBase
。backend_wx.IDLE_DELAY
axes_grid1.parasite_axes.ParasiteAxesAuxTransBase
;请改用ParasiteAxesBase
。axes_grid1.parasite_axes.ParasiteAxesAuxTrans
;请改用ParasiteAxes
。
以下类属性已被移除
Line2D.validCap
和Line2D.validJoin
;验证已集中在rcsetup
中。Patch.validCap
和Patch.validJoin
;验证已集中在rcsetup
中。renderer.M
、renderer.eye
、renderer.vvec
、renderer.get_axis_position
放置在 3D Axes 绘制期间的 Renderer 上;这些属性均可通过Axes3D
访问,而Artist
可通过self.axes
访问。RendererPdf.mathtext_parser
,RendererPS.mathtext_parser
,RendererSVG.mathtext_parser
,RendererCairo.mathtext_parser
StandardPsFonts.pswriter
Subplot.figbox
;请改用Axes.get_position
。Subplot.numRows
;请改用ax.get_gridspec().nrows
。Subplot.numCols
;请改用ax.get_gridspec().ncols
。SubplotDivider.figbox
cids
、cnt
、observers
、change_observers
和submit_observers
,适用于所有Widget
s
以下类方法已被移除
Axis.cla()
;请改用Axis.clear
。RadialAxis.cla()
和ThetaAxis.cla()
;请改用RadialAxis.clear
或ThetaAxis.clear
。Spine.cla()
;请改用Spine.clear
。ContourLabeler.get_label_coords()
;没有替代品,因为它被视为内部辅助函数。FancyArrowPatch.get_dpi_cor
和FancyArrowPatch.set_dpi_cor
FigureCanvas.get_window_title()
和FigureCanvas.set_window_title()
;如果使用 pyplot,请改用FigureManagerBase.get_window_title
或FigureManagerBase.set_window_title
,如果嵌入,则使用 GUI 特定方法。FigureManager.key_press()
和FigureManager.button_press()
;对于按键和鼠标事件,请直接在画布上使用canvas.callbacks.process(event.name, event)
触发事件。RendererAgg.get_content_extents()
和RendererAgg.tostring_rgba_minimized()
NavigationToolbar2Wx.get_canvas()
ParasiteAxesBase.update_viewlim()
;请改用ParasiteAxesBase.apply_aspect
。Subplot.get_geometry()
;请改用SubplotBase.get_subplotspec
。Subplot.change_geometry()
;请改用SubplotBase.set_subplotspec
。Subplot.update_params()
;此方法不执行任何操作。Subplot.is_first_row()
;请改用ax.get_subplotspec().is_first_row
。Subplot.is_first_col()
;请改用ax.get_subplotspec().is_first_col
。Subplot.is_last_row()
;请改用ax.get_subplotspec().is_last_row
。Subplot.is_last_col()
;请改用ax.get_subplotspec().is_last_col
。SubplotDivider.change_geometry()
;请改用SubplotDivider.set_subplotspec
。SubplotDivider.get_geometry()
;请改用SubplotDivider.get_subplotspec
。SubplotDivider.update_params()
MathTextParser
中的get_depth
、parse
、to_mask
、to_rgba
和to_png
;请改用mathtext.math_to_image
。MovieWriter.cleanup()
;清理逻辑已完全实现在MovieWriter.finish
中,并且不再调用cleanup
。
函数#
以下函数已被移除;
backend_template.new_figure_manager()
、backend_template.new_figure_manager_given_figure()
和backend_template.draw_if_interactive()
已被移除,这是简化后端 API 引入的一部分。与弃用相关的重新导入
cbook.deprecated()
和cbook.warn_deprecated()
。colorbar.colorbar_factory()
;请改用Colorbar
。colorbar.make_axes_kw_doc()
mathtext.Error()
mathtext.ship()
mathtext.tex2uni()
axes_grid1.parasite_axes.parasite_axes_auxtrans_class_factory()
;请改用parasite_axes_class_factory
。sphinext.plot_directive.align()
;请改用docutils.parsers.rst.directives.images.Image.align
。
参数#
以下参数已被移除
PS 后端中
print_ps()
和 PDF 后端中print_pdf()
的 dpi 参数。现在,这些方法将从savefig
机制中获取 DPI。FancyArrowPatch
的 dpi_cor 参数TextArea
的 minimum_descent 参数;它现在实际上总是 True。FigureCanvasWx.gui_repaint()
的 origin 参数Line3DCollection.draw()
的 project 参数Line3DCollection.do_3d_projection
、Patch3D.do_3d_projection
、PathPatch3D.do_3d_projection
、Path3DCollection.do_3d_projection
、Patch3DCollection.do_3d_projection
、Poly3DCollection.do_3d_projection
的 renderer 参数Tk 后端中 resize_callback 参数;请改用
get_tk_widget().bind('<Configure>', ..., True)
。gridspec.get_position()
的 return_all 参数gca()
的关键字参数;没有替代品。
rcParams#
设置 rcParams["ps.useafm"]
(默认值:False
)对 matplotlib.mathtext
不再有任何影响。
开发变更#
依赖项的最低支持版本提升#
对于 Matplotlib 3.6,最低支持版本已提高
依赖项 |
mpl3.5 中的最低版本 |
mpl3.6 中的最低版本 |
---|---|---|
Python |
3.7 |
3.8 |
NumPy |
1.17 |
1.19 |
构建设置选项变更#
gui_support.macosx
设置选项已重命名为 packages.macosx
。
新 wheel 架构#
已添加以下 wheel:
Python 3.11
PyPy 3.8 和 3.9