Matplotlib 2.0 的新特性 (2017年1月17日)#
备注
Matplotlib 2.0 支持 Python 2.7 和 3.4 及以上版本
默认样式更改#
v2.0 的主要变化与重新设计默认样式有关。
改进了颜色转换API和RGBA支持#
The colors 获得了一个新的颜色转换API,完全支持alpha通道。主要的公共函数是 is_color_like(), matplotlib.colors.to_rgba(), matplotlib.colors.to_rgba_array() 和 to_hex()。RGBA四元组在十六进制格式中编码为“#rrggbbaa”。
一个额外的好处是,Qt 选项编辑器现在也允许设置艺术家的 alpha 通道。
新配置 (rcParams)#
新增的 rcparams
参数 |
描述 |
|---|---|
|
用于'年'刻度日期的格式字符串 |
|
用于 'month' 尺度日期的格式字符串 |
|
用于'天'尺度日期的格式字符串 |
|
|
|
|
|
用于 '秒' 级时间的格式字符串 |
|
用于'微秒'尺度时间的格式字符串 |
|
散点图的默认标记 |
|
见注释 |
|
控制主要和次要刻度线的绘制位置。全局值与相应的主要/次要值进行 |
|
在 |
|
线条虚线图案是否应随线条宽度缩放。 |
|
在刻度标签中保存的最小数字位数,触发使用偏移量。 |
在 rcParams 中添加了 svg.hashsalt 键#
如果 svg.hashsalt 是 None (这是默认设置),svg 后端使用 uuid4 来生成哈希盐。如果不是 None,它必须是一个字符串,该字符串将作为哈希盐使用,而不是 uuid4。这允许确定性的 SVG 输出。
移除了 svg.image_noscale rcParam#
由于对图像处理进行了大量更改,svg.image_noscale rcParam 已被移除。可以通过在单个图像上设置 interpolation='none' 或在全局使用 image.interpolation rcParam 来实现相同的功能。
定性色彩映射#
ColorBrewer 的 "定性" 色图("Accent", "Dark2", "Paired", "Pastel1", "Pastel2", "Set1", "Set2", "Set3")原本是为离散的分类数据设计的,没有数值上的含义,因此已被转换为 ListedColormap 而不是 LinearSegmentedColormap,这样颜色将不再被插值,可以用于地图着色、标记图像特征等。
轴偏移标签现在响应 labelcolor#
当 labelcolor 改变时,轴偏移标签现在与轴刻度标记颜色相同。
改进的偏移文本选择#
默认的偏移文本选择已更改为仅使用所有刻度共有的有效数字(例如,1231..1239 -> 1230,而不是1231),除非它们跨越一个相对较大的10的幂的倍数,在这种情况下选择该倍数(例如,1999..2001 -> 2000)。
样式参数黑名单#
为了防止使用样式时产生意外后果,样式文件不再能够设置影响与样式无关的事物的参数。这些参数包括:
'interactive', 'backend', 'backend.qt4', 'webagg.port',
'webagg.port_retries', 'webagg.open_in_browser', 'backend_fallback',
'toolbar', 'timezone', 'datapath', 'figure.max_open_warning',
'savefig.directory', 'tk.window_focus', 'docstring.hardcopy'
默认字体的更改#
matplotlib 使用的默认字体已分别更改为 DejaVu Sans 和 DejaVu Serif,用于 sans-serif 和 serif 字体系列。DejaVu 字体系列基于之前的 matplotlib 默认字体 --Bitstream Vera--,但包含更广泛的字符范围。
默认的数学文本字体已从Computer Modern更改为DejaVu系列,以保持与常规文本的一致性。为 mathtext.fontset 配置参数添加了两个新选项:dejavusans``(默认)和 ``dejavuserif。这两个选项在可能的情况下都使用DejaVu字形,并在DejaVu中找不到字形时回退到STIX符号。要恢复到之前的行为,请将rcParam mathtext.fontset 设置为 cm。
更快的文本渲染#
在Agg后端渲染文本现在更加清晰,绘制速度大约提高了20%。
改进 Qt 图形选项编辑器#
针对Qt图形选项编辑器,实施了多种可用性改进,其中包括:
线条样式条目现在已排序且无重复。
现在可以为图像设置颜色映射和归一化限制。
浮点值的行编辑现在仅显示避免精度损失所需的位数。关于使用Qt5和十进制分隔符为“,”的区域设置的输入验证,还修复了一个重要错误。
轴选择器现在使用更短、更用户友好的名称来表示轴,并且在没有轴的情况下不会崩溃。
使用默认标签("_lineX", "_imageX")的行和图像条目现在即使有超过10个条目也会按数字顺序排序。
改进的图像支持#
在2.0版本之前,matplotlib在重采样图像时首先应用颜色映射,然后对结果进行缩放。由于重采样是在彩色图像上进行的,这导致输出图像中引入了实际上在颜色映射中不存在的颜色。现在,图像首先被重采样(如果输入图像是浮点数,则完全在浮点数中进行),然后应用颜色映射。
为了进行这一重要更改,图像处理代码几乎被完全重写。作为副作用,图像重采样使用的内存和数据类型转换比以前更少。
实验性的私有功能,通过设置私有成员 _image_skew_coordinate 来“倾斜”图像的功能已被移除。取而代之的是,图像将遵循其所在轴的变换。
图像绘图中的非线性刻度#
imshow 现在在应用非线性尺度后,在数据空间中请求的点绘制数据。
左侧的图像展示了新的、正确的行为。旧的行为可以通过右侧展示的 pcolormesh 来重现。
(Source code, 2x.png, png)
这可以通过类比于绘制一个具有对数x轴的线性间隔直方图来理解。等大小的区间在小*x*时会显得更宽,而在大*x*时会显得更窄。
NbAgg 和 WebAgg 后端对 HiDPI(Retina)显示器的支持#
NbAgg 和 WebAgg 后端现在将使用您的高像素密度显示器的全分辨率。
默认动画编解码器的更改#
默认的动画编解码器已从 mpeg4 更改为 h264,后者更为高效。可以通过 animation.codec rcParam 进行设置。
已弃用对动画中 mencoder 的支持#
使用 mencoder 通过 mpl 编写视频文件存在问题;强烈建议切换到 ffmpeg。所有对 mencoder 的支持将在版本 2.2 中移除。
箱线图 Zorder 关键字参数#
boxplot 现在有了 zorder 参数。这允许在绘图函数调用中设置箱线图的 zorder。:
boxplot(np.arange(10), zorder=10)
填充的 + 和 x 标记#
rcount 和 ccount 用于 plot_surface#
自 v2.0 起,mplot3d 的 plot_surface 现在接受 rcount 和 ccount 参数,用于控制绘图时输入数据的采样。这些参数指定了从输入数据中获取的均匀间隔样本的最大数量。这些参数也是该函数的新默认采样方法,并被视为一种样式变化。
旧的 rstride 和 cstride 参数,它们指定了均匀间隔样本的大小,在调用 'classic' 模式时成为默认值,并且仍然可供使用。没有计划弃用这些参数。
Streamplot Zorder 关键字参数更改#
streamplot 的 zorder 参数现在默认值为 None 而不是 2。如果 zorder 为 None,streamplot 的默认 zorder 为 matplotlib.lines.Line2D.zorder。
扩展 matplotlib.backend_bases.GraphicsContextBase#
为了支持在不同后端标准化阴影行为,我们将 matplotlib.backend_bases.GraphicsContextBase.get_hatch_color 方法添加到 matplotlib.backend_bases.GraphicsContextBase 中。这仅在我们提供的后端渲染过程中使用,因此不会破坏任何第三方后端。
如果你维护一个扩展 GraphicsContextBase 的第三方后端,这个方法现在对你可用,并且应该用于着色填充图案。