如果满足条件,则在R中绘制垂直线

时间:2018-08-02 21:45:56

标签: r ggplot2

如果条件满足,我会尝试绘制垂直线。

示例数据框:

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时。有人对如何解决这个问题有任何想法吗?谢谢!

2 个答案:

答案 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))

这是生成的图像。

enter image description here

注意:在上面的示例中,调用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,因此通过以点开头的管道将管道转换为函数很容易。