您现在的位置是:首页 > 文章详情

Matplotlib 3.0 可视化工具强势来袭!

日期:2018-09-25点击:368

Matplotlib 3.0来了!新版Matplotlib已能通过PyPI安装了,不过,这一版本只支持python 3,Python 2死忠还得继续用2.2.x版本。

50c239de0d71db04a5b378c369ab33780790b83c

作为最热门的Python 2D绘图工具之一,你看到的论文、教程里,有不少插图出自它手。

3.0版总共有16项变化:

改进了默认后端选择

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

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

新的循环调色板

381d7878befba3a94377e140d4fc6a9aaef0925c

添加了两种新调色板:twilight和twilight_shifted。它们都以相同的颜色开始、结束,每个调色板的两半是对称的,亮度相同颜色不同。

因为是循环的,所以它们很适合用在相位角、罗盘方向、一天中的时间等循环数据来上。

能按固定的数量级缩放轴

想要实现这个功能,需要为scilimits参数Axes.ticklabel_format设置相同的非零上限和下限。

比如说,要把y轴缩放100万倍(1e6),代码是这样的:

 

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

scilimits=(0, 0)的行为还和原来一样,Matplotlib会根据轴上的数值来调整数量级,不让它保持固定。以前,设置scilimits=(m, m)和设置scilimits=(0, 0)是一样的。

为mpl_toolkits新增AnchoredDirectionArrows

AnchoredDirectionArrows是一个新增的mpl_toolkits类,它能绘制一对正交箭头,在2D图表上指示方向。

有几个可选参数能改变布局,比如旋转箭头、改变颜色等等,箭头的头尾两部分长度、位置、宽度都能调整。

彩条能准确显示次要刻度线了

新增了colorbar.Colobar.minorticks_on()方法(method),用来正确显示彩条上的次要刻度标记;与之相对的colorbar.Colobar.minorticks_off(),可以移除次要刻度。

自动处理颜色条上的标记

以前,在大号彩条上加了标记(比如次要刻度线)之后,缩小彩条,标记就看起来很恐怖。

现在,标记的数量可以随着彩条大小响应式变化了。

不再自动给重名文件改名

以前,用GUI的保存对话框来保存图表文件时,如果它和磁盘上已有文件重名,Matplotlib会自动加个后缀。

现在,遇到重名的情况,Matplotlib会提示用户,询问是否覆盖。

可以设置图例标题字号了

现在,可以通过title_fontsize这个kwarg来设置Figure.legend和Axes.legend的字号了,还新增了一个rcParams["legend.title_fontsize"]

二者的默认值都是None,也就是说图例标题和轴标题的默认字号是相同的。

注意:是图例标题,不是图例本身。

rcParams支持用markevery设置axes.prop_cycle属性

Matplotlib里的rcParams设置对象,现在支持通过用markevery Line2D对象property的循环器来配置axes.prop_cycle属性(attribute)。

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()

默认饼图终于圆了

这是一个重大进步。(正经脸.jpg)

以前,Matplotlib的一大槽点就是饼图都是蛋形的。如果你还想调回原来的默认蛋型饼图,可以用ax.set_aspect("auto")或者plt.axis("auto")把纵横轴的比设为自动。

新增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()

轴标题不会再与x轴重叠了

以前,如果轴标题与x轴重叠,需要手动调整。

现在,如果x轴在顶部,轴标题会自动移到它上方。用户想手动调整标题位置依然可以,不过有个小问题:不能放在默认的位置,放了系统就会自动移开。如果非要放,可以选一个接近的数字。比如说,ax.title.set_position(0.5, 1.0)就会被自动移开,改成ax.title.set_position(0.5, 1.01)就可以了。

GridSpec有了新便捷方法

现在,gridspec.GridSpecgridspec.GridSpecFromSubplotSpec都有了便捷新方法,可以分别用Figure.add_gridspecSubplotSpec.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])

Figure有了add_artist方法

Figure类新增了add_artist方法,可以直接用artist和figure相加。例如:

 

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

:math:指令重命名为:mathmpl:

matplotlib.sphinxext.mathmpl提供的第:math:个角色已经重命名为:mathmpl:,避免了和Sphinx 1.9默认提供的:math:冲突。

当使用1.8以下版本的Sphinx,:math::mathmpl:都能反向兼容。

传送门

安装Matplotlib和依赖项,用这两行代码:

 

python -mpip install -U pip
python -mpip install -U matplotlib

原文发布时间为:2018-09-25
本文作者:李林
本文来自云栖社区合作伙伴“ 机器学习算法与Python学习”,了解相关信息可以关注“ 机器学习算法与Python学习”。
原文链接:https://yq.aliyun.com/articles/645474
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章