如何在geom_Text中给出多个条件

时间:2017-03-26 00:27:49

标签: r data-visualization geom-text

我有一个股票价格的图表,以反映不同日期的时间。目前,使用geom_text我能够标记Y值偏离0的显着正值的兴趣点。但是,我还希望标记Y显着小于0的点。目前,对于geom_Text,我有:

geom_text_repel(aes(label=ifelse(percent_change_price_SPY>0.35,as.character(DATE),'')))

我尝试在if语句中添加另一个条件,

geom_text_repel(aes(label=ifelse((percent_change_price_SPY>0.35)|(percent_change_price_SPY<-.35),as.character(DATE),'')))

但它返回了错误:

could not find function "|<-"

我也试过把它分成两个geom_text调用

geom_text_repel(aes(label=ifelse(percent_change_price_SPY>0.35,as.character(DATE),''))) + geom_text_repel(aes(label=ifelse(percent_change_price_SPY<-0.35,as.character(DATE),'')))

但此命令不会停止执行。任何想法如何让两个条件显示? enter image description here

1 个答案:

答案 0 :(得分:2)

带有两个ifelse语句的单个嵌套geom_text应该可以解决问题,例如:在这个玩具数据集中,

library(data.table)
library(ggplot2)
library(ggrepel)

dat <- data.table(col1=c(rep("A",50), rep("B",50)), col2=rep(1:50,2), col3=runif(100, min=-1, max=1))

ggplot(data=dat, mapping=aes(x=col2, y=col3, color=col1)) +
geom_line() +
geom_text_repel(aes(label=ifelse((col3 > 0.9), col2, ifelse(col3 < -0.9, col2, ""))))

在你的情况下,这将是:

geom_text_repel(aes(label=ifelse((percent_change_price_SPY > 0.35), DATE, ifelse(percent_change_price_SPY < -0.35, DATE, ""))))

请注意,示例代码中的以下条件不会按预期工作:

value<-0.35

因为你需要在不等号和负号之间留一个空格