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
.