如果条件满足,我会尝试绘制垂直线。
示例数据框:
require(ggplot2)
require(dplyr)
example <- data.frame(
X = c (1:5),
Y = c(8,15,3,1,4),
indicator = c(1,0,1,0,0)
)
example %>% ggplot(aes(x=X,y=Y)) + geom_line() + geom_vline(xintercept=X)
其中,截距中的X是指标值是1时X的值。因此,在这种情况下,我只希望指标值是1时的垂直线。在此示例中,这将创建一条垂直线在X = 1和X = 3时。有人对如何解决这个问题有任何想法吗?谢谢!
答案 0 :(得分:6)
以下应做您想做的事
library(ggplot2)
library(dplyr)
example <- data.frame(
X = c (1:5),
Y = c(8,15,3,1,4),
indicator = c(1,0,1,0,0)
)
example %>%
ggplot(aes(x=X,y=Y)) +
geom_line() +
geom_vline(aes(xintercept = X),
data = example %>% filter(indicator == 1))
这是生成的图像。
注意:在上面的示例中,调用data.frame
时使用了名为example
的{{1}},但是可以是任何其他{{1 }},其中包含用作截距的期望值。
答案 1 :(得分:3)
从上方进行细微调整:
example %>% ggplot(aes(x=X,y=Y)) + geom_line() +
geom_vline(aes(xintercept=X), data=. %>% filter(indicator == 1))
data
也可以是一个函数,因此您不需要在example
层中对geom_vline
进行硬编码。由于无论如何您都在使用dplyr,因此通过以点开头的管道将管道转换为函数很容易。