Matplotlib 1.0 中的新功能 (2010 年 7 月 6 日)#
HTML5/Canvas 后端#
Simon Ratcliffe 和 Ludwig Schwardt 发布了 matplotlib 的 HTML5/Canvas 后端.该后端几乎具有完整的功能,并且他们已经做了大量工作,将他们的 html5 渲染图像与我们的核心渲染器 Agg 进行比较.该后端具有在符合 html5 标准的浏览器中对 matplotlib 图形进行客户端/服务器交互式导航的功能.
复杂的子图网格布局#
Jae-Joon Lee 编写了 gridspec ,这是一个用于执行复杂子图布局的新模块,具有行和列跨度等功能.有关教程概述,请参阅 在 Figure 中排列多个 Axes .
简单的 Pythonic 子图#
Fernando Perez 厌倦了在使用 matplotlib API 时创建图形和多个子图所需的所有样板代码,并编写了一个 subplots() 辅助函数.基本用法允许您创建图形和一个带有 numpy 索引的子图数组(从 0 开始).例如:
fig, axarr = plt.subplots(2, 2)
axarr[0,0].plot([1,2,3]) # upper, left
请参考 多个子图 获取更多代码示例.
等高线修正和 triplot#
Ian Thomas 修复了一个长期存在的 bug,这个问题困扰了我们最有才华的开发者多年. contourf() 现在可以处理内部的遮罩区域,并且线和填充等高线的边界现在能够重合.
此外,他还贡献了一个新的模块 tri 和辅助函数 triplot() ,用于创建和绘制非结构化的三角形网格.
支持多次调用 show#
一个长期存在的需求是支持多次调用 show() . 这很困难,因为很难在操作系统,用户界面工具包和版本之间获得一致的行为. Eric Firing 在合理化后端 show 的行为方面做了很多工作,期望的行为是使 show 引发所有新创建的图形并阻塞执行,直到它们被关闭. 重复调用 show 应该引发自上次调用以来新创建的图形. Eric 在他可以访问的用户界面工具包,版本和平台上进行了大量测试,但不可能测试所有这些,所以请将问题报告给 mailing list 和 bug tracker .
mplot3d 图形可以嵌入到任意坐标轴中#
现在您可以将 mplot3d 图形放置到任意坐标轴位置,支持在同一图形中混合 2D 和 3D 图形,以及/或在单个图形中使用多个 3D 图形,使用 "projection" 关键字参数添加到 add_axes 或 add_subplot. 感谢 Ben Root.
(Source code, png)
tick_params#
Eric Firing 编写了 tick_params,这是一种用于更改刻度和刻度标签外观的便捷方法. 请参阅 pyplot 函数 tick_params() 和相关的 Axes 方法 tick_params() .
大量的性能和功能增强#
更快的大尺寸图像放大,以及放大到单个像素的能力
本地安装的文档工作得更好
改进的 "widgets" -- 支持鼠标抓取
更准确地将线条捕捉到像素边界
更一致地处理颜色,特别是 alpha 通道,在整个 API 中
大大改进的软件工艺#
由于改进的 software carpentry ,matplotlib trunk 可能处于有史以来最好的状态. 我们现在有一个 buildbot ,它在每次 svn 提交时运行一套 nose 回归测试,自动生成一组图像,并将它们与一组已知良好的图像进行比较,通过逐像素的图像比较将失败发送给开发人员. 发布和发布 bug 修复发生在分支中,允许活跃的新功能开发发生在 trunk 中,同时保持发布分支的稳定. 感谢 Andrew Straw,Michael Droettboom 和其他 matplotlib 开发人员的大量工作.
Bug 修复马拉松#
Eric Firing 进行了一次 bug 修复和关闭马拉松,在 Jae-Joon Lee,Michael Droettboom,Christoph Gohlke 和 Michiel de Hoon 的帮助下,关闭了(现已关闭的)SourceForge bug 跟踪器上的 100 多个 bug.