Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020
影响面向外部的API的Matplotlib最新版本的更改日志。如果更新matplotlib会破坏脚本,那么这个列表可以帮助您找出导致破坏的原因,以及如何通过更新代码来修复它。有关旧版本中的API更改,请参阅 旧API更改 .
有关添加到matplotlib的新功能,请参见 Matplotlib 3.0.3的新功能 .
本页列出了Matplotlib最新版本的API更改。
注解
下面的列表是“next_api_changes”文件夹中各个文件的目录。当释放时
- 对于次要版本和主要版本,应将下面的全文列表移到其自己的“prev-api-changes”文件中,在顶部添加用于bug修复版本的部分。
- “next-api-changes”中的所有文件都应移动到此页底部
- 这个注释和下面的目录树应该被注释掉。
matplotlib.font_manager.win32InstalledFonts
如果找不到字体,则返回空列表而不是无。
通过以下方式切换后端 matplotlib.use
现在默认情况下是允许的,无论 matplotlib.pyplot
已导入。如果用户尝试从已启动的交互式后端切换到其他交互式后端,则会引发importError。
tight_layout.auto_adjust_subplotpars
可以返回 None
现在,如果新的子图参数将轴折叠为零宽度或高度。这防止 tight_layout
不会被执行。同样地 tight_layout.get_tight_layout_figure
将不返回。
Matplotlib3只支持python 3.5和更高版本。
加载后端模块失败 (macosx
基于非框架构建和 gtk3
当无头运行时)现在上升 ImportError
而不是 RuntimeError
和 TypeError
,分别)。
现在鼓励与交互框架集成的第三方后端定义 required_interactive_framework
全局值设置为以下值之一:“qt5”、“qt4”、“gtk3”、“wx”、“tk”或“macosx”。这些信息将用于确定是否可以从后端切换到另一个后端(具体来说,它们是否使用相同的交互框架)。
Axes.hist2d
now uses pcolormesh
instead of pcolorfast
¶Axes.hist2d
现在使用 pcolormesh
而不是 pcolorfast
,这将改进日志轴的处理。请注意,返回的 形象 现在是类型 QuadMesh
而不是 AxesImage
.
matplotlib.axes.Axes.get_tightbbox
现在包括所有艺术家¶对于Matplotlib 3.0, all 艺术家现在包含在由返回的边界框中 matplotlib.axes.Axes.get_tightbbox
.
matplotlib.axes.Axes.get_tightbbox
添加新的Kwarg bbox_extra_artists
手动指定轴上要包含在紧边界框计算中的艺术家列表。
布局工具如 Figure.tight_layout
, constrained_layout
和 fig.savefig('fname.png', bbox_inches="tight")
使用 matplotlib.axes.Axes.get_tightbbox
确定图形上每个轴的边界并调整轴之间的间距。
在Matplotlib 2.2中 get_tightbbox
开始包括在轴上的传说,但仍然排除了其他一些艺术家,如文字,可能会超过轴。这已扩展到包括 all 艺术家。
此新默认值可以通过以下三种方式之一覆盖:
fig.legend()
而不是 ax.legend()
(也许使用 get_legend_handles_labels
从父轴收集控制柄和标签)。artist.set_in_layout(False)
.bbox_extra_artists
.Text.set_text
带字符串参数 None
将字符串设置为空¶Text.set_text
当传递的字符串值为 None
将字符串设置为 "None"
,因此后续调用 Text.get_text
会返回含糊不清的 "None"
字符串。
此更改设置传递的文本对象 None
有空字符串,以便 Text.get_text
返回空字符串。
Axes3D.get_xlim
, get_ylim
和 get_zlim
现在返回一个元组¶他们以前返回了一个数组。返回元组与二维轴的行为一致。
font_manager.list_fonts
现在遵循平台的案例折叠语义¶也就是说,它只在Windows上不敏感。
bar
/ barh
不再接受 left
/ bottom
作为第一个命名的参数¶这些参数在2.0中重命名为 x
/ y
更改默认对齐方式后 edge
到 center
.
style='comma'
到 ticklabel_format()
从未得到支持。现在升起 ValueError
像所有其他不支持的样式一样,而不是 NotImplementedError
.xmin
或 xmax
论据 set_xlim()
将静默覆盖 left
和 right
争论。 set_ylim()
以及3D等效物(例如 set_zlim3d()
)有相应的问题。这个 _min
和 _max
参数现在已被弃用,并且 TypeError
如果它们重写前面的限制参数,则将引发。Axes.margins
¶matplotlib.axes.Axes.margins()
和 mpl_toolkits.mplot3d.Axes3D.margins()
不再接受任意关键字。 TypeError
因此,如果通过未知的禁运,将被提起;以前,它们将被静默地忽略。
如果传递的位置参数太多, TypeError
将被提升而不是 ValueError
,以与其他呼叫签名冲突保持一致。
Axes3D.margins
现在提出 TypeError
如果只传递了两个位置参数,则不会发出拒绝警告。只提供 x
和 y
页边距,使用关键字参数。
PEP 3102 描述只包含关键字的参数,这些参数允许matplotlib提供显式调用签名-我们以前在这里使用过 *args, **kwargs
和 kwargs.pop
,我们现在可以公开命名参数。在某些地方,未知的禁运以前被忽略了,但现在上升了。 TypeError
因为 **kwargs
已删除。
matplotlib.axes.Axes.stem()
不再接受未知关键字,并引发 TypeError
而不是发出贬值。matplotlib.axex.Axes.stem()
现在,在传递未处理的位置参数时引发类型错误。如果传递了两个或多个参数(即x,y, [林菲特] ,…)和y不能转换为数组,将引发错误,而不是将x视为y,y视为linefmt。mpl_toolkits.axes_grid1.axes_divider.SubPlotDivider()
加薪 TypeError
而不是 Exception
当经过未知的关卡。matplotlib.testing.decorators中的decorator和类不再破坏退出时的警告过滤器。相反,它们还原在测试开始之前存在的警告过滤器,使用 warnings.catch_warnings
.
这个 FigureManagerPdf
, FigureManagerPS
和 FigureManagerSVG
类,以前是空的 FigureManagerBase
(即,不添加或重写任何属性或方法)现在是的直接别名 FigureManagerBase
.
image.thumbnail
¶当与呼叫时 preview=False
, image.thumbnail
之前返回了一个图形,其canvas类是根据输出文件扩展名设置的。它现在返回一个以画布类为基的图形 FigureCanvasBase
(依赖于 FigureCanvasBase.print_figure
)以正确处理画布切换)。
作为这一变化的副作用, image.thumbnail
现在还支持.ps、.eps和.svgz输出。
FuncAnimation
现在根据他们的Zorder绘制艺术家¶FuncAnimation
now draws artists returned by the user- function according to their zorder when using blitting, instead of using the order in which they are being passed. However, note that only zorder of passed artists will be respected, as they are drawn on top of any existing artists (see #11369) .
现在,轮廓和轮廓的轮廓级别选择相同;以前,对于轮廓,删除了数据范围之外的级别。(例外:如果在数据范围内找不到等高线,则 levels
属性替换为仅包含数据范围最小值的列表。)
当使用指定为目标数字而不是列表的级别调用轮廓,并使用“扩展”Kwarg时,将选择级别,以便某些数据通常会落在扩展范围内。
当使用 LogNorm
或A LogLocator
现在,它将使用几何平均值而不是轮廓级别的算术平均值来选择颜色。
修复了一个错误,其中最后一行和最后一列数据位于 streamplot
正在被丢弃。
AutoDateLocator
克瓦格 interval_multiples 到 True
¶日期刻度线定位器的默认值, dates.AutoDateLocator
克瓦格 interval_multiples 被设定为 False
在许多情况下,这会导致外观不好看的自动滴答声。好得多 interval_multiples=True
是新的默认值。请参阅下面的内容以恢复旧行为:
Axes.get_position
如果相位改变,现在返回实际位置¶Axes.get_position
用于返回原始位置,除非已触发绘图或 Axes.apply_aspect
被召唤了,即使是Kwarg 起初的 被设定为 False
. 现在 Axes.apply_aspect
叫做这样 ax.get_position()
将返回新的修改位置。要获得旧的行为,请使用 ax.get_position(original=True)
.
如果颜色条是由非轮廓或没有边界的可映射表生成的,或者未指定边界,则颜色条标记现在可根据颜色条的大小进行调整。如果指定了边界等,颜色栏将保持原始行为。
使用时 hexbin
使用对数色标进行绘图时,颜色条刻度现在可以正确地进行对数缩放。以前,刻度值是线性刻度对数(计数数)。
以前使用pgf后端的行为是将文本指定为黑色,以实际成为呈现pgf文件的任何内容的默认颜色(当然,这通常是黑色的)。新的行为是,不管默认颜色是什么,黑色文本都是黑色的。但是,这意味着没有办法恢复渲染器的默认颜色。
rcdefaults
, rc_file_defaults
, rc_file
¶RC修饰符函数 rcdefaults
, rc_file_defaults
和 rc_file
现在忽略 matplotlib.style.core.STYLE_BLACKLIST
集合。特别是,这可以防止 backend
和 interactive
这些函数不正确地修改了RCPARAM。
CallbackRegistry
现在使用stdlib存储回调 WeakMethod
的S¶特别是,这意味着 CallbackRegistry.callbacks[signal]
现在是回调ID到的映射 WeakMethod
s(即,首先调用它们时不需要参数来检索方法本身)。
rcparam现在默认为true,已弃用(即,在未来版本的maplotlib中,始终支持unicode输入)。
此外,底层实现现在使用 \usepackage[utf8]{{inputenc}}
而不是 \usepackage{{ucs}}\usepackage[utf8x]{{inputenc}}
.
ArtistInspector.get_aliases
以前返回的别名集为 {{fullname: {{alias1: None, alias2: None, ...}}}}
. dict-to-none映射用于模拟早期版本的Python中的集合。它现在已经被一套替换了,即 {{fullname: {{alias1, alias2, ...}}}}
.
此值也存储在 ArtistInspector.aliasd
也发生了同样的变化。
pytz
作为依赖¶自从 dateutil
和 pytz
两者都提供时区,Matplotlib已经依赖于 dateutil
,Matplotlib现在将使用 dateutil
内部时区,并放弃对 pytz
. 同时 dateutil
时区是首选的(并且目前在python文档中推荐),明确使用 pytz
仍然支持区域。
以下模块已弃用:
matplotlib.compat.subprocess
. 这是一个python 2解决方案,但是所有功能现在都可以在python 3标准库中找到。 subprocess
.matplotlib.backends.wx_compat
. python 3只与wxpython 4兼容,因此可以放弃对wxpython 3或更早版本的支持。不推荐使用以下类、方法、函数和属性:
RcParams.msg_depr
, RcParams.msg_depr_ignore
,
RcParams.msg_depr_set
, RcParams.msg_obsolete
,
RcParams.msg_backend_obsolete
afm.parse_afm
backend_pdf.PdfFile.texFontMap
backend_pgf.get_texcommand
backend_ps.get_bbox
backend_qt5.FigureCanvasQT.keyAutoRepeat
(直接检查) event.guiEvent.isAutoRepeat()
在事件处理程序中决定是否处理自动重复的按键)。backend_qt5.error_msg_qt
, backend_qt5.exception_handler
backend_wx.FigureCanvasWx.macros
backends.pylab_setup
cbook.GetRealpathAndStat
, cbook.Locked
cbook.is_numlike
(use isinstance(..., numbers.Number)
instead),
cbook.listFiles
, cbook.unicode_safe
container.Container.set_remove_method
,contour.ContourLabeler.cl
, .cl_xy
, and .cl_cvalues
dates.DateFormatter.strftime_pre_1900
, dates.DateFormatter.strftime
font_manager.TempCache
image._ImageBase.iterpnames
使用 interpolation_names
改为属性。(这会影响继承自 _ImageBase
包括 FigureImage
, BboxImage
和 AxesImage
)mathtext.unichr_safe
(使用) chr
相反)patches.Polygon.xy
table.Table.get_child_artists
(使用) get_children
相反)testing.compare.ImageComparisonTest
, testing.compare.compare_float
testing.decorators.CleanupTest
,
testing.decorators.skip_if_command_unavailable
FigureCanvasQT.keyAutoRepeat
(直接检查) event.guiEvent.isAutoRepeat()
在事件处理程序中决定是否处理自动重复的按键)FigureCanvasWx.macros
_ImageBase.iterpnames
使用 interpolation_names
改为属性。(这会影响继承自 _ImageBase
包括 FigureImage
, BboxImage
和 AxesImage
)patches.Polygon.xy
texmanager.dvipng_hack_alpha
text.Annotation.arrow
Legend.draggable()
, in favor of Legend.set_draggable()
Legend.draggable
在将来的版本中可能会作为属性重新引入)textpath.TextToPath.tex_font_map
matplotlib.cbook.deprecation.mplDeprecation
将在将来的版本中删除。它只是一个别名 matplotlib.cbook.deprecation.MatplotlibDeprecationWarning
. 请使用 MatplotlibDeprecationWarning
必要时直接。matplotlib.cbook.Bunch
类已被弃用。相反,使用 types.SimpleNamespace
来自提供相同功能的标准库。Axes.mouseover_set
现在是冻结集,已弃用。直接操纵艺术家的 .mouseover
属性来更改鼠标悬停状态。以下关键字参数已弃用:
verts
到 Axes.scatter
(使用) marker
相反)obj_type
到 cbook.deprecated
不推荐使用以下调用签名:
wx.EvtHandler
作为第一个论点 backend_wx.TimerWx
以下RCPARAM已弃用:
examples.directory
(使用) datapath
相反)pgf.debug
(PGF后端依赖于日志记录)text.latex.unicode
(现在总是这样)(n, 3)
不推荐使用指定圆标记的标记样式。使用 "o"
相反。([(x0, y0), (x1, y1), ...], 0)
指定自定义标记路径的标记样式已被弃用。使用 [(x0, y0), (x1, y1), ...]
相反。LocatableAxes
工具包中¶这个 LocatableAxes
工具箱中的类已被弃用。底座 Axes
类为所有子类提供相同的功能,因此不再需要这些混合。相关函数也已弃用。明确地:
mpl_toolkits.axes_grid1.axes_divider.LocatableAxesBase
:无特定替换;使用任何其他 Axes
-直接派生类。mpl_toolkits.axes_grid1.axes_divider.locatable_axes_factory
:无特定替换;使用任何其他 Axes
-直接派生类。mpl_toolkits.axes_grid1.axes_divider.Axes
使用 mpl_toolkits.axes_grid1.mpl_axes.Axes
直接。mpl_toolkits.axes_grid1.axes_divider.LocatableAxes
使用 mpl_toolkits.axes_grid1.mpl_axes.Axes
直接。mpl_toolkits.axisartist.axes_divider.Axes
使用 mpl_toolkits.axisartist.axislines.Axes
直接。mpl_toolkits.axisartist.axes_divider.LocatableAxes
使用 mpl_toolkits.axisartist.axislines.Axes
直接。设置或取消设置 hold
(deprecated in version 2.0 )现在已完全删除。Matplotlib现在总是表现得好像 hold=True
. 要清除轴,可以手动使用 cla()
或清除整个图形使用 clf()
.
已删除以下已弃用的API元素:
knownfailureif
和 remove_text
已从中删除 matplotlib.testing.decorators
.testing.noseclasses
也被移除了。matplotlib.checkdep_tex
, matplotlib.checkdep_xmllint
backend_bases.IdleEvent
cbook.converter
, cbook.tostr
, cbook.todatetime
, cbook.todate
, cbook.tofloat
, cbook.toint
, cbook.unique
, cbook.is_string_like
, cbook.is_sequence_of_strings
, cbook.is_scalar
, cbook.soundex
, cbook.dict_delall
, cbook.get_split_ind
, cbook.wrap
, cbook.get_recursive_filelist
, cbook.pieces
, cbook.exception_to_str
, cbook.allequal
, cbook.alltrue
, cbook.onetrue
, cbook.allpairs
, cbook.finddir
, cbook.reverse_dict
, cbook.restrict_dict
, cbook.issubclass_safe
, cbook.recursive_remove
, cbook.unmasked_index_ranges
, cbook.Null
, cbook.RingBuffer
, cbook.Sorter
, cbook.Xlator
,font_manager.weight_as_number
, font_manager.ttfdict_to_fnames
pyplot.colors
, pyplot.spectral
rcsetup.validate_negative_linestyle
, rcsetup.validate_negative_linestyle_legacy
,testing.compare.verifiers
, testing.compare.verify
testing.decorators.knownfailureif
,
testing.decorators.ImageComparisonTest.remove_text
tests.assert_str_equal
, tests.test_tinypages.file_same
texmanager.dvipng_hack_alpha
,_AxesBase.axesPatch
, _AxesBase.set_color_cycle
,
_AxesBase.get_cursor_props
, _AxesBase.set_cursor_props
_ImageBase.iterpnames
FigureCanvasBase.start_event_loop_default
;FigureCanvasBase.stop_event_loop_default
;Figure.figurePatch
,FigureCanvasBase.dynamic_update
, FigureCanvasBase.idle_event
,
FigureCanvasBase.get_linestyle
, FigureCanvasBase.set_linestyle
FigureCanvasQTAggBase
FigureCanvasQTAgg.blitbox
FigureCanvasTk.show
(备选: FigureCanvasTk.draw
)FigureManagerTkAgg
(备选: FigureManagerTk
)NavigationToolbar2TkAgg
(备选: NavigationToolbar2Tk
)backend_wxagg.Toolbar
(备选: backend_wxagg.NavigationToolbar2WxAgg
)RendererAgg.debug()
EngFormatter.format_eng
frac
到 PolarAxes.set_theta_grids
已删除以下API元素:
backend_cairo.HAS_CAIRO_CFFI
sphinxext.sphinx_version
Matplotlib文档使用了专有的sphinx指令 htmlonly::
和 latexonly::
. 这些已被标准斯芬克斯指令取代 only:: html
和 only:: latex
. 此更改不会影响任何用户。只有在文档中使用了专有指令的下游包维护人员才必须切换到sphinx指令。
已删除从lib/mpl_示例到../examples的符号链接。这不是作为可导入包安装的,不应影响最终用户,但这可能需要下游包装商进行调整。内容仍然是可用的顶级示例目录。