剪辑/限制 Geom_Line 绘图

Clip/ Limit Geom_Line plotting

我想制作一个线图,我需要剪掉一些线 below/above 某些 y 值。举个例子

  x <- c(1,2,3,4,5,6,7,8,9,10)
    y1 <- c(1,2,3,4,5,6,7,8,9,10)
    y2 <- c(2,4,6,8,10,12,14,16,18,20)
    df <- data_frame(x, y1, y2)

    #make plot for df
    ggplot(data=df, aes(x=x, group=1)) +

#plot y=x
    geom_line(data=df, aes(x=x, y=y1, colour="red"))+

#plot y=2x for values of y equal to/ above 3
    geom_line(data=df, aes(x=x, y=y2 >=3, colour="blue"))

显然这行不通,但有可能吗?如果是这样,怎么办?显而易见的解决方案是编辑数据框本身,但对于我的最终目标,这是行不通的。另一种解决方案是使图在 y=3 以上不可见(在这种情况下),但不确定是否可能

抱歉,如果之前有人问过。我试着四处寻找,但没有找到任何东西。非常感谢,

一个可能的解决方案是将您的状况作为一个因素并用它来为线条着色:

ggplot(data=df, aes(x=x, y=y2, group=1)) +
  geom_line(aes(color = factor(y2 >= 3)))

给出:


重新阅读您的问题后,我想我可能误解了它。稍微调整您的代码以仅包含等于或大于 3 的值:

ggplot(data=df, aes(x=x, y=y1)) +
  geom_line(colour="red")+
  geom_line(data=df[df$y2 >= 3,], aes(x=x, y=y2), colour="blue")

给出: