如何在 geom_Text 中给出多个条件

How to give multiple conditions in 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),'')))

但是这个命令并没有停止执行。知道如何显示这两个条件吗?

带有两个 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

因为你需要在不等号和负号之间有一个space