Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何在ggplot2中同时反转和应用轴变换_R_Ggplot2_Scaletransform - Fatal编程技术网

R:如何在ggplot2中同时反转和应用轴变换

R:如何在ggplot2中同时反转和应用轴变换,r,ggplot2,scaletransform,R,Ggplot2,Scaletransform,在使用ggplot2包构建的绘图中,例如: ggplot(cars, aes(x = speed, y = dist))+geom_col() 可以通过应用适当的指令来变换轴。例如,+scale\u y\u continuous(trans=“reverse”)从顶部到底部绘制坐标轴,并且scale\u y\u continuous(trans=“sqrt”)进行非线性变换。我需要结合这两个函数,即轴原点在顶部,对数或sqrt变换在y轴上。逐个应用转换(即,+scale\u y\u rever

在使用
ggplot2
包构建的绘图中,例如:

ggplot(cars, aes(x = speed, y = dist))+geom_col()
可以通过应用适当的指令来变换轴。例如,
+scale\u y\u continuous(trans=“reverse”)
从顶部到底部绘制坐标轴,并且
scale\u y\u continuous(trans=“sqrt”)
进行非线性变换。我需要结合这两个函数,即轴原点在顶部,对数或sqrt变换在y轴上。逐个应用转换(即,
+scale\u y\u reverse()…+scale\u y\u log()
)会发出警告:
已存在“y”的缩放。为“y”添加另一个刻度,它将替换现有的刻度。

这样如何:

require(scales);
rev_sqrt_trans <- function() {
    scales::trans_new(
        name = "rev_sqrt", 
        transform = function(x) -sqrt(abs(x)), 
        inverse = function(x) x^2);
}

require(ggplot2);
ggplot(cars, aes(x = speed, y = dist)) + geom_col() + scale_y_continuous(trans = "rev_sqrt")
require(比例);
rev_sqrt_trans这个怎么样:

require(scales);
rev_sqrt_trans <- function() {
    scales::trans_new(
        name = "rev_sqrt", 
        transform = function(x) -sqrt(abs(x)), 
        inverse = function(x) x^2);
}

require(ggplot2);
ggplot(cars, aes(x = speed, y = dist)) + geom_col() + scale_y_continuous(trans = "rev_sqrt")
require(比例);

rev_sqrt_trans此配方的直接应用产生了一个错误:get中的错误(as.character(FUN),mode=“function”,envir=envir):未找到模式“function”的对象“rev_sqrt_trans”是的,抱歉!我忘了在函数中包装新的转换。它现在应该可以工作了。直接应用这个配方产生了一个错误:get中的错误(as.character(FUN),mode=“function”,envir=envir):没有找到mode“function”的对象“rev_sqrt_trans”!我忘了在函数中包装新的转换。现在应该可以了。