0.54的变化¶
matlab接口¶
DPI¶
一些后端使用了一个像素每英寸的黑客,我添加了尝试使图像在后端呈现一致。这只是复杂的事情。因此,您可能会发现有些字体大小和行宽与以前不同。抱歉给您带来不便。您应该将dpi设置为屏幕的精确值,以获得真正的大小。
彩色和散射¶
对matlab接口api进行了两次更改,都涉及到补丁绘图命令。为了提高效率,已重写pcolor和scatter以使用多边形集合,这是matplotlib.collections中的一组新对象,旨在有效处理大型对象集合。这些新的集合使构建大型散点图或PColor图成为可能,在Python级别没有循环,并且比它们的前辈快得多。原始的pcolor和scatter函数保留为pcolor_classic和scatter_classic。
pcolor的返回值是PolyCollection。矩形或其他面片上可用的大多数属性也可用于多集合,例如,可以说:
c = scatter(blah, blah)
c.set_linewidth(1.0)
c.set_facecolor('r')
c.set_alpha(0.5)
或:
c = scatter(blah, blah)
set(c, 'linewidth', 1.0, 'facecolor', 'r', 'alpha', 0.5)
因为集合是一个单独的对象,所以您不再需要遍历scatter或pcolor的返回值来设置整个列表的属性。
如果希望集合的不同元素在属性上有所不同,例如具有不同的线条宽度,请参阅matplotlib.collections,以了解如何将属性设置为序列的讨论。
对于散点图,大小参数现在和matlab一样位于点^2(点中符号的面积)中,而不是像以前那样位于数据坐标中。在数据坐标中使用大小导致了几个问题。因此,您需要相应地调整大小参数或使用scatter_classic。
数学文本间距¶
因为我不清楚的原因(我最终会修正)间距不再适用于字体组。但是,我添加了三个新的间距命令,它们补偿了这个''(常规空间)、'/'(小空间)和'hspace frac',其中frac是点中fontsize的一部分。您需要在字体字符串中引用空格,即:
title(r'$\rm{Histogram\ of\ IQ:}\ \mu=100,\ \sigma=15$')
对象接口-应用程序程序员¶
自标定¶
X轴和Y轴实例不再具有自动缩放视图。这些由axes.autoscale_视图处理
轴心创造¶
您不应该再使用OOAPI实例化自己的轴。相反,创建一个与之前一样的图形,代替:
f = Figure(figsize=(5,4), dpi=100) a = Subplot(f, 111) f.add_axis(a)用途:
f = Figure(figsize=(5,4), dpi=100) a = f.add_subplot(111)也就是说,添加轴不再存在,替换为:
add_axes(rect, axisbg=defaultcolor, frameon=True) add_subplot(num, axisbg=defaultcolor, frameon=True)
艺术家方法¶
如果定义自己的艺术家,则需要重命名“绘制”方法以绘制
包围盒¶
matplotlib.transforms.bound2d替换为matplotlib.transforms.bbox。如果要从左、下、宽、高(bound2d的签名)构造bbox,请使用matplotlib.transforms.lbwh_to_bbox,如中所示。
bbox=clickbbox=lbwh_to_bbox(左、下、宽、高)bbox与bound2d具有不同的API。例如,如果要获取bbox的宽度和高度
- 陈旧::
- 宽度=Fig.bbox.x.Interval()高度=Fig.bbox.y.Interval())
- 新::
- width=fig.bbox.width()height=fig.bbox.height()。
对象构造函数¶
您不再将bbox、dpi或转换传递给各个艺术家构造函数。创建线条和矩形的旧方法很繁琐,因为必须将许多属性传递给Line2d和Rectangle类,而这些类与对象的几何图形和属性没有直接关系。现在,当您调用axes.add_line或axes.add_patch时,默认值会添加到对象中,因此它们对用户是隐藏的。
如果要在这些对象上定义自定义转换,请调用o.set_transform(trans),其中trans是转换实例。
在以前的版本中,您需要在数据坐标中添加自定义行。
- L=第2d行(dpi、bbox、x、y,
- 颜色=颜色,transx=transx,transy=transy,)
现在你只需要
L=line2d(x,y,color=color)轴将为您设置转换(除非您已经设置了自己的,在这种情况下,它将保持不变)
变换¶
整个转换架构已经重写。以前X和Y转换存储在Xaxis和Yaxis实例中。这种方法的问题在于它只允许可分离变换(其中x和y变换不相互依赖)。但是像极性这样的情况下,他们会。现在,变换一起作用于x,y。有一个新的基类matplotlib.transforms.transformation和两个具体的实现matplotlib.transforms.separatebletransformation和matplotlib.transforms.affine。可分离转换由输入的边界框(这决定了输入的矩形坐标系,即X和Y视图限制)、显示的边界框以及可能的X和Y的非线性转换构成。最常用的两种转换,数据坐标->显示和轴坐标TES->显示有ax.transdata和ax.transaxs。请参见使用轴坐标的“Alignment_demo.py”。
此外,由于两个原因,现在的转换应该快得多
它们完全是用扩展代码编写的
因为它们一起操作x和y,所以它们可以在一个循环中完成整个转换。早些时候,我做了一件事:
xt = sx*func(x) + tx yt = sy*func(y) + ty虽然这是在numerix中完成的,但它仍然涉及6个长度(x)的循环(x和y的乘法、加法和函数计算)。现在所有这些都是一次性完成的。
如果使用转换和边界框在数据坐标中获取光标位置,那么方法调用现在有点不同。请参阅更新的examples/coords_demo.py,其中演示了如何执行此操作。
同样,如果您使用艺术家边界框来使用图形用户界面在画布上选择项目,那么bbox方法也有所不同。您需要查看更新的示例/对象选择器.py。
有关使用新转换的许多示例,请参见Unit/Transforms_Unit.py。