"inverse"在这个ax.set_yscale参数中做什么,为什么它是用户定义的?



我最近发布了一个问题,询问如何在我正在绘制的绘图的y轴上进行反向对数缩放。我接受的答案使用了这个代码-

def forward(x):
return 2**x
def inverse(x):
return np.log2(x)
ax.set_yscale('function', functions=(forward,inverse))

这个想法是你修改这两个函数,1(定义缩放轴的方程,2(反转轴。我在正向和反向中更改了一些常数,使缩放在实际应用中不那么明显。

def forward(x):
return 1.1**x
def inverse(x):
return 0.01*(np.log2(x))

然而,在摆弄了上述常数之后,我注意到";向前";函数改变了绘图的比例;逆";函数似乎并没有以任何方式改变它。即使在阅读了文档之后,我也不清楚反函数的目的是什么,以及为什么它是由用户明确定义的。模块自己计算倒数以消除用户定义函数中出错的机会,这不是更有意义吗?

查看开发者创建缩放和转换的指南,其中介绍了正向和反向转换:

[forward]:从数据坐标到显示坐标的转换。

[逆]:该变换的逆。例如,这用于将鼠标位置从屏幕空间转换回数据空间。

关于

模块计算逆本身不是更有意义吗

我强烈反对。找到函数的逆可能很难(就像你的情况一样!(,如果你一开始就计划制作自定义比例,你应该能够自己做。

顺便说一句:例如,在你的情况下,我会说你的def inverse()是错误的,因为WolframAlpha发现1.1**x的倒数实际上是10.4921*np.log(x),而不是0.01*(np.log2(x))

最新更新