在R的scales包中,为什么trans_new使用inverse参数?

Rya*_*ler 2 methods analysis r function

我刚刚被建议使用 r 的 scales 包中的 trans_new 方法来使用立方根转换绘图的 x 轴。我使用 trans_new 定义立方根函数,然后使用该立方根函数来变换 x 轴(大概这个练习更具学术性而不是实用性)。

我通过 trans_new 的文档了解到该方法需要一个变换参数和一个逆参数。变换参数不言自明——通过它,我定义了要应用于数据的变换。

不过,相反的论点让我摸不着头脑。该文档提到了该参数的作用,但没有说明为什么该参数是必要的。

inverse:执行逆变换的函数或函数名称

一般描述听起来有点像它可能详细说明逆参数的功能,但我不确定情况是否如此:

并且预计标签函数将对这些中断执行某种逆变换,以便为它们提供在原始范围内有意义的标签。

标签功能?“某种”逆变换?

谷歌搜索没有结果,所以我非常感谢任何人帮助理解为什么 trans_new 需要一个逆参数。这个论证究竟是做什么的?

zac*_*dav 7

这意味着如果你的变换函数是base::log那么你的反函数就是base::exp

my_new_transform <- trans_new(name = "test",
                              transform = base::log,
                              inverse = base::exp,
                              breaks = c(1, 10, 100))
Run Code Online (Sandbox Code Playgroud)

正如文档中所述,这是明显标记中断所必需的。

然后,您可以继续使用coord_transwithggplot2在您的绘图上使用此比例。


例子

library(scales)
library(ggplot2)

cube_root <- function(x) x ^ (1/3)
cube <- function(x) x ^ 3

trans_cube <- trans_new(name = "cube root",
                        transform = cube_root,
                        inverse = cube)

# dummy data
plot_data <- data.frame(x = 1:10,
                        y = cube(1:10))

# without applying a transform
ggplot(plot_data, aes(x = x, y = y)) +
  geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

# applying a transform
ggplot(plot_data, aes(x = x, y = y)) +
  geom_point() +
  coord_trans(y = trans_cube)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述