2

我正在尝试基于布尔值有条件地设置 aes 映射。这是我正在尝试做的事情:

mydata <- data.frame(x=1:10, 
                     y=runif(10), 
                     categoryShort=LETTERS[1:2], 
                     categoryLong=LETTERS[1:5])
mybool <- TRUE
myaes <- aes(x=x, y=y, 
             colour=ifelse(mybool, factor(categoryShort), factor(categoryLong)))
ggplot(mydata, myaes) + geom_point()

它忽略了颜色并搞砸了整个传说。

我尝试使用 aes_string,但遇到了同样的问题:

aes_string(x="x", y="y", 
           colour=factor(ifelse(mybool, "categoryShort", "categoryLong")))
4

1 回答 1

4

事实证明 aes_string 可以处理因子函数。所以这是解决方案:

colourMapping <- ifelse(mybool, "factor(categoryShort)", "factor(categoryLong)")
myaes <- aes_string(x="x", y="y", colour=colourMapping)
于 2013-03-24T05:21:43.427 回答