1.3.x 中的 API 变更#
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
类中的 Pythonic 包装器。请使用以下映射更新您的代码: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
现在完全支持使用 RGBA 值为其facecolor
和edgecolor
属性,这使得面和边可以具有不同的 alpha 值。如果Patch
对象的alpha
属性设置为None
以外的任何值,该值将覆盖面和边颜色中的任何 alpha 通道值。以前,如果Patch
的alpha=None
,edgecolor
的 alpha 分量将应用于边和面。可选的
isRGB
参数在set_foreground()
(以及从其派生的其他 GraphicsContext 类)中已被重命名为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
列表被替换为一个字典,该字典将路径代码映射到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
已被增大以产生一个可见的箭头头。这个关键字参数的新值是head_width = 20 * width
。现在,在
contourf
中使用extend='both'
的情况下,可以提供number of levels + 1
种颜色(或者对于extend
值为min
或max
的情况,只需number of levels
种颜色),以便结果色图的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 Base Directory Specification。font.*
rcParams 现在仅影响在设置 rcParam 后创建的文本对象,不会对已存在的文本对象产生追溯影响。这使得它们的行为与其他大多数 rcParams 一致。在
matplotlib.pyplot.plotfile
中移除了对grid()
的调用。要绘制坐标轴网格,请将axes.grid
rcParam 设置为 True,或显式调用grid()
。