Matplotlib 1.4 中的新功能 (2014 年 8 月 25 日)#
Thomas A. Caswell 担任 1.4 版本的发布经理.
备注
matplotlib 1.4 支持 Python 2.6,2.7,3.3 和 3.4
新色彩映射#
在热图中,通常使用从绿色到红色的频谱来指示活动的强度,但这对红/绿色盲来说可能会有问题.现在可以在 matplotlib.cm.Wistia 中找到一种新的,对色盲友好的色彩映射.此色彩映射保持红/绿符号,同时通过亮度变化实现 deuteranopic 可读性.有关更多信息,请参见 here .
nbagg 后端#
Phil Elson 添加了一个名为"nbagg"的新后端,它可以在实时的 IPython notebook 会话中启用交互式图形.该后端利用了为 webagg 后端开发的基础架构,webagg 后端本身在浏览器中提供了独立的服务器支持的交互式图形,但是 nbagg 不需要专用的 matplotlib 服务器,因为所有通信都是通过 IPython Comm 机制处理的.
与其他后端一样,可以使用以下方式在 IPython notebook 中启用 nbagg:
import matplotlib
matplotlib.use('nbagg')
一旦创建了图形,然后又随后显示,它们将被放置在 notebook 内的交互式小部件中,允许以与任何其他 matplotlib 后端相同的方式进行平移和缩放.因为图形需要连接到 IPython notebook 服务器才能实现其交互性,所以一旦保存了 notebook,每个图形都将呈现为静态图像 - 从而允许在 nbviewer 等服务上非交互式地查看图形.
新的绘图功能#
幂律归一化#
Ben Gamari 添加了一种幂律归一化方法, PowerNorm .此类使用幂律缩放将一系列值映射到区间 [0,1],幂律缩放的指数由构造函数的 gamma 参数提供.幂律归一化对于例如强调直方图中的小群体可能很有用.
完全可定制的箱线图#
Paul Hobson 重写了 boxplot() 方法,使其在样式和各个艺术家的位置方面完全可定制. 在底层, boxplot() 依赖于一个新的函数 ( boxplot_stats() ),它接受当前与 boxplot() 兼容的任何数据结构,并返回一个字典列表,其中包含箱线图中每个元素的位置. 然后调用第二个方法 bxp ,根据统计数据绘制箱线图.
boxplot() 函数可以像以前一样使用,一步到位地从数据生成箱线图. 但现在用户可以灵活地独立生成统计数据,或者在使用 bxp 绘图之前修改 boxplot_stats() 的输出.
最后,每个艺术家(例如,箱体,异常值,上限,凹口)现在都可以打开或关闭,它们的样式可以通过单独的 kwargs 传递. 参见示例 箱线图中的艺术家自定义 和 箱线图的单独计算和绘图
添加了一个 bool kwarg, manage_xticks ,如果为 False,则禁用 bxp() 对 x 轴上的刻度和限制的管理.
在 2d 图中支持 datetime 轴#
Andrew Dawson 添加了对 contour() , contourf() , pcolormesh() 和 pcolor() 的 datetime 轴的支持.
支持其他频谱类型#
Todd Jennings 添加了对新型频谱图的支持 magnitude_spectrum() , phase_spectrum() 和 angle_spectrum() ,以及 mlab 中的相应函数.
他还将这些频谱类型添加到 specgram() 中,并添加了对线性缩放的支持(除了现有的 dB 缩放). 还将对其他频谱类型的支持添加到 specgram() .
他还提高了所有这些函数和绘图类型的性能.
支持在 mlab 中对 2D 数组进行去趋势化和窗口化#
Todd Jennings 在 detrend_mean() , detrend_none() 和 detrend() 中添加了对 2D 数组的支持,并添加了 matplotlib.mlab.apply_window ,它支持对 2D 数组进行窗口化.
支持 mlab 中的步长#
Todd Jennings 向 mlab 添加了一些函数,以便更容易地使用 NumPy 步长来创建内存高效的 2D 数组. 这包括 matplotlib.mlab.stride_repeat ,它重复一个数组以创建一个 2D 数组,以及 matplotlib.mlab.stride_windows ,它使用一个移动窗口从 1D 数组创建一个 2D 数组.
用于新式格式化字符串的格式化程序#
添加了 StrMethodFormatter ,它的工作与 FormatStrFormatter 相同,但接受新式格式化字符串而不是 printf 式格式化字符串
流线图中的一致网格大小#
streamplot() 对 density=1 和 density=(1, 1) 都使用 30x30 的基本网格大小. 以前,对 density=1 使用 30x30 的网格大小,但对 density=(1, 1) 使用 25x25 的网格大小.
获取所有刻度标签的列表(主刻度和次刻度)#
将 kwarg 'which' 添加到 Axes.get_xticklabels , Axes.get_yticklabels 和 Axis.get_ticklabels . 'which' 可以是 'major','minor' 或 'both',选择要返回的刻度,如 set_ticks_position . 如果 'which' 是 None ,则为旧行为(由 bool minor 控制).
在 ImageGrid 中支持单独的水平/垂直轴填充#
如果需要单独的水平/垂直填充,则 mpl_toolkits.axes_grid1.axes_grid.ImageGrid 的 kwarg 'axes_pad' 现在可以是一个元组. 当每个子图旁边都有一个带标签的图例,并且您需要为图例的标签留出一些空间时,这应该非常有用.
支持倾斜变换#
Affine2D 获得了额外的方法 skew 和 skew_deg 来创建倾斜变换. 此外,matplotlib 内部结构经过清理,以支持在 Axes 中使用此类变换. 这种变换对于某些绘图类型很重要,特别是气象学中使用的 Skew-T.
支持在饼图中指定楔形和文本的属性.#
向 pie 添加了 kwargs 'wedgeprops' 和 'textprops',以接受饼图中楔形和文本对象的属性.例如,可以指定 wedgeprops = {'linewidth':3} 来指定饼图中楔形边框的宽度.有关用户可以指定的更多属性,请查看楔形和文本对象的文档.
修复了误差线上下限的方向#
Larry Bradley 修复了 errorbar() 方法,使上下限(lolims,uplims,xlolims,xuplims)现在指向正确的方向.
更一致的 Axes 添加对象 API#
添加了 Axes 方法 add_image ,使图像处理与 artists,collections,containers,lines,patches 和 tables 处于同等地位.
小提琴图#
Per Parker, Gregory Kelsie, Adam Ortiz, Kevin Chan, Geoffrey Lee, Deokjae Donald Seo 和 Taesu Terry Lim 添加了小提琴图的基本实现.小提琴图可用于表示样本数据的分布.它们类似于箱线图,但使用核密度估计函数来呈现所用数据样本的平滑近似值.添加的功能包括:
violin - 从统计数据集合中渲染小提琴图. violin_stats() - 生成适合渲染小提琴图的统计数据集合. violinplot() - 从一组样本数据创建一个小提琴图.此方法利用 violin_stats() 处理输入数据,并利用 violin_stats() 进行实际渲染.用户也可以自由修改或替换 violin_stats() 的输出,以便根据自己的喜好自定义小提琴图.
此功能是在 Anya Tafliovich 于 2014 年冬季在多伦多大学士嘉堡分校开设的软件工程课程中实现的.
更多 markevery 选项来仅显示标记的子集#
Rohan Walker 扩展了 Line2D 中的 markevery 属性.现在,您可以使用 int,slice 对象,numpy 高级索引或 float 来指定要显示的标记的子集.使用 float 会沿着该线以大致相等的显示坐标距离显示标记.
修复了鼠标坐标在极坐标图中给出错误 theta 值的问题#
向 transform_non_affine 添加了代码,以确保计算出的 theta 值在 0 到 2 * pi 范围内,因为问题在于在将方向和旋转应用于 theta 计算后,该值可能变为负值.
mplot3d 工具包的简单箭袋图#
多伦多大学 Anya Tafliovich 教授教授的工程大型软件系统课程中的一组学生,作为他们的学期项目之一,在 mplot3d 工具包中实现了一个简单的 3D 空间箭袋图版本.此功能记录在 quiver 中.团队成员包括:Ryan Steve D'Souza,Victor B,xbtsw,Yang Wang,David,Caradec Bisesar 和 Vlad Vassilovski.
极坐标图 r 刻度线位置#
添加了通过 set_rlabel_position 控制极坐标图上 r 刻度线标签的角位置的功能.
日期处理#
日期转换的 n 维数组支持#
Andrew Dawson 向 matplotlib.dates.num2date() , matplotlib.dates.date2num() 和 matplotlib.dates.datestr2num() 添加了 n 维数组处理支持.还向单位转换接口 matplotlib.dates.DateConverter 和 matplotlib.units.Registry 添加了支持.
配置 (rcParams)#
savefig.transparent 已添加#
控制图形是否默认以透明背景保存.之前 savefig 总是默认为非透明背景.
axes.titleweight#
添加了 rcParam 来控制标题的粗细
axes.formatter.useoffset 已添加#
控制 ScalarFormatter 中 useOffset 的默认值.如果为 True 且数据范围远小于数据平均值,则将确定一个偏移量,以使刻度标签有意义.如果为 False ,则将在所有条件下格式化完整数字.
nbagg.transparent 已添加#
控制 nbagg 图形是否具有透明背景.默认情况下 nbagg.transparent 为 True .
XDG 兼容性#
Matplotlib 现在在符合 XDG 标准的位置查找配置文件(包括 rcparams 和 style).
style 包已添加#
现在您可以使用新的 style 包轻松地在不同样式之间切换:
>>> from matplotlib import style
>>> style.use('dark_background')
后续绘图将使用更新的颜色,大小等.要列出所有可用的样式,请使用:
>>> print style.available
您可以将您自己的自定义 <style name>.mplstyle 文件添加到 ~/.matplotlib/stylelib ,或者使用指向包含 matplotlibrc 设置的文件的 URL 调用 use .
请注意,这是一个实验性功能,并且界面可能会随着用户测试此新功能而发生变化.
后端#
Qt5 后端#
Martin Fitzpatrick 和 Tom Badran 实现了 Qt5 后端.Qt4 和 Qt5 之间命名空间位置的差异通过对 Qt4 进行 shimming 使其看起来像 Qt5 来处理,因此 Qt5 实现是主要实现.通过包装 Qt5 实现来保持 Qt4 的向后兼容性.
Qt5Agg 后端当前无法与 IPython 的 %matplotlib magic 一起使用.
1.4.0 版本有一个已知错误,工具栏已损坏.可以通过以下方式修复:
cd path/to/installed/matplotlib
wget https://github.com/matplotlib/matplotlib/pull/3322.diff
# unix2dos 3322.diff (if on windows to fix line endings)
patch -p2 < 3322.diff
Qt4 后端#
Rudolf Höfler 更改了 subplottool 的外观.现在所有滑块都垂直排列,并添加了用于紧密布局和重置的按钮.此外,subplottool 现在被实现为模态对话框.它以前是一个 QMainWindow,如果关闭绘图窗口,则 SPT 保持打开状态.
在图形选项对话框中,现在可以选择(重新)生成简单的自动图例.任何显式设置的图例条目都将丢失,但对曲线的标签,线型等所做的更改现在将在图例中更新.
在 Windows 下,Qt4 后端的交互性能已得到显着提高.
Qt 到 Matplotlib 可以理解的值的键信号映射得到了极大的改进(对于 Qt4 和 Qt5).
Cairo 后端#
Cairo 后端现在可以使用 cairocffi bindings ,它比 pycairo bindings 维护得更积极.
Gtk3Agg 后端#
如果安装了 cairocffi bindings ,则 Gtk3Agg 后端现在可以在 Python 3.x 上运行.
PDF 后端#
添加了用于保存到多页 PDF 的上下文管理器.
文本#
SVG 后端支持文本 URL#
SVG 后端现在会将 Text 对象的 url 渲染为输出 SVG 中的链接.这允许您使用 Text 类的 url kwarg 在保存的图形中创建可单击的文本.
锚定尺寸条字体#
将 fontproperties kwarg 添加到 AnchoredSizeBar 以控制字体属性.
Sphinx 扩展#
plot_directive Sphinx 扩展中的 :context: 指令现在可以接受一个可选的 reset 设置,这将导致上下文被重置.这允许在文档中存在多个不同的上下文.要启用此选项,请在使用 :context: 任何时候要重置上下文时,使用 :context: reset 代替.
图例和 PathEffects 文档#
小部件#
Span Selector#
向 SpanSelector 添加了一个选项 span_stays ,它使您释放鼠标后,选择器矩形保留在轴上.
GAE 集成#
Matplotlib 现在可以在 google app engine 上运行.