【可视化】Matplotlib V3.0版本上线了,新功能介绍

 

改进了默认的后端选择

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

无头linux服务器(由未定义的DISPLAY env标识)不会选择GUI后端。

循环色图

添加了两个名为“twilight”和“twilight_shifted”的新色图。这些色彩图以相同的颜色开始和结束,并且具有两个对称的半部,具有相同的亮度,但是颜色发散。由于它们环绕,因此它们是循环数据的良好选择,例如相位角,罗盘方向或一天中的时间。像viridis和 cividis一样黄昏在感性上是均匀的,色盲友好。

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

要按固定的数量级缩放轴,请将scilimits参数设置 Axes.ticklabel_format为相同(非零)的下限和上限。比如说将y轴缩放一百万(1e6),请使用

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

行为没有改变。使用此设置,Matplotlib将根据轴值调整数量级,而不是保持固定。以前,设置 等同于设置。scilimits=(0, 0)scilimits=(m,m)scilimits=(0, 0)

AnchoredDirectionArrows向mpl_toolkits 添加功能

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

添加minorticks_on()/off()colorbar的方法

colorbar.Colobar.minorticks_on()添加了一种新方法来正确显示颜色条上的次要刻度。当扩展kwarg(在创建颜色条时使用)设置为“both”,“max”或“min” 时,此方法不允许次要刻度延伸到超出vmin和vmax的区域。colorbar.Colobar.minorticks_off() 还添加了一种补充方法来移除颜色条上的次要刻度。

Colorbar ticks现在可以自动

放置在彩条上的刻度数之前适用于大型彩条,但如果shrink彩色条变小(即通过kwarg)则看起来很糟糕。这已经改变,因此刻度的数量现在响应于颜色条的大小。

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

以前,使用GUI的保存对话框将图形保存到文件时,如果磁盘上已存在默认文件名(基于图窗口标题),Matplotlib会附加后缀(例如Figure_1-1.png),阻止对话框提示覆盖文件。此行为已被删除。现在,如果磁盘上存在文件名,则会提示用户是否覆盖它。这消除了猜测,并允许有意覆盖,尤其是在使用手动设置图形名称时figure.Figure.canvas.set_window_title()

Legend现在有一个title_fontsize kwarg(和rcParam)

一个标题Figure.legendAxes.legend现在有它的字体大小通过设置title_fontsizekwarg。还有一个新的rcParams["legend.title_fontsize"]。两者都默认为None,这意味着图例标题将具有与轴默认fontsize相同的字体大小(不是fontsizekwarg 设置的图例字体大小 rcParams["legend.fontsize"])。

支持axes.prop_cycle财产markevery在rcParams 

Matplotlib rcParams设置对象现在支持axes.prop_cycle使用markevery Line2D对象属性使用循环器配置属性。提供此功能的一个示例 py

pgf后端的多页PDF支持

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_gridspec到SubplotBase

SubplotBase.get_gridspec添加了新方法,以便用户可以轻松获得制作轴的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重叠

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

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

GridSpec的新便捷方法

有新的便捷方法gridspec.GridSpec和 gridspec.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)

如果添加的艺术家之前没有变换集,则将其设置为数字transform(fig.transFigure)。这种新方法可用于将艺术家添加到没有轴的图形中,或者可以轻松地将静态元素定位在图形坐标中。

math:指令重命名为:mathmpl

:math:提供的第一个角色matplotlib.sphinxext.mathmpl已重命名为:mathmpl:避免与:math:Sphinx 1.8默认提供的角色冲突。(:mathmpl:使用Matplotlib将数学表达式渲染为嵌入在html中的图像,而Sphinx使用MathJax。)

当使用Sphinx <1.8时,两个名称(:math::mathmpl:)仍然可用于反向兼容。

想了解更多,请移步官网,查看。

原文:https://matplotlib.org/3.0.0/users/whats_new.html#

猜你喜欢

转载自blog.csdn.net/ChenVast/article/details/82835112