我尝试使用 scales::trans_new
创建一个沿y轴的squared
转换,但出现错误。
MWE
data = data.frame(x = 1:10, y = runif(10), z=rnorm(10, 10))
library(ggplot2)
ggplot(data, aes(x, y, size=z)) +
geom_point() +
scale_y_continuous(trans=scales::trans_new("sq", function(x) x^2, function(x) x^(1/2)))
出错了
如果(zero_range(as.numeric(limits)))返回错误:
在TRUE/FALSE的位置缺失值
我试着添加了limits
和domain
但还是得到了同样的错误。
scale_y_continuous(trans=scales::trans_new("sq", function(x) x^2, function(x) x^(1/2)), limits=c(0,1))
scale_y_continuous(trans=scales::trans_new("sq", function(x) x^2, function(x) x^(1/2), domain=c(0,1)), limits=c(0,1))
似乎是倒数
参数导致了错误 - 但所有的y
值都是正数,所以我不理解。请问我应该怎么做?
scale_y_continuous(trans = scales::trans_new("sq",function(x){x^2}, function(x){sqrt(abs(x))}))
的翻译如下:缩放y轴连续变量,使用scales::trans_new("sq",function(x){x^2}, function(x){sqrt(abs(x))})
。 - Mikeabs
起作用了。看起来Dave2e也得出了同样的结论,但我认为有一个稍微更安全的解决方法。再次感谢你的帮助。 - user2957945