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 中进行了以下更改.

增强功能#

  • 添加了一个上下文管理器,用于创建多页 pdf(请参阅 matplotlib.backends.backend_pdf.PdfPages ).

  • WebAgg 后端现在应该在异构 Internet 连接上具有更低的延迟.

Bug修复#

  • 直方图现在包含结束线.

  • 修复了 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-style 草图绘制模式.要使用它,只需在创建绘图之前调用 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

stackplot 的基线#

Till Stensitzki 将非零基线添加到 stackplot() . 它们可以是 symmetric 或 weighted.

../../_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 添加了使用新的关键字参数 loc 到 title() ,以便在坐标轴顶部的左侧和右侧添加与坐标轴齐平的坐标轴标题的功能.

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

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})

axes.xmarginaxes.ymargin 已添加到 rcParams#

rcParams["axes.xmargin"] (default: 0.05) 和 rcParams["axes.ymargin"] (default: 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"] (default: '~') 中新的 matplotlibrc rcParam 进行配置.

文档和示例#

Numpydoc 文档字符串#

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

示例重组#

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

示例现在使用 subplots()#

为了简洁明了,大多数 examples 现在使用新的 subplots() ,它在一个调用中创建一个图形和一个(或多个)轴对象. 旧方法涉及调用 figure() ,然后调用一个(或多个) subplot() .

基础设施#

代码清理#

许多在 1.2 或更早版本中已弃用,或长期处于非工作状态的功能已被删除.重点包括删除 Qt version 3 backends, 和 FltkAgg 和 Emf backends.有关完整列表,请参见 changes_in_1_3 .

新的安装脚本#

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

XDG 基本目录支持#

在 Linux 上,matplotlib 现在使用 XDG base directory specification 来查找 matplotlibrc 配置文件. matplotlibrc 现在应该保存在 ~/.config/matplotlib 中,而不是 ~/.matplotlib 中.如果在旧位置找到您的配置,它仍然会被使用,但会显示一条警告.

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

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

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