1.2.x中的变化

  • 这个 classic RC参数选项 toolbar 已弃用,将在下一版本中删除。

  • 这个 matplotlib.cbook.isvector 方法已被删除,因为它不再起作用。

  • 这个 rasterization_zorder 属性对 Axes 设置一个zorder,在其下方栅格化艺术家。默认为-30000.0,但现在默认为 None 也就是说没有艺术家会被栅格化。为了将低于给定zorder值的艺术家栅格化, set_rasterization_zorder 必须显式调用。

  • scatter()scatter ,当使用元组指定标记时,角度现在以度数而不是弧度指定。

  • 使用 twinx()twiny() 不再覆盖轴上的当前定位器和格式化程序。

  • contourf() ,处理 延伸 夸克已经改变了。以前,扩展的范围在被赋范后被映射到0,1,因此它们总是对应于颜色映射的极值。现在,它们被映射到该范围之外,以便它们对应于由 set_under()set_over() 方法,默认为颜色映射端点。

  • 新的RC参数 savefig.format 替换 cairo.formatsavefig.extension ,并设置使用的默认文件格式 matplotlib.figure.Figure.savefig() .

  • pyplot.pie()axes.Axes.pie() ,现在可以设置饼图的半径;设置 半径 如果设置为“无”(默认值),将生成半径为1的饼图。

  • 使用 matplotlib.projections.projection_factory 现在已弃用,取而代之的是使用 matplotlib.projections.process_projection_requirements 然后是直接轴类调用(在写入时,执行此操作的函数为: add_axes()add_subplot()gca() )因此:

    key = figure._make_key(*args, **kwargs)
    ispolar = kwargs.pop('polar', False)
    projection = kwargs.pop('projection', None)
    if ispolar:
        if projection is not None and projection != 'polar':
            raise ValueError('polar and projection args are inconsistent')
        projection = 'polar'
    ax = projection_factory(projection, self, rect, **kwargs)
    key = self._make_key(*args, **kwargs)
    
    # is now
    
    projection_class, kwargs, key = \
                       process_projection_requirements(self, *args, **kwargs)
    ax = projection_class(self, rect, **kwargs)
    

    此更改意味着第三方对象可以通过提供 _as_mpl_axes 方法。见 创建缩放和转换的开发人员指南 更多细节。

  • 一个新的关键词 扩展压裂 在里面 colorbar()ColorbarBase 允许用户控制颜色条上三角形最小和最大扩展的大小。

  • 一个新的关键词 卡普斯 在里面 errorbar() 已作为直观的别名添加到 标记宽度mew 关键字参数,它间接控制了误差条上的大小写的厚度。为了向后兼容,指定任何原始关键字参数都将重写 卡普斯 .

  • 转换子类化行为现在被微妙地改变了。如果您的转换实现了非仿射转换,那么它应该重写 transform_non_affine 方法,而不是泛型 transform 方法。以前的转换将定义 transform 然后将方法复制到 transform_non_affine ::

    class MyTransform(mtrans.Transform):
        def transform(self, xy):
            ...
        transform_non_affine = transform
    

    此方法将不再正常工作,应改为:

    class MyTransform(mtrans.Transform):
        def transform_non_affine(self, xy):
            ...
    
  • 艺术家不再有 x_isdatay_isdata 属性;相反,可以使用 artist_instance.get_transform().contains_branch(ax.transData)

  • 添加到轴上的线现在在更新数据和视图限制时考虑到它们的转换。这意味着转换现在可以用作预转换。例如::

    >>> import matplotlib.pyplot as plt
    >>> import matplotlib.transforms as mtrans
    >>> ax = plt.axes()
    >>> ax.plot(range(10), transform=mtrans.Affine2D().scale(10) + ax.transData)
    >>> print(ax.viewLim)
    Bbox('array([[  0.,   0.],\n       [ 90.,  90.]])')
    
  • 我们现在可以很容易地得到一个转换,它以优化的方式从一个转换的坐标系转换到另一个,在转换上使用新的减法。例如,要从数据坐标转到轴坐标:

    >>> import matplotlib.pyplot as plt
    >>> ax = plt.axes()
    >>> data2ax = ax.transData - ax.transAxes
    >>> print(ax.transData.depth, ax.transAxes.depth)
    3, 1
    >>> print(data2ax.depth)
    2
    

    对于1.2之前的版本,这只能以次优的方式实现,使用 ax.transData + ax.transAxes.inverted() (深度是一个新概念,但如果它存在的话,这个例子将返回4)。

  • twinxtwiny 如果父轴是子基的实例,那么现在返回子基的实例。

  • 由于缺少py3k绑定,所有基于qt3的后端现在都已弃用。qt和qtagg后端将继续在v1.2.x中为py2.6和py2.7工作。预计下一个版本的qt3支持将被完全移除。

  • matplotlib.colors.ColorConverter, Colormap and Normalize now subclasses object

  • Contourset实例不再具有 transform 属性。相反,使用 get_transform 方法。