3.2.0 的 API 变更#

行为变化#

减少 rcParams["axes.formatter.limits"] (default: [-5, 6]) 的默认值#

rcParams["axes.formatter.limits"] (default: [-5, 6]) 的默认值从 -7, 7 改为 -5, 6 以提高可读性。

(Source code, 2x.png, png)

matplotlib.colorbar.Colorbar 对所有可映射对象使用未归一化的轴#

在3.0之前,matplotlib.colorbar.Colorbar (colorbar) 将所有轴的限制标准化在0到1之间,并使用自定义的刻度器来处理颜色条刻度的标注。3.0之后,从*非*等高线构建的颜色条的轴限制在mappable的norm的``vmin``和``vmax``之间,并且刻度器成为普通轴刻度器的子类。

这个版本的 Matplotlib 扩展到了由等高线创建的可映射对象,并允许坐标轴在等高线的最低边界和最高边界之间运行。

在0和1之间进行归一化的代码将需要修改。

MovieWriterRegistry#

MovieWriterRegistry 现在在返回写入器类之前总是检查它们的可用性。例如,如果希望在不执行后续写入器的可用性检查的情况下获取第一个可用的写入器,现在可以通过迭代注册表来实现,这将产生可用类的名称。

自动扩展#

Matplotlib 过去在每次绘图(plot()bar() 等)调用后都会重新计算自动缩放的限制。现在它只在实际渲染画布时,或当用户查询 Axes 限制时才这样做。这对于包含大量艺术家的图表来说是一个重大的性能改进。

特别是,这意味着通过 Axes.add_line, Axes.add_patch 等手动添加的艺术家将被自动缩放功能考虑在内,即使没有显式调用 Axes.autoscale_view

在某些情况下,这可能会导致报告不同的限制。如果这是一个问题,请考虑使用 fig.canvas.draw() 触发绘制。

基于 Collection 类的艺术家也改变了自动缩放的方式。以前,计算自动限制的方法 Collection.get_datalim 试图考虑集合中对象的大小,并使限制足够大以不裁剪任何对象,即对于 Axes.scatter,它会使限制足够大以不裁剪散点中的任何标记。当对象大小在物理空间或图形相对空间中指定时,这是有问题的,因为从物理单位到数据限制的转换需要知道数据限制,并且在应用新限制时变得无效。这是一个理论上可解的逆问题(如果对象在物理上小于轴),但额外的复杂性被认为不值得,特别是对于最常见的用例,即散点中的标记通常足够小,可以被默认的数据限制边距所容纳。

虽然新的行为在算法上更简单,但它取决于 Collection 对象的属性:

  1. offsets = None, transformAxes.transData 的子类:使用路径来自动设置限制(例如,在 Axes.streamplot 中的 LineCollection)。

  2. offsets != None,并且 offset_transformAxes.transData 的子类:

    1. transformAxes.transData 的子类:使用 path + offset 作为限制(即,用于 Axes.bar)。

    2. transform 不是 Axes.transData 的子类:只需使用偏移量来设置限制(例如用于散点图)

  3. 否则返回一个空的 Bbox

虽然这看起来很复杂,但逻辑只是使用数据空间中对象的信息来设定限制,而不是使用物理单位的信息。

对数刻度条形图() / 直方图() 自动限制#

当坐标轴已经使用对数刻度时,barhist 中的自动限制计算已更改,以匹配在调用 barhist 后将坐标轴切换为对数刻度时的计算,以及在调用 bar(..., log=True) / hist(..., log=True) 时的计算:如果至少有两个不同的条形高度,则将普通坐标轴的边距添加到它们(在对数刻度中);如果只有一个条形高度,则将其周围的坐标轴限制扩展一个数量级,然后应用坐标轴边距。

跨越多个行/列的轴标签#

Axes.label_outer 现在正确地保持了跨越多个行的 Axes 的 x 标签和刻度标签可见,只要它们覆盖了 Axes 网格的最后一行。(这与保持跨越多个列的 Axes 的 y 标签和刻度标签可见是一致的,只要它们覆盖了 Axes 网格的第一列。)

Axes.is_last_rowAxes.is_last_col 方法现在对于跨越多个行的 Axes 正确返回 True,只要它们分别覆盖最后一行或最后一列。同样,这与覆盖第一行或第一列的 Axes 的行为一致。

Axes.rowNumAxes.colNum 属性已被弃用,因为它们仅指 Axes 覆盖的第一个网格单元。相反,请使用新的 ax.get_subplotspec().rowspanax.get_subplotspec().colspan 属性,它们是表示子图覆盖的整个行和列范围的 range 对象。

(请注意,此处提到的所有方法和属性实际上仅存在于 AxesSubplot 子类中,该子类用于网格定位的 Axes,而不用于直接在绝对坐标中定位的 Axes。)

.GridSpec 类获得了 nrowsncols 属性,作为 GridSpec.get_geometry 返回参数的更明确的同义词。

定位器#

当生成的刻度数超过 Locator.MAXTICKS 时,Locator.raise_if_exceeds 的行为从引发 RuntimeError 变为发出 WARNING 级别的日志。

非奇异定位器#

Locator.nonsingular (在 mpl 3.1 中引入), DateLocator.nonsingular, 和 AutoDateLocator.nonsingular 现在返回一个范围 v0, v1 其中 v0 <= v1。此行为与 LogLocatorLogitLocator 子类的 nonsingular 实现一致。

get_data_ratio#

Axes.get_data_ratio 现在在计算y-to-x比例之前考虑了轴的比例(线性、对数、对数等)。这一变化使得固定比例可以应用于任何x和y比例的组合。

艺术家粘性边缘#

之前,艺术家的 sticky_edges 属性是一个值列表,如果轴限制与粘性边缘重合,则不会通过轴边距进行扩展(例如,这是防止图像周围添加边距的机制)。

sticky_edges 现在对边距应用有额外的效果:即使轴限制没有与粘性边缘重合,它也不能通过边距应用 跨越 粘性边缘——相反,边距只会扩展轴限制,直到它碰到粘性边缘。

此更改改进了显示 streamplot 的轴的边距:

  • 如果流线图延伸到向量场的边缘,那么轴的限制将被设置为与向量场的限制完全匹配(而之前有时会因为小的浮点误差而略有偏差)。

  • 如果流线图没有到达矢量场的边缘(例如,由于使用了 start_pointsmaxlength),那么边距扩展将不会再跨越矢量场的限制。

此更改也在内部使用,以确保极坐标图不会显示负的 r 值,除非用户确实传入了负值。

gid 在 svg 输出中#

之前,如果一个图形、轴、图例或其他艺术家设置了自定义的 gid (例如通过 .set_gid()),这在 svg 输出中不会被反映出来。相反,会显示一个默认的 gid,如 figure_1。现在这个问题已经修复,例如 fig.set_gid("myfigure") 在 svg 文件中会正确显示为 <g id="myfigure">。如果你依赖于 gid 具有默认格式,现在你需要确保不要设置艺术家的 gid 参数。

字体#

字体粗细猜测现在首先检查 FT_STYLE_BOLD_FLAG 的存在,然后再尝试匹配字体名称中的子字符串。特别是,这意味着 Times New Roman Bold 现在被正确检测为粗体,而不是正常粗细。

颜色类似的检查#

matplotlib.colors.is_color_like 过去对所有浮点数的字符串表示都返回 True。然而,只有值在 0-1 之间的才是有效颜色(表示灰度值)。is_color_like 现在对 0-1 范围外的浮点数字符串表示返回 False。

默认图像插值#

在 Matplotlib 中显示的图像之前使用的是最近邻插值,这会导致缩小和非整数放大时的混叠效应。

新的 rcParams["image.interpolation"] (default: 'auto') 默认值是新的选项“antialiased”。imshow(A, interpolation='antialiased') 在重采样 A 中的数据以进行显示(或保存到文件)时,如果 上采样率小于三倍且不是整数,将应用一个 Hanning 滤波器;下采样的数据在重采样时总是被平滑处理。

要恢复旧的行为,请将 rcParams["image.interpolation"] (default: 'auto') 设置为旧的默认值“nearest”(或指定 Axes.imshowinterpolation 关键字参数)

要始终获得抗锯齿行为,无论上/下采样率如何,请将 rcParams["image.interpolation"] (default: 'auto') 设置为 "hanning"(或其他可用滤镜之一)。

请注意,选择“hanning”滤波器是因为它只有适度的性能损失。抗锯齿效果可以通过其他滤波器得到改善。

rcParams#

当使用 RendererSVG 并且 rcParams["svg.image_inline"] == True 时,外部写入的图像现在使用一个单一的计数器,即使 renderer.basename 属性被覆盖,而不是每个 basename 一个计数器。

此更改仅会影响你如果使用了 rcParams["svg.image_inline"] = True (默认是 False)*并且* 手动修改了 renderer.basename

rcParams["axes.formatter.limits"] (default: [-5, 6]) 的默认值从 -7, 7 改为 -5, 6 以提高可读性。

add_subplot()#

Figure.add_subplot()pyplot.subplot() 不再接受 figure 关键字参数。它只有在传递的图像是 self 或当前图像时才能工作。

indicate_inset()#

在 <= 3.1.0 版本中,indicate_insetindicate_inset_zoom 被记录为返回一个由 ConnectionPatch 组成的 4-元组,而实际上它们返回的是一个长度为 4 的列表。

它们现在正确地返回一个四元组。indicate_inset 如果在没有提供可选的 inset_ax 的情况下,之前会引发错误;现在它可以成功完成,并返回 None 而不是 ConnectionPatch 的元组。

PGF 后端#

pgf 后端的 get_canvas_width_height 现在返回的是显示单位中的画布尺寸,而不是之前的英寸。鉴于代码库中其他部分对 get_canvas_width_height 的使用,新的行为是正确的。

pgf 后端现在如果 graphicx 的版本足够新以支持 interpolate 选项(这是自动检测的),则会使用 \includegraphics 来包含图像,而不是 \pgfimage

cbook#

cbook.warn_deprecated 的 "obj_type" 参数的默认值已从 "attribute"(一个从未在内部使用的默认值)更改为空字符串。

测试#

测试套件默认不再开启 Python 故障处理器。设置标准的 PYTHONFAULTHANDLER 环境变量来实现这一点。

后端 supports_blit#

后端不再需要显式定义标志 supports_blit 。这仅与后端开发者相关。后端过去需要定义标志 supports_blit 。现在不再需要这样做,因为blitting功能现在会自动检测。

异常更改#

对于输入类型不正确的情况,以下各种API现在会引发 TypeError 而不是 ValueErrorbackend_bases.GraphicsContextBase.set_clip_pathblocking_input.BlockingInput.__call__matplotlib.cm.register_cmapdviread.DviFontrcsetup.validate_hatch.rcsetup.validate_animation_writer_pathspines.Spinematplotlib.transforms 模块和 matplotlib.tri 包中的许多类,以及接受 norm 参数的 Axes 方法。

如果向 LogScale 传递了额外的 kwargs,现在将引发 TypeError 而不是 ValueError

mplot3d 自动注册#

mpl_toolkits.mplot3d 现在默认总是被注册。不再需要导入 mplot3d 来创建 3D 轴,使用

ax = fig.add_subplot(111, projection="3d")

SymLogNorm 现在有一个 base 参数#

之前,SymLogNorm 没有 base 关键字参数,其基数被硬编码为 base=np.e。这与 SymmetricalLogScale 的默认行为(默认为 base=10)以及文档中使用“十进制”一词的做法不一致。

在准备将默认基数改为10的过程中,调用 SymLogNorm 时若不使用新的 base 关键字参数,将会发出一个弃用警告。

弃用#

matplotlib.use#

matplotlib.use()warn 参数已被弃用(捕获后端切换失败时发出的 ImportError,并在需要时重新发出警告)。

plotfile#

.pyplot.plotfile 已被弃用,建议分别加载和绘制数据。使用 pandas 或 NumPy 加载数据,并使用 pandas 或 matplotlib 绘制结果数据。

axes 和 axis#

Axis.major.locatorAxis.minor.locatorAxis.major.formatterAxis.minor.formatter 设置为不是 LocatorFormatter 的子类的对象已被弃用。请注意,这些属性通常应使用 Axis.set_major_locatorAxis.set_minor_locator 等来设置,这些方法在传递错误类对象时已经会引发异常。

axis() 传递多个位置参数或不支持的关键字参数已被弃用(这些参数过去会被静默忽略)。

minor 参数将成为仅限关键字的参数#

使用 minor 参数作为 get_*ticks() / set_*ticks() 的位置参数已被弃用。它将在未来的版本中变为仅关键字参数。

axes_grid1#

mpl_toolkits.axes_grid1.colorbar 模块及其颜色条实现已被弃用,取而代之的是 matplotlib.colorbar ,因为前者基本上已被放弃,而后者是一个功能更丰富的替代品,具有几乎兼容的API(例如,支持以下附加关键字:panchorextendfracextendrect)。

主要区别在于:

  • 设置颜色条上的刻度是通过调用 colorbar.set_ticks 而不是 colorbar.cbar_axis.set_xtickscolorbar.cbar_axis.set_yticks 来完成的;colorbar()locator 参数已被弃用,取而代之的是其同义词 ``ticks``(该参数之前已经存在,并与 matplotlib.colorbar 保持一致)。

  • 颜色条的长轴可以通过 colorbar.xaxiscolorbar.yaxis 访问,具体取决于方向,而不是 colorbar.cbar_axis

  • 默认的刻度器不再是 MaxNLocator(5),而是一个 _ColorbarAutoLocator

  • 在单个 Axes 上多次绘制多个颜色条(例如在使用 ImageGrid 元素的 cax 属性时)是不支持的;如果你之前依赖于第二个颜色条覆盖第一个颜色条,你可以在绘制第二个颜色条之前调用 cax.cla() 来清除 Axes。

在弃用期间,可以将 mpl_toolkits.legacy_colorbar rcParam 设置为 True 以在 mpl_toolkits.axes_grid1 代码中使用 mpl_toolkits.axes_grid1.colorbar 并带有弃用警告(默认),或者设置为 False 以使用 matplotlib.colorbar

pad 大小传递为 None``(默认值)作为零的同义词传递给 `.axes_grid1.axes_divider.AxesDivider` ``append_axesnew_horizontalnew_vertical 方法已被弃用。在未来的版本中,None 的默认值将意味着“使用 rcParams["figure.subplot.wspace"] (default: 0.2) 或 rcParams["figure.subplot.hspace"] (default: 0.2)”(取决于方向)。明确传递 pad=0 以保持旧的行为。

Axes3D#

mplot3d.axis3d.get_flip_min_max 已被弃用。

axes3d.unit_bbox 已被弃用(请改用 Bbox.unit)。

axes3d.Axes3D.w_xaxis.w_yaxis.w_zaxis 已被弃用(请改用 .xaxis.yaxis.zaxis)。

matplotlib.cm#

cm.revcmap 已被弃用。使用 Colormap.reversed 来反转一个颜色映射。

cm.datad 不再包含以“未转换”形式存在的反转颜色映射条目。

axisartist#

mpl_toolkits.axisartist.grid_finder.GridFinderBase 已被弃用(它唯一的用途是被 GridFinder 类继承,该类在构造函数中提供了更多的默认值并直接设置了变换,因此 GridFinderBase 的方法被直接移到了 GridFinder 中)。

axisartist.axis_artist.BezierPath 已弃用(使用 patches.PathPatch 绘制任意路径)。

AxisArtist.line 现在是一个 patches.PathPatch 实例,而不是 BezierPath 实例。

从 axisartist Locators(这些 不是 “标准”刻度 Locators)返回等于 None 的因子,或者将等于 None 的因子传递给 axisartist Formatters(这些 不是 “标准”刻度 Formatters)已被弃用。请改为传递等于 1 的因子。

对于 mpl_toolkits.axisartist.axis_artist.AttributeCopier 类,构造函数、set_ref_artist 方法以及 get_attribute_from_ref_artistdefault_value 参数已被弃用。

构造函数的弃用意味着继承自 AttributeCopier 的类不应再调用其构造函数。

定位器#

未使用的 Locator.autoscale 方法已弃用(请改为将轴限制传递给 Locator.view_limits)。

动画#

以下 MovieWriterRegistry 类的方法和属性已被弃用:set_dirtyensure_not_dirtyreset_available_writersavail

smart_bounds()#

“smart_bounds” 功能已被弃用。这包括 Axis.set_smart_bounds()Axis.get_smart_bounds()Spine.set_smart_bounds()Spine.get_smart_bounds()

boxplot()#

Axes.boxplotcbook.boxplot_statswhis 参数设置为 "range" 以表示 "整个数据范围" 的做法已被弃用;请将其设置为 (0, 100)(这将被解释为百分位数)以达到相同的效果。

fill_between()#

fill_between()fill_betweenx() 中将标量传递给参数 where 已被弃用。虽然文档已经说明 where 必须与 x*(或 *y)的大小相同,但标量被接受并广播到 x 的大小。未来,不匹配的大小将引发 ValueError

scatter()#

传递 verts 参数给 axes.Axes.scatter 已被弃用;请改用 marker 参数。

tight_layout()#

renderer 参数在 Figure.tight_layout 中已被弃用;此方法现在始终使用缓存在 Figure 上的渲染器实例。

rcParams#

rcsetup.validate_animation_writer_path 函数已被弃用。

rcParams["savefig.format"] (default: 'png') 设置为 "auto" 已被弃用;请改用其同义词 "png"。

rcParams["text.hinting"] (default: 'force_autohint') 设置为 True 或 False 已被弃用;请改用它们的同义词 "auto" 或 "none"。

rcsetup.update_savefig_format 已弃用。

rcsetup.validate_path_exists 已弃用(使用 os.path.exists 检查路径是否存在)。

rcsetup.ValidateInterval 已被弃用。

日期#

dates.mx2num 已被弃用。

TK#

NavigationToolbar2Tk.set_active 已被弃用,因为它没有(可观察到的)效果。

WX#

FigureFrameWx.statusbarNavigationToolbar2Wx.statbar 已被弃用。可以通过调用标准的 wx 方法来获取状态栏(frame.GetStatusBar()toolbar.GetTopLevelParent().GetStatusBar())。

backend_wx.ConfigureSubplotsWx.configure_subplotsbackend_wx.ConfigureSubplotsWx.get_canvas 已被弃用。

PGF#

backend_pgf.repl_escapetextbackend_pgf.repl_mathdefault 已被弃用。

RendererPgf.latexManager 已弃用。

FigureCanvas#

FigureCanvasBase.draw_cursor (从未执行过任何操作,并且在任何后端中从未被重写)已被弃用。

FigureCanvasMac.invalidate 已被弃用,取而代之的是其同义词 FigureCanvasMac.draw_idle

各种 FigureCanvasFoo.print_foo 方法中的 dryrun 参数已被弃用。

QuiverKey 文档#

quiver.QuiverKey.quiverkey_doc 已弃用;请改用 quiver.QuiverKey.__init__.__doc__

matplotlib.mlab#

mlab.apply_windowmlab.stride_repeat 已被弃用。

字体#

font_manager.JSONEncoder 已弃用。使用 font_manager.json_dump 来转储 FontManager 实例。

font_manager.createFontList 已被弃用。现在可以使用 font_manager.FontManager.addfont 在指定路径注册字体。

matplotlib.ft2font.FT2Imageas_stras_rgba_stras_arrayget_widthget_height 方法已被弃用。在处理之前,请使用 np.asarrayFT2Image 转换为 NumPy 数组。

颜色#

函数 matplotlib.colors.makeMappingArray 不再被视为公共API的一部分。因此,它已被弃用。

使用单字符颜色字符串作为颜色序列(例如“rgb”)已被弃用。请改用显式列表。

比例尺#

ScaleBase 及其子类 LinearScaleSymmetricalLogScale 传递不支持的关键字参数已被弃用,并在 3.3 版本中将引发 TypeError

如果向 LogScale 传递了额外的关键字参数,现在将引发 TypeError 而不是 ValueError

测试#

matplotlib.testing.disable_internet 模块已被弃用。请使用(例如)pytest-remotedata 代替。

matplotlib.testing 中对基于 nose 的测试的支持已被弃用(如果在同时满足以下两个条件时使用了该模块中的装饰器,则会发出弃用警告:1) matplotlib 的 conftests 尚未被调用,2) nose 在 sys.modules 中)。

testing.is_called_from_pytest 已被弃用。

在弃用期间,要强制生成nose基础测试,请先导入nose。

matplotlib.testswitch_backend_warn 参数无效且已被弃用。

testing.jpl_units.UnitDbl.UnitDbl.checkUnits 已被弃用。

DivergingNorm 已重命名为 TwoSlopeNorm#

DivergingNorm 是一个误导性的名称;尽管该范数是在考虑到它可能会与发散色图一起使用的情况下开发的,但'发散'这个词并不能描述或唤起该范数的映射功能。由于该功能是单调的、连续的,并且是分段线性的,包含两个线段,因此该范数已被重命名为 TwoSlopeNorm

杂项#

matplotlib.get_home 已弃用(请改用 os.path.expanduser("~"))。

matplotlib.compare_versions 已被弃用(请改用 distutils.version.LooseVersion 的比较)。

matplotlib.checkdep_ps_distiller 已被弃用。

matplotlib.figure.AxesStack 被视为私有API,并将在未来版本中从公共API中移除。

BboxBase.is_unit 已被弃用(如有需要,请检查 Bbox 的范围)。

Affine2DBase.matrix_from_values(...) 已弃用。请改用(例如)``Affine2D.from_values(...).get_matrix()``。

style.core.is_style_filestyle.core.iter_style_files 已被弃用。

datapath rcParam#

请使用 get_data_path 代替。(rcParam 已被弃用,因为它不能被终端用户有意义地设置。)rcParam 从 3.2.0 版本开始无效,但仅在 3.2.1 版本中被弃用。在 3.2.1+ 版本中,如果在 matplotlibrc 文件中设置了 'datapath',它将被尊重,但此行为将在 3.3 版本中移除。

移除#

matplotlib.testing.determinism 模块,该模块没有公开的API,已被删除。

以下API元素已被移除:

  • backend_gtk3.PIXELS_PER_INCH

  • backend_pgf.re_escapetext, backend_pgf.re_mathdefault.

  • matplotlib.backends.tkaggmatplotlib.backends.windowingmatplotlib.backends.wx_compatmatplotlib.compat.subprocess 模块

  • RcParams.msg_depr, RcParams.msg_depr_ignore, RcParams.msg_depr_set, RcParams.msg_obsolete, RcParams.msg_backend_obsolete

  • afm.parse_afm (使用 afm.AFM 代替)

  • axes.Axes.mouseover_set

  • backend_cairo.ArrayWrapperbackend_cairo.RendererCairo.convert_path

  • backend_gtk3.FileChooserDialog.sorted_filetypes (请使用 sorted(self.filetypes.items()) 代替)

  • backend_pgf.get_texcommand

  • backend_pdf.PdfFile.texFontMap

  • backend_ps.get_bbox

  • backend_qt.FigureCanvasQt.keyAutoRepeat (请改用 event.guiEvent.isAutoRepeat), backend_qt.error_msg_qt, backend_qt.exception_handler

  • backend_wx.FigureCanvasWx.macros

  • backends.pylab_setup

  • cbook.Bunch (使用 types.SimpleNamespace 代替), cbook.Locked, cbook.unicode_safe, cbook.is_numlike (使用 isinstance(..., numbers.Number) 代替), cbook.mkdirs (使用 os.makedirs(..., exist_ok=True) 代替), cbook.GetRealpathAndStat (使用 cbook.get_realpath_and_stat 代替), cbook.listFiles

  • container.Container.set_remove_method

  • contour.ContourLabeler.cl, contour.ContourLabeler.cl_xy, contour.ContourLabeler.cl_cvalues (请使用 labelTexts, labelXYs, labelCValues 代替)

  • dates.DateFormatter.strftime, dates.DateFormatter.strftime_pre_1900

  • font_manager.TempCachefont_manager.FontManager.ttffilesfont_manager.FontManager.afmfiles

  • mathtext.unichr_safe (请使用 chr 代替)

  • patches.YAArrow (请使用 patches.FancyArrowPatch 代替)

  • sphinxext.plot_directive.remove_coding

  • table.Table.get_child_artists

  • testing.compare.compare_float, testing.decorators.CleanupTest, testing.decorators.ImageComparisonTest, testing.decorators.skip_if_command_unavailable, 支持基于nose的测试

  • text.Annotation.arrow (请使用 text.Annotation.arrow_patch 代替)

  • textpath.TextToPath.tex_font_map

  • ticker.Base, ticker.closeto, ticker.nearest_long

  • axes_grid1.axes_divider.LocatableAxesBaseaxes_grid1.axes_divider.locatable_axes_factoryaxes_grid1.axes_divider.Axes``(使用 ``axes_grid1.mpl_axes.Axes 代替),axes_grid1.axes_divider.LocatableAxes``(使用 ``axes_grid1.mpl_axes.Axes 代替)

  • axisartist.axes_divider.Axes, axisartist.axes_divider.LocatableAxes (请使用 axisartist.axislines.Axes 代替)

  • histnormed 关键字参数(请改用 density

  • 在指定标记时传递 (verts, 0)(..., 3) 分别指定路径或圆(相反,使用 verts"o"

  • rcParams["examples.directory"]

以下 matplotlib.backends.backend_pdf.PdfFile 的成员已被移除:

  • nextObject

  • nextFont

  • nextAlphaState

  • nextHatch

  • nextImage

  • alphaStateObject

在 Matplotlib 3.0 中引入的后端模块的 required_interactive_framework 属性已移至 FigureCanvas 类中,以便第三方画布子类可以继承它,并使其更容易了解画布类所需的交互框架。

backend_qt4.FigureCanvasQT5,它是 backend_qt5.FigureCanvasQT 的别名(但仅在 backend_qt4 中以该名称存在),已被移除。

开发变化#

Windows 构建#

之前,在构建 matplotlib._png 扩展时,构建脚本会将“png”和“z”添加到扩展的 .libraries 属性中(如果pkg-config信息不可用,这在Windows上尤其如此)。

特别是,这意味着Windows构建将查找名为 png.libz.lib 的文件;但libpng上游和zlib上游默认都不提供这些文件。(在Linux上,这将查找 libpng.solibz.so,这确实是标准名称。)

相反,在Windows上,我们现在查找 libpng16.libzlib.lib,这些是共享库的上游名称(截至libpng 1.6.x)。

对于静态链接构建,上游名称是 libpng16_static.libzlibstatic.lib;如果需要这样的构建,仍然需要手动重命名它们。

打包 DLL#

之前,可以通过将 Windows DLLs 复制到源代码树中,并在 setup.cfg 中设置 package_data.dlls 条目,将它们打包到 Matplotlib 的 wheel(或 sdist)中。

源代码树中复制的DLL现在总是被打包;package_data.dlls 条目不再起作用。如果你不想包含DLL,请不要将它们复制到源代码树中。