Matplotlib 2.2中的新功能

受约束的布局管理器

警告

受约束的布局是 实验的 . 行为和API可能会发生变化,或者整个功能可能会在没有折旧期的情况下被删除。

一种自动确定子块间距及其组织的新方法 GridSpec 实例已添加。它是为了取代尊者 tight_layout 方法。它是通过一个新的 constrained_layout=True 克瓦格 Figuresubplots .

有新的 rcParams 对于这个包,间距可以随着新的 set_constrained_layout_pads .

功能包括:

  • 具有固定大小填充的子批次及其所有装饰器的自动间距(以英寸为单位),以及作为子批次之间子批次大小的一部分的间距。
  • 间距为 suptitle 以及附加到多个轴的颜色条。
  • 嵌套的 GridSpec 使用布局 GridSpecFromSubplotSpec .

有关更多详细信息和功能,请参阅新教程: 受约束的布局参考线

请注意新的API访问此:

新的 plt.figureplt.subplots kwarg: constrained_layout

figure()subplots() 现在可以用 constrained_layout=True Kwarg允许受限的布局。

新的 ax.set_position 行为

Axes.set_position 现在使指定轴不再响应 constrained_layout 与用户希望手动放置轴的想法一致。

在内部,这意味着 ax.set_position 电话 里面 类库改为私人 ax._set_position 打电话让 constrained_layout 仍然可以使用这些轴。

新的 figure 克沃格 GridSpec

为了方便 constrained_layoutGridSpec 现在接受 figure 关键字。这是向后兼容的,因为不提供它只会导致 constrained_layout 不在由此组织的子批次上操作 GridSpec 实例。使用的例程 GridSpec (例如) fig.subplots )已修改以将数字传递给 GridSpec .

xlabels和ylabels现在可以自动对齐

子情节轴 ylabels 如果刻度线标签的宽度非常不同,则可能会水平不对齐。同样的情况也会发生 xlabels 如果滴答标签在一个子批次上旋转(例如)。新的方法 Figure 班级: Figure.align_xlabelsFigure.align_ylabels 现在将水平或垂直对齐这些标签。如果用户只想对齐一些轴,可以传递轴列表。如果没有传递任何列表,算法将查看图上的所有标签。

仅对齐具有相同子批次位置的标签。也就是说,只有当子地块位于子地块布局的同一列中时,才会对齐伊拉贝尔。

这些被称为“自动对齐”和“持久对齐”。

方便包装纸 Figure.align_labels 同时调用两个函数。

(Source code _, pngpdf

../../_images/whats_new_2-2-1.png

轴图例现在包含在Tight bbox中

通过创建的图例 ax.legend 有时会超出轴的极限。类似工具 fig.tight_layout()fig.savefig(bbox_inches='tight') 会剪掉这些传说。为了将它们包括在 tight 计算。

西维迪斯彩色地图

添加了一个名为“cividis”的新的深蓝色/黄色颜色贴图。像绿蜘蛛一样,cividis在感知上是一致的,对色盲是友好的。然而,cividis还走得更远:它不仅可以被色盲用户使用,实际上它应该看起来与色盲和非色盲用户完全相同。有关详细信息,请参阅 Nuñez J, Anderton C, and Renslow R: "Optimizing colormaps with consideration for color vision deficiency to enable accurate interpretation of scientific data" .

(Source code _, pngpdf

../../_images/whats_new_2-2-2.png

新型色盲友好色周期

添加了一种定义颜色循环的新样式Tableau-ColorBlind10,以提供对色盲友好绘图的另一种选择。这种新样式的演示可以在 reference 样式表的。要加载此颜色循环而不是默认颜色循环,请执行以下操作:

import matplotlib.pyplot as plt
plt.style.use('tableau-colorblind10')

支持numpy.datetime64

Matplotlib支持 datetime.datetime 很长一段时间的约会 matplotlib.dates . 我们现在支持 numpy.datetime64 还有日期。任何地方 datetime.datetime 可以使用, numpy.datetime64 可以使用。如::

time = np.arange('2005-02-01', '2005-02-02', dtype='datetime64[h]')
plt.plot(time)

用枕头写动画

现在可以用枕头作为动画作家了。目前支持的输出格式有GIF(枕头>=3.4)和WEBP(枕头>=5.0)。例如使用:

from __future__ import division

from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation, PillowWriter

fig, ax = plt.subplots()
line, = plt.plot([0, 1])

def animate(i):
   line.set_ydata([0, i / 20])
   return [line]

anim = FuncAnimation(fig, animate, 20, blit=True)
anim.save("movie.gif", writer=PillowWriter(fps=24))
plt.show()

SliderUI小部件可以捕捉到离散值

SliderUI小部件可以接受可选参数 瓦尔斯塔 . 这样做会强制滑块只接受离散值,从 缬氨酸 数到 瓦尔马克斯 有台阶的 瓦尔斯塔 .

如果 closedmax==True ,然后滑块将捕捉到 瓦尔马克斯 也。

capstyle and joinstyle attributes added to Collection

这个 Collection 类现在具有可自定义的 capstylejoinstyle 属性。例如,这允许用户设置 capstyle 错误的。

pad Kwarg添加到ax.set_标题中

方法 Axes.set_title 现在有一个 pad Kwarg,指定从轴顶部到标题绘制位置的距离。单位 pad 是点,默认值是的值(已存在) rcParams["axes.titlepad"] (default: 6.0) .

Matplotlib中两种颜色的比较

由于Matplotlib中的颜色可以通过多种方式指定,因此 matplotlib.colors.same_color 已添加方法,该方法检查 colors 都一样。

自动缩放极坐标图将捕捉到原点

在极坐标图中自动设置限制,如果自动限制在附近,则会将径向限制捕捉为零。这意味着从零开始的绘图不会自动缩放为在径向轴上包含较小的负值。

仍然可以用通常的方法手动设置限制 set_ylim .

路径式支持

关于Python 3.6 +, savefigimsaveimread 和动画作家现在接受 os.PathLike s作为输入。

Axes.tick_params 可以设置网格线属性

Tick 对象包含网格线以及刻度线及其标签。 Axis.set_tick_paramsAxes.tick_paramspyplot.tick_params 现在有关键字参数“grid_color”、“grid_alpha”、“grid_lineidth”和“grid_linestyle”,用于覆盖中的默认值。 rcParams :“网格颜色”等。

Axes.imshow 将RGB值剪辑到有效范围

什么时候? Axes.imshow 传递一个带有超出范围值的rgb或rgb a值时,它现在会记录一个警告并将其剪辑到有效范围。旧的行为,包装回到范围,往往隐藏离群值,并使解释RGB图像不可靠。

属性在 matplotlibrc 放置Xaxis和Yaxis标记标签

在中引入四个新的布尔属性 matplotlibrc 对于xaxis和yaxis标记标签的默认位置,即, rcParams["xtick.labeltop"] (default: False) , rcParams["xtick.labelbottom"] (default: True) , rcParams["ytick.labelright"] (default: False) 和 rcParams["ytick.labelleft"] (default: True) . 这些也可以在RCPARAM中更改。

GTK3的PGI绑定

GTK3后端现在可以使用 PGI 而不是 PyGObject. PGI是Gobject的一个相当不完整的绑定,因此不推荐使用它;它的主要好处是它在Travis上的可用性(因此允许对GTK3agg和GTK3cairo后端进行CI测试)。

绑定选择规则如下所示:-if gi 已经导入,请使用它;否则-如果 pgi 已经导入,请使用它;否则-如果 gi 可以导入,使用它;否则-如果 pgi 可以导入,使用它;否则-出错。

因此,要在安装两个绑定时强制使用PGI,请先导入它。

qt、wx和tk画布的cairo渲染

新的 Qt4CairoQt5CairoWXCairoTkCairo 后端允许qt、wx和tk画布使用cairo渲染而不是agg。

在新的工具管理器中添加了对qt的支持

现在可以将工具管理器与qt5一起使用了,例如

导入Matplotlib

matplotlib.use('qt5agg')matplotlib.rcparams [“工具栏”] ='toolmanager'导入matplotlib.pyplot as plt

PLT图 [1,2,3] 显示()

目前,将新的工具类视为实验类,API可能会改变,可能还会更改rcparam。

主要例子 刀具管理器 显示更多详细信息,只需调整收割台以使用qt而不是gtk3

TKAGG后端重新设计以支持Pypy

PyPy 现在可以使用Pypy5.9及更高版本支持的tkagg后端进行绘图(Pypy for python 2.7和Pypy for python 3.5)。

用于调试输出的python日志记录库

Matplotlib过去(偶尔)使用了一个内部详细的输出报告器。此版本将这些调用转换为使用标准python logging 类库。

支持老年人 rcParams verbose.levelverbose.fileo 被丢弃。

命令行选项 --verbose-helpful--verbose-debug 仍被接受,但已弃用。它们现在等同于设置 logging.INFOlogging.DEBUG .

记录器的根名称是 matplotlib 并且可以从以下程序访问:

import logging
mlog = logging.getLogger('matplotlib')

基本使用说明 故障排除 以及开发人员 贡献 .

改进 repr 对于 Transform 的S

Transform S现在缩进 repr 以更清晰的方式:

In [1]: l, = plt.plot([]); l.get_transform()
Out[1]:
CompositeGenericTransform(
   TransformWrapper(
      BlendedAffine2D(
            IdentityTransform(),
            IdentityTransform())),
   CompositeGenericTransform(
      BboxTransformFrom(
            TransformedBbox(
               Bbox(x0=-0.05500000000000001, y0=-0.05500000000000001, x1=0.05500000000000001, y1=0.05500000000000001),
               TransformWrapper(
                  BlendedAffine2D(
                        IdentityTransform(),
                        IdentityTransform())))),
      BboxTransformTo(
            TransformedBbox(
               Bbox(x0=0.125, y0=0.10999999999999999, x1=0.9, y1=0.88),
               BboxTransformTo(
                  TransformedBbox(
                        Bbox(x0=0.0, y0=0.0, x1=6.4, y1=4.8),
                        Affine2D(
                           [[ 100.    0.    0.]
                           [   0.  100.    0.]
                           [   0.    0.    1.]])))))))