2.0.0 中的 API 变更#

弃用和移除#

坐标轴的颜色#

Axes 上的 axisbgaxis_bgcolor 属性已被弃用,取而代之的是 facecolor

GTK 和 GDK 后端已弃用#

GDK 和 GTK 后端已被弃用。这些过时的后端允许通过 GDK API 渲染图像到文件和 GTK2 图像。它们未经测试且已知存在问题,并且它们的使用已被劝阻一段时间。相反,使用 GTKAggGTKCairo 后端来渲染到 GTK2 窗口。

WX 后端已弃用#

WX 后端已被弃用。它未经测试,并且其使用已被劝阻一段时间。相反,使用 WXAgg 后端将图形渲染到 WX 窗口。

CocoaAgg 后端已移除#

已弃用且功能不完整的 CocoaAgg 后端已被移除。

round 已从 TkAgg 后端移除#

TkAgg 后端有自己的 round 函数实现。这在内部未被使用,已被移除。请改用 round 内置函数或 numpy.around

'hold' 功能已弃用#

axes.hold rcParams 条目一起,'hold' 关键字参数及其所有相关函数和方法已被弃用。该行为将与长期存在的默认 hold=True 状态保持一致。 取而代之的是,在后续绘图命令之前,根据需要显式清除轴或图形,而不是使用函数或关键字参数(hold=False)来改变该行为。

Artist.update 有返回值#

方法 matplotlib.artist.Artist.setmatplotlib.artist.Artist.update 以及函数 matplotlib.artist.setp 现在使用一个共同的代码路径来查找如何更新给定的艺术家属性(无论是使用设置方法还是属性/属性)。

matplotlib.artist.Artist.update 的行为略有改变,以返回从设置方法返回的值的列表,以避免更改 matplotlib.artist.Artist.setmatplotlib.artist.setp 的API。

传递给 matplotlib.artist.Artist.update 的键现在在处理之前会被转换为小写,以匹配 matplotlib.artist.Artist.setmatplotlib.artist.setp 的行为。这不应破坏任何用户代码,因为没有任何方法的名称中包含大写字母,但这为未来命名属性增加了约束。

Legend 初始化器获得了 edgecolorfacecolor 关键字参数#

The Legend 背景补丁(或'框架')可以通过 matplotlib.legend.Legend 初始化器的相应关键字参数,或调用该初始化器的任何方法或函数来确定其 edgecolorfacecolor。如果保留为默认值 None,它们的值将从 matplotlib.rcParams 中获取。之前存在的 framealpha 关键字参数仍然控制补丁的透明度。

定性色图#

Colorbrewer 的定性/离散色图("Accent"、"Dark2"、"Paired"、"Pastel1"、"Pastel2"、"Set1"、"Set2"、"Set3")现在作为 ListedColormap 实现,而不是 LinearSegmentedColormap

要在图像分类为整数的情况下使用这些,例如,使用:

plt.imshow(x, cmap='Dark2', norm=colors.NoNorm())

draw_image 后端 API 的变更#

后端实现的 draw_image 方法已更改其接口。

此更改仅在后台声明它能够通过从 option_scale_image 返回 True 来转换图像时相关。更多信息请参阅 draw_image 的文档字符串。

matplotlib.ticker.LinearLocator 算法更新#

matplotlib.ticker.LinearLocator 用于在用户想要精确的刻度数量时定义轴刻度的范围和位置。LinearLocator 因此与默认定位器 MaxNLocator 不同,后者用户指定的是最大间隔数而不是精确的刻度数。

matplotlib.ticker.LinearLocator 中的视图范围算法已更改,以便选择更方便的刻度位置。新算法返回的绘图视图范围是用户请求的刻度数的倍数。这确保了刻度标记将更一致地位于整数位置。例如,当 twinx 绘图的两个 y 轴使用相同数量的刻度时,它们的 y 轴刻度位置和网格线将重合。

matplotlib.ticker.LogLocator 获得了 numticks 关键字参数#

现在可以通过将新的 'numticks' 关键字参数设置为整数来显式控制 LogLocator 生成的刻度最大数量。默认情况下,该关键字参数为 None,这会在内部将其设置为 'auto' 字符串,触发一个新的算法,根据轴长度相对于刻度标签字体大小来调整最大值。

matplotlib.ticker.LogFormatter: 两个新的关键字参数#

之前,对数刻度轴上的次要刻度默认不进行标记。已在 LogFormatter 中添加了一个算法,用于控制基数整数次幂之间的刻度标记。该算法使用在名为 'minor_thresholds' 的 kwarg 元组中提供的两个参数。详见文档字符串。

为了改进对使用 SymmetricalLogLocator 的轴的支持,添加了一个 linthresh 关键字参数。

mpl_toolkits.mplot3d.axes3d.py 中 3D 箭袋函数的默认值#

Matplotlib 既有 2D 也有 3D 的 quiver 函数。这些更改仅影响 3D 函数,并使 3D 函数的默认行为与 2D 版本匹配。有两个更改:

  1. 3D quiver 函数之前将箭头标准化为相同长度,这使得它在箭头应为不同长度的情况下不可用,并且与2D函数的行为不匹配。现在,这种标准化行为由 normalize 关键字控制,默认值为 False。

  2. pivot 关键字现在默认值为 tail 而不是 tip。这样做是为了匹配 2D quiver 函数的默认行为。

要使用3D箭袋函数获得之前的行为,可以调用该函数并使用:

ax.quiver(x, y, z, u, v, w, normalize=True, pivot='tip')

其中“ax”是一个使用类似以下代码创建的 Axes3d 对象

import mpl_toolkits.mplot3d.axes3d
ax = plt.subplot(111, projection='3d')

过时图表行为#

尝试绘制图形现在会将其标记为非陈旧(无论绘制是否成功)。这一更改是为了防止反复尝试重新绘制一个在绘制时引发错误的图形。之前的行为只有在完全重新绘制成功后才会将图形标记为非陈旧。

光谱色图现在是 nipy_spectral#

自 Matplotlib 1.3.0 起,以前称为 spectralspectral_r 的色图已被 nipy_spectralnipy_spectral_r 取代。尽管该色图在 Matplotlib 1.3.0 中已被弃用,但它从未引发警告。从 Matplotlib 2.0.0 开始,使用旧名称会引发弃用警告。未来,使用旧名称将引发错误。

默认安装不再包含测试图像#

为了减小轮子和源安装包的大小,测试和基准图像不再默认包含。

要恢复安装测试和图像,请使用带有 :: 的 setup.cfg

[packages]
tests = True
toolkits_tests = True

在构建/安装时的源目录中。