3.3.0 版本的 API 更改#
行为变更#
Formatter.fix_minus#
Formatter.fix_minus 现在在 rcParams["axes.unicode_minus"](默认值:True)为 True 时执行连字符到 Unicode 减号的替换;也就是说,它的行为与 ScalarFormatter.fix_minus (ScalarFormatter 现在只是继承该实现) 的行为一致。
此替换现在由各种内置格式化程序类的 format_data_short 方法使用,这会影响 GUI 工具栏中的光标值。
FigureCanvasBase 现在总是有一个 manager 属性,该属性可能为 None#
以前,它不一定有这样的属性。现在应将对 hasattr(figure.canvas, "manager") 的检查替换为 figure.canvas.manager is not None(或者为了向后兼容,使用 getattr(figure.canvas, "manager", None) is not None)。
在没有 GUI 事件循环运行时,cbook.CallbackRegistry 现在会传播异常#
cbook.CallbackRegistry 现在在没有交互式 GUI 事件循环运行时,默认传播回调函数抛出的异常。如果正在运行 GUI 事件循环,cbook.CallbackRegistry 仍默认只打印回溯信息,因为在这种情况下,未处理的异常可能导致程序完全 abort()。
Axes.locator_params() 验证 axis 参数#
axes.Axes.locator_params 以前接受任何 axis 值,并在传递不支持的值时静默不执行任何操作。它现在会引发 ValueError。
Axis.set_tick_params() 验证 which 参数#
Axis.set_tick_params (以及更高级别的 axes.Axes.tick_params 和 pyplot.tick_params) 以前接受任何 which 值,并在传递不支持的值时静默不执行任何操作。它现在会引发 ValueError。
Axis.set_ticklabels() 必须匹配 FixedLocator.locs#
如果一个轴使用了 ticker.FixedLocator(通常通过调用 Axis.set_ticks 设置),那么提供的刻度标签数量必须与可用位置的数量 (FixedFormattor.locs) 相匹配。否则,会引发 ValueError。
backend_pgf.LatexManager.latex#
backend_pgf.LatexManager.latex 现在以 encoding="utf-8" 创建,因此其 stdin、stdout 和 stderr 属性都是 utf8 编码的。
pyplot.xticks() 和 pyplot.yticks()#
以前,如果只传递标签而不传递刻度到 pyplot.xticks 和 pyplot.yticks,会导致
TypeError: object of type 'NoneType' has no len()
它现在会引发一个带有正确错误描述的 TypeError。
通过多个别名设置相同属性现在会引发 TypeError#
以前,调用例如 plot(..., color=somecolor, c=othercolor) 会发出警告,因为 color 和 c 实际上映射到相同的 Artist 属性。现在这会引发 TypeError。
FileMovieWriter 临时帧目录#
FileMovieWriter 现在默认将临时帧写入临时目录,该目录总是在退出时被清除。为了将单个帧保存在文件系统上,请传递一个显式的 frame_prefix。
Axes.plot 不再接受 x 和 y 都是 2D 且具有不同列数的情况#
以前,调用 Axes.plot,例如,当 x 的形状为 (n, 3) 且 y 的形状为 (n, 2) 时,会绘制 x 的第一列对 y 的第一列,x 的第二列对 y 的第二列,**以及** x 的第一列对 y 的第三列。现在这会引发错误。
Text.update_from 现在从源 Text 复制 usetex 状态#
stem 现在默认 use_line_collection=True#
这会将茎状图创建为 LineCollection 对象,而不是单独的 Line2D 对象,从而大大提高性能。
rcParams 颜色验证器现在更严格#
以前,rcParams 条目的值是颜色类型,接受字符串“中间”的“虚假”额外字母或字符,例如 "(0, 1a, '0.5')" 会被解释为 (0, 1, 0.5)。这些额外字符(包括内部引号)现在会导致引发 ValueError。
SymLogNorm 现在有一个 base 参数#
以前,SymLogNorm 没有 base 关键字参数,默认为 base=np.e,而文档称其为 base=10。为了准备将默认值设为 10,在调用 SymLogNorm 时不带新的 base 关键字参数会发出弃用警告。
当只设置了误差条颜色时,errorbar 现在会进行颜色循环#
以前,设置 ecolor 会关闭绘图的自动颜色循环,导致在多次绘图调用时,线条和标记默认为颜色循环中的第一个颜色。
rcsetup.validate_color_for_prop_cycle 现在对字节输入总是引发 TypeError#
以前,它会引发 TypeError,**除了**输入形式为 b"C[number]" 的情况,此时它会引发 ValueError。
FigureCanvasPS.print_ps 和 FigureCanvasPS.print_eps 不再应用 edgecolor 和 facecolor#
这些方法现在假定图形的边缘和背景颜色已由 FigureCanvasBase.print_figure 正确应用,因为它们通常通过它来调用。
此行为与其他图形保存方法(FigureCanvasAgg.print_png、FigureCanvasPdf.print_pdf、FigureCanvasSVG.print_svg)一致。
当给定不正确数量的参数时,pyplot.subplot() 现在会引发 TypeError#
这与其他签名不匹配错误一致。以前会引发 ValueError。
关闭所有图形的快捷方式#
关闭所有图形的快捷方式现在也适用于经典工具栏。不再有默认快捷方式,因为无意中通过按键关闭所有图形可能太容易发生。您可以使用 rcParams["keymap.quit_all"](默认值:[])自行配置快捷方式。
箭头的自动缩放#
调用 ax.arrow() 现在将自动缩放坐标轴。
set_tick_params(label1On=False) 现在也会使偏移文本(如果有)不可见#
...因为偏移文本在没有刻度标签的情况下也很少能被理解。
Axes.annotate 和 pyplot.annotate 参数名已更改#
Axes.annotate 和 pyplot.annotate 的参数 s 已重命名为 text,与 Annotation 匹配。
旧的参数名仍然支持,但其支持将在未来的 Matplotlib 版本中取消。
font_manager.json_dump 现在锁定字体管理器转储文件#
... 以防止多个进程同时写入它。
pyplot.rgrids 和 pyplot.thetagrids 现在在仅使用 kwargs 调用时也充当设置器#
以前,当未提供位置参数时,关键字参数会被静默忽略。
Axis.get_minorticklabels 和 Axis.get_majorticklabels 现在返回普通列表#
以前,Axis.get_minorticklabels 和 Axis.get_majorticklabels 返回 silent_list。它们的返回类型现在已更改为普通列表。get_xminorticklabels、get_yminorticklabels、get_zminorticklabels、Axis.get_ticklabels、get_xmajorticklabels、get_ymajorticklabels 和 get_zmajorticklabels 方法将受此更改影响。
默认滑块格式化程序#
用于格式化 Slider 值的默认方法已更改为使用适应滑块值限制的 ScalarFormatter。这应确保即使值远小于或远大于 1,也能以适当的有效数字显示。要恢复旧行为,请将 "%1.2f" 作为 valfmt 参数显式传递给 Slider。
向 Axes.pie 添加 normalize 关键字参数#
pie() 以前会在值之和小于 1 时绘制部分饼图。此行为已被弃用,并且默认情况下将更改为始终将值标准化为完整饼图。如果您想绘制部分饼图,请显式传递 normalize=False。
table.CustomCell 现在是 table.Cell 的别名#
CustomCell 的所有功能已移至其基类 Cell。
wx 定时器间隔#
在尚未启动的 TimerWx 上设置定时器间隔将不再启动它。
“step”类型直方图默认使用 Line2D 的 zorder#
这确保它们默认位于网格线上方。旧的 zorder 可以通过将其作为关键字参数传递给 Axes.hist 来保持。
Legend 和 OffsetBox 可见性#
Legend 和 OffsetBox 子类 (PaddedBox, AnchoredOffsetbox, 和 AnnotationBbox) 不再直接跟踪其底层 Patch 艺术家的可见性,而是将该标志传递给 Patch。
Legend 和 Table 不再允许无效位置#
这会影响在坐标轴上生成的图例(Axes.legend 和 pyplot.legend)和在图形上生成的图例(Figure.legend 和 pyplot.figlegend)。图形图例也不再接受不支持的 'best' 位置。以前,无效的坐标轴位置会使用 'best',而无效的图形位置会使用 'upper right'。
Line2D 的 drawstyle 和 linestyle 同时传递已被移除#
请使用 plt.plot(..., linestyle="--", drawstyle="steps"),而不是 plt.plot(..., linestyle="steps--")。ds 也是 drawstyle 的别名。
大写颜色字符串#
对以大写字符传递单字母颜色(“rgbcmykw”之一)的支持已被移除;这些颜色现在区分大小写(小写)。
tight/constrained_layout 不再担心标题过宽的问题#
tight_layout 和 constrained_layout 会缩小坐标轴以适应坐标轴上的“装饰”。然而,如果 xlabel 或标题在 x 方向上过长,缩小坐标轴在 x 方向上并没有帮助。两者的行为都已更改为在布局逻辑中忽略标题和 xlabel 的宽度以及 ylabel 的高度。
这也意味着 axes.Axes.get_tightbbox 和 axis.Axis.get_tightbbox 有了一个新的关键字参数:for_layout_only,它默认为 False,但如果为 True,则返回一个使用上述规则的边界框。
rcParams["savefig.facecolor"](默认值:'auto')和 rcParams["savefig.edgecolor"](默认值:'auto')现在默认为“auto”#
rcParams["savefig.facecolor"](默认值:'auto')和 rcParams["savefig.edgecolor"](默认值:'auto')现在允许的新值,以及 Figure.savefig 的 facecolor 和 edgecolor 参数,都意味着“使用图形当前拥有的任何背景色和边缘色”。
当使用单个数据集时,Axes.hist 不再将添加的艺术家封装在 silent_list 中#
当调用 Axes.hist 并传入单个数据集时,它会向坐标轴添加一个 BarContainer 对象(当 histtype="bar" 或 "barstacked" 时),或者一个 Polygon 对象(当 histype="step" 或 "stepfilled" 时)——后者被封装在一个单元素列表中。以前,任何艺术家都会被封装在一个 silent_list 中。现在不再是这种情况:BarContainer 现在原样返回(如果您直接依赖具体的 list API,这是一个 API 破坏性更改;但是,BarContainer 继承自 tuple,因此大多数常见操作仍然可用),并且单元素 Polygon 列表也原样返回。这使得返回的艺术家的 repr 更准确:它现在是
<BarContainer object of 10 artists> # "bar", "barstacked"
[<matplotlib.patches.Polygon object at 0xdeadbeef>] # "step", "stepfilled"
而不是
<a list of 10 Patch objects> # "bar", "barstacked"
<a list of 1 Patch objects> # "step", "stepfilled"
当调用 Axes.hist 并传入多个艺术家时,它仍然将其返回值封装在 silent_list 中,但使用更准确的类型信息
<a list of 3 BarContainer objects> # "bar", "barstacked"
<a list of 3 List[Polygon] objects> # "step", "stepfilled"
而不是
<a list of 3 Lists of Patches objects> # "bar", "barstacked"
<a list of 3 Lists of Patches objects> # "step", "stepfilled"
Qt 和 wx 后端默认不再创建状态栏#
坐标信息现在显示在工具栏中,与其他后端保持一致。此举旨在简化 Matplotlib 在大型 GUI 中的嵌入,在这种情况下,Matplotlib 可能控制工具栏但不控制状态栏。
rcParams["text.hinting"](默认值:'force_autohint')现在支持映射到 FreeType 标志的名称#
rcParams["text.hinting"](默认值:'force_autohint')现在支持“default”、“no_autohint”、“force_autohint”和“no_hinting”这些值,它们直接映射到 FreeType 标志 FT_LOAD_DEFAULT 等。旧的同义词(分别为“either”、“native”、“auto”和“none”)仍然受支持,但不鼓励使用。要获取规范化值,请使用 backend_agg.get_hinting_flag,它返回整数标志值。
cbook.get_sample_data 自动加载 numpy 数组#
当 cbook.get_sample_data 用于加载 npy 或 npz 文件,并且仅限关键字参数 np_load 为 True 时,该文件会自动使用 numpy.load 加载。np_load 默认为 False 以实现向后兼容性,但在后续版本中将变为 True。
get_text_width_height_descent 现在检查 ismath 而不是 rcParams["text.usetex"](默认值:False)#
... 用于确定字符串是否应该传递给 usetex 机制。这允许即使 rcParam 为 True 时,单个字符串也被标记为非 usetex。
Axes.vlines、Axes.hlines、pyplot.vlines 和 pyplot.hlines 的 colors 参数默认值更改#
colors 参数现在将默认为 rcParams["lines.color"](默认值:'C0'),而以前默认为 'k'。
在 ScalerMappable 类中积极地自动缩放 clim#
以前,如果只传递 vmin 或 vmax 关键字参数(Axes.scatter、Axes.hexbin、Axes.imshow、Axes.pcolorfast),某些绘图方法会推迟自动缩放,直到第一次绘制;但如果没有传递任何参数,则会根据传递的数据进行缩放(独立于 norm 关键字参数)。其他方法(Axes.pcolor、Axes.pcolormesh)总是根据初始数据自动缩放。
所有绘图方法现在都会在初始调用时使用传入的数据解析未设置的 vmin 或 vmax。
如果您依赖于在方法调用和图形第一次渲染之间恰好有一个 vmin 或 vmax 未设置,则可以通过手动将相关限制设置回 None 来恢复旧行为
cm_obj.norm.vmin = None
# or
cm_obj.norm.vmax = None
这将在绘制过程中解决。
弃用#
不带参数的 figure.add_axes()#
目前,不带任何参数调用 fig.add_axes() 不会执行任何操作。将来,此调用将引发错误。添加一个自由浮动的坐标轴需要一个位置矩形。如果您想要一个填充整个图形的单个坐标轴,请改用 add_subplot()。
backend_wx.DEBUG_MSG#
backend_wx.DEBUG_MSG 已弃用。wx 后端现在使用常规日志记录。
Colorbar.config_axis()#
Colorbar.config_axis() 被认为是内部方法。其使用已被弃用。
NonUniformImage.is_grayscale 和 PcolorImage.is_grayscale#
这些属性已弃用,与 Matplotlib 2.0.0 中已移除的 AxesImage.is_grayscale 保持一致。(请注意,以前这些属性仅在 *渲染图像后* 才可用)。
参数 den 和属性到 mpl_toolkits.axisartist.angle_helper#
对于 mpl_toolkits.axisartist.angle_helper 中定义的所有定位器类,参数 den 已重命名为 nbins,并且属性 den 已弃用,取而代之的是其(预先存在的)同义词 nbins,以与 matplotlib.ticker 中定义的定位器类保持一致。
backend_pgf.LatexManager.latex_stdin_utf8#
backend_pgf.LatexManager.latex 现在以 encoding="utf-8" 创建,因此其 stdin 属性已编码为 utf8;因此,latex_stdin_utf8 属性已弃用。
传递包含“U”的标志到 cbook.to_filehandle 和 cbook.open_file_cm#
请从传递给 cbook.to_filehandle 和 cbook.open_file_cm 的标志中移除“U”。这与 Python 3.9 中从 open 中移除“U”一致。
PDF 和 PS 字符跟踪内部#
RendererPdf、PdfFile 和 RendererPS 的 used_characters 属性以及 track_characters 和 merge_used_characters 方法已弃用。
不区分大小写的 capstyles 和 joinstyles#
请以小写形式传递 capstyles(“miter”、“round”、“bevel”)和 joinstyles(“butt”、“round”、“projecting”)。
向 register_cmap() 传递原始数据#
通过参数 data 和 lut 向 matplotlib.cm.register_cmap() 传递原始数据已弃用。请改为显式创建 LinearSegmentedColormap 并通过 cmap 参数传递:register_cmap(cmap=LinearSegmentedColormap(name, data, lut))。
DateFormatter.illegal_s#
此属性未使用且已弃用。
widgets.TextBox.params_to_disable#
此属性已弃用。
恢复弃用 set_x/y/zlim_3d() 的 *min, *max 关键字参数#
这些关键字参数在 3.0 版本中与 set_xlim() / set_ylim() 中的相应参数一同被弃用。2D 版本的弃用已在 3.1 版本中恢复。
cbook.local_over_kwdict#
此函数已弃用。请改用 cbook.normalize_kwargs。
同时向 Axes.eventplot 传递单数和复数形式的 colors、linewidths、linestyles#
例如,同时传递 linewidth 和 linewidths 将来会引发 TypeError。
将 text.latex.preamble 或 pdf.preamble rcParams 设置为非字符串#
这些 rcParams 应设置为字符串值。对 None(表示空字符串)和字符串列表(隐式地用换行符连接)的支持已弃用。
参数 norm 和 vmin/vmax 不应同时使用#
同时向使用颜色映射的函数(如 scatter() 和 imshow())传递参数 norm 和 vmin/vmax 已弃用。请改为传递 norm=LogNorm(min_val, max_val),而不是 norm=LogNorm(), vmin=min_val, vmax=max_val。vmin 和 vmax 应该只在不设置 norm 的情况下使用。
Figure.colorbar 和 matplotlib.colorbar.Colorbar 的无效参数#
Figure.colorbar 和 matplotlib.colorbar.Colorbar 的 cmap 和 norm 参数无效,因为它们总是被 mappable 的 colormap 和 norm 覆盖;因此它们已被弃用。同样,在 ContourSet mappable 中传递 alpha、boundaries、values、extend 或 filled 参数,或者在 Artist mappable 中传递 alpha 参数,也已被弃用,因为 mappable 同样会覆盖它们。
内置 MovieWriter 的 args_key 和 exec_key 属性#
这些属性已弃用。
未使用的参数#
以下参数没有任何效果且已弃用
传递给
StreamplotSet的任意关键字参数Path.cleaned()的参数 quantizeTick的参数 label
将 props 传递给 Shadow#
Shadow 的参数 props 已弃用。请改用关键字参数。
Axes.update_datalim_bounds#
此方法已弃用。请改用 ax.dataLim.set(Bbox.union([ax.dataLim, bounds]))。
{,Symmetrical}LogScale.{,Inverted}LogTransform#
LogScale.LogTransform, LogScale.InvertedLogTransform, SymmetricalScale.SymmetricalTransform 和 SymmetricalScale.InvertedSymmetricalTransform 已弃用。请直接从 scale 模块访问变换类。
TexManager.cachedir, TexManager.rgba_arrayd#
前者请使用 matplotlib.get_cachedir();后者没有替代。
通过 Line2D.set_picker 设置 Line2D 的 pickradius#
通过 Line2D.set_picker 设置 Line2D 的 pickradius(即拾取事件和包含检查的容差)已弃用。请改用 Line2D.set_pickradius。
Line2D.set_picker 不再设置艺术家的自定义包含检查。
Artist.set_contains, Artist.get_contains#
设置覆盖 Artist.contains 的自定义方法已弃用。没有替代方法,但您仍然可以使用 Artist.set_picker 自定义拾取事件。
Colorbar 方法#
Colorbar 的 on_mappable_changed 和 update_bruteforce 方法已弃用;两者都可以被 update_normal 的调用所取代。
OldScalarFormatter, IndexFormatter 和 IndexDateFormatter#
这些格式化程序已弃用。它们的功能可以使用例如 FuncFormatter 实现。
OldAutoLocator#
此 ticker 已弃用。
cbook.normalize_kwargs 的 required, forbidden 和 allowed 参数#
这些参数已弃用。
TTFPATH 和 AFMPATH 环境变量#
对(未文档化的)TTFPATH 和 AFMPATH 环境变量的支持已弃用。可以使用 matplotlib.font_manager.fontManager.addfont() 注册其他字体。
matplotlib.compat#
此模块已弃用。
matplotlib.backends.qt_editor.formsubplottool#
此模块已弃用。请改用 matplotlib.backends.backend_qt5.SubplotToolQt。
AVConv 动画写入器已弃用#
AVConvBase、AVConvWriter 和 AVConvFileWriter 类,以及相关的 animation.avconv_path 和 animation.avconv_args rcParams 已弃用。
Debian 8(2015 年,EOL 2020 年 6 月)和 Ubuntu 14.04(EOL 2019 年 4 月)是 Debian 和 Ubuntu 最后发布 avconv 的版本。仍然可以通过使用基于 ffmpeg 的写入器并将 rcParams["animation.ffmpeg_path"](默认值:'ffmpeg')设置为“avconv”来强制使用 avconv。
日志/symlog 比例基数、刻度线和非正数指定#
semilogx、semilogy、loglog、LogScale 和 SymmetricalLogScale 曾接受取决于坐标轴方向(“basex”与“basey”、“subsx”与“subsy”、“nonposx”与“nonposy”)的关键字参数;这些参数名现已弃用,取而代之的是“base”、“subs”和“nonpositive”。此弃用也影响例如 ax.set_yscale("log", basey=...),现在必须写成 ax.set_yscale("log", base=...)。
从“nonpos”到“nonpositive”的更改也影响 LogTransform、InvertedLogTransform、SymmetricalLogTransform 等。
要在 loglog 图的 x 轴和 y 轴使用不同的底数,请使用例如 ax.set_xscale("log", base=10); ax.set_yscale("log", base=2)。
DraggableBase.artist_picker#
此方法已弃用。如果您之前在子类中重新实现了它,请改用 Artist.set_picker 设置 artist 的 picker。
FileMovieWriter 的 clear_temp 参数和属性#
FileMovieWriter 的 clear_temp 参数和属性已弃用。未来,放置在临时目录中的文件(使用 frame_prefix=None,默认值)将被清除;放置在其他位置的文件则不会。
已弃用的 rcParams 验证器#
以下在 rcsetup 中定义的验证器已弃用:validate_fontset、validate_mathtext_default、validate_alignment、validate_svg_fonttype、validate_pgf_texsystem、validate_movie_frame_fmt、validate_axis_locator、validate_movie_html_fmt、validate_grid_axis、validate_axes_titlelocation、validate_toolbar、validate_ps_papersize、validate_legend_loc、validate_bool_maybe_none、validate_hinting、validate_movie_writer、validate_webagg_address、validate_nseq_float、validate_nseq_int。要测试 rcParam 值是否可接受,可以测试例如 rc = RcParams(); rc[k] = v 是否引发异常。
更严格的 rcParam 验证#
rcParams["axes.axisbelow"] (默认值: 'line') 目前会将所有以 "line" 开头的字符串(不区分大小写)标准化为选项 "line"。这已弃用;在未来的版本中,将只支持精确的字符串 "line"(区分大小写)。
add_subplot() 验证其输入#
特别是,对于 add_subplot(rows, cols, index),所有参数都必须是整数。以前字符串和浮点数被接受并转换为整数。现在这将发出弃用警告。
matplotlib.test(recursionlimit=...)#
matplotlib.test 的 recursionlimit 参数已弃用。
mathtext 粘合剂#
mathtext.Glue 的 copy 参数已弃用(底层粘合剂规格现在是不可变的)。mathtext.GlueSpec 已弃用。
Artist.draw 和 matplotlib.axes.Axes.draw 的签名#
传递给 matplotlib.axes.Axes.draw 的 inframe 参数已弃用。请改用 Axes.redraw_in_frame。
不将 renderer 参数传递给 matplotlib.axes.Axes.draw 已弃用。请改用 axes.draw_artist(axes)。
这些更改使 draw (artist.draw(renderer)) 方法的签名在所有 artist 中保持一致;因此,Artist.draw 的附加参数已弃用。
DraggableBase.on_motion_blit#
此方法已弃用。DraggableBase.on_motion 现在可以处理 blitting 和非 blitting 两种情况。
将虚线偏移量设置为 None#
可以通过将 (offset, (on-length, off-length, on-length, off-length, ...)) 对作为 Line2D 和 LineCollection 的线型属性来精确控制虚线图案。以前,某些 API 会接受 offset = None 作为 offset = 0 的同义词,但这从未普遍实现,例如对于矢量输出。对 offset = None 的支持已弃用,请将偏移量设置为 0。
RendererCairo.fontweights, RendererCairo.fontangles#
... 已弃用。
autofmt_xdate(which=None)#
这已弃用,请改用其更明确的同义词 which="major"。
JPEG 选项#
传递给 savefig 的 quality、optimize 和 progressive 关键字参数(仅在保存为 JPEG 时使用)已弃用。savefig.jpeg_quality rcParam 也同样弃用。
此类选项现在应使用 savefig(..., pil_kwargs={"quality": ..., "optimize": ..., "progressive": ...}) 直接传递给 Pillow。
dviread.Encoding#
此类(大部分)已损坏,并已弃用。
坐标轴和定位器 pan 和 zoom#
Axis 和 Locator 中未使用的 pan 和 zoom 方法已弃用。现在平移和缩放是使用 Axes 的 start_pan、drag_pan 和 end_pan 方法实现的。
将 None 传递给各种 Axes 子类工厂#
支持将 None 作为基类传递给 axes.subplot_class_factory、axes_grid1.parasite_axes.host_axes_class_factory、axes_grid1.parasite_axes.host_subplot_class_factory、axes_grid1.parasite_axes.parasite_axes_class_factory 和 axes_grid1.parasite_axes.parasite_axes_auxtrans_class_factory 已弃用。请改为显式传递正确的基 Axes 类。
axes_rgb#
在 mpl_toolkits.axes_grid1.axes_rgb 中,imshow_rgb 已弃用(请改用 ax.imshow(np.dstack([r, g, b])));RGBAxesBase 已弃用(请改用 RGBAxes);RGBAxes.add_RGB_to_figure 已弃用(它是一个内部辅助函数)。
Substitution.from_params#
此方法已弃用。如果需要,请直接赋值给 Substitution 对象的 params 属性。
PGF 后端清理#
RendererPgf 的 dummy 参数已弃用。
GraphicsContextPgf 已弃用(请改用 GraphicsContextBase)。
mpl_toolkits.axisartist 定位器的 set_factor 方法#
mpl_toolkits.axisartist 定位器(与“标准”Matplotlib 刻度定位器不同)的 set_factor 方法已弃用。
widgets.SubplotTool 回调和坐标轴#
widgets.SubplotTool 的 funcleft、funcright、funcbottom、functop、funcwspace 和 funchspace 方法已弃用。
widgets.SubplotTool 的 axleft、axright、axbottom、axtop、axwspace 和 axhspace 属性已弃用。如果需要,请访问相应滑块的 ax 属性。
mathtext Glue 辅助类#
matplotlib.mathtext 模块中的 Fil、Fill、Filll、NegFil、NegFill、NegFilll 和 SsGlue 类已弃用。作为替代,请直接使用 Glue("fil") 等构造 glue 实例。
FigureCanvasGTK3._renderer_init#
重写此方法以初始化 GTK3 画布的渲染器已弃用。相反,渲染器应在子类的 __init__ 方法中初始化(该方法应根据需要调用基类的 __init__)。为了保持与早期 Matplotlib 版本的向后兼容性(这些版本要求重写 _renderer_init),可以保留一个完全空的实现(def _renderer_init(self): pass),并且不会触发弃用警告。
bezier 中的路径辅助函数#
bezier.make_path_regular 已弃用。请改用 Path.cleaned()(或 Path.cleaned(curves=True) 等)(但请注意,这些方法会在路径末尾添加一个 STOP 代码)。
bezier.concatenate_paths 已弃用。请改用 Path.make_compound_path()。
animation.html_args rcParam#
未使用的 animation.html_args rcParam 和 animation.HTMLWriter.args_key 属性已弃用。
text.latex.preview rcParam#
此 rcParam 用于控制使用 preview.sty LaTeX 包来对齐 TeX 字符串基线,现已弃用,因为 Matplotlib 自己的 dvi 解析器现在可以像 preview.sty 一样很好地计算基线。
SubplotSpec.get_rows_columns#
此方法已弃用。请改用 GridSpec.nrows、GridSpec.ncols、SubplotSpec.rowspan 和 SubplotSpec.colspan 属性。
基于 Qt4 的后端#
qt4agg 和 qt4cairo 后端已弃用。Qt4 已于 2015 年结束生命周期,并且没有适用于最新 Python 版本的发布。请考虑切换到 Qt5。
Axes.set_xticklabels 和 Axes.set_yticklabels 的 fontdict 和 minor 参数将变为仅关键字参数#
Figure.subplots 的所有参数(除了 nrows 和 ncols)将变为仅关键字参数#
这避免了在意指 subplot(1, 1, 1) 时键入例如 subplots(1, 1, 1),但实际得到 subplots(1, 1, sharex=1) 的情况。
RendererWx.get_gc#
此方法已弃用。请直接访问 gc 属性。
axes_grid 中的 add_all 参数#
axes_grid1.axes_grid.Grid、axes_grid1.axes_grid.ImageGrid、axes_grid1.axes_rgb.make_rgb_axes 和 axes_grid1.axes_rgb.RGBAxes 的 add_all 参数已弃用。现在坐标轴总是添加到父图形中,尽管以后可以使用 ax.remove() 将其移除。
BboxBase.inverse_transformed#
.BboxBase.inverse_transformed 已弃用(请改在 inverted() 变换上调用 BboxBase.transformed)。
eventplot() 和 EventCollection 的 orientation#
将 eventplot() 或 EventCollection 的 orientation 设置为“none”或 None 已弃用;请改为设置为“horizontal”。此外,未来这两种方向(“horizontal”和“vertical”)将区分大小写。
Axis.get_ticklocs 的 minor kwarg 将变为仅关键字参数#
以位置参数形式传递此参数已弃用。
不区分大小写的属性#
在 Artist.set 和 Artist.update 中将大写或混合大小写属性名规范化为小写已弃用。未来,属性名将按原样传递,允许传递诸如 patchA 或 UVC 等名称。
ContourSet.ax, Quiver.ax#
这些属性已弃用,推荐使用 ContourSet.axes 和 Quiver.axes,以与其他 artist 保持一致。
Locator.refresh() 及相关方法#
Locator.refresh() 已弃用。此方法在某些地方被调用,以允许定位器更新其内部状态,通常基于轴限制。现在,定位器在被调用时应始终查阅轴限制(如果需要)。
相关的辅助方法 NavigationToolbar2.draw() 和 ToolViewsPositions.refresh_locators() 已弃用,应替换为在相应画布上调用 draw_idle()。
ScalarMappable 检查器#
ScalarMappable 的 add_checker 和 check_update 方法以及 update_dict 属性已弃用。
pyplot.tight_layout 和 ColorbarBase 参数将变为仅关键字参数#
pyplot.tight_layout 的所有参数以及 ColorbarBase 除了第一个参数(ax)之外的所有参数都将变为仅关键字参数,分别与 Figure.tight_layout 和 Colorbar 保持一致。
Axes.pie 的 radius 和 startangle#
将 None 作为 Axes.pie 的 radius 或 startangle 已弃用;请分别改用 1 和 0 的显式默认值。
AxisArtist.dpi_transform#
... 已弃用。将 Figure.dpi_scale_trans 缩放 1/72 即可达到相同效果。
Collection 的 offset_position 属性#
Collection 的 offset_position 属性已弃用。未来,Collection 将始终表现为 offset_position 设置为“screen”(默认值)的行为。
对所有渲染器类的 draw_path_collection 传递 offset_position="data" 的支持已弃用。
transforms.AffineDeltaTransform 可作为替代。此 API 处于实验阶段,未来可能会更改。
testing.compare.make_external_conversion_command#
... 已弃用。
epoch2num 和 num2epoch 已弃用#
这些未被使用,并且可以通过其他日期工具轻松重现。get_epoch 将返回 Matplotlib 的 epoch。
axes_grid1.CbarAxes 属性#
cbid 和 locator 属性已弃用。请像标准颜色条一样使用 mappable.colorbar_cid 和 colorbar.locator。
qt_compat.is_pyqt5#
此函数已弃用,以应对 PyQt6 的未来发布。Qt 版本可以使用 QtCore.qVersion() 检查。
Artist.set 的参数重新排序#
在未来的版本中,Artist.set 将按照给定的顺序应用 artist 属性。这只影响 color、edgecolor、facecolor 以及对于 Collection 来说的 alpha 属性之间的交互:color 属性现在需要首先传递,以免覆盖其他属性。这与例如 Artist.update 一致,后者不会重新排序传递给它的属性。
将多个键作为单个逗号分隔字符串或多个参数传递给 ToolManager.update_keymap#
这已弃用;请改用字符串列表传递键。
状态栏类和属性#
FigureManagerBase 的 statusbar 属性、StatusbarBase 及其所有子类以及 StatusBarWx 已弃用,因为消息现在显示在工具栏中。
draw_tex 的 ismath 参数#
所有渲染器类的 draw_tex 方法的 ismath 参数已弃用(因为调用 draw_tex ——不要与 draw_text 混淆!——意味着整个字符串无论如何都应传递给 usetex 机制)。同样,文本机制在调用 draw_tex 时将不再传递 ismath 参数(这只与后端实现者有关)。
将 ismath="TeX!" 传递给 RendererAgg.get_text_width_height_descent 已弃用。请改用 ismath="TeX",这与其他支持 True、False 和 "TeX" 值的低级 API 保持一致。
matplotlib.ttconv#
此模块已弃用。
PGF 中更严格的 PDF 元数据键#
目前使用 PGF 后端保存 PDF 元数据时会将所有键规范化为小写,这与 PDF 后端不同,后者只接受规范的大小写。这已弃用;在未来的版本中,将只接受 PDF 规范(和 PdfPages 文档)中列出的规范大小写键。
Qt 修饰键#
matplotlib.backends.backend_qt4agg、matplotlib.backends.backend_qt4cairo、matplotlib.backends.backend_qt5agg 和 matplotlib.backends.backend_qt5cairo 模块的 MODIFIER_KEYS、SUPER、ALT、CTRL 和 SHIFT 全局变量已弃用。
TexManager#
TexManager.serif、TexManager.sans_serif、TexManager.cursive 和 TexManager.monospace 属性已弃用。
移除#
以下已弃用的 API 已移除
模块#
backends.qt_editor.formlayout(请改用 PyPI 上可用的 formlayout 模块)
类、方法和属性#
artist.Artist.aname属性(无替代)axis.Axis.iter_ticks(无替代)不支持不提供
backend_bases.GraphicsContextBase.set_hatch_color方法的自定义后端backend_bases.RendererBase.strip_math()(请改用cbook.strip_math())backend_wx.debug_on_error()(无替代)backend_wx.raise_msg_to_str()(无替代)backend_wx.fake_stderr(无替代)backend_wx.MenuButtonWx(无替代)backend_wx.PrintoutWx(无替代)_backend_tk.NavigationToolbar2Tk.set_active()(无替代)backend_ps.PsBackendHelper.gs_exe属性(无替代)backend_ps.PsBackendHelper.gs_version属性(无替代)backend_ps.PsBackendHelper.supports_ps2write属性(无替代)backend_ps.RendererPS.afmfontd属性(无替代)backend_ps.GraphicsContextPS.shouldstroke属性(无替代)backend_gtk3.FileChooserDialog(无替代)backend_gtk3.SaveFigureGTK3.get_filechooser()(无替代)backend_gtk3.NavigationToolbar2GTK3.get_filechooser()(无替代)backend_gtk3cairo.FigureManagerGTK3Cairo(请改用backend_gtk3.FigureManagerGTK3)backend_pdf.RendererPdf.afm_font_cache属性(无替代)backend_pgf.LatexManagerFactory(无替代)backend_qt5.NavigationToolbar2QT.buttons属性(无替代)backend_qt5.NavigationToolbar2QT.adj_window属性(无替代)bezier.find_r_to_boundary_of_closedpath()(无替代)cbook.dedent()(请改用inspect.cleandoc)cbook.get_label()(无替代)cbook.is_hashable()(请改用isinstance(..., collections.abc.Hashable))cbook.iterable()(请改用numpy.iterable())cbook.safezip()(无替代)colorbar.ColorbarBase.get_cmap(请改用ScalarMappable.get_cmap)colorbar.ColorbarBase.set_cmap(请改用ScalarMappable.set_cmap)colorbar.ColorbarBase.get_clim(请改用ScalarMappable.get_clim)colorbar.ColorbarBase.set_clim(请改用ScalarMappable.set_clim)colorbar.ColorbarBase.set_norm(请改用ScalarMappable.set_norm)dates.seconds()(无替代)dates.minutes()(无替代)dates.hours()(无替代)dates.weeks()(无替代)dates.strpdate2num和dates.bytespdate2num(请改用time.strptime或dateutil.parser.parse或dates.datestr2num)docstring.Appender(无替代)docstring.dedent()(请改用inspect.getdoc)docstring.copy_dedent()(请改用docstring.copy()和inspect.getdoc)font_manager.OSXInstalledFonts()(无替代)image.BboxImage.interp_at_native属性(无替代)lines.Line2D.verticalOffset属性(无替代)matplotlib.checkdep_dvipng(无替代)matplotlib.checkdep_ghostscript(无替代)matplotlib.checkdep_pdftops(无替代)matplotlib.checkdep_inkscape(无替代)matplotlib.get_py2exe_datafiles(无替代)matplotlib.tk_window_focus(请改用rcParams['tk.window_focus'])mlab.demean()(请改用mlab.detrend_mean())path.get_paths_extents()(请改用path.get_path_collection_extents())path.Path.has_nonfinite()(请改用not np.isfinite(self.vertices).all())projections.process_projection_requirements()(无替代)pyplot.plotfile()(请改用pandas.read_csv或numpy.loadtxt或类似函数加载数据,然后使用常规 pyplot 函数绘制加载的数据。)quiver.Quiver.color()(请改用Quiver.get_facecolor())quiver.Quiver.keyvec属性(无替代)quiver.Quiver.keytext属性(无替代)rcsetup.validate_qt4()(无替代)rcsetup.validate_qt5()(无替代)rcsetup.validate_verbose()(无替代)rcsetup.ValidateInterval(无替代)scale.LogTransformBase(请改用scale.LogTransform)scale.InvertedLogTransformBase(请改用scale.InvertedLogTransform)scale.Log10Transform(请改用scale.LogTransform)scale.InvertedLog10Transform(请改用scale.InvertedLogTransform)scale.Log2Transform(请改用scale.LogTransform)scale.InvertedLog2Transform(请改用scale.InvertedLogTransform)scale.NaturalLogTransform(请改用scale.LogTransform)scale.InvertedNaturalLogTransform(请改用scale.InvertedLogTransform)scale.get_scale_docs()(无替代)sphinxext.plot_directive.plot_directive()(请改用PlotDirective类)sphinxext.mathmpl.math_directive()(请改用MathDirective类)spines.Spine.is_frame_like()(无替代)testing.decorators.switch_backend()(请改用@pytest.mark.backend装饰器)text.Text.is_math_text()(请改用cbook.is_math_text())text.TextWithDash()(请改用text.Annotation)textpath.TextPath.is_math_text()(请改用cbook.is_math_text())textpath.TextPath.text_get_vertices_codes()(请改用textpath.text_to_path.get_text_path())textpath.TextToPath.glyph_to_path()(请改用font.get_path()和顶点的手动转换)ticker.OldScalarFormatter.pprint_val()(无替代)ticker.ScalarFormatter.pprint_val()(无替代)ticker.LogFormatter.pprint_val()(无替代)ticker.decade_down()(无替代)ticker.decade_up()(无替代)Tick属性gridOn、tick1On、tick2On、label1On、label2On(请改用set_visible()/get_visible()在Tick.gridline、Tick.tick1line、Tick.tick2line、Tick.label1、Tick.label2上)widgets.SpanSelector.buttonDown属性(无替代)mplot3d.proj3d.line2d()(无替代)mplot3d.proj3d.line2d_dist()(无替代)mplot3d.proj3d.line2d_seg_dist()(无替代)mplot3d.proj3d.mod()(请改用numpy.linalg.norm)mplot3d.proj3d.proj_transform_vec()(无替代)mplot3d.proj3d.proj_transform_vec_clip()(无替代)mplot3d.proj3d.vec_pad_ones()(无替代)mplot3d.proj3d.proj_trans_clip_points()(无替代)mplot3d.art3d.norm_angle()(无替代)mplot3d.art3d.norm_text_angle()(无替代)mplot3d.art3d.path_to_3d_segment()(无替代)mplot3d.art3d.paths_to_3d_segments()(无替代)mplot3d.art3d.path_to_3d_segment_with_codes()(无替代)mplot3d.art3d.paths_to_3d_segments_with_codes()(无替代)mplot3d.art3d.get_patch_verts()(无替代)mplot3d.art3d.get_colors()(无替代)mplot3d.art3d.zalpha()(无替代)mplot3d.axis3d.get_flip_min_max()(无替代)mplot3d.axis3d.Axis.get_tick_positions()(无替代)axisartist.axis_artist.UnimplementedException(无替代)axisartist.axislines.SimpleChainedObjects(请改用axis_grid1.mpl_axes.SimpleChainedObjects)axisartist.axislines.Axes.AxisDict(请改用axis_grid1.mpl_axes.Axes.AxisDict)
参数#
Axes.text()/pyplot.text()不再支持参数withdash。请改用Axes.annotate()和pyplot.annotate()。matplotlib.use的第一个参数已从arg重命名为backend(仅在按关键字传递时相关)。matplotlib.use的参数warn已被移除。如果设置了force,切换后端失败现在将始终引发ImportError;如有必要,请捕获该错误。matplotlib.use除了第一个参数之外的所有参数现在都变为仅关键字参数。imshow()中未使用的参数shape和imlim现已移除。extent之后的所有参数现在都变为仅关键字参数。BboxImage中未使用的参数interp_at_native已被移除。TextToPath.get_text_path的参数usetex已被移除。请改用ismath='TeX'。show()的参数block现在是仅关键字参数,并且不再接受任意位置参数或关键字参数。Figure.savefig的参数frameon已被移除。请使用facecolor="none"获取透明背景。不再支持将
wx.EvtHandler作为第一个参数传递给backend_wx.TimerWx;TimerWx的签名现在与TimerBase一致。hist2d的normed参数已重命名为density。Annotation的s参数已重命名为text。对于
bezier中所有支持tolerance参数的函数,此参数已重命名为tolerance。axis("normal")不再受支持。请改用等效的axis("auto")。axis()不再接受任意关键字参数。Axis.set_ticklabels()除了ticklabels之外不再接受任意位置参数。mpl_toolkits.mplot3d.art3d.Poly3DCollection.set_zsort不再接受值True。请改用等效值 'average'。AnchoredText不再接受horizontalalignment或verticalalignment关键字参数。ConnectionPatch不再接受arrow_transmuter和connector关键字参数,这些参数自 3.0 版本以来就没有任何作用。FancyArrowPatch不再接受arrow_transmuter和connector关键字参数,这些参数自 3.0 版本以来就没有任何作用。TextPath不再接受任意位置或关键字参数。MaxNLocator.set_params()不再接受任意关键字参数。pie不再接受并挤压非一维输入;请将一维输入传递给x参数。不再支持向
Axes.errorbar()传递 (n, 1) 形状的误差数组;请改为传递一维数组。
rcParams#
text.latex.unicodercParam 已被移除,没有替代。Matplotlib 现在始终支持 usetex 中的 Unicode。savefig.frameonrcParam 已被移除。将rcParams["savefig.facecolor"](默认值:'auto')设置为 "none" 以获得透明背景。pgf.debug、verbose.fileo和verbose.verbose.levelrcParam 已被移除,它们没有任何作用。已移除对将
rcParams["mathtext.default"](默认值:'it')设置为 "circled" 的支持。
环境变量#
MATPLOTLIBDATA(无替代)。
数学文本#
\stackrel命令(其行为与 LaTeX 版本不同)已被移除。请改用\genfrac。\mathcircled命令已被移除。请直接使用 Unicode 字符,例如'\N{CIRCLED LATIN CAPITAL LETTER A}'。
开发变更#
Matplotlib 现在要求 numpy>=1.15#
Matplotlib 现在使用 Pillow 来保存和读取 PNG 文件#
内置的 PNG 编码器和解码器已被移除,Pillow 现在是一个依赖项。请注意,在读取 16 位 RGB(A) 图像时,Pillow 会将其截断为 8 位精度,而旧的内置解码器则保留了完整精度。
已弃用的 wx 后端(不是 wxagg!)现在总是使用 wx 内置的 jpeg 和 tiff 支持,而不是依赖 Pillow 来写入这些格式;此行为与 wx 的 PNG 输出一致。