Matplotlib 1.1 新特性(2011年11月2日)#

注意

matplotlib 1.1 支持 Python 2.4 到 2.7

桑基图 (Sankey Diagrams)#

Kevin Davies 将 Yannick Copin 最初的桑基图示例扩展为一个模块 (sankey),并提供了新的示例(桑基类使用桑基图进行长链连接朗肯循环)。

../../_images/sphx_glr_sankey_rankine_001.png

动画 (Animation)#

Ryan May 编写了一个与后端无关的动画图形创建框架。animation 模块旨在取代之前 示例 列表中针对特定后端的示例。使用该新框架的示例位于 动画 (Animation) 中;请参阅令人着迷的 双摆 <gallery/animation/double_pendulum_sgskip.py>,它使用了 matplotlib.animation.Animation.save() 来创建下方的电影。

该框架目前被视为测试版发布;欢迎试用并提供反馈。

紧凑布局 (Tight Layout)#

Matplotlib 用户经常提出的一个问题是缺乏一个能很好地排列图表元素的布局引擎。虽然 Matplotlib 仍然坚持给予用户对图表元素放置的完全控制权,但 Jae-Joon Lee 创建了 matplotlib.tight_layout 模块,并引入了一个新命令 tight_layout() 来解决最常见的布局问题。

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

(2x.png, png)

该功能的用法可以非常简单:

plt.tight_layout()

它将调整子图之间的间距,使轴标签不会与相邻子图重叠。我们已创建了一份 紧凑布局指南,以展示如何使用此新工具。

PyQT4, PySide, 和 IPython#

Gerald Storer 使 Qt4 后端同时兼容 PySide 和 PyQT4。但目前 PySide 不支持用于在等待文本输入时处理 GUI 事件的 PyOS_InputHook 机制,因此它不能与 IPython 的新版本 0.11 一起使用。在 PySide 支持此功能之前,IPython 用户应使用 PyQT4 的包装器(仍为 Matplotlib 默认设置)。

新增了一个 rcParam 条目 "backend.qt4",允许用户选择 PyQt4、PyQt4v2 或 PySide。后两者使用 Version 2 Qt API。在大多数情况下,用户可以忽略此 rcParam 变量;它仅用于辅助测试,并为那些在 PyQt4 或 PySide 应用中嵌入 Matplotlib 的用户提供控制权。

图例 (Legend)#

Jae-Joon Lee 改进了图例。首先,像 stem() 绘图这类复杂绘图的图例现在可以正确显示。其次,改进了存在 NAN 值时图例的“最佳”放置算法。

请参阅 图例指南 以获取更详细的说明和示例。

../../_images/sphx_glr_legend_demo_004.png

mplot3d#

为了让 Matplotlib 中的 3D 绘图像 2D 绘图一样简单,Ben Root 对 mplot3d 模块进行了多项改进。

  • Axes3D 得到了改进,使该类更接近于与常规 Axes 对象的功能对等。

  • mplot3d 工具包 的文档得到了大幅扩展。

  • 改进了轴标签和方向。

  • 大多数 3D 绘图函数现在支持空输入。

  • 添加了刻度偏移显示。

../../_images/sphx_glr_offset_001.png
  • contourf() 增加了 zdiroffset 关键字参数。现在您可以这样做:

../../_images/sphx_glr_contourf3d_2_001.png

移除了对 Numerix 的支持#

经过两年多的弃用警告,Numerix 支持已从 Matplotlib 中彻底移除。

标记 (Markers)#

plot()scatter() 的可用标记列表现已合并。虽然它们大部分相似,但有些标记仅存在于一个函数中。此次合并确实导致了 'd' 菱形标记的冲突。现在,'d' 将始终被解释为“细”菱形,而 'D' 则指“常规”菱形。

感谢 Michael Droettboom 的努力。

其他改进#

  • 为极坐标轴和 arrow() 提供了单位支持。

  • PolarAxes 增加了 "theta_direction" 和 "theta_offset" 的 getter 和 setter,允许 theta 按顺时针或逆时针方向运行,并指定零度角的位置。set_theta_zero_location() 是新增的便利函数。

  • 修复了三角函数(如 tripcolor())在参数处理上的错误。

  • 在 rcParams 中添加了 axes.labelweight 参数。

  • 对于 imshow()interpolation='nearest' 现在将始终执行插值。已添加 "none" 选项以表示完全不进行插值。

  • 修复了 Hammer 投影中的一个错误。

  • contour()clabel 现在接受可调用对象。感谢 Daniel Hyams 提供最初的补丁。

  • Jae-Joon Lee 添加了 HBoxDividerVBoxDivider 类。

  • Christoph Gohlke 降低了 imshow() 的内存使用量。

  • scatter() 现在接受空输入。

  • 'symlog' 刻度的行为已修复,但这可能会导致现有绘图出现细微变化。这项工作由 ssyr 优化。

  • Peter Butterworth 为 figure() 添加了命名图形支持。

  • Michiel de Hoon 修改了 MacOSX 后端,使其交互行为与其他后端保持一致。

  • Pim Schellart 添加了一个名为 "cubehelix" 的新色图。Sameer Grover 添加了一个名为 "coolwarm" 的色图。查看它及所有其他色图 此处

  • 许多错误修复和文档改进。