转换管道

The transformation pipeline

转换管道

目录:

    1.坐标系      https://mp.csdn.net/postedit/83505486
    2.轴坐标    https://mp.csdn.net/postedit/83660100 
    3. 偏移变换 https://mp.csdn.net/postedit/83660161 
    4. 转换管道 https://blog.csdn.net/tcy23456/article/details/83660171 

ax.transData改变我们一直与本教程是包含从管路改造三种不同变换的复合data- >display 坐标。Michael Droettboom实现了转换框架,注意提供一个干净的API,隔离极坐标和对数图中发生的非线性投影和比例,从平移和缩放时发生的线性仿射变换。这里有一个效率,因为您可以平移和放大影响仿射变换的轴,但您可能不需要计算简单导航事件中可能昂贵的非线性尺度或投影。也可以将仿射变换矩阵相乘,然后在一个步骤中将它们应用于坐标。所有可能的转换都不是这样。

以下是ax.transData在基本可分轴类中定义实例的方法Axes

:

self.transData = self.transScale + (self.transLimits + self.transAxes)

我们已经transAxesAxes坐标中介绍了上面的实例 ,它将轴或子图边界框的(0,0),(1,1)角映射到display空间,所以让我们看看其他两个部分。

self.transLimits是将你data带到axes坐标的转变 ; 即,它将您的视图xlim和ylim映射到轴的单位空间(transAxes然后将该单位空间显示为空间)。我们可以在这里看到这一点

In [80]: ax = subplot(111)

In [81]: ax.set_xlim(0, 10)
Out[81]: (0, 10)

In [82]: ax.set_ylim(-1,1)
Out[82]: (-1, 1)

In [84]: ax.transLimits.transform((0,-1))
Out[84]: array([ 0.,  0.])

In [85]: ax.transLimits.transform((10,-1))
Out[85]: array([ 1.,  0.])

In [86]: ax.transLimits.transform((10,1))
Out[86]: array([ 1.,  1.])

In [87]: ax.transLimits.transform((5,0))
Out[87]: array([ 0.5,  0.5])

我们可以使用相同的倒置变换从单位 axes坐标回到data坐标.

In [90]: inv.transform((0.25, 0.25))
Out[90]: array([ 2.5, -0.5])

最后一块是self.transScale属性,它负责数据的可选非线性缩放,例如,用于对数轴。当最初设置Axes时,这只是设置为身份变换,

因为基本matplotlib轴具有线性比例,但是当您调用对数缩放函数 semilogx()或者将比例显式设置为对数时set_xscale(),则该 ax.transScale属性设置为处理非线性投影。比例变换是各自xaxis和 yaxis Axis实例的属性。例如,当您调用时ax.set_xscale('log'),xaxis会将其比例更新为 matplotlib.scale.LogScale实例。

对于不可分离的轴PolarAxes,还有一个要考虑的因素是投影变换。在transDatamatplotlib.projections.polar.PolarAxes类似于对典型可分离matplotlib轴,具有一个附加的片transProjection

:

self.transData = self.transScale + self.transProjection + \
    (self.transProjectionAffine + self.transAxes)

transProjection处理从空间的投影,例如,地图数据的纬度和经度,或极坐标数据的半径和θ,到可分离的笛卡尔坐标系。包中有几个投影示例,matplotlib.projections了解更多内容的最佳方法是打开这些包的源代码并查看如何创建自己的包,因为matplotlib支持可扩展的轴和投影。Michael Droettboom提供了一个很好的教程示例,用于创建锤子投影轴; 请参阅 api示例代码:custom_projection_example.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值