R:自定义颜色GGPLOT2变换给出了错误的标签(R: custom ggplot2 color-t

2019-10-23 06:20发布

基本上,我有3个数值向量(X,Y,Z)一个数据帧,并且可以说,我想打x的散点图,Y为z着色。 我想与尊重符号的平方根改造colorscale,所以我做了我自己的trans_new。 下面是一个简单的数据集,但实际的变换。

library(ggplot2)
library(scales)
set.seed(1)

plot<-data.frame(x=rnorm(100),y=rnorm(100),z=rnorm(100))
super_trans <- function(){
trans_new('super', function(X) sapply(X,function(x) {if(x>0){x^0.5} else{-(-    x)^0.5}}), function(X) sapply(X,function(x){ if(x>0){x^2} else{-x^2}}))
}
ggplot(plot,aes(x,y))+geom_point(aes(colour=z))+scale_colour_gradient(trans="super")

它给出了一个错误,

Error in if (x > 0) { : missing value where TRUE/FALSE needed 

我不明白。 我试图原路返回的错误,我的猜测是,当trans_new试图使中断的错误发生。 但是,我不明白“休息”参数是如何工作的trans_new。 是否有GGPLOT2 /秤英雄在那里,这可以帮助我正确转换我的颜色,规模有多大?

这可能是相关的,只有一些数据集提供了错误。

Answer 1:

有一个量化的if ,叫做ifelse 。 它也似乎你缺少一个额外减。

super_trans <- function() {
     trans_new('super', 
               function(x) ifelse(x>0, x^0.5, -(-x)^0.5), 
               function(x) ifelse(x>0, x^2, -(-x)^2))
}



文章来源: R: custom ggplot2 color-transform gives error in labels