Matplotlib 3.0中的新功能

改进了默认后端选择

默认后端不再必须设置为生成过程的一部分。相反,在运行时,将按顺序尝试内置后端,直到其中一个后端导入。

Headless Linux服务器(由DISPLAY环境变量not being defined标识)不会选择GUI后端。

循环颜色图

添加了两个新的颜色图,分别命名为“暮光”和“暮光变换”。这些颜色映射开始和结束于同一颜色,并且有两个对称的半部分,亮度相等,但颜色分散。因为它们是环绕的,所以对于相位角、指南针方向或一天中的时间等周期性数据,它们是一个很好的选择。喜欢 绿脓杆菌属西维迪斯暮光 是感性统一和色盲友好。

按固定数量级缩放轴的能力

要按固定数量级缩放轴,请设置 剪影 的参数 Axes.ticklabel_format 达到相同的(非零)下限和上限。如果要将Y轴缩放一百万(1e6),请使用

ax.ticklabel_format(style='sci', scilimits=(6, 6), axis='y')

行为 scilimits=(0, 0) 没有变化。使用此设置,matplotlib将根据轴值调整大小顺序,而不是保持固定。以前,设置 scilimits=(m, m) 相当于设置 scilimits=(0, 0) .

添加 AnchoredDirectionArrows MPL_工具包的功能

新的MPL_工具包类 AnchoredDirectionArrows 绘制一对正交箭头以指示二维绘图上的方向。最小工作示例采用坐标系(通常是ax.transaxes)的转换对象和箭头标签。有几个可选参数可用于更改布局。例如,可以旋转箭头对并更改颜色。默认情况下,标签和箭头的颜色相同,但类也可以传递用于自定义箭头和文本布局的参数,这些参数将传递给 matplotlib.textpath.TextPathmatplotlib.patches.FancyArrowPatch . 箭头尾部和头部的位置、长度和宽度都可以调整,方向箭头和标签可以有一个框架。填料和分离参数可以调整。

添加 minorticks_on()/off() 色带的方法

一种新方法 colorbar.Colobar.minorticks_on() 已添加以在颜色栏上正确显示次要记号。当 延伸 关键字参数(在创建颜色栏时使用)设置为“both”、“max”或“min”。互补法 colorbar.Colobar.minorticks_off() 还添加了以删除颜色条上的次要刻度。

颜色条刻度现在可以自动

放置在颜色条上的刻度数以前适合于大颜色条,但如果颜色条变小(即通过 收缩 关键字参数)。这一点已被更改,因此记号的数量现在响应于颜色条的大小。

不自动重命名重复的文件名

以前,在使用GUI的“保存”对话框将图形保存到文件时,如果磁盘上已经存在默认文件名(基于图形窗口标题),Matplotlib将附加一个后缀(例如 Figure_1-1.png ,防止对话框提示覆盖文件。这种行为已被消除。现在,如果磁盘上存在文件名,系统将提示用户是否覆盖该文件名。这消除了猜测,并允许有意重写,特别是当使用 figure.Figure.canvas.set_window_title() .

传奇现在有一个 title_fontsize 关键字参数(和rcParam)

A的标题 Figure.legendAxes.legend 现在可以通过 title_fontsize 关键字参数。还有一个新的 rcParams["legend.title_fontsize"] (default: None) . 两者缺省 None ,这意味着图例标题的字体大小将与默认字体大小相同( not 图例字体大小,由 字体大小 关键字参数或 rcParams["legend.fontsize"] (default: 'medium') )

支持axes.prop_cycle属性 市场化的 在RCPARAMS中

Mat普特利布 rcParams 设置对象现在支持属性的配置 axes.prop_cycle 使用 markevery Line2d对象属性。此功能的示例位于 属性循环属性markevery in rcParams .

多页PDF支持pgf后端

pgf后端现在还支持多页PDF文件。

from matplotlib.backends.backend_pgf import PdfPages
import matplotlib.pyplot as plt

with PdfPages('multipage.pdf') as pdf:
    # page 1
    plt.plot([2, 1, 3])
    pdf.savefig()

    # page 2
    plt.cla()
    plt.plot([3, 1, 2])
    pdf.savefig()

饼图现在默认为圆形。

我们承认大多数人不喜欢蛋形派。因此,默认情况下,绘制饼图的轴将被设置为具有相等的纵横比。这样可以确保饼图显示为与轴大小或单位无关的圆形。要恢复到以前的行为,请使用将轴的纵横比设置为自动 ax.set_aspect("auto")plt.axis("auto") .

添加 ax.get_gridspecSubplotBase

新方法 SubplotBase.get_gridspec 添加后,用户可以轻松获得用于制作轴的网格规格:

import matplotlib.pyplot as plt

fig, axs = plt.subplots(3, 2)
gs = axs[0, -1].get_gridspec()

# remove the last column
for ax in axs[:,-1].flatten():
  ax.remove()

# make a subplot in last column that spans rows.
ax = fig.add_subplot(gs[:, -1])
plt.show()

轴标题将不再重叠xaxis

以前,如果一个Xaxis重叠(通常当Xaxis放在轴的顶部时),则必须手动移动轴标题。现在,如果标题位于顶部,则标题将自动移动到Xaxis及其装饰器(包括Xlabel)的上方。

如果需要,标题仍然可以手动放置。有一个轻微的拼凑;算法检查标题的Y位置是否为1.0(默认值),如果是,则移动。如果用户将标题放在默认位置(即 ax.title.set_position(0.5, 1.0) ,标题仍将移动到Xaxis之上。如果用户想要避免这种情况,他们可以指定一个接近的数字(即 ax.title.set_position(0.5, 1.01) )标题不会通过该算法移动。

网格规范的新便捷方法

有新的方便方法 gridspec.GridSpecgridspec.GridSpecFromSubplotSpec . 我们现在可以打电话来代替前者 Figure.add_gridspec 对于后者 SubplotSpec.subgridspec .

import matplotlib.pyplot as plt

fig = plt.figure()
gs0 = fig.add_gridspec(3, 1)
ax1 = fig.add_subplot(gs0[0])
ax2 = fig.add_subplot(gs0[1])
gssub = gs0[2].subgridspec(1, 3)
for i in range(3):
    fig.add_subplot(gssub[0, i])

图有 add_artist 方法

一种方法 add_artist 已添加到 Figure 类,它允许艺术家直接添加到图形中。例如::

circ = plt.Circle((.7, .5), .05)
fig.add_artist(circ)

如果添加的艺术家以前没有转换集,则将其设置为图形转换。 (fig.transFigure )这种新方法对于向没有轴的图形中添加艺术家或在图形坐标中轻松定位静态元素可能很有用。

:math: directive renamed to :mathmpl:

这个 :math: RST角色由提供 matplotlib.sphinxext.mathmpl 已重命名为 :mathmpl: 以避免与 :math: 默认情况下 Sphinx 1.8提供的角色。 (:mathmpl: 使用matplotlib将数学表达式呈现为嵌入在HTML中的图像,而sphinx使用mathjax。)

使用狮身人面像<1.8时,两个名称 (:math::mathmpl: )保持向后兼容。