3.1.0的API更改

行为改变

Matplotlib.use

通过以下方式切换后端 matplotlib.use 现在默认情况下是允许的,无论 matplotlib.pyplot 已导入。如果用户尝试从已启动的交互式后端切换到其他交互式后端,则 ImportError 将被提升。

PathCollections中的无效点

使用创建的路径集合 scatter 现在跟踪无效点。以前,具有非限定(无限或nan)坐标的点不会包括在偏移中(由返回 PathCollection.get_offsets )的 PathCollection 创建的 scatter ,和具有非限定值的点(由 c kwarg)将不包含在数组中(由返回 PathCollection.get_array

这样的点现在包括在内,但是通过返回一个屏蔽数组来屏蔽。

如果 非有限地块 克瓦格 scatter 设置,则具有非限定值的点将使用 collections.PathCollection 的colormap(由设置 colors.Colormap.set_bad()

RBGA输入图像显示中的Alpha混合

RBGA图像的alpha通道现在独立于RGB通道重新采样。虽然这是一个错误修复,但它确实会更改输出,并可能导致某些下游图像比较测试失败。

自标定

在以“完整”十年(1、10、100等)绘制单个值的对数轴上,自动缩放现在围绕该点对称地扩展轴,而不是只在右侧添加十年。

对数刻度轴

当默认 LogLocator 将不会为一个轴生成记号(例如,限制在0.31到0.39之间的轴)或仅生成一个记号,它现在会回到线性上 AutoLocator 选择合理的勾选位置。

Figure.add_subplot 没有争论

调用 Figure.add_subplot() 没有用于什么作用的位置参数;这相当于调用 add_subplot(111) 相反。

bxp 和rcparams

bxp 现在尊重 rcParams["boxplot.boxprops.linewidth"] (default: 1.0) 即使当 patch_artist 已设置。以前,当 patch_artist 参数已设置, bxp 会忽略 rcParams["boxplot.boxprops.linewidth"] (default: 1.0) . 这是一个疏忽——尤其是, boxplot 没有忽视它。

主要/次要滴答碰撞

默认情况下,与主记号碰撞的次要记号现在处于隐藏状态。以前,某些定位器类 (LogLocatorAutoMinorLocator )包含自定义逻辑,以避免在将记号用作次要定位器时发出与主记号冲突的记号位置。这个逻辑现在转移到 Axis 类,并且无论定位器类如何使用。您可以通过 remove_overlaping_locs 属性对 Axis .

如果您同时依赖主刻度和次刻度标签显示在同一个刻度上,则可能需要更新代码。例如,以下代码片段:

import numpy as np
import matplotlib.dates as mdates
import matplotlib.pyplot as plt

t = np.arange("2018-11-03", "2018-11-06", dtype="datetime64")
x = np.random.rand(len(t))

fig, ax = plt.subplots()
ax.plot(t, x)
ax.xaxis.set(
    major_locator=mdates.DayLocator(),
    major_formatter=mdates.DateFormatter("\n%a"),
    minor_locator=mdates.HourLocator((0, 6, 12, 18)),
    minor_formatter=mdates.DateFormatter("%H:%M"),
)
# disable removing overlapping locations
ax.xaxis.remove_overlapping_locs = False
plt.show()

使用主刻度标记天,使用小刻度标记小时和分钟,并向主刻度标签添加新行,以避免它们撞到次要刻度标签上。设置 remove_overlapping_locs 酒店(也可通过 set_remove_overlapping_locs / get_remove_overlapping_locssetp )禁用删除重叠记号位置。

主要的刻度标签也可以调整为包括小时和分钟,因为次要刻度消失了,所以 major_formatter 可能是:

mdates.DateFormatter("%H:%M\n%a")

usetex支持

以前,如果 rcParams["text.usetex"] (default: False) 是真的,然后构造一个 TextPath 在非mathtext字符串上 usetex=False 将依赖于mathtext解析器(但不支持usetex!)解析字符串。不再调用mathtext解析器,这可能会导致字形位置的细微变化。

get_window_extents

matplotlib.axes.Axes.get_window_extent 用于返回略大于轴的边界框,可能是为了考虑脊椎上的记号。但是,它没有根据画布的dpi缩放tick的大小,也没有检查tick是否可见,或者在脊椎上。

现在 matplotlib.axes.Axes.get_window_extent 只返回轴范围,不填充刻度。

这种影响 matplotlib.axes.Axes.get_tightbbox 如果有没有记号标签的外部记号,它也会删除轴周围的(小)焊盘。

spines.Spine.get_window_extent 现在考虑脊椎上的蜱虫。

桑基

以前, Sankey.add 只接受一个字符串作为 标签 参数,如果它的长度等于流的数目,在这种情况下,它将为每个流使用一个字符串字符。

该行为已更改为与记录的行为相匹配:当传递单个字符串时,它将用于标记所有流。

FontManager 分数

font_manager.FontManager.score_weight 现在对其投入更加严格。以前,当权重字符串传递给 font_manager.FontManager.score_weight

  • 如果权重是整数的字符串表示,它将被转换为该整数,
  • 否则,如果权重不是标准权重名称,它将被值500(“正常”权重)自动替换。

font_manager.FontManager.score_weight 现在对这些输入引发一个异常。

文本对齐方式

文本对齐以前是不正确的,尤其是对于具有大下伸(即下标)和旋转文本的多行文本对象。这些已经被修复,并且变得更加一致,但是可能会使已经补偿了这些的旧代码不再具有正确的对齐方式。

大写颜色字符串

不赞成将单字母颜色(“rgbcmykw”之一)作为大写字符传递的支持已被弃用;在否决期过后,这些颜色将变为区分大小写(小写)。

目标是在使用 data 绘图方法的关键字;例如。 plot("X", "Y", data={{"X": ..., "Y": ...}}) 不会警告“Y”可能是一种颜色,在弃用期过后。

退化极限

当边界传递给 set_xlim 是退化的(即上下限值相等),用于“展开”边界的方法现在与绘图包含单个x值时的自动缩放行为相匹配,尤其应为非线性比例生成更好的限制。

plot 格式字符串分析

在某些情况下, plot 以前会接受指定多个线型的格式字符串(例如。 "---." 它指定了两者 "--""-." );只使用其中一个。现在会引发一个 ValueError 相反。

HTMLWriter

HTMLWriter构造函数更严格:它不再规范化 default_mode 以“循环”,但会出错。

原子力显微镜分析

根据AFM规范,AFM解析器不再截断 UnderlinePositionUnderlineThickness 字段到整数。

这个 Notice 字段(只能由不推荐的 afm.parse_afm API)不再解码为 str ,但却保留为 bytes ,以支持在该字段中使用非ASCII字符的不一致AFM文件。

Artist.set 关键字规范化

Artist.set 现在在对关键字进行排序之前对它们进行规范化。以前,它按字母顺序倒序排列关键字参数(使用一个特殊的大小写来放置 color 最后)在应用它们之前。

它现在在进行排序之前规范化别名(如上所述,对重复属性发出警告)(因此 c 也到最后)。

Axes.tick_params 参数检查

以前 Axes.tick_params 当一个病人 axis 提供了参数。此行为已更改为引发 ValueError 相反。

Axes.hist 输出

由多个空列表组成的输入现在将为每个列表返回一个直方图值列表。例如,输入 [[],[]] 将返回2个直方图值列表。以前,只返回一个列表。

backend_bases.Timer.remove_callback 未来签名更改

目前, backend_bases.Timer.remove_callback(func, *args, **kwargs) 删除以前由添加的回调 backend_bases.Timer.add_callback(func, *args, **kwargs) 但如果 *args, **kwargs 未传入(例如, Timer.remove_callback(func) ),然后使用匹配的 func 删除,而不管它是添加还是不添加 *args, **kwargs .

在未来的版本中, Timer.remove_callback 将始终使用后一种行为(不考虑 *args, **kwargs );要特别考虑它们,请将回调添加为 functools.partial 对象::

cb = timer.add_callback(functools.partial(func, *args, **kwargs))
# ...
# later
timer.remove_callback(cb)

backend_bases.Timer.add_callback 修改为返回 func 为了简化上面的用法(以前它返回None);这也允许将它用作装饰器。

新的API是仿效的 atexit.register / atexit.unregister .

StemContainer 性能提升

StemContainer 对象现在可以存储 LineCollection 对象而不是 Line2D 绘制干线的对象 stem . 这将大大提高显示和移动的性能 stem 阴谋。

这将成为matplotlib3.3中的默认行为。现在就使用它 use_line_collection 关键字参数 stem 可以设置为 True ::

ax.stem(..., use_line_collection=True)

可以从 LineCollection 使用 get_segements() . 见 LineCollection 用于检索集合属性的其他方法的文档。

ColorbarBase 遗传

matplotlib.colorbar.ColorbarBase is no longer a subclass of cm.ScalarMappable. This inheritance lead to a confusing situation where the cm.ScalarMappable passed to matplotlib.colorbar.Colorbar (colorbar) had a set_norm method, as did the colorbar. The colorbar is now purely a follower to the ScalarMappable norm and colormap, and the old inherited methods set_norm, set_cmap, set_clim are deprecated, as are the getter versions of those calls. To set the norm associated with a colorbar do colorbar.mappable.set_norm() etc.

FreeType和libpng搜索路径

这个 MPLBASEDIRLIST environment variables and basedirlist entry in setup.cfg have no effect anymore. Instead, if building in situations where FreeType or libpng are not in the compiler or linker's default path, set the standard environment variables CFLAGS/LDFLAGS 在Linux或OSX上,或 CL/LINK 在Windows上,指示相关路径。

有关详细信息,请参阅 安装指南 .

在同一调用中设置艺术家属性两次或更多

不推荐通过别名多次设置同一艺术家属性。以前,代码如下:

plt.plot([0, 1], c="red", color="blue")

会发出一个警告 ccolor 是彼此的别名,只保留 color 夸克。此行为已被弃用;在将来的版本中,这将引发一个TypeError,类似于Python传递两次关键字参数时的行为:

plt.plot([0, 1], c="red", c="blue")

此警告由 normalize_kwargs .

路径代码类型

Path code types like Path.MOVETO are now np.uint8 instead of int Path.STOP, Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE4 and Path.CLOSEPOLY are now of the type Path.code_type (np.uint8 by default) instead of plain int. This makes their type match the array value type of the Path.codes array.

matplotlibrc文件中的LaTeX代码

以前,rc文件密钥 pgf.preambletext.latex.preamble 使用逗号作为分隔符进行分析。这将破坏有效的 Latex 代码,例如:

\usepackage[protrusion=true, expansion=false]{microtype}

解析被修改为将完整的行传递给LaTeX系统,保留所有逗号。从Python脚本中传递一个字符串列表仍然可以正常工作。传递包含非字符串的列表现在将失败,而不是将结果强制为字符串。

Axes.spy

方法 Axes.spy 现在提出一个 TypeError 对于关键字参数 插值线型 而不是默默地忽视他们。

此外, Axes.spy 间谍现在允许 程度 争论(到目前为止一直被忽视)。

一只虫子 Axes.spy(..., origin='lower') 是固定的。以前,这会翻转数据,但不会翻转y轴,从而导致轴标签和实际数据索引不匹配。现在, origin='lower' 翻转数据和y轴标签。

框线图记号法

这个 manage_xticks 参数 boxplotbxp 已重命名(具有弃用期)为 manage_ticks ,以考虑到它根据 vert 参数。

什么时候? manage_ticks=True (默认情况下),在设置轴限制、刻度和刻度标签时,这些方法现在尝试将以前绘制的框线图考虑在内。

MouseEvents

MouseEvents现在在它们的 str() . 以前它们包含前缀“mplmouseevent”。

RGBA缓冲区返回类型

FigureCanvasAgg.buffer_rgbaRendererAgg.buffer_rgba 现在返回内存查看 buffer_rgba 方法现在允许直接访问呈现器的底层缓冲区(作为 (m, n, 4) -而不是将数据复制到新的bytestring。这与Py2上的行为一致,其中返回了一个缓冲区对象。

matplotlib.font_manager.win32InstalledFonts 返回类型

matplotlib.font_manager.win32InstalledFonts 如果找不到字体,则返回空列表而不是无。

Axes.fmt_xdataAxes.fmt_ydata 错误处理

以前,如果用户提供 Axes.fmt_xdataAxes.fmt_ydata 引发一个 TypeError (或将它们设置为不可调用),异常将被无提示地忽略,而是使用默认的格式化程序。现在不再是这样了;异常现在已经传播出去了。

弃用冗余 Tick 属性

这个 gridOntick1Ontick2Onlabel1Onlabel2On Tick 属性已被弃用。直接获取并设置底层艺术家的可见性,可用作 gridlinetick1linetick2linelabel1label2 属性。

这个 label 属性的别名 label1 ,已被弃用。

依赖于设置上述可见性属性的子类需要更新;参见。 examples/api/skewt.py .

不推荐将Line2D的drawstyle与linestyle一起传递

而不是 plt.plot(..., linestyle="steps--") 使用 plt.plot(..., linestyle="--", drawstyle="steps") . ds 现在是的别名 drawstyle .

pgi 支架脱落

支持 pgi 在GTK3后端已经被删除。 pgiPyGObject . PyGObject 应该改为使用。

rcParam更改

远离的

已删除以下已弃用的RCPARAM:

  • text.dvipnghack
  • nbagg.transparent (使用) rcParams["figure.facecolor"] (default: 'white') 相反)
  • plugins.directory
  • axes.hold
  • backend.qt4backend.qt5 (设置 QT_API 环境变量)

已弃用

关联的验证器函数 rcsetup.validate_qt4validate_qt5 被贬低。

这个 verbose.fileoverbose.level rcParams已被弃用。从Matplotlib的旧的自定义详细日志记录切换到stdlib日志记录之后,这些都没有任何效果 logging 模块。此外 rcsetup.validate_verbose 函数已弃用。

这个 text.latex.unicode rcParam现在默认为 True 已弃用(即在Matplotlib的未来版本中,将始终支持unicode输入)。此外,底层实现现在使用 \usepackage[utf8]{{inputenc}} 而不是 \usepackage{{ucs}}\usepackage[utf8x]{{inputenc}} .

异常更改

移除

已删除以下已弃用的API:

类和方法

  • Verbose (替换为python日志库)
  • artist.Artist.hitlist (无替换)
  • artist.Artist.is_figure_set (使用) artist.figure is not None 相反)
  • axis.Axis.unit_data (使用) axis.Axis.units 相反)
  • backend_bases.FigureCanvasBase.onRemove (无替换) backend_bases.FigureManagerBase.show_popup (这根本没用)
  • backend_wx.SubplotToolWx (无替换)
  • backend_wx.Toolbar (使用) backend_wx.NavigationToolbar2Wx 相反)
  • cbook.align_iterators (无替换)
  • contour.ContourLabeler.get_real_label_width (无替换)
  • legend.Legend.draggable (使用) legend.Legend.set_draggable() 相反)
  • texmanager.TexManager.postscriptdtexmanager.TexManager.pscnttexmanager.TexManager.make_pstexmanager.TexManager.get_ps_bbox (无替代品)

争论

其他

已删除以下杂项API元素

  • svgfont支持(英寸 rcParams["svg.fonttype"] (default: 'path') )

  • 日志记录现在是用标准python完成的 logging 类库。 matplotlib.verbose 以及命令行开关 --verbose-LEVEL 已被删除。

    要控制日志输出,请使用:

    import logging
    logger = logging.getLogger('matplotlib')
    logger.setLevel(logging.INFO)
    # configure log handling: Either include it into your ``logging`` hierarchy,
    # e.g. by configuring a root looger using ``logging.basicConfig()``,
    # or add a standalone handler to the matplotlib logger:
    logger.addHandler(logging.StreamHandler())
    
  • __version__numpy__

  • collections.CIRCLE_AREA_FACTOR

  • font_manager.USE_FONTCONFIG

  • font_manager.cachedir

matplotlib.mlab 清除

里面有很多代码 matplotlib.mlab Matplotlib 2.2中不推荐使用的模块已被删除。请参见下面的列表:

  • mlab.exp_safe (使用) numpy.exp 相反)
  • mlab.amap
  • mlab.logspace (使用) numpy.logspace 相反)
  • mlab.rms_flat
  • mlab.l1norm (使用) numpy.linalg.norm(a, ord=1) 相反)
  • mlab.l2norm (使用) numpy.linalg.norm(a, ord=2) 相反)
  • mlab.norm_flat (使用) numpy.linalg.norm(a.flat, ord=2) 相反)
  • mlab.frange (使用) numpy.arange 相反)
  • mlab.identity (使用) numpy.identity 相反)
  • mlab.base_repr
  • mlab.binary_repr
  • mlab.ispower2
  • mlab.log2 (使用) numpy.log2 相反)
  • mlab.isvector
  • mlab.movavg
  • mlab.safe_isinf (使用) numpy.isinf 相反)
  • mlab.safe_isnan (使用) numpy.isnan 相反)
  • mlab.cohere_pairs (使用) scipy.signal.coherence 相反)
  • mlab.entropy (使用) scipy.stats.entropy 相反)
  • mlab.normpdf (使用) scipy.stats.norm.pdf 相反)
  • mlab.find (使用) np.nonzero(np.ravel(condition)) 相反)
  • mlab.longest_contiguous_ones
  • mlab.longest_ones
  • mlab.PCA
  • mlab.prctile (使用) numpy.percentile 相反)
  • mlab.prctile_rank
  • mlab.center_matrix
  • mlab.rk4 (使用) scipy.integrate.ode 相反)
  • mlab.bivariate_normal
  • mlab.get_xyz_where
  • mlab.get_sparse_matrix
  • mlab.dist (使用) numpy.hypot 相反)
  • mlab.dist_point_to_segment
  • mlab.griddata (使用) scipy.interpolate.griddata
  • mlab.less_simple_linear_interpolation (使用) numpy.interp
  • mlab.slopes
  • mlab.stineman_interp
  • mlab.segments_intersect
  • mlab.fftsurr
  • mlab.offset_line
  • mlab.quad2cubic
  • mlab.vector_lengths
  • mlab.distances_along_curve
  • mlab.path_length
  • mlab.cross_from_above
  • mlab.cross_from_below
  • mlab.contiguous_regions (使用) cbook.contiguous_regions 相反)
  • mlab.is_closed_polygon
  • mlab.poly_between
  • mlab.poly_below
  • mlab.inside_poly
  • mlab.csv2rec
  • mlab.rec2csv (使用) numpy.recarray.tofile 相反)
  • mlab.rec2text (使用) numpy.recarray.tofile 相反)
  • mlab.rec_summarize
  • mlab.rec_join
  • mlab.recs_join
  • mlab.rec_groupby
  • mlab.rec_keep_fields
  • mlab.rec_drop_fields
  • mlab.rec_append_fields
  • mlab.csvformat_factory
  • mlab.get_formatd
  • mlab.FormatDatetime (使用) datetime.datetime.strftime 相反)
  • mlab.FormatDate (使用) datetime.date.strftime 相反)
  • mlab.FormatMillions, mlab.FormatThousands, mlab.FormatPercent, mlab.FormatBool, mlab.FormatInt, mlab.FormatFloat, mlab.FormatFormatStr, mlab.FormatString, mlab.FormatObj
  • mlab.donothing_callback

pylab 清除

里面有很多代码 matplotlib.mlab Matplotlib 2.2中不推荐使用的模块已被删除。这意味着以下功能在中不再可用 pylab 模块:

  • amap
  • base_repr
  • binary_repr
  • bivariate_normal
  • center_matrix
  • csv2rec (使用) numpy.recarray.tofile 相反)
  • dist (使用) numpy.hypot 相反)
  • dist_point_to_segment
  • distances_along_curve
  • entropy (使用) scipy.stats.entropy 相反)
  • exp_safe (使用) numpy.exp 相反)
  • fftsurr
  • find (使用) np.nonzero(np.ravel(condition)) 相反)
  • frange (使用) numpy.arange 相反)
  • get_sparse_matrix
  • get_xyz_where
  • griddata (使用) scipy.interpolate.griddata 相反)
  • identity (使用) numpy.identity 相反)
  • inside_poly
  • is_closed_polygon
  • ispower2
  • isvector
  • l1norm (使用) numpy.linalg.norm(a, ord=1) 相反)
  • l2norm (使用) numpy.linalg.norm(a, ord=2) 相反)
  • log2 (使用) numpy.log2 相反)
  • longest_contiguous_ones
  • longest_ones
  • movavg
  • norm_flat (使用) numpy.linalg.norm(a.flat, ord=2) 相反)
  • normpdf (使用) scipy.stats.norm.pdf 相反)
  • path_length
  • poly_below
  • poly_between
  • prctile (使用) numpy.percentile 相反)
  • prctile_rank
  • rec2csv (使用) numpy.recarray.tofile 相反)
  • rec_append_fields
  • rec_drop_fields
  • rec_join
  • rk4 (使用) scipy.integrate.ode 相反)
  • rms_flat
  • segments_intersect
  • slopes
  • stineman_interp
  • vector_lengths

mplot3d更改

体素着色

Axes3D.voxels 现在对生成的体素进行着色;有关更多详细信息,请参见新增内容。前面的行为可以通过传递来实现:

ax.voxels(.., shade=False)

禁用等宽轴

在3D轴上设置纵横比之前返回非感官结果(例如,参见 #1077 ). 打电话 ax.set_aspect('equal')ax.set_aspect(num) 在一个3D轴上升起 NotImplementedError .

Poly3DCollection.set_zsort

Poly3DCollection.set_zsort 不再静默地忽略无效输入,或者 False (总是坏掉的)。经过 True 意思是说 "average" 被贬低。

测试

这个 --no-network 旗到 tests.py 已删除(不再需要访问internet的测试)。如果要禁用新旧版本Matplotlib的internet访问,请使用 tests.py -m 'not network' (现在是禁止操作)。

图像比较测试装饰器现在跳过(而不是xfail)不可编译格式的测试。受影响的装修工人 image_comparisoncheck_figures_equal . 弃用的 ImageComparisonTest 类也发生了变化。

依赖关系更改

NumPy

Matplotlib 3.1现在需要NumPy>=1.11。

幽灵脚本

对Ghostscript8.60(2007年发布)的支持已被删除。支持ghostscript的最旧版本现在是9.0(2010年发布)。

数学文本更改

  • 在诸如 "$1~2$" ,mathtext现在将tilde解释为一个空格,与TeX一致(这以前是一个解析错误)。

贬抑

  • 这个 \stackrel mathtext命令已被弃用(它的行为与LaTeX的不同) \stackrel . 要堆叠两个mathtext表达式,请使用 \genfrac{{left-delim}}{{right-delim}}{{fraction-bar-thickness}}{{}}{{top}}{{bottom}} .
  • 这个 \mathcircled mathtext命令(不是真正的TeX命令)已弃用。直接使用unicode字符(例如。 "\N{{CIRCLED LATIN CAPITAL LETTER A}}""\u24b6" 相反。
  • 设置支持 rcParams["mathtext.default"] (default: 'it') 不推荐使用带圆圈的。

签名反对

不赞成使用以下与签名相关的行为:

  • 这个 破折号 关键字参数 Axes.text() . 考虑使用 Axes.annotate() 相反。
  • 将(n,1)形错误数组传递给 Axes.errorbar() ,但没有记录,也不适用于 n = 2 . 传递一个一维数组。
  • 这个 框架 克瓦格 savefig 以及 rcParams["savefig.frameon"] rcParam公司。模仿 frameon = False ,集合 脸色 完全透明 ("none"(0, 0, 0, 0)
  • 将非1D(通常是(n,1)形状的输入传递给 Axes.pie . 传递一个一维数组。
  • 这个 TextPath 构造函数用于静默删除忽略的参数;此行为已弃用。
  • 这个 用语 参数 TextToPath.get_text_path 已弃用并折叠到 ISMAX 参数,它现在可以接受值 FalseTrue"TeX" ,与其他低级文本处理功能一致。
  • 经过 'normal'axes.Axes.axis() 已弃用,请使用 ax.axis('auto') 相反。
  • 路过 的参数 pyplot.show 位置不推荐使用;它应该通过关键字传递。
  • 使用nbagg后端时, pyplot.show 用于静默接受和忽略位置参数和关键字参数的所有组合。此行为已弃用。
  • 未使用的 形状伊姆林 参数到 Axes.imshow 已弃用。为了避免触发弃用警告,将 滤波器范数菲尔特拉德重采样url 参数应通过关键字传递。
  • 这个 interp_at_native 参数到 BboxImage 自Matplotlib 2.0之后就没有任何效果了,它已被弃用。
  • 所有参数 cbook.deprecated 装饰工和 cbook.warn_deprecated 函数,除了第一个函数(不推荐使用的版本)现在只使用关键字。这样做的目的是避免意外地在“name”(或“alternative”)参数时设置“message”参数,因为这在过去多次发生。
  • 的论点 matplotlib.testing.compare.calculate_rms 已从重命名 expectedImage, actualImage ,至 expected_image, actual_image .
  • 将位置参数传递给 Axis.set_ticklabels 超过 标签标签 它本身没有任何效果,对它们的支持也被弃用。
  • 经过 shade=Noneplot_surface 已弃用。这是一个意外的实现细节,其语义与 shade=False . 请改用后一种代码。
  • matplotlib.ticker.MaxNLocator 及其 set_params 方法将对未知关键字参数发出警告,而不是静默地忽略它们。将来的版本将引发错误。

参数名称的更改

  • 这个 arg 参数到 matplotlib.use 已重命名为 后端 .

    这只会影响将该参数设置为关键字参数的情况。作为位置参数的通用用法模式 matplotlib.use('Qt5Agg') 不受影响。

  • 这个 赋范的 参数到 Axes.hist2d 已重命名为 密度 .

  • 这个 s 参数到 Annotation (和间接 Axes.annotate )已重命名为 text .

  • 这个 容忍度 参数到 bezier.find_bezier_t_intersecting_with_closedpathbezier.split_bezier_intersecting_with_closedpathbezier.find_r_to_boundary_of_closedpathbezier.split_path_inoutbezier.check_if_parallel 已重命名为 容忍 .

在每种情况下,旧的参数名仍然受支持(不能与新名称同时使用),但是matplotlib3.3将不再支持它。

类/方法/属性不推荐使用

支持不提供 GraphicsContextBase.set_hatch_color 方法已弃用。我们建议定制后端 GraphicsContext 类继承自 GraphicsContextBase ,至少为所有必需的方法提供存根。

  • spine.Spine.is_frame_like

自2009年添加以来,它就没有在代码库中使用过。

  • axis3d.Axis.get_tick_positions

    它从未在内部使用过,在2D Axis类上没有等效的方法,尽管名称相似,但它的行为与2D Axis完全不同 axis.Axis.get_ticks_position 方法。

  • .backend_pgf.LatexManagerFactory

  • mpl_toolkits.axisartist.axislines.SimpleChainedObjects

  • mpl_toolkits.Axes.AxisDict

内部助手函数

  • checkdep_dvipng
  • checkdep_ghostscript
  • checkdep_pdftops
  • checkdep_inkscape
  • ticker.decade_up
  • ticker.decade_down
  • cbook.dedent
  • docstring.Appender
  • docstring.dedent
  • docstring.copy_dedent

使用标准库的docstring操作工具,例如 inspect.cleandocinspect.getdoc .

  • matplotlib.scale.get_scale_docs()
  • matplotlib.pyplot.get_scale_docs()

它们被认为是内部的,将在将来的版本中从公共API中删除。

  • projections.process_projection_requirements
  • backend_ps.PsBackendHelper
  • backend_ps.ps_backend_helper,
  • cbook.iterable
  • cbook.get_label
  • cbook.safezip 手动检查输入的长度,或者依靠NumPy来完成。
  • cbook.is_hashable 使用 isinstance(..., collections.abc.Hashable) 相反。
  • 这个 .backend_bases.RendererBase.strip_math . 使用 cbook.strip_math 相反。

作为的公共API的一部分公开的多个内部函数 mpl_toolkits.mplot3d 已弃用,

mpl_toolkits.mplot3d.art3d

  • mpl_toolkits.mplot3d.art3d.norm_angle
  • mpl_toolkits.mplot3d.art3d.norm_text_angle
  • mpl_toolkits.mplot3d.art3d.path_to_3d_segment
  • mpl_toolkits.mplot3d.art3d.paths_to_3d_segments
  • mpl_toolkits.mplot3d.art3d.path_to_3d_segment_with_codes
  • mpl_toolkits.mplot3d.art3d.paths_to_3d_segments_with_codes
  • mpl_toolkits.mplot3d.art3d.get_patch_verts
  • mpl_toolkits.mplot3d.art3d.get_colors
  • mpl_toolkits.mplot3d.art3d.zalpha

mpl_toolkits.mplot3d.proj3d

  • mpl_toolkits.mplot3d.proj3d.line2d
  • mpl_toolkits.mplot3d.proj3d.line2d_dist
  • mpl_toolkits.mplot3d.proj3d.line2d_seg_dist
  • mpl_toolkits.mplot3d.proj3d.mod
  • mpl_toolkits.mplot3d.proj3d.proj_transform_vec
  • mpl_toolkits.mplot3d.proj3d.proj_transform_vec_clip
  • mpl_toolkits.mplot3d.proj3d.vec_pad_ones
  • mpl_toolkits.mplot3d.proj3d.proj_trans_clip_points

如果您的项目依赖于这些功能,请考虑销售它们。

字体处理

  • backend_pdf.RendererPdf.afm_font_cache
  • backend_ps.RendererPS.afmfontd
  • font_manager.OSXInstalledFonts
  • .TextToPath.glyph_to_path (改为打电话 font.get_path() 并手动变换路径。)

Axes3D公司

使用 axes3d.Axes3D.xaxisaxes3d.Axes3D.yaxisaxes3d.Axes3D.zaxis 相反。

测试

  • matplotlib.testing.decorators.switch_backend decorator

测试函数应使用 pytest.mark.backend ,标记将由 matplotlib.testing.conftest.mpl_test_settings 固定装置。

颤抖

相反,使用 Collectionget_facecolor 方法。请注意,设置为 .color 属性没有更新箭袋艺术家,而调用 set_facecolor 做。

GUI/后端详细信息

  • .get_py2exe_datafiles
  • .tk_window_focus
  • backend_gtk3.FileChooserDialog
  • backend_gtk3.NavigationToolbar2GTK3.get_filechooser
  • backend_gtk3.SaveFigureGTK3.get_filechooser
  • NavigationToolbar2QT.adj_window 属性。这是未使用的,而且总是 None .
  • backend_wx.IDLE_DELAY 全局变量这是未使用的,只与现在删除的wx“idling”代码相关(请注意,由于它是模块级全局变量,访问它时不会发出任何弃用警告)。
  • mlab.demean
  • backend_gtk3cairo.FigureCanvasGTK3Cairo,
  • backend_wx.debug_on_errorbackend_wx.fake_stderrbackend_wx.raise_msg_to_strbackend_wx.MenuButtonWxbackend_wx.PrintoutWx
  • matplotlib.backends.qt_editor.formlayout 模块

这个模块是官方的一个自动出售的修改版本 formlayout 模块在PyPI上可用。如果需要,请单独安装该模块。

  • GraphicsContextPS.shouldstroke

变换/缩放

  • LogTransformBase
  • Log10Transform
  • Log2Transform
  • NaturalLogTransformLog
  • InvertedLogTransformBase
  • InvertedLog10Transform
  • InvertedLog2Transform
  • InvertedNaturalLogTransform

中定义的这些类 matplotlib.scale 已弃用。作为替代,请使用 LogTransformInvertedLogTransform 类,其构造函数采用 base 争论。

定位器/格式化程序

  • OldScalarFormatter.pprint_val
  • ScalarFormatter.pprint_val
  • LogFormatter.pprint_val

这些帮助器方法在格式化程序类之间没有一致的签名。

路径工具

  • path.get_paths_extents

使用 get_path_collection_extents 相反。

  • .Path.has_nonfinite 属性

使用 not np.isfinite(path.vertices).all() 相反。

  • bezier.find_r_to_boundary_of_closedpath 函数已弃用

它总是返回None而不是请求的radius。

文本

  • text.TextWithDash
  • Text.is_math_text
  • TextPath.is_math_text
  • TextPath.text_get_vertices_codes (作为替代方案,构建一个新的 TextPath 对象。

未使用的属性

  • NavigationToolbar2QT.buttons
  • Line2D.verticalOffset
  • Quiver.keytext
  • Quiver.keyvec
  • SpanSelector.buttonDown

这些是未使用的,从未更新。

Sphinx 扩展

  • matplotlib.sphinxext.mathmpl.math_directive
  • matplotlib.sphinxext.plot_directive.plot_directive

这是因为 matplotlib.sphinxext.mathmplmatplotlib.sphinxext.plot_directive 接口已从(Sphinx)不推荐使用的基于函数的接口更改为基于类的接口;这不应影响最终用户。

  • mpl_toolkits.axisartist.axis_artist.UnimplementedException

环境变量

  • 这个 MATPLOTLIBDATA 环境变量

轴线

  • Axis.iter_ticks

这只是作为一个私人的助手 Axis._update_ticks

未担保

以下API元素未被弃用:

  • 这个 obj_type 克沃格 cbook.deprecated 装饰者。
  • xminxmax 夸克到 Axes.set_xlimyminymax 夸克到 Axes.set_ylim

新特点

Text 现在有一个 c 的别名 color 属性

为了与…保持一致 Line2D , the Text 班级获得了 c 的别名 color 财产。例如,现在可以写:

ax.text(.5, .5, "foo", c="red")

Cn colors now support n>=10

现在可以使用 Cn 语法,例如:

plt.plot([1, 2], color="C11")

现在使用循环中的第12种颜色。

请注意,以前的构造,例如:

plt.plot([1, 2], "C11")

会被解释为使用颜色的请求 C1 和记号笔 1 (一个“倒Y”)。要获得这样的图,现在应该使用:

plt.plot([1, 2], "1C1")

(以便将第一个“1”正确解释为标记规范),或者,更明确地说:

plt.plot([1, 2], marker="1", color="C1")

新的 Formatter.format_ticks 方法

这个 Formatter 班级获得了一个新的 format_ticks 方法,该方法将所有刻度位置的列表作为单个参数,并返回所有格式化值的列表。它由轴刻度处理代码调用,默认情况下,是第一次调用 set_locs 所有地点,然后反复呼叫 __call__ 对于每个位置。

勾选先前执行此序列的代码库中的处理代码 (set_locs 然后重复 __call__ )已更新使用 format_ticks .

format_ticks 将被重写 Formatter 子类,其刻度值的格式取决于其他刻度值,例如 ConciseDateFormatter .

在pcolorfast中添加了对RGB(A)图像的支持

如果X和Y规范允许图像或pcolorimage渲染,pcolorfast现在接受3D图像(RGB或RGBA)数组;更一般的四边形渲染仍然不支持这些数组

无效输入

将无效位置传递给 legendtable 用于回退到默认位置。此行为已弃用,并将在将来的版本中引发异常。

offsetbox.AnchoredText 无法处理 水平信号垂直对准 夸克,过去总是用警告来忽略它们。此行为已弃用,并将在将来的版本中引发异常。

通过小于1或大于10的台阶 MaxNLocator 用于导致未定义的行为。它现在抛出一个 ValueError .

(私人)的签名 Axis._update_ticks 已更改为不再将呈现器作为参数(该参数未使用)。