3.3.0 的 API 变更#

行为变化#

Formatter.fix_minus#

Formatter.fix_minus 现在在 rcParams["axes.unicode_minus"] (default: True) 为 True 时执行连字符到 Unicode 减号的替换;即其行为与 ScalarFormatter.fix_minus 的行为相匹配(ScalarFormatter 现在只是继承了该实现)。

此替换现在被各种内置格式化类中的 format_data_short 方法使用,这会影响GUI工具栏中的光标值。

FigureCanvasBase 现在总是有一个 manager 属性,它可能是 None。#

之前,它不一定有这样一个属性。现在应该用 figure.canvas.manager is not None 来代替 hasattr(figure.canvas, "manager") 的检查(或者为了向后兼容,可以使用 getattr(figure.canvas, "manager", None) is not None)。

cbook.CallbackRegistry 现在在没有GUI事件循环运行时传播异常#

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_paramspyplot.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" 创建,因此其 stdinstdoutstderr 属性均为 utf8 编码。

pyplot.xticks()pyplot.yticks()#

之前,如果只传递标签而不传递刻度给 pyplot.xtickspyplot.yticks,会导致:

TypeError: object of type 'NoneType' has no len()

现在它会引发一个 TypeError ,并附带对错误的适当描述。

在多个别名下设置相同的属性现在会引发 TypeError#

之前,调用例如 plot(..., color=somecolor, c=othercolor) 会发出警告,因为 colorc 实际上映射到同一个 Artist 属性。现在这将引发 TypeError。

FileMovieWriter 临时帧目录#

FileMovieWriter 现在默认将临时帧写入临时目录,该目录在退出时总是被清除。为了在文件系统上保留单个帧,请传递一个显式的 frame_prefix

Axes.plot 不再接受 xy 同时为二维且列数不同的情况#

之前,调用 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_psFigureCanvasPS.print_eps 不再应用 edgecolor 和 facecolor#

这些方法现在假设图形边缘和面颜色已由 FigureCanvasBase.print_figure 正确应用,因为它们通常是通过它调用的。

此行为与其他图形保存方法(FigureCanvasAgg.print_pngFigureCanvasPdf.print_pdfFigureCanvasSVG.print_svg)一致。

pyplot.subplot() 现在在给定错误数量的参数时会引发 TypeError#

这与其他的签名不匹配错误是一致的。之前会引发一个 ValueError。

关闭所有图形的快捷方式#

关闭所有图形的快捷方式现在也适用于经典工具栏。由于按键无意中关闭所有图形的情况可能太容易发生,因此不再有默认快捷方式。您可以使用 rcParams["keymap.quit_all"] (default: []) 自行配置快捷方式。

箭头的自动缩放#

调用 ax.arrow() 现在会自动缩放坐标轴。

set_tick_params(label1On=False) 现在也会使偏移文本(如果有的话)不可见#

... 因为偏移文本很少能在没有刻度标签的情况下被解释。

Axes.annotatepyplot.annotate 参数名称已更改#

参数 sAxes.annotatepyplot.annotate 中被重命名为 text,以匹配 Annotation

旧的参数名称仍然被支持,但在未来的 Matplotlib 版本中将不再支持。

font_manager.json_dump 现在锁定字体管理器转储文件#

... 以防止多个进程同时写入它。

pyplot.rgridspyplot.thetagrids 现在在仅使用 kwargs 调用时也作为设置器。#

之前,当没有给出位置参数时,关键字参数会被静默忽略。

Axis.get_minorticklabelsAxis.get_majorticklabels 现在返回普通列表#

之前,Axis.get_minorticklabelsAxis.get_majorticklabels 返回的是 silent_list。它们的返回类型现已更改为普通列表。get_xminorticklabels, get_yminorticklabels, get_zminorticklabels, Axis.get_ticklabels, get_xmajorticklabels, get_ymajorticklabelsget_zmajorticklabels 方法将受到此更改的影响。

默认滑块格式化器#

用于格式化 Slider 值的默认方法已更改为使用适应滑块值限制的 ScalarFormatter。这应确保即使值远小于或远大于 1,也能以适当数量的有效数字显示。要恢复旧的行为,请显式传递一个 "%1.2f" 作为 Slidervalfmt 参数。

Axes.pie 添加 normalize 关键字参数#

pie() 如果值的总和小于1,则用于绘制部分饼图。此行为已被弃用,并将更改为默认情况下始终将值归一化为完整的饼图。如果您想绘制部分饼图,请显式传递 normalize=False

table.CustomCell 现在是 table.Cell 的别名#

CustomCell 的所有功能已移至其基类 Cell

wx 计时器间隔#

在尚未启动的 TimerWx 上设置定时器间隔不会再启动它。

"step"-类型直方图默认使用 Line2D 的 zorder。#

这确保了它们默认情况下位于网格线之上。可以通过将旧的 zorder 作为关键字参数传递给 Axes.hist 来保留它。

LegendOffsetBox 可见性#

LegendOffsetBox 子类(PaddedBoxAnchoredOffsetboxAnnotationBbox)不再直接跟踪其底层 Patch 艺术家的可见性,而是将该标志传递给 Patch

LegendTable 不再允许无效位置#

这会影响在 Axes(Axes.legendpyplot.legend)和 Figure(Figure.legendpyplot.figlegend)上生成的图例。Figure 图例也不再接受不支持的 'best' 位置。以前,无效的 Axes 位置会使用 'best',而无效的 Figure 位置会使用 'upper right'

传递 Line2D 的 drawstylelinestyle 已被移除#

使用 plt.plot(..., linestyle="--", drawstyle="steps") 代替 plt.plot(..., linestyle="steps--")ds 也是 drawstyle 的别名。

大写颜色字符串#

支持将单字母颜色("rgbcmykw" 中的一个)作为大写字符传递的功能已被移除;这些颜色现在区分大小写(小写)。

tight/constrained_layout 不再担心标题太宽的问题#

tight_layoutconstrained_layout 缩小轴以适应轴上的“装饰”。然而,如果在 x 方向上 xlabel 或标题太长,使轴在 x 方向上更小并不能解决问题。两者的行为都已更改,以忽略布局逻辑中标题和 xlabel 的宽度以及 ylabel 的高度。

这也意味着为 axes.Axes.get_tightbboxaxis.Axis.get_tightbbox 添加了一个新的关键字参数:for_layout_only,其默认值为 False,但如果设置为 True,则使用上述规则返回一个边界框。

rcParams["savefig.facecolor"] (default: 'auto') 和 rcParams["savefig.edgecolor"] (default: 'auto') 现在默认设置为 "auto"#

这个新允许的 rcParams["savefig.facecolor"] (default: 'auto') 和 rcParams["savefig.edgecolor"] (default: 'auto') 的值,以及 Figure.savefigfacecoloredgecolor 参数,意味着“使用图形当前的 facecolor 和 edgecolor”。

当使用单个数据集时,Axes.hist 不再将添加的艺术家包装在 silent_list#

当调用 Axes.hist 时传入单个数据集,它会在坐标轴上添加一个 BarContainer 对象(当 histtype="bar""barstacked" 时),或一个 Polygon 对象(当 histtype="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 后端默认不再创建状态栏#

坐标信息现在显示在工具栏中,与其他后端保持一致。这是为了简化在更大的GUI中嵌入Matplotlib,其中Matplotlib可能控制工具栏但不是状态栏。

rcParams["text.hinting"] (default: 'force_autohint') 现在支持名称映射到 FreeType 标志#

rcParams["text.hinting"] (default: '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"] (default: False)#

... 以确定一个字符串是否应该传递给 usetex 机制。这允许单个字符串即使在 rcParam 为 True 时也被标记为非 usetex。

Axes.vlines, Axes.hlines, pyplot.vlinespyplot.hlinescolors 参数默认值更改#

colors 参数现在默认值为 rcParams["lines.color"] (default: 'C0'),而之前默认值为 'k'。

ScalerMappable 类中积极自动调整 clim#

之前,一些绘图方法如果在只传递了 vminvmax 关键字参数之一的情况下(例如 Axes.scatter, Axes.hexbin, Axes.imshow, Axes.pcolorfast),会在第一次绘制时推迟自动缩放,但如果两者都未传递(与 norm 关键字参数无关),则会基于传递的数据进行缩放。其他方法(例如 Axes.pcolor, Axes.pcolormesh)总是基于初始数据进行自动缩放。

所有的绘图方法现在在初始调用时使用传入的数据解析未设置的 vminvmax

如果你依赖于在调用方法和首次渲染图形之间,vminvmax 中的一个保持未设置状态,你可以通过手动将相关限制设置回 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_grayscalePcolorImage.is_grayscale#

这些属性已被弃用,以与 AxesImage.is_grayscale 保持一致,后者在 Matplotlib 2.0.0 中已被移除。(请注意,以前这些属性只有在*渲染图像后*才可用)。

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 属性已被弃用。

传递给 cbook.to_filehandlecbook.open_file_cm 的包含 "U" 的标志#

请从传递给 cbook.to_filehandlecbook.open_file_cm 的标志中移除“U”。这与在 Python 3.9 中从 open 中移除它们是一致的。

PDF 和 PS 字符跟踪内部机制#

RendererPdfPdfFileRendererPSused_characters 属性和 track_charactersmerge_used_characters 方法已被弃用。

不区分大小写的帽样式和连接样式#

请以小写形式传递 capstyles(“miter”、“round”、“bevel”)和 joinstyles(“butt”、“round”、“projecting”)。

将原始数据传递给 register_cmap()#

通过参数 datalutmatplotlib.cm.register_cmap() 传递原始数据已被弃用。相反,应显式创建一个 LinearSegmentedColormap 并通过 cmap 参数传递:register_cmap(cmap=LinearSegmentedColormap(name, data, lut))

DateFormatter.illegal_s#

此属性未使用且已弃用。

widgets.TextBox.params_to_disable#

此属性已弃用。

恢复弃用的 *min, *max 关键字参数到 set_x/y/zlim_3d()#

这些关键字参数在3.0版本中已被弃用,与 set_xlim() / set_ylim() 中的相应参数一同被弃用。2D版本的弃用已在3.1版本中被恢复。

cbook.local_over_kwdict#

此函数已弃用。请改用 cbook.normalize_kwargs

将单数和复数形式的 colorslinewidthslinestyles 传递给 Axes.eventplot#

将来传递例如 linewidthlinewidths 都会引发 TypeError。

rcParams["text.latex.preamble"] (default: '') 或 rcParams["pdf.preamble"] 设置为非字符串#

这些 rcParams 应设置为字符串值。对 None(表示空字符串)和字符串列表(隐式地用换行符连接)的支持已弃用。

参数 normvmin/vmax 不应同时使用#

同时向使用颜色映射的函数(如 scatter()imshow())传递参数 normvmin/vmax 已被弃用。应使用 norm=LogNorm(min_val, max_val) 代替 norm=LogNorm(), vmin=min_val, vmax=max_valvminvmax 仅应在不设置 norm 的情况下使用。

Figure.colorbarmatplotlib.colorbar.Colorbar 的无效果参数#

Figure.colorbarmatplotlib.colorbar.Colorbarcmapnorm 参数无效,因为它们总是被 mappable 的 colormap 和 norm 覆盖;因此它们已被弃用。同样,使用 ContourSet mappable 传递 alphaboundariesvaluesextendfilled 参数,或使用 Artist mappable 传递 alpha 参数,也已被弃用,因为 mappable 同样会覆盖它们。

内置 MovieWriterargs_keyexec_key 属性#

这些属性已被弃用。

未使用的参数#

以下参数没有任何效果,并且已被弃用:

props 传递给 Shadow#

Shadow 的参数 props 已被弃用。请改用关键字参数。

Axes.update_datalim_bounds#

此方法已弃用。请改用 ax.dataLim.set(Bbox.union([ax.dataLim, bounds]))

{,Symmetrical}LogScale.{,Inverted}LogTransform#

LogScale.LogTransformLogScale.InvertedLogTransformSymmetricalScale.SymmetricalTransformSymmetricalScale.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 不再设置艺术家的自定义-contain()检查。

Artist.set_contains, Artist.get_contains#

设置一个自定义方法覆盖 Artist.contains 已被弃用。没有替代方案,但您仍然可以使用 Artist.set_picker 自定义拾取事件。

Colorbar 方法#

Colorbaron_mappable_changedupdate_bruteforce 方法已被弃用;两者都可以通过调用 update_normal 来替代。

OldScalarFormatterIndexFormatterIndexDateFormatter#

这些格式化工具已被弃用。它们的功能可以通过使用例如 FuncFormatter 来实现。

OldAutoLocator#

此代码已弃用。

必需的, 禁止的允许的 参数 cbook.normalize_kwargs#

这些参数已被弃用。

TTFPATHAFMPATH 环境变量#

对(未记录的)``TTFPATH`` 和 AFMPATH 环境变量的支持已被弃用。可以使用 matplotlib.font_manager.fontManager.addfont() 注册额外的字体。

matplotlib.compat#

此模块已被弃用。

matplotlib.backends.qt_editor.formsubplottool#

此模块已弃用。请改用 matplotlib.backends.backend_qt5.SubplotToolQt

AVConv 动画写入器已弃用#

AVConvBaseAVConvWriterAVConvFileWriter 类,以及相关的 animation.avconv_pathanimation.avconv_args rcParams 已被弃用。

Debian 8 (2015, EOL 06/2020) 和 Ubuntu 14.04 (EOL 04/2019) 是最后一批搭载 avconv 的 Debian 和 Ubuntu 版本。通过将 rcParams["animation.ffmpeg_path"] (default: 'ffmpeg') 设置为 "avconv",仍然可以使用基于 ffmpeg 的写入器强制使用 avconv。

log/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”也会影响 LogTransformInvertedLogTransformSymmetricalLogTransform 等。

要在 loglog 图中为 x 轴和 y 轴使用 不同 的基数,可以使用例如 ax.set_xscale("log", base=10); ax.set_yscale("log", base=2)

DraggableBase.artist_picker#

此方法已弃用。如果您之前在子类中重新实现了它,请使用 Artist.set_picker 来设置艺术家的选择器。

clear_tempFileMovieWriter 的参数和属性#

FileMovieWriterclear_temp 参数和属性已被弃用。未来,放置在临时目录中的文件(使用 frame_prefix=None,默认值)将被清除;放置在其他位置的文件则不会。

已弃用的 rcParams 验证器#

以下在 rcsetup 中定义的验证器已被弃用:validate_fontsetvalidate_mathtext_defaultvalidate_alignmentvalidate_svg_fonttypevalidate_pgf_texsystemvalidate_movie_frame_fmtvalidate_axis_locatorvalidate_movie_html_fmtvalidate_grid_axisvalidate_axes_titlelocationvalidate_toolbarvalidate_ps_papersizevalidate_legend_locvalidate_bool_maybe_nonevalidate_hintingvalidate_movie_writervalidate_webagg_addressvalidate_nseq_floatvalidate_nseq_int。要测试一个 rcParam 值是否可接受,可以测试例如 rc = RcParams(); rc[k] = v 是否引发异常。

更严格的 rcParam 验证#

rcParams["axes.axisbelow"] (default: 'line') 目前将所有以“line”开头的字符串(不区分大小写)标准化为选项“line”。 这已被弃用;在未来的版本中,只有完全匹配的字符串“line”(区分大小写)才会被支持。

add_subplot() 验证其输入#

特别是对于 add_subplot(rows, cols, index),所有参数必须是整数。以前接受字符串和浮点数并转换为整数。现在这将发出一个弃用警告。

使用键盘上的“a”和数字键切换轴导航#

仍然可以使用 Axes.set_navigate 以编程方式切换轴导航。

以下相关API也被弃用:backend_tools.ToolEnableAllNavigationbackend_tools.ToolEnableNavigationrcParams["keymap.all_axes"]

matplotlib.test(recursionlimit=...)#

matplotlib.testrecursionlimit 参数已被弃用。

mathtext 粘合#

mathtext.Gluecopy 参数已被弃用(底层胶水规范现在是不可变的)。mathtext.GlueSpec 已被弃用。

Artist.drawmatplotlib.axes.Axes.draw 的签名#

matplotlib.axes.Axes.drawinframe 参数已被弃用。请改用 Axes.redraw_in_frame

不传递 renderer 参数给 matplotlib.axes.Axes.draw 已被弃用。请改用 axes.draw_artist(axes)

这些更改使得 draw 方法(artist.draw(renderer))在所有艺术家中的签名保持一致;因此,对 Artist.draw 的额外参数已被弃用。

DraggableBase.on_motion_blit#

此方法已弃用。DraggableBase.on_motion 现在同时处理 blitting 和非 blitting 的情况。

传递破折号偏移量为 None#

通过传递一个 (偏移, (开长度, 关长度, 开长度, 关长度, ...)) 对作为 Line2DLineCollection 的 linestyle 属性,可以实现对虚线模式的精细控制。以前,某些API会将 offset = None 视为 offset = 0 的同义词,但这从未在所有情况下实现,例如在矢量输出中。对 offset = None 的支持已被弃用,请将偏移设置为0。

RendererCairo.fontweights, RendererCairo.fontangles#

... 已被弃用。

autofmt_xdate(which=None)#

这已被弃用,请使用其更明确的同义词 which="major" 代替。

JPEG 选项#

savefigqualityoptimizeprogressive 关键字参数,这些参数仅在保存为 JPEG 时使用,已被弃用。rcParams["savefig.jpeg_quality"] 同样已被弃用。

这些选项现在应直接通过 savefig(..., pil_kwargs={"quality": ..., "optimize": ..., "progressive": ...}) 传递给 Pillow。

dviread.Encoding#

此类(大部分)已损坏且已弃用。

轴和定位器 panzoom#

AxisLocator 中未使用的 panzoom 方法已被弃用。平移和缩放现在通过 Axesstart_pandrag_panend_pan 方法实现。

将 None 传递给各种 Axes 子类工厂#

支持将 None 作为基类传递给 axes.subplot_class_factoryaxes_grid1.parasite_axes.host_axes_class_factoryaxes_grid1.parasite_axes.host_subplot_class_factoryaxes_grid1.parasite_axes.parasite_axes_class_factoryaxes_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 后端清理#

RendererPgfdummy 参数已被弃用。

GraphicsContextPgf 已弃用(请改用 GraphicsContextBase)。

set_factor 方法位于 mpl_toolkits.axisartist 定位器中#

set_factor 方法是 mpl_toolkits.axisartist 定位器(与“标准” Matplotlib 刻度定位器不同)已被弃用。

widgets.SubplotTool 回调和轴#

widgets.SubplotToolfuncleftfuncrightfuncbottomfunctopfuncwspacefunchspace 方法已被弃用。

widgets.SubplotToolaxleftaxrightaxbottomaxtopaxwspaceaxhspace 属性已被弃用。如果需要,请访问相应滑块的 ax 属性。

mathtext Glue 辅助类#

FilFillFilllNegFilNegFillNegFilllSsGlue 类在 matplotlib.mathtext 模块中已被弃用。作为替代,请直接使用 Glue("fil") 等方式构造胶水实例。

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.nrowsGridSpec.ncolsSubplotSpec.rowspanSubplotSpec.colspan 属性。

基于 Qt4 的后端#

qt4agg 和 qt4cairo 后端已被弃用。Qt4 在2015年已达到生命周期终点,并且没有为新版本的Python发布。请考虑切换到Qt5。

fontdictminor 参数在 Axes.set_xticklabelsAxes.set_yticklabels 中将成为仅关键字参数#

Figure.subplotsnrowsncols 外的所有参数将成为仅关键字参数#

这避免了在表示 subplot(1, 1, 1) 时误输入 subplots(1, 1, 1),但实际上得到的是 subplots(1, 1, sharex=1)

RendererWx.get_gc#

此方法已弃用。请直接访问 gc 属性。

add_all 参数在 axes_grid#

axes_grid1.axes_grid.Gridaxes_grid1.axes_grid.ImageGridaxes_grid1.axes_rgb.make_rgb_axesaxes_grid1.axes_rgb.RGBAxesadd_all 参数已被弃用。现在轴总是被添加到父图上,尽管它们可以通过 ax.remove() 稍后移除。

BboxBase.inverse_transformed#

.BboxBase.inverse_transformed 已被弃用(请改为在 inverted() 变换上调用 BboxBase.transformed)。

方向 eventplot()EventCollection#

设置 eventplot()EventCollectionorientation 为 "none" 或 None 已被弃用;请改为设置为 "horizontal"。此外,两种方向("horizontal" 和 "vertical")在将来将区分大小写。

minor 参数在 Axis.get_ticklocs 中将成为仅关键字参数#

按位置传递此参数已被弃用。

不区分大小写的属性#

Artist.setArtist.update 中将大写或混合大小写的属性名称规范化为小写已被弃用。未来,属性名称将按原样传递,允许传递诸如 patchAUVC 的名称。

ContourSet.ax, Quiver.ax#

为了与其他艺术家保持一致,这些属性已被弃用,取而代之的是 ContourSet.axesQuiver.axes

Locator.refresh() 及其相关方法#

Locator.refresh() 已被弃用。此方法曾在某些地方被调用,以便定位器更新其内部状态,通常基于轴的限制。现在,如果需要,定位器应在被调用时始终查询轴的限制。

相关的辅助方法 NavigationToolbar2.draw()ToolViewsPositions.refresh_locators() 已被弃用,应替换为在相应画布上调用 draw_idle()

ScalarMappable 检查器#

.ScalarMappableadd_checkercheck_update 方法以及 update_dict 属性已被弃用。

pyplot.tight_layoutColorbarBase 参数将变为仅关键字参数#

pyplot.tight_layout 的所有参数以及 ColorbarBase 除第一个参数(ax)外的所有参数将变为仅关键字参数,与 Figure.tight_layoutColorbar 一致。

Axes.pie 半径和起始角度#

None 作为 Axes.pieradiusstartangle 的参数已弃用;请分别使用显式默认值 1 和 0 代替。

AxisArtist.dpi_transform#

... 已被弃用。通过将 Figure.dpi_scale_trans 缩放 1/72 来达到相同的效果。

.Collectionoffset_position 属性#

Collectionoffset_position 属性已被弃用。在未来,Collection 将始终表现得如同 offset_position 被设置为 "screen"(默认值)。

所有渲染器类的 draw_path_collection 方法中传递 offset_position="data" 的支持已被弃用。

transforms.AffineDeltaTransform 可以作为替代使用。此API是实验性的,未来可能会发生变化。

testing.compare.make_external_conversion_command#

... 已被弃用。

epoch2numnum2epoch 已被弃用#

这些是未使用的,可以通过其他日期工具轻松重现。 get_epoch 将返回 Matplotlib 的纪元。

axes_grid1.CbarAxes 属性#

cbidlocator 属性已被弃用。请使用 mappable.colorbar_cidcolorbar.locator,如同标准色条一样。

qt_compat.is_pyqt5#

此功能在即将发布的 PyQt6 版本中已被弃用。可以使用 QtCore.qVersion() 检查 Qt 版本。

通过 Artist.set 重新排序参数#

在未来的版本中,Artist.set 将按照给定的顺序应用艺术家属性。这仅影响 颜色边缘颜色面颜色 以及对于 Collection透明度 属性之间的交互:现在需要首先传递 颜色 属性,以避免覆盖其他属性。这与例如 Artist.update 一致,后者不会重新排序传递给它的属性。

将多个键作为单个逗号分隔的字符串或多个参数传递给 ToolManager.update_keymap#

这已被弃用;请改为传递字符串列表形式的键。

状态栏类和属性#

FigureManagerBasestatusbar 属性,以及 StatusbarBase 及其所有子类,还有 StatusBarWx,都已弃用,因为消息现在改为在工具栏中显示。

draw_texismath 参数#

所有渲染器类的 draw_tex 方法的 ismath 参数已被弃用(因为调用 draw_tex —— 不要与 draw_text 混淆!—— 意味着整个字符串无论如何都应该传递给 usetex 机制)。同样,文本机制在调用 draw_tex 时将不再传递 ismath 参数(这仅对后端实现者有影响)。

传递 ismath="TeX!"RendererAgg.get_text_width_height_descent 已被弃用。请改为传递 ismath="TeX",与其他支持 ismath 值为 True、False 和 "TeX" 的底层 API 保持一致。

matplotlib.ttconv#

此模块已被弃用。

PGF 中更严格的 PDF 元数据键#

使用 PGF 后端保存 PDF 中的元数据目前会将所有键规范化为小写,这与仅接受规范大小写的 PDF 后端不同。此行为已被弃用;在未来的版本中,将仅接受 PDF 规范(以及 PdfPages 文档)中列出的规范大小写的键。

Qt 修饰键#

matplotlib.backends.backend_qt4aggmatplotlib.backends.backend_qt4cairomatplotlib.backends.backend_qt5aggmatplotlib.backends.backend_qt5cairo 模块中的 MODIFIER_KEYSSUPERALTCTRLSHIFT 全局变量已被弃用。

TexManager#

TexManager.serifTexManager.sans_serifTexManager.cursiveTexManager.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.strpdate2numdates.bytespdate2num (请改用 time.strptimedateutil.parser.parsedates.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_csvnumpy.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() 中未使用的参数 shapeimlim 现在已被移除。所有在 extent 之后的参数现在都是仅关键字参数。

  • BboxImage 的未使用参数 interp_at_native 已被移除。

  • 参数 usetex 已从 TextToPath.get_text_path 中移除。请改用 ismath='TeX'

  • show() 的参数 block 现在是仅关键字参数,不再接受任意参数或关键字参数。

  • 参数 frameon 已从 Figure.savefig 中移除。使用 facecolor="none" 以获得透明背景。

  • 不再支持将 wx.EvtHandler 作为第一个参数传递给 backend_wx.TimerWx;现在 TimerWx 的签名与 TimerBase 一致。

  • boxplotbxpmanage_xticks 参数已重命名为 manage_ticks

  • hist2dnormed 参数已重命名为 density

  • Annotations 参数已重命名为 text

  • 对于 bezier 中所有支持 tolerance 参数的函数,该参数已重命名为 tolerance

  • axis("normal") 不再支持。请改用等效的 axis("auto")

  • axis() 不再接受任意关键字参数。

  • Axis.set_ticklabels() 除了 ticklabels 之外,不接受其他任意位置参数。

  • mpl_toolkits.mplot3d.art3d.Poly3DCollection.set_zsort 不再接受值 True。请传递等效值 'average' 代替。

  • AnchoredText 不再接受 horizontalalignmentverticalalignment 关键字参数。

  • ConnectionPatch 不再接受 arrow_transmuterconnector 关键字参数,这些参数自 3.0 版本以来没有任何作用。

  • FancyArrowPatch 不再接受 arrow_transmuterconnector 关键字参数,这些参数自 3.0 版本以来没有任何作用。

  • TextPath 不再接受任意的位置或关键字参数。

  • MaxNLocator.set_params() 不再接受任意关键字参数。

  • pie 不再接受并压缩非一维输入;将一维输入传递给 x 参数。

  • 不再支持将形状为 (n, 1) 的误差数组传递给 Axes.errorbar();请改为传递一维数组。

rcParams#

  • text.latex.unicode rcParam 已被移除,没有替代品。Matplotlib 现在始终支持 usetex 中的 unicode。

  • savefig.frameon rcParam 已被移除。设置 rcParams["savefig.facecolor"] (default: 'auto') 为 "none" 以获得透明背景。

  • pgf.debugverbose.fileoverbose.verbose.level 这些没有效果的 rcParams 已被移除。

  • 设置 rcParams["mathtext.default"] (default: 'it') 为 "circled" 的支持已被移除。

环境变量#

  • MATPLOTLIBDATA (无替换)。

mathtext#

  • \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 输出一致。