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 连接上应具有更低的延迟。
错误修复#
直方图现在包含端线。
修复了 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()
单独修改每个艺术家的草图参数。
更新的 Axes3D.contour 方法#
Damon McDougall 更新了 tricontour()
和 tricontourf()
方法,允许在任意非结构化用户指定的三角剖分上进行 3D 等高线图。
新的 eventplot 绘图类型#
Todd Jennings 添加了一个 eventplot()
函数来创建多行或多列相同的线段
作为此功能的一部分,有一个新的 EventCollection
类,允许绘制和操作多行或多列相同的线段。
三角形网格插值#
Geoffroy Billotey 和 Ian Thomas 添加了用于在三角形网格内执行插值的类:(LinearTriInterpolator
和 CubicTriInterpolator
)以及一个用于查找点所在三角形的实用工具类 (TrapezoidMapTriFinder
)。还添加了一个用于执行网格细化和平滑轮廓的辅助类 (UniformTriRefiner
)。最后,添加了一个实现三角形网格改进基本工具的类 (TriAnalyzer
)。
堆积图的基线#
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
现在会考虑图形上的所有艺术家 - 这以前不是这种情况,导致一些未按预期运行的极端情况。
初始化旋转的矩形#
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.xmargin
和 axes.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 浏览器中显示图形。它适用于动画,并且是完全交互式的。
未来版本的 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 和安装程序本身中附带的依赖项更少了。值得注意的是,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 控制确切的数字。