2.1.0中的API变更¶
日志刻度的默认行为更改为mask<=0值¶
调用 matplotlib.axes.Axes.set_xscale 或 matplotlib.axes.Axes.set_yscale 现在使用“mask”作为默认方法来处理无效值(而不是“clip”)。这意味着对数刻度上的任何值<=0都不会显示。
以前,它们被裁剪成一个非常小的数字并显示出来。
matplotlib.cbook.CallbackRegistry.process() 默认情况下禁止例外¶
Matplotlib使用的实例 CallbackRegistry 作为用户输入事件与用户回调之间的桥梁。以前,在用户回调中引发的任何异常都将冒泡出 process 方法,通常在GUI事件循环中。大多数GUI框架都简单地将跟踪打印到屏幕上并继续,因为不总是有一种将异常返回给用户的清晰方法。但是,当pyqt5在事件循环中接收到未处理的python异常时,它现在退出进程。因此, process() 现在,默认情况下取消并打印到stderr的回溯。
什么 process() 现在用户可以通过 exception_handler 属性和Kwarg。恢复上一个行为过程 None ::
cb = CallbackRegistry(exception_handler=None)
一个函数 Exception 因为它唯一的参数也可以传递:
def maybe_reraise(exc):
if isinstance(exc, RuntimeError):
pass
else:
raise exc
cb = CallbackRegistry(exception_handler=maybe_reraise)
改进了轴网格的切换¶
这个 g 键绑定现在切换 x 和 y 独立网格(通过循环所有四个开/关组合)。
新的 G 键绑定切换次要网格的状态。
如果只有网格线的一个子集(在任一方向)可见,则禁用这两个绑定,以避免对图形进行不可逆的更改。
滴答标签已关闭,而不是不可见¶
在内部, Tick 的 ~matplotlib.axis.Tick.label1On 属性现在用于隐藏刻度标签,而不是设置刻度标签对象的可见性。这提高了整体性能并解决了一些问题。因此,如果需要显示这些标签, tick_params() 需要使用,例如
ax.tick_params(labelbottom=True)
删除空图例上的警告¶
pyplot.legend 用于在找不到带标签的艺术家时发出警告。此警告已被删除。
库存样本数据清理¶
对库存的样本数据进行了清理,以消除冗余,提高可移植性。这个 AAPL.dat.gz , INTC.dat.gz 和 aapl.csv 文件已完全删除,也将不再从 matplotlib.cbook.get_sample_data . 如果需要csv文件,我们建议使用 msft.csv 这将继续在示例数据中提供。如果可以接受numpy二进制文件,我们建议使用以下两个新文件之一。这个 aapl.npy.gz 和 goog.npy 文件已被替换为 aapl.npz 和 goog.npz ,其中第一列的类型已从 datetime.date 到 numpy.datetime64 为了更好地跨Python版本进行移植。注意matplotlib不能完全支持 numpy.datetime64 到目前为止。
更新至2015年2月¶
Matplotlib附带的用于Delaunay三角测量的Qhull版本已从2012.1版更新到2015.2版。
改进的大偏移Delaunay三角测量¶
Delaunay三角测量现在以更好的方式处理较大的X,Y偏移。这可能导致使用matplotlib计算的任何三角测量发生微小变化,即使用 matplotlib.tri.Triangulation 这要求计算Delaunay三角测量,其中包括 matplotlib.pyplot.tricontour , matplotlib.pyplot.tricontourf , matplotlib.pyplot.tripcolor , matplotlib.pyplot.triplot , matplotlib.mlab.griddata 和 mpl_toolkits.mplot3d.axes3d.Axes3D.plot_trisurf .
使用 backports.functools_lru_cache 而不是 functools32¶
它得到更好的维护和更广泛的使用(由皮林特,雅拉科等)。
cbook.is_numlike 只执行实例检查¶
matplotlib.cbook.is_numlike 现在只检查其参数是否是 (numbers.Number, np.Number) . 特别是,这意味着数组现在不是num-like。
椭圆弧现在在正确的角度之间绘制¶
这个 matplotlib.patches.Arc 补丁现在正确绘制在给定的角度之间。
以前画了一条圆弧,然后拉伸成椭圆,因此所得的圆弧不在 THEA1 和 TaTa2 .
-d$backend 不再设置后端¶
不能再通过传递来设置后端 -d$backend 在命令行。使用 MPLBACKEND 而是环境变量。
path.intersects_bbox始终将边界框视为已填充¶
以前,什么时候 Path.intersects_bbox 被召唤 filled 设置为 False 将路径和边界框都视为未填充。由于边界框用于表示边界框内更复杂的形状,因此这种行为没有很好的文档记录,而且通常不是所需的行为。此行为现在已更改:何时 filled 是 False ,路径将被视为未填充,但边界框仍被视为已填充。旧的行为可以说是一个实现错误。
什么时候? Path.intersects_bbox 被调用 filled 设置为 True (默认值),行为没有变化。对于那些罕见的案例 Path.intersects_bbox 被召唤 filled 设置为 False 在实际需要旧行为的地方,建议的解决方法是调用 Path.intersects_path 以矩形作为路径::
from matplotlib.path import Path
from matplotlib.transforms import Bbox, BboxTransformTo
rect = Path.unit_rectangle().transformed(BboxTransformTo(bbox))
result = path.intersects_path(rect, filled=False)
WX不再调用生成 IdleEvent 事件或呼叫 idle_event¶
已删除未使用的私有方法 _onIdle 从 FigureCanvasWx .
这个 IdleEvent 类和 FigureCanvasBase.idle_event 方法将在2.2中删除。
正确缩放 magnitude_spectrum()¶
功能 matplotlib.mlab.magnitude_spectrum() 和 matplotlib.pyplot.magnitude_spectrum() 隐式假定窗口函数值的和为1。在Matplotlib和Numpy中,标准窗口函数被缩放为最大值1,这通常会导致n点信号的n/2阶之和。因此振幅标度 magnitude_spectrum() 在使用标准窗口功能时关闭了该数量 (Bug 8417 )现在的行为与 matplotlib.pyplot.psd() 和 scipy.signal.welch() . 下面的示例演示新的和旧的缩放:
import matplotlib.pyplot as plt
import numpy as np
tau, n = 10, 1024 # 10 second signal with 1024 points
T = tau/n # sampling interval
t = np.arange(n)*T
a = 4 # amplitude
x = a*np.sin(40*np.pi*t) # 20 Hz sine with amplitude a
# New correct behavior: Amplitude at 20 Hz is a/2
plt.magnitude_spectrum(x, Fs=1/T, sides='onesided', scale='linear')
# Original behavior: Amplitude at 20 Hz is (a/2)*(n/2) for a Hanning window
w = np.hanning(n) # default window is a Hanning window
plt.magnitude_spectrum(x*np.sum(w), Fs=1/T, sides='onesided', scale='linear')
更改为的签名 bar() & barh()¶
2岁 default value of *align* 改为 'center' . 但是这导致了 bar() 和 barh() 因为第一个参数仍然是 left 和 底部 分别:
bar(left, height, *, align='center', **kwargs)
barh(bottom, width, *, align='center', **kwargs)
尽管在这两种情况下都是中心人物。现在的方法 *args, **kwargs 作为输入并记录有以下主要签名:
bar(x, height, *, align='center', **kwargs)
barh(y, width, *, align='center', **kwargs)
经过 left 和 底部 作为关键字参数 bar() 和 barh() 分别发出警告。支架将在Matplotlib 3.0中拆除。
字体缓存为JSON¶
字体缓存现在保存为json,而不是pickle。
无效(非有限)轴限制错误¶
使用时 set_xlim() 和 set_ylim() ,传递非有限值现在会导致 ValueError . 先前的行为导致限值错误地重置为 (-0.001, 0.001) .
scatter 和 Collection 偏移不再隐式展平¶
Collection (因此2维 scatter 三维 scatter )不再隐式展平其偏移。因此, scatter 的 x 和 y 参数不能再是2+维度数组。
贬抑¶
GraphicsContextBase 的 linestyle 财产。¶
这个 GraphicsContextBase.get_linestyle 和 GraphicsContextBase.set_linestyle 方法没有任何效果,已被弃用。所有后端Matplotlib船使用 GraphicsContextBase.get_dashes 和 GraphicsContextBase.set_dashes 这是更一般的。第三方后端也应迁移到 *_dashes 方法。
测试¶
matplotlib.testing.noseclasses 已弃用,将在2.3中删除
EngFormatter num 作为字符串的ARG¶
将字符串作为 num 调用的实例时的参数 matplotlib.ticker.EngFormatter 已弃用,将在2.3中删除。
mpl_toolkits.axes_grid 模块¶
所有功能来自 mpl_toolkits.axes_grid 可以在任何一个 mpl_toolkits.axes_grid1 或 mpl_toolkits.axisartist . 轴类来自 mpl_toolkits.axes_grid 基于 Axis 从 mpl_toolkits.axisartist 可以在 mpl_toolkits.axisartist .
Axes collision in Figure.add_axes¶
通过使用与前一个轴实例相同的参数将轴实例添加到图中,当前会重用前一个实例。Matplotlib 2.1中已弃用此行为。在未来的版本中, new 将始终创建并返回实例。同时,在这种情况下,将通过以下方式提出一个弃用警告: AxesStack .
通过传递一个 独特的 每个轴实例的标签。查看文档字符串 add_axes() 更多信息。
前验证器 contour.negative_linestyle¶
前公共验证功能 validate_negative_linestyle 和 validate_negative_linestyle_legacy 将在2.1中弃用,并可在2.3中删除。没有公共功能来取代它们。
cbook¶
许多未使用或接近未使用 matplotlib.cbook 函数和类已被弃用: converter , tostr , todatetime , todate , tofloat , toint , unique , is_string_like , is_sequence_of_strings , is_scalar , Sorter , Xlator , soundex , Null , dict_delall , RingBuffer , get_split_ind , wrap , get_recursive_filelist , pieces , exception_to_str , allequal , alltrue , onetrue , allpairs , finddir , reverse_dict , restrict_dict , issubclass_safe , recursive_remove , unmasked_index_ranges .
代码删除¶
qt4_compat.py¶
搬到 qt_compat.py . 重命名,因为它现在也处理qt5。
以前弃用的方法¶
这个 GraphicsContextBase.set_graylevel , FigureCanvasBase.onHilite 和 mpl_toolkits.axes_grid1.mpl_axes.Axes.toggle_axisline 方法已被删除。
这个 ArtistInspector.findobj 方法,由于缺少 get_children 方法,已被移除。
被蔑视的 point_in_path , get_path_extents , point_in_path_collection , path_intersects_path , convert_path_to_polygons , cleanup_path 和 clip_path_to_rect 中的函数 matplotlib.path 模块已移除。它们的功能在 Path 班级。
被蔑视的 Artist.get_axes 和 Artist.set_axes 方法已被删除
这个 matplotlib.backends.backend_ps.seq_allequal 函数已被删除。使用 np.array_equal 相反。
被蔑视的 matplotlib.rcsetup.validate_maskedarray , matplotlib.rcsetup.deprecate_savefig_extension 和 matplotlib.rcsetup.validate_tkpythoninspect 功能和关联 savefig.extension 和 tk.pythoninspect 已删除RCPARMS条目。
关键字参数 分辨率 属于 matplotlib.projections.polar.PolarAxes 已删除。它具有贬低作用,不受版本影响 0.98.x .
Axes.set_aspect("normal")¶
支持设置 Axes 方面 "normal" 已删除,以支持同义词 "auto" .
从中删除的函数 lines 模块¶
这个 matplotlib.lines 模块不再导入 pts_to_prestep , pts_to_midstep 和 pts_to_poststep 功能从 matplotlib.cbook .
PDF后端功能¶
方法 embedTeXFont 和 tex_font_mapping 属于 matplotlib.backends.backend_pdf.PdfFile 已被删除。外部用户不太可能调用这些方法,这些方法与PDF后端内部的字体系统相关。
matplotlib.delaunay¶
删除现在由qhull via处理的Delaunay三角测量代码 matplotlib.tri .