2.0.0 中的 API 更改#
弃用与移除#
Axes 的颜色#
Axes 上的 axisbg
和 axis_bgcolor
属性已被弃用,取而代之的是 facecolor
。
GTK 和 GDK 后端已弃用#
GDK 和 GTK 后端已被弃用。这些过时的后端允许通过 GDK API 将图形渲染到文件和 GTK2 图形。它们未经测试,已知存在问题,并且其使用已被劝退已久。相反,请使用 GTKAgg
和 GTKCairo
后端来渲染到 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.set
、matplotlib.artist.Artist.update
和函数 matplotlib.artist.setp
现在使用一个共同的代码路径来查找如何更新给定的 artist 属性(无论是使用 setter 方法还是属性/特性)。
matplotlib.artist.Artist.update
的行为略有改变,现在返回一个由 setter 方法返回值组成的列表,以避免改变 matplotlib.artist.Artist.set
和 matplotlib.artist.setp
的 API。
传入 matplotlib.artist.Artist.update
的键现在会在处理前转换为小写,以匹配 matplotlib.artist.Artist.set
和 matplotlib.artist.setp
的行为。这应该不会破坏任何用户代码,因为目前没有名称中包含大写的 setter 方法,但这为未来属性的命名施加了限制。
Legend
初始化器新增 edgecolor 和 facecolor 关键字参数#
Legend
的背景补丁(或“框架”)的 edgecolor
和 facecolor
可以由 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 版本匹配。有两处更改
3D quiver 函数以前会将箭头归一化为相同的长度,这使得它不适用于箭头应具有不同长度的情况,并且与 2D 函数的行为不匹配。这种归一化行为现在由
normalize
关键字控制,其默认值为 False。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 起,以前称为 spectral
和 spectral_r
的色图已被 nipy_spectral
和 nipy_spectral_r
替换。尽管该色图在 Matplotlib 1.3.0 中已被弃用,但从未引发警告。自 Matplotlib 2.0.0 起,使用旧名称会引发弃用警告。将来,使用旧名称将引发错误。
默认安装不再包含测试图像#
为了减小 wheels 和源代码安装的大小,测试和基准图像默认不再包含在内。
要恢复安装测试和图像,请使用包含以下内容的 setup.cfg
文件
[packages]
tests = True
toolkits_tests = True
在构建/安装时位于源目录中。