Matplotlib 1.0 版本的新特性 (2010年7月6日)#
HTML5/Canvas 后端#
Simon Ratcliffe 和 Ludwig Schwardt 发布了 matplotlib 的 HTML5/Canvas 后端。该后端几乎功能完备,他们做了大量工作来比较他们的 html5 渲染图像与我们的核心渲染器 Agg。该后端具有在符合 html5 标准的浏览器中对 matplotlib 图形进行客户端/服务器交互导航的功能。
复杂的子图网格布局#
Jae-Joon Lee 编写了 gridspec
,这是一个用于进行复杂子图布局的新模块,具有行和列跨度和更多功能。有关教程概述,请参阅在图中排列多个坐标轴。
简单的 Python 式子图#
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 修复了一个长期存在的错误,这个问题困扰了我们最有才华的开发人员多年。contourf()
现在可以处理内部掩码区域,并且线条和填充等高线的边界重合。
支持多次调用 show#
一个长期存在的要求是支持多次调用 show()
。这很困难,因为很难在操作系统、用户界面工具包和版本之间获得一致的行为。Eric Firing 在跨后端合理化 show 方面做了很多工作,期望的行为是使 show 弹起所有新创建的图形并阻塞执行直到它们关闭。重复调用 show 应该会弹起自上次调用以来新创建的图形。Eric 在他可以访问的用户界面工具包和版本以及平台上进行了大量测试,但不可能测试所有这些,因此请将问题报告给邮件列表和错误跟踪器。
mplot3d 图形可以嵌入到任意坐标轴中#
您现在可以将 mplot3d 图形放置到任意坐标轴位置,支持在同一图中混合 2D 和 3D 图形,和/或在单个图中放置多个 3D 图形,方法是使用 "projection" 关键字参数来添加 add_axes 或 add_subplot。感谢 Ben Root。
tick_params#
Eric Firing 编写了 tick_params,这是一个方便的方法,用于更改刻度和刻度标签的外观。请参阅 pyplot 函数 tick_params()
和相关的 Axes 方法 tick_params()
。
大量性能和功能增强#
更快的大图像放大,以及放大到单个像素的能力
文档的本地安装效果更好
改进的“小部件”——支持鼠标抓取
线条更准确地捕捉到像素边界
在整个 API 中,颜色处理更加一致,特别是 alpha 通道
大大改进的软件工艺#
由于改进的 软件工艺,matplotlib 主干可能处于有史以来最好的状态。我们现在有一个 buildbot,它在每次 svn 提交时运行一套 nose 回归测试,自动生成一组图像并将其与一组已知良好的图像进行比较,并在出现故障时向开发人员发送电子邮件,其中包含逐像素的图像比较。发布和发布 bug 修复发生在分支中,允许在主干中进行活跃的新功能开发,同时保持发布分支的稳定。感谢 Andrew Straw、Michael Droettboom 和其他 matplotlib 开发人员的辛勤工作。
Bug 修复马拉松#
Eric Firing 进行了一次 bug 修复和关闭马拉松,在 Jae-Joon Lee、Michael Droettboom、Christoph Gohlke 和 Michiel de Hoon 的帮助下,关闭了(现已关闭的)SourceForge bug 跟踪器上的 100 多个 bug。