如何在 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
我有以下股票价格随不同日期时间变化的图表。目前,使用 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