Matplotlib 1.3 新特性(2013 年 8 月 1 日)#

注意

matplotlib 1.3 支持 Python 2.6、2.7、3.2 和 3.3

1.3.1 中的新特性#

1.3.1 是一个微型版本,主要处理改进的安装程序和依赖项处理,以及更正和增强文档。

自 1.3.0 以来,1.3.1 中进行了以下更改。

增强功能#

错误修复#

  • 直方图现在包含端线。

  • 修复了 Molleweide 投影。

  • 改进了对 Microsoft 和 Macintosh 样式字体中非 ascii 元数据的处理。

  • 填充绘图之间的阴影现在在 PDF 后端中可以正确工作。

  • 紧密边界框支持现在可以在 PGF 后端中工作。

  • 透明图形现在可以在 Qt4Agg 后端中正确显示。

  • 现在可以从一个子图绘制到另一个子图的线条。

  • 改进了掩码数组上的单位处理。

设置和依赖项#

  • 现在可以使用任何版本的 pyparsing 1.5.6 或更高版本,而不会显示数百个警告。

  • 现在可以使用 MS-Windows 上的 64 位版本的 Ghostscript。

  • 当从源代码安装到没有 Numpy 的环境中时,Numpy 将首先被下载和构建,然后用于构建 matplotlib。

  • 外部安装的后端现在始终使用模块的完全限定路径导入。

  • 适用于较新版本的 wxPython。

  • 现在可以使用从源代码全局安装在系统上的 PyCXX 进行构建。

  • 更好地检测 Gtk3 依赖项。

测试#

  • 测试现在应该在非英语区域设置中工作。

  • PEP8 一致性测试现在报告问题的所在位置。

新的绘图功能#

xkcd 风格的草图绘图#

为了让您的绘图具有可能缺失的权威感,Michael Droettboom(受到 PR #1329 中许多其他人的工作启发)添加了一个 xkcd 风格的草图绘图模式。要使用它,只需在创建绘图之前调用 matplotlib.pyplot.xkcd 即可。对于真正精细的控制,还可以使用 matplotlib.artist.Artist.set_sketch_params() 单独修改每个艺术家的草图参数。

../../_images/sphx_glr_xkcd_001.png

更新的 Axes3D.contour 方法#

Damon McDougall 更新了 tricontour()tricontourf() 方法,允许在任意非结构化用户指定的三角剖分上进行 3D 等高线图。

../../_images/sphx_glr_tricontour3d_001.png

新的 eventplot 绘图类型#

Todd Jennings 添加了一个 eventplot() 函数来创建多行或多列相同的线段

../../_images/sphx_glr_eventplot_demo_001.png

作为此功能的一部分,有一个新的 EventCollection 类,允许绘制和操作多行或多列相同的线段。

三角形网格插值#

Geoffroy Billotey 和 Ian Thomas 添加了用于在三角形网格内执行插值的类:(LinearTriInterpolatorCubicTriInterpolator)以及一个用于查找点所在三角形的实用工具类 (TrapezoidMapTriFinder)。还添加了一个用于执行网格细化和平滑轮廓的辅助类 (UniformTriRefiner)。最后,添加了一个实现三角形网格改进基本工具的类 (TriAnalyzer)。

../../_images/sphx_glr_tricontour_smooth_user_001.png

堆积图的基线#

Till Stensitzki 向 stackplot() 添加了非零基线。它们可以是 对称的或加权的。

../../_images/sphx_glr_stackplot_demo_001.png

矩形颜色条扩展#

Andrew Dawson 向 colorbar() 添加了一个新的关键字参数 extendrect,以可选地使颜色条扩展为矩形而不是三角形。

更健壮的箱线图#

Paul Hobson 为 boxplot() 方法提供了一个修复,防止在分布不均匀的数据集中,须线绘制在箱内。

无参数调用 subplot()#

现在,不带任何参数调用 subplot() 的行为与 subplot(111)subplot(1, 1, 1) 相同——它为整个图形创建一个坐标轴。这已经是 axes()subplots() 的行为,现在这种一致性也与 subplot() 共享。

绘图#

面颜色和边颜色独立的 alpha 值#

Wes Campaigne 修改了 Patch 对象的绘制方式,使得(对于支持透明度的后端)可以通过以 RGBA 格式指定颜色,为面和边设置不同的 alpha 值。请注意,如果您为 patch 对象设置 alpha 属性(例如,使用 set_alpha()alpha 关键字参数),该值将覆盖在面颜色和边颜色中设置的 alpha 分量。

线条的路径效果#

感谢 Jae-Joon Lee,路径效果现在也可以在绘图线上工作了。

../../_images/sphx_glr_patheffect_demo_001.png

更轻松地创建具有颜色的级别的颜色图和归一化器#

Phil Elson 添加了 matplotlib.colors.from_levels_and_colors() 函数,可以轻松创建颜色图和归一化器,用于表示 matplotlib.pyplot.pcolormesh() 等绘图类型的离散颜色,其接口类似于 matplotlib.pyplot.contourf 的接口。

完全控制背景颜色#

Wes Campaigne 和 Phil Elson 修复了 Agg 后端,使得当 fig.patch.get_alpha() 不为 1 时,PNG 现在会使用正确的背景颜色保存。

改进的 bbox_inches="tight" 功能#

bbox_inches="tight" 传递到 pyplot.savefig 现在会考虑图形上的所有艺术家 - 这以前不是这种情况,导致一些未按预期运行的极端情况。

初始化旋转的矩形#

Damon McDougall 扩展了 Rectangle 构造函数,以接受 angle kwarg,指定矩形的旋转角度(以度为单位)。

文本#

锚定文本支持#

SVG 和 pgf 后端现在能够将文本对齐信息保存到其输出格式。这允许使用 Inkscape 等工具编辑已保存图形中的文本元素,同时保留其预期位置。对于 SVG,请注意,您必须禁用默认的文本到路径转换 (mpl.rc('svg', fonttype='none'))。

更好的垂直文本对齐和多行文本#

文本的垂直对齐现在在各个后端之间保持一致。您可能会看到文本位置的细微差异,尤其是在旋转文本的情况下。

如果您正在使用自定义后端,请注意 draw_text 渲染器方法现在传递的是基线的位置,而不是文本边界框底部的位置。

多行文本现在将为非常高或非常低的文本(例如上标和下标)的高度留出足够的空间。

左侧和右侧坐标轴标题#

Andrew Dawson 添加了使用 title() 的新关键字参数 loc,将坐标轴标题与坐标轴顶部的左侧和右侧对齐的功能。

改进的手动等高线图标签定位#

Brian Mattern 修改了手动等高线图标签定位代码,以沿线段进行插值,并找到等高线上与请求位置最接近的实际点。以前,使用的是最接近的路径顶点,在直线等高线的情况下,有时与请求的位置相距很远。现在可以进行更精确的标签定位。

配置 (rcParams)#

快速查找 rcParams#

Phil Elson 通过将有效的正则表达式传递给 matplotlib.RcParams.find_all(),可以更轻松地搜索 rcParameters。matplotlib.RcParams 现在还具有漂亮的 repr 和 str 表示形式,因此可以漂亮地打印搜索结果。

>>> import matplotlib
>>> print(matplotlib.rcParams.find_all('\.size'))
RcParams({'font.size': 12,
          'xtick.major.size': 4,
          'xtick.minor.size': 2,
          'ytick.major.size': 4,
          'ytick.minor.size': 2})

添加到 rcParams 的 axes.xmarginaxes.ymargin#

rcParams["axes.xmargin"] (默认值: 0.05) 和 rcParams["axes.ymargin"] (默认值: 0.05) 被添加用于配置默认使用的边距。之前它们被硬编码为默认值 0,现在这两个 rcParam 值的默认值都是 0。

字体 rcParams 的更改#

现在,font.* rcParams 仅影响在设置 rcParam 之后创建的文本对象,不会追溯影响已存在的文本对象。这使其行为与大多数其他 rcParams 一致。

添加了 savefig.jpeg_quality rcParam#

添加了 savefig.jpeg_quality rcParam,以便用户可以配置将图形写入为 JPEG 时使用的默认质量。默认质量为 95;之前,默认质量为 75。此更改最大限度地减少了 JPEG 图像中固有的伪影,尤其是在颜色发生急剧变化的图像中,如图通常那样。

后端#

WebAgg 后端#

Michael Droettboom、Phil Elson 和其他人开发了一个新的后端 WebAgg,用于在 Web 浏览器中显示图形。它适用于动画,并且是完全交互式的。

../../_images/webagg_screenshot.png

未来版本的 matplotlib 将把这个后端与 IPython notebook 集成,以实现完全基于 Web 浏览器的绘图前端。

记住保存目录#

Martin Spacek 使保存图形对话框记住上次保存的目录。可以使用新的 rcParams["savefig.directory"] (默认值:'~') rcParam 在 matplotlibrc 中进行配置。

文档和示例#

Numpydoc 文档字符串#

Nelle Varoquaux 已经启动了一个正在进行的项目,将 matplotlib 的文档字符串转换为 numpydoc 格式。有关更多信息,请参阅 MEP10

示例重组#

Tony Yu 已经开始工作,将示例重新组织成更有意义的类别。新的图库页面是这项正在进行的工作的成果。有关更多信息,请参阅 MEP12

示例现在使用 subplots()#

为了简洁明了,大多数 示例 现在都使用较新的 subplots(),它通过一次调用创建一个图形和一个(或多个)坐标轴对象。旧方法涉及调用 figure(),然后调用一个(或多个) subplot()

基础设施#

清理#

许多在 1.2 或更早版本中已弃用,或长期处于非工作状态的功能已被删除。重点包括删除 Qt 版本 3 的后端,以及 FltkAgg 和 Emf 后端。有关完整列表,请参阅 1.3.x 中的 API 更改

新的安装脚本#

matplotlib 1.3 包含一个完全重写的安装脚本。我们现在在 tarball 和安装程序本身中附带的依赖项更少了。值得注意的是,pytzdateutilpyparsingsix 不再包含在 matplotlib 中。您可以先手动安装它们,或者让 pip 将它们作为依赖项与 matplotlib 一起安装。现在可以不包括某些子组件,例如安装中的单元测试数据。有关更多信息,请参阅 setup.cfg.template

XDG 基本目录支持#

在 Linux 上,matplotlib 现在使用 XDG 基本目录规范 来查找 matplotlibrc 配置文件。matplotlibrc 现在应保存在 ~/.config/matplotlib 中,而不是 ~/.matplotlib 中。如果在旧位置找到您的配置,它仍将被使用,但会显示警告。

捕获使用 pyplot 打开过多图形的情况#

通过 pyplot.figure 创建的图形会保留,直到它们被显式关闭。因此,matplotlib 的新用户在循环中创建大量图形而不关闭它们时,通常会耗尽内存。

当一次打开太多图形时,matplotlib 现在会显示 RuntimeWarning。默认情况下,当打开 20 个或更多图形时会显示此警告,但可以使用 figure.max_open_warning rcParam 控制确切的数字。