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_demo_gridspec01_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()。 这之所以困难,是因为很难在不同的操作系统、用户界面工具包和版本之间获得一致的行为。 Eric Firing 在跨后端合理化 show 方面做了大量工作,期望的行为是使 show 提升所有新创建的图形并阻塞执行,直到它们关闭。 重复调用 show 应该提升自上次调用以来新创建的图形。 Eric 已经在他所拥有的用户界面工具包和版本以及平台上进行了大量测试,但不可能测试所有情况,因此请将问题报告给 邮件列表错误跟踪器

mplot3d 图形可以嵌入到任意轴中#

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

(Source code, 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 开发者的大力支持。

Bugfix 马拉松#

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