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 创建 Figure 和多个子图时所需的样板代码感到厌倦,因此编写了一个 subplots() 辅助函数。基础用法允许你创建 Figure 以及一个通过 numpy 索引(从 0 开始)访问的子图数组。例如:
fig, axarr = plt.subplots(2, 2)
axarr[0,0].plot([1,2,3]) # upper, left
请参阅 多个子图 查看更多代码示例。
等高线修复与三角网格绘图#
Ian Thomas 修复了一个困扰我们最优秀开发人员多年的长期 bug。contourf() 现在可以正确处理内部掩码区域,且线条等高线与填充等高线的边界现已能够重合。
此外,他还贡献了一个新模块 tri 以及用于创建和绘制非结构化三角形网格的辅助函数 triplot()。
支持多次调用 show#
一个长期以来的请求是支持多次调用 show()。这曾十分困难,因为很难在不同的操作系统、用户界面工具包和版本之间实现一致的行为。Eric Firing 在各后端间对 show 的实现进行了大量梳理工作,目标是让 show 能够显示所有新创建的图表,并阻塞执行直到它们被关闭。重复调用 show 应当会显示自上次调用以来新创建的图表。Eric 在他能接触到的界面工具包、版本和平台上进行了大量测试,但不可能测试所有情况,因此如果遇到问题,请向 邮件列表 和 错误追踪器 反馈。
mplot3d 图表可嵌入任意坐标轴#
现在你可以将 mplot3d 图表放置在任意坐标轴位置,支持在同一 Figure 中混合使用 2D 和 3D 图表,和/或在单个 Figure 中放置多个 3D 图表。只需在 add_axes 或 add_subplot 中使用 "projection" 关键字参数即可。感谢 Ben Root。
tick_params#
Eric Firing 编写了 tick_params,这是一个用于更改刻度和刻度标签外观的便捷方法。请参阅 pyplot 函数 tick_params() 以及对应的 Axes 方法 tick_params()。
大量的性能和功能增强#
加快了大图像的放大速度,并支持放大至单个像素
本地安装的文档运行效果更好
改进了“小部件”(widgets)——支持鼠标抓取
更精确的线条与像素边界对齐
在整个 API 中更一致地处理颜色,特别是 alpha 通道
大幅改进的软件工程实践#
得益于改进的 软件工程实践 (software carpentry),Matplotlib 主干代码库目前处于有史以来最好的状态。我们现在拥有一个 buildbot,它会在每次 svn 提交时运行一套 nose 回归测试,自动生成一组图像并将其与已知良好的图像进行比对,若有失败,会通过电子邮件向开发者发送逐像素的对比结果。发布和错误修复在分支中进行,这使得新功能的积极开发可以在主干中进行,同时保持发布分支的稳定。感谢 Andrew Straw、Michael Droettboom 及其他 Matplotlib 开发人员的辛勤工作。
错误修复马拉松#
Eric Firing 进行了一场错误修复和关闭马拉松,在 Jae-Joon Lee、Michael Droettboom、Christoph Gohlke 和 Michiel de Hoon 的帮助下,关闭了(现已关闭的)SourceForge 错误追踪器上的 100 多个 bug。