API 在 1.3.x 中的变更#
1.3.1 中的变更#
我们很少在微型版本中进行 API 更改,但在 1.3.1 版本中,自 1.3.0 以来进行了以下更改:
代码移除#
以下在 1.2 或更早版本中已弃用的项目现已完全移除。
Qt 3.x 后端 (
qt
和qtagg
) 已被移除,取而代之的是 Qt 4.x 后端 (qt4
和qt4agg
)。FltkAgg 和 Emf 后端已移除。
matplotlib.nxutils
模块已移除。请改用matplotlib.path.Path.contains_point
及其相关功能。请使用
axes.Axes.patch
而非axes.Axes.get_frame
。legend
函数的以下关键字参数已重命名:pad -> borderpad
labelsep -> labelspacing
handlelen -> handlelength
handletextsep -> handletextpad
axespad -> borderaxespad
与此相关,以下 rcParams 已移除:
legend.pad
,legend.labelsep
,legend.handlelen
,legend.handletextsep
和legend.axespad
对于
hist
函数,请使用 rwidth(相对宽度)而非 width。在
patches.Circle
中,resolution 关键字参数已移除。对于由线段构成的圆,请使用patches.CirclePolygon
。Wx 后端中的打印功能已移除,因为维护它们的负担过重。
mlab.liaupunov
已移除。mlab.save
、mlab.load
、pylab.save
和pylab.load
已移除。我们建议改用numpy.savetxt
和numpy.loadtxt
。widgets.HorizontalSpanSelector
已移除。请改用widgets.SpanSelector
。
代码弃用#
CocoaAgg 后端已弃用,未来版本中可能会删除或恢复。
matplotlib.path
中以 C++ 实现的顶级函数从未打算公开。相反,用户应该使用path.Path
和collections.Collection
类中它们的 Python 封装器。使用以下映射来更新您的代码:point_in_path
->path.Path.contains_point
get_path_extents
->path.Path.get_extents
point_in_path_collection
->collections.Collection.contains
path_in_path
->path.Path.contains_path
path_intersects_path
->path.Path.intersects_path
convert_path_to_polygons
->path.Path.to_polygons
cleanup_path
->path.Path.cleaned
points_in_path
->path.Path.contains_points
clip_path_to_rect
->path.Path.clip_to_bbox
matplotlib.colors.normalize
和matplotlib.colors.no_norm
已弃用,分别改用matplotlib.colors.Normalize
和matplotlib.colors.NoNorm
。ScalarMappable
类的set_colorbar
方法现已弃用。应改用matplotlib.cm.ScalarMappable.colorbar
属性。在以前的 Matplotlib 版本中,此属性是一个未文档化的元组(colorbar_instance, colorbar_axes)
,但现在它只是colorbar_instance
。要获取颜色条轴,只需使用颜色条实例上的matplotlib.colorbar.ColorbarBase.ax
属性即可。matplotlib.mpl
模块现已弃用。依赖此模块的用户应过渡到直接使用import matplotlib as mpl
。
代码更改#
Patch
现在完全支持为其facecolor
和edgecolor
属性使用 RGBA 值,这使得面和边可以具有不同的 alpha 值。如果Patch
对象的alpha
属性设置为非None
的任何值,则该值将覆盖面和边颜色中的任何 alpha 通道值。此前,如果Patch
的alpha=None
,则edgecolor
的 alpha 分量会应用于边和面。set_foreground()
(以及其他继承自它的 GraphicsContext 类)的可选isRGB
参数已重命名为isRGBA
,并且现在仅在fg
颜色参数已知为 RGBA 元组时才应设置为True
。对于
Patch
,现在使用的capstyle
是butt
,以与大多数其他对象的默认值保持一致,并避免当使用较大的linewidth
时非实心linestyle
显示为实心的问题。此前,Patch
使用capstyle='projecting'
。Path
对象现在可以通过向其构造函数传入readonly=True
来标记为 只读。通过Path.unit*
类方法获取的内置路径单例返回只读路径。如果您的代码修改了这些路径,您需要首先进行深拷贝,使用以下方法之一:import copy path = copy.deepcopy(Path.unit_circle()) # or path = Path.unit_circle().deepcopy()
Path.NUM_VERTICES
处的列表已替换为将 Path 代码映射到NUM_VERTICES_FOR_CODE
处预期顶点数的字典。为了支持 XKCD 风格绘图,
matplotlib.path.cleanup_path
方法的签名已更新,要求传入一个 sketch 参数。matplotlib.path.cleanup_path
的用户被鼓励使用新的cleaned()
Path 方法。绘图上的数据限制现在从“空”限制状态开始,而不是 (0, 1) 范围内的限制。这对于只控制一个方向限制的艺术家(如
axes.Axes.axvline
和axes.Axes.axhline
)有影响,因为它们的限制将不再包含 (0, 1) 范围。这修复了一些计算出的限制会依赖于艺术家添加到轴的顺序的问题。修复了使用数据位置类型设置右/上脊线位置时的错误。此前,它会在 +1 数据偏移处绘制右或上脊线。
在
FancyArrow
中,默认箭头头部宽度head_width
已增大,以生成可见的箭头头部。此 kwarg 的新值是head_width = 20 * width
。现在可以为
contourf
(或仅为 extend 值min
或max
指定number of levels
颜色) 的extend='both'
情况提供number of levels + 1
种颜色,以便正确定义生成的色彩图的set_under
和set_over
。任何其他数量的颜色将继续像以前一样工作(如果提供的颜色多于级别,则这些颜色将不被使用)。类似的更改已应用于 contour,其中extend='both'
将期望number of levels + 2
种颜色。colorbar()
和ColorbarBase
中新增关键字 extendrect 允许控制颜色条扩展的形状。MultiCursor
扩展到垂直(默认)和/或水平光标意味着self.line
被垂直光标线替换为self.vline
,并且为水平光标线添加了self.hline
。在 POSIX 平台上,如果无法运行 ps 命令,
matplotlib.cbook.report_memory
函数会引发NotImplementedError
而不是OSError
。matplotlib.cbook.check_output
函数已移至matplotlib.compat.subprocess
。
配置和 rcParams#
在 Linux 上,用户特定的
matplotlibrc
配置文件现在位于~/.config/matplotlib/matplotlibrc
,以符合 XDG 基本目录规范。font.*
rcParams 现在只影响在设置 rcParam 后创建的文本对象,而不会追溯影响已存在的文本对象。这使得它们的行为与大多数其他 rcParams 一致。已移除
matplotlib.pyplot.plotfile
中对grid()
的调用。要绘制坐标轴网格,请将axes.grid
rcParam 设置为 True,或显式调用grid()
。