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["date.autoformatter.year"] (default: '%Y')

"年份"比例日期的格式字符串

rcParams["date.autoformatter.month"] (default: '%Y-%m')

'月'刻度日期字符串格式

rcParams["date.autoformatter.day"] (default: '%Y-%m-%d')

'日'刻度日期字符串格式

rcParams["date.autoformatter.hour"] (default: '%m-%d %H')

'小时'刻度时间字符串格式

rcParams["date.autoformatter.minute"] (default: '%d %H:%M')

'分钟'刻度时间字符串格式

rcParams["date.autoformatter.second"] (default: '%H:%M:%S')

'秒'刻度时间字符串格式

rcParams["date.autoformatter.microsecond"] (default: '%M:%S.%f')

'微秒'刻度时间字符串格式

rcParams["scatter.marker"] (default: 'o')

散点图的默认标记

rcParams["svg.hashsalt"] (default: None)

参见注释

rcParams["xtick.top"] (default: False) , rcParams["xtick.major.top"] (default: True) rcParams["xtick.minor.top"] (default: True) , rcParams["xtick.bottom"] (default: True) , rcParams["xtick.major.bottom"] (default: True) rcParams["xtick.minor.bottom"] (default: True) , rcParams["ytick.left"] (default: True) , rcParams["ytick.minor.left"] (default: True) , rcParams["ytick.major.left"] (default: True) rcParams["ytick.right"] (default: False) , rcParams["ytick.minor.right"] (default: True) , rcParams["ytick.major.right"] (default: True)

控制主刻度和次刻度的绘制位置.全局值将与对应的主/次刻度值进行 and 运算.对应的主/次刻度值.

rcParams["hist.bins"] (default: 10)

hist 中使用的默认bin数量.如果安装了 numpy >= 1.11,则可以是一个 int ,一个浮点数列表,或者 'auto' .

rcParams["lines.scale_dashes"] (default: True)

线条的虚线模式是否应随线宽缩放.

rcParams["axes.formatter.offset_threshold"] (default: 4)

触发使用偏移量的刻度标签中保存的最小位数.

向 rcParams 添加了 svg.hashsalt#

如果 svg.hashsaltNone (默认情况),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 关键字参数更改#

streamplotzorder 参数现在具有默认值 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 的第三方后端,此方法现在可供您使用,并且应该用于为阴影图案着色.