2.0.0 中的 API 更改#

弃用与移除#

Axes 的颜色#

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' 功能已弃用#

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

Artist.update 具有返回值#

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

matplotlib.artist.Artist.update 的行为略有改变,现在返回一个由 setter 方法返回值组成的列表,以避免改变 matplotlib.artist.Artist.setmatplotlib.artist.setp 的 API。

传入 matplotlib.artist.Artist.update 的键现在会在处理前转换为小写,以匹配 matplotlib.artist.Artist.setmatplotlib.artist.setp 的行为。这应该不会破坏任何用户代码,因为目前没有名称中包含大写的 setter 方法,但这为未来属性的命名施加了限制。

Legend 初始化器新增 edgecolorfacecolor 关键字参数#

Legend 的背景补丁(或“框架”)的 edgecolorfacecolor 可以由 matplotlib.legend.Legend 初始化器或任何调用该初始化器的方法或函数的相应关键字参数确定。如果保持其默认值 None,则它们的值将从 matplotlib.rcParams 中获取。先前存在的 framealpha kwarg 仍控制补丁的 alpha 透明度。

定性色图#

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 轴都使用相同刻度数的 matplotlib.ticker.LinearLocator 时,它们的 Y 刻度位置和网格线将重合。

matplotlib.ticker.LogLocator 新增 numticks kwarg#

现在可以通过将新的 'numticks' kwarg 设置为整数来明确控制 LogLocator 生成的最大刻度数。默认情况下,此 kwarg 为 None,这会在内部将其设置为 'auto' 字符串,从而触发一种新算法,根据坐标轴长度相对于刻度标签字体大小来调整最大值。

matplotlib.ticker.LogFormatter:新增两个 kwarg#

以前,对数刻度轴上的次刻度默认不带标签。已向 LogFormatter 添加一个算法,用于控制基数整数幂之间刻度的标签。该算法使用在名为 'minor_thresholds' 的 kwarg 元组中提供的两个参数。有关进一步解释,请参阅文档字符串。

为了改善对使用 SymmetricalLogLocator 的坐标轴的支持,新增了一个 linthresh 关键字参数。

mpl_toolkits.mplot3d.axes3d.py 中 3D quiver 函数的新默认值#

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

  1. 3D quiver 函数以前会将箭头归一化为相同的长度,这使得它不适用于箭头应具有不同长度的情况,并且与 2D 函数的行为不匹配。这种归一化行为现在由 normalize 关键字控制,其默认值为 False。

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

要使用 3D quiver 函数获得先前的行为,可以调用该函数并使用

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')

陈旧图形行为#

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

spectral 色图现已更名为 nipy_spectral#

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

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

为了减小 wheels 和源代码安装的大小,测试和基准图像默认不再包含在内。

要恢复安装测试和图像,请使用包含以下内容的 setup.cfg 文件

[packages]
tests = True
toolkits_tests = True

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