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_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 同时为二维且列数不同的情况#
之前,调用 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"]
(default: []
) 自行配置快捷方式。
箭头的自动缩放#
调用 ax.arrow() 现在会自动缩放坐标轴。
set_tick_params(label1On=False)
现在也会使偏移文本(如果有的话)不可见#
... 因为偏移文本很少能在没有刻度标签的情况下被解释。
Axes.annotate
和 pyplot.annotate
参数名称已更改#
参数 s
在 Axes.annotate
和 pyplot.annotate
中被重命名为 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" 作为 Slider
的 valfmt 参数。
为 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(Axes.legend
和 pyplot.legend
)和 Figure(Figure.legend
和 pyplot.figlegend
)上生成的图例。Figure 图例也不再接受不支持的 'best'
位置。以前,无效的 Axes 位置会使用 'best'
,而无效的 Figure 位置会使用 'upper right'
。
传递 Line2D 的 drawstyle 与 linestyle 已被移除#
使用 plt.plot(..., linestyle="--", drawstyle="steps")
代替 plt.plot(..., linestyle="steps--")
。ds
也是 drawstyle
的别名。
大写颜色字符串#
支持将单字母颜色("rgbcmykw" 中的一个)作为大写字符传递的功能已被移除;这些颜色现在区分大小写(小写)。
tight/constrained_layout 不再担心标题太宽的问题#
tight_layout 和 constrained_layout 缩小轴以适应轴上的“装饰”。然而,如果在 x 方向上 xlabel 或标题太长,使轴在 x 方向上更小并不能解决问题。两者的行为都已更改,以忽略布局逻辑中标题和 xlabel 的宽度以及 ylabel 的高度。
这也意味着为 axes.Axes.get_tightbbox
和 axis.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.savefig
的 facecolor 和 edgecolor 参数,意味着“使用图形当前的 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.vlines
和 pyplot.hlines
的 colors 参数默认值更改#
colors 参数现在默认值为 rcParams["lines.color"]
(default: '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
#
这些属性已被弃用,以与 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_filehandle
和 cbook.open_file_cm
的包含 "U" 的标志#
请从传递给 cbook.to_filehandle
和 cbook.open_file_cm
的标志中移除“U”。这与在 Python 3.9 中从 open
中移除它们是一致的。
PDF 和 PS 字符跟踪内部机制#
RendererPdf
、PdfFile
和 RendererPS
的 used_characters
属性和 track_characters
及 merge_used_characters
方法已被弃用。
不区分大小写的帽样式和连接样式#
请以小写形式传递 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
#
此属性已弃用。
恢复弃用的 *min, *max 关键字参数到 set_x/y/zlim_3d()
#
这些关键字参数在3.0版本中已被弃用,与 set_xlim()
/ set_ylim()
中的相应参数一同被弃用。2D版本的弃用已在3.1版本中被恢复。
cbook.local_over_kwdict
#
此函数已弃用。请改用 cbook.normalize_kwargs
。
将单数和复数形式的 colors、linewidths、linestyles 传递给 Axes.eventplot
#
将来传递例如 linewidth 和 linewidths 都会引发 TypeError。
将 rcParams["text.latex.preamble"]
(default: ''
) 或 rcParams["pdf.preamble"]
设置为非字符串#
这些 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
不再设置艺术家的自定义-contain()检查。
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
#
此代码已弃用。
必需的, 禁止的 和 允许的 参数 cbook.normalize_kwargs
#
这些参数已被弃用。
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 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”也会影响 LogTransform
、InvertedLogTransform
、SymmetricalLogTransform
等。
要在 loglog
图中为 x 轴和 y 轴使用 不同 的基数,可以使用例如 ax.set_xscale("log", base=10); ax.set_yscale("log", base=2)
。
DraggableBase.artist_picker
#
此方法已弃用。如果您之前在子类中重新实现了它,请使用 Artist.set_picker
来设置艺术家的选择器。
clear_temp 是 FileMovieWriter
的参数和属性#
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"]
(default: '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.draw
的额外参数已被弃用。
DraggableBase.on_motion_blit
#
此方法已弃用。DraggableBase.on_motion
现在同时处理 blitting 和非 blitting 的情况。
传递破折号偏移量为 None#
通过传递一个 (偏移, (开长度, 关长度, 开长度, 关长度, ...))
对作为 Line2D
和 LineCollection
的 linestyle 属性,可以实现对虚线模式的精细控制。以前,某些API会将 offset = None
视为 offset = 0
的同义词,但这从未在所有情况下实现,例如在矢量输出中。对 offset = None
的支持已被弃用,请将偏移设置为0。
RendererCairo.fontweights
, RendererCairo.fontangles
#
... 已被弃用。
autofmt_xdate(which=None)
#
这已被弃用,请使用其更明确的同义词 which="major"
代替。
JPEG 选项#
savefig
的 quality、optimize 和 progressive 关键字参数,这些参数仅在保存为 JPEG 时使用,已被弃用。rcParams["savefig.jpeg_quality"]
同样已被弃用。
这些选项现在应直接通过 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
)。
set_factor
方法位于 mpl_toolkits.axisartist
定位器中#
set_factor
方法是 mpl_toolkits.axisartist
定位器(与“标准” Matplotlib 刻度定位器不同)已被弃用。
widgets.SubplotTool
回调和轴#
widgets.SubplotTool
的 funcleft
、funcright
、funcbottom
、functop
、funcwspace
和 funchspace
方法已被弃用。
widgets.SubplotTool
的 axleft
、axright
、axbottom
、axtop
、axwspace
和 axhspace
属性已被弃用。如果需要,请访问相应滑块的 ax
属性。
mathtext Glue
辅助类#
Fil
、Fill
、Filll
、NegFil
、NegFill
、NegFilll
和 SsGlue
类在 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.nrows
、GridSpec.ncols
、SubplotSpec.rowspan
和 SubplotSpec.colspan
属性。
基于 Qt4 的后端#
qt4agg 和 qt4cairo 后端已被弃用。Qt4 在2015年已达到生命周期终点,并且没有为新版本的Python发布。请考虑切换到Qt5。
fontdict 和 minor 参数在 Axes.set_xticklabels
和 Axes.set_yticklabels
中将成为仅关键字参数#
Figure.subplots
除 nrows 和 ncols 外的所有参数将成为仅关键字参数#
这避免了在表示 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.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
#
设置 eventplot()
或 EventCollection
的 orientation 为 "none" 或 None 已被弃用;请改为设置为 "horizontal"。此外,两种方向("horizontal" 和 "vertical")在将来将区分大小写。
minor 参数在 Axis.get_ticklocs
中将成为仅关键字参数#
按位置传递此参数已被弃用。
不区分大小写的属性#
在 Artist.set
和 Artist.update
中将大写或混合大小写的属性名称规范化为小写已被弃用。未来,属性名称将按原样传递,允许传递诸如 patchA 或 UVC 的名称。
ContourSet.ax
, Quiver.ax
#
为了与其他艺术家保持一致,这些属性已被弃用,取而代之的是 ContourSet.axes
和 Quiver.axes
。
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
半径和起始角度#
将 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 的纪元。
axes_grid1.CbarAxes
属性#
cbid
和 locator
属性已被弃用。请使用 mappable.colorbar_cid
和 colorbar.locator
,如同标准色条一样。
qt_compat.is_pyqt5
#
此功能在即将发布的 PyQt6 版本中已被弃用。可以使用 QtCore.qVersion()
检查 Qt 版本。
通过 Artist.set
重新排序参数#
在未来的版本中,Artist.set
将按照给定的顺序应用艺术家属性。这仅影响 颜色、边缘颜色、面颜色 以及对于 Collection
的 透明度 属性之间的交互:现在需要首先传递 颜色 属性,以避免覆盖其他属性。这与例如 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"
,与其他支持 ismath
值为 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
已被移除。参数
usetex
已从TextToPath.get_text_path
中移除。请改用ismath='TeX'
。show()
的参数block
现在是仅关键字参数,不再接受任意参数或关键字参数。参数
frameon
已从Figure.savefig
中移除。使用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
参数。不再支持将形状为 (n, 1) 的误差数组传递给
Axes.errorbar()
;请改为传递一维数组。
rcParams#
text.latex.unicode
rcParam 已被移除,没有替代品。Matplotlib 现在始终支持 usetex 中的 unicode。savefig.frameon
rcParam 已被移除。设置rcParams["savefig.facecolor"]
(default:'auto'
) 为 "none" 以获得透明背景。pgf.debug
、verbose.fileo
和verbose.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 输出一致。