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 后端现在在异构互联网连接上的延迟应该更低。
错误修复#
直方图现在包含末端线。
修复了 Molleweide 投影的问题。
改进了对带有非 ASCII 元数据的 Microsoft 和 Macintosh 样式字体中最新字体的处理。
填充图之间的阴影现在在 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()
单独修改每个 artist 的草图参数。

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

新的 eventplot 绘图类型#
Todd Jennings 添加了一个 eventplot()
函数,用于创建多行或多列相同的线段

作为此功能的一部分,新增了一个 EventCollection
类,允许绘制和操作多行或多列相同的线段。
三角网格插值#
Geoffroy Billotey 和 Ian Thomas 添加了一些类,用于在三角网格中执行插值:(LinearTriInterpolator
和 CubicTriInterpolator
) 以及一个用于查找点所在三角形的实用类 (TrapezoidMapTriFinder
)。还添加了一个用于执行网格细化和平滑等高线的辅助类 (UniformTriRefiner
)。最后,添加了一个实现了三角网格改进基本工具的类 (TriAnalyzer
)。

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

矩形颜色条扩展#
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,路径效果现在也适用于绘图线。

更轻松地为带颜色的级别创建颜色图和归一化器#
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
会考虑到图形上的 所有 artist —— 以前并非如此,导致了一些未按预期工作的边缘情况。
初始化旋转矩形#
Damon McDougall 扩展了 Rectangle
构造函数,使其接受一个 angle 关键字参数,用于指定矩形的旋转角度(以度为单位)。
文本#
锚定文本支持#
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.xmargin
和 axes.ymargin
已添加到 rcParams#
rcParams["axes.xmargin"]
(默认值: 0.05
) 和 rcParams["axes.ymargin"]
(默认值: 0.05
) 已添加,用于配置默认使用的边距。以前它们硬编码为默认值 0,现在这两个 rcParam 值的默认值都是 0.05。
字体 rcParams 的更改#
现在,font.*
rcParams 仅影响在设置 rcParam 之后创建的文本对象,并且不会追溯影响已存在的文本对象。这使得它们的行为与大多数其他 rcParam 保持一致。
添加 savefig.jpeg_quality
rcParam#
savefig.jpeg_quality
rcParam 已添加,以便用户可以配置将图形保存为 JPEG 时使用的默认质量。默认质量为 95;以前的默认质量为 75。此更改最大限度地减少了 JPEG 图像固有的伪影,特别是对于像绘图那样颜色变化剧烈的图像。
后端#
WebAgg 后端#
Michael Droettboom、Phil Elson 及其他开发者开发了一个新的后端 WebAgg,用于在网页浏览器中显示图形。它支持动画,并且是完全交互式的。

matplotlib 的未来版本将把此后端与 IPython notebook 集成,以提供一个完全基于网页浏览器的绘图前端。
记住保存目录#
Martin Spacek 使保存图形对话框记住上次保存的目录。默认值可通过 matplotlibrc
文件中新增的 rcParams["savefig.directory"]
(默认值: '~'
) rcParam 进行配置。
文档和示例#
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 和安装程序本身一起提供的依赖项更少。值得注意的是,pytz、dateutil、pyparsing 和 six 不再包含在 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 进行控制。