Matplotlib 1.0 新特性 (2010年7月6日)#

HTML5/Canvas 后端#

Simon Ratcliffe 和 Ludwig Schwardt 发布了一个适用于 Matplotlib 的 HTML5/Canvas 后端。该后端功能几乎完备,并且他们在将 HTML5 渲染图像与我们的核心渲染器 Agg 进行比较方面做了大量工作。此后端支持在兼容 HTML5 的浏览器中对 Matplotlib 图形进行客户端/服务器交互式导航。

复杂的子图网格布局#

Jae-Joon Lee 编写了 gridspec,这是一个用于实现复杂子图布局的新模块,支持行和列跨度等功能。请参阅在图形中排列多个坐标轴以获取教程概览。

../../_images/sphx_glr_subplot2grid_001.png

易于使用的 Pythonic 子图#

Fernando Perez 厌倦了在使用 Matplotlib API 创建图形和多个子图时所需的样板代码,于是编写了一个 subplots() 辅助函数。基本用法允许您创建图形和一个带 NumPy 索引(从 0 开始)的子图数组。例如:

fig, axarr = plt.subplots(2, 2)
axarr[0,0].plot([1,2,3])   # upper, left

有关代码示例,请参阅多个子图

等高线修复和三角网格图#

Ian Thomas 修复了一个长期存在的错误,这个错误困扰了我们最有才华的开发者多年。contourf() 现在可以处理内部掩码区域,并且线形和填充等高线的边界也一致。

此外,他还贡献了一个新模块 tri 和辅助函数 triplot(),用于创建和绘制非结构化三角网格。

../../_images/sphx_glr_triplot_demo_001.png

支持多次调用 show#

长期以来,人们一直要求支持多次调用 show()。这很困难,因为在不同操作系统、用户界面工具包和版本之间实现一致的行为很不容易。Eric Firing 在统一不同后端 show 的行为方面做了大量工作,其期望的行为是让 show 显示所有新创建的图形并阻塞执行直到它们关闭。重复调用 show 应该显示自上次调用以来新创建的图形。Eric 对他能访问的用户界面工具包、版本和平台进行了大量测试,但不可能测试所有情况,因此请将问题报告给邮件列表错误跟踪器

mplot3d 图形可嵌入任意坐标轴#

现在,您可以使用 add_axesadd_subplot 的 "projection" 关键字参数,将 mplot3d 图形放置在任意坐标轴位置,从而支持在同一图形中混合 2D 和 3D 图形,以及/或在单个图形中放置多个 3D 图形。感谢 Ben Root。

(源代码, 2x.png, png)

tick_params#

Eric Firing 编写了 tick_params,这是一个方便的方法,用于改变刻度线和刻度标签的外观。请参阅 pyplot 函数 tick_params() 和相关的 Axes 方法 tick_params()

大量性能和功能增强#

  • 大型图像的放大速度更快,并且能够放大到单个像素

  • 文档的本地安装效果更好

  • 改进了“小部件”——支持鼠标捕获

  • 线条与像素边界的对齐更精确

  • API 中对颜色,特别是 Alpha 通道,的处理更一致

软件工程大幅改进#

得益于改进的软件工程,Matplotlib 主干代码库状况可能是有史以来最好的。我们现在有一个 buildbot,它在每次 svn 提交时都会运行一套 nose 回归测试,自动生成一组图像并将其与一组已知合格图像进行比较,如果失败则向开发者发送电子邮件,其中包含逐像素的图像比较。发布和发布后的错误修复在分支中进行,允许在主干中进行活跃的新功能开发,同时保持发布分支的稳定。感谢 Andrew Straw、Michael Droettboom 和其他 Matplotlib 开发者为此付出的巨大努力。

Bug 修复马拉松#

Eric Firing 在 Jae-Joon Lee、Michael Droettboom、Christoph Gohlke 和 Michiel de Hoon 的帮助下,进行了一场错误修复和关闭马拉松,在(现已关闭的)SourceForge 错误跟踪器上关闭了 100 多个错误。