Matplotlib 2.0 中的新功能(2017 年 1 月 17 日)#
备注
Matplotlib 2.0 支持 Python 2.7 和 3.4+
默认样式更改#
v2.0 中的主要更改与修改默认样式有关.
改进的颜色转换 API 和 RGBA 支持#
colors 获得了一个新的颜色转换 API,完全支持 alpha 通道.主要的公共函数有 is_color_like() , matplotlib.colors.to_rgba() , matplotlib.colors.to_rgba_array() 和 to_hex() .RGBA 四元组以十六进制格式编码为"#rrggbbaa".
一个额外的好处是 Qt 选项编辑器现在也允许设置艺术家的 alpha 通道.
新配置 (rcParams)#
添加了新的 rcparams
参数 |
描述 |
|---|---|
|
"年份"比例日期的格式字符串 |
|
'月'刻度日期字符串格式 |
|
'日'刻度日期字符串格式 |
|
'小时'刻度时间字符串格式 |
|
'分钟'刻度时间字符串格式 |
|
'秒'刻度时间字符串格式 |
|
'微秒'刻度时间字符串格式 |
|
散点图的默认标记 |
|
参见注释 |
|
控制主刻度和次刻度的绘制位置.全局值将与对应的主/次刻度值进行 |
|
|
|
线条的虚线模式是否应随线宽缩放. |
|
触发使用偏移量的刻度标签中保存的最小位数. |
向 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 ,因此颜色将不再被插值,它们可以用于 choropleths,标记的图像特征等.
轴偏移标签现在响应 labelcolor#
当 labelcolor 更改时,轴偏移标签现在与轴刻度标记的颜色相同.
改进的偏移文本选择#
默认的偏移文本选择已更改为仅使用对所有刻度都通用的有效数字(例如 1231..1239 -> 1230,而不是 1231),除非它们跨越一个相对较大的十的幂的倍数,在这种情况下,选择该倍数(例如 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,分别用于无衬线字体和衬线字体系列.DejaVu 字体系列基于之前的 matplotlib 默认字体 --Bitstream Vera--,但包含更广泛的字符.
默认的 mathtext 字体已从 Computer Modern 更改为 DejaVu 系列,以保持与常规文本的一致性. mathtext.fontset 配置参数添加了两个新选项: dejavusans (默认)和 dejavuserif .这两个选项在可能的情况下都使用 DejaVu 字形,并在 DejaVu 中找不到字形时回退到 STIX 符号.要返回到之前的行为,请将 rcParam mathtext.fontset 设置为 cm .
更快的文本渲染#
现在,在 Agg 后端渲染文本不太模糊,并且绘制速度提高了约 20%.
Qt 图形选项编辑器的改进#
Qt 图形选项编辑器实施了各种可用性改进,其中包括:
现在对线条样式条目进行排序,不包含重复项.
现在可以为图像设置颜色映射和归一化限制.
浮点值的行编辑现在仅显示避免精度损失所需的位数. 此外,还修复了一个重要的错误,该错误涉及使用 Qt5 和小数分隔符为","的区域设置时进行的输入验证.
现在,轴选择器对轴使用更短,更友好的名称,并且在没有轴的情况下不会崩溃.
现在,即使有超过 10 个条目,使用默认标签("_lineX","_imageX")的行和图像条目也会按数字排序.
改进的图像支持#
在 2.0 版本之前,matplotlib 通过首先应用颜色映射,然后调整结果大小来对图像进行重采样.由于重采样是在彩色图像上执行的,因此在输出图像中引入了颜色映射中实际不存在的颜色.现在,图像首先被重采样(如果输入图像是浮点数,则完全以浮点数进行重采样),然后应用颜色映射.
为了进行这一重要更改,图像处理代码几乎完全被重写.作为副作用,图像重采样使用的内存和数据类型转换比以前更少.
通过设置私有成员 _image_skew_coordinate 来"倾斜"图像的实验性私有功能已被删除.相反,图像将遵守绘制它们的轴的变换.
图像图上的非线性刻度#
imshow 现在在应用非线性刻度后,在数据空间中的请求点绘制数据.
左侧的图像演示了新的正确行为.可以使用 pcolormesh 重新创建旧的行为,如右侧所示.
(Source code, png)
这可以通过类比于绘制具有线性间隔 bin 和对数 x 轴的直方图来理解.等大小的 bin 将显示为小 x 较宽,大 x 较窄.
NbAgg 和 WebAgg 后端中对 HiDPI (Retina) 显示器的支持#
NbAgg 和 WebAgg 后端现在将使用您的高像素密度显示器的完整分辨率.
默认动画编解码器的更改#
默认动画编解码器已从 mpeg4 更改为 h264 ,后者效率更高.可以通过 animation.codec rcParam 设置它.
已弃用动画中对 mencoder 的支持#
使用 mpl 的 mencoder 编写视频文件存在问题;强烈建议切换到 ffmpeg.对 mencoder 的所有支持将在 2.2 版本中删除.
箱线图 Zorder 关键字参数#
现在 boxplot 存在 zorder 参数.这允许在绘图函数调用中设置箱线图的 zorder.
boxplot(np.arange(10), zorder=10)
填充的 + 和 x 标记#
已添加新的可填充加号和 x 标记.请参阅 markers 模块和 marker reference 示例.
plot_surface 的 rcount 和 ccount#
从 v2.0 开始,mplot3d 的 plot_surface 现在接受 rcount 和 ccount 参数,用于控制用于绘图的输入数据的采样.这些参数指定从输入数据中提取的最大数量的均匀间隔样本.这些参数也是该函数的新默认采样方法,被认为是样式更改.
当调用"classic"模式时,旧的 rstride 和 cstride 参数(指定均匀间隔样本的大小)将成为默认值,并且仍然可用.没有计划弃用这些参数.
Streamplot Zorder 关键字参数更改#
streamplot 的 zorder 参数现在具有默认值 None 而不是 2 .如果将 None 作为 zorder 给出,则 streamplot 具有 matplotlib.lines.Line2D.zorder 的默认 zorder .
matplotlib.backend_bases.GraphicsContextBase 的扩展#
为了支持标准化我们提供的后端中的阴影线行为,我们将 matplotlib.backend_bases.GraphicsContextBase.get_hatch_color 方法添加到 matplotlib.backend_bases.GraphicsContextBase .这仅在我们提供的后端中的渲染过程中使用,因此不会破坏任何第三方后端.
如果您维护一个扩展自 GraphicsContextBase 的第三方后端,此方法现在可供您使用,并且应该用于为阴影图案着色.