剪辑/限制Geom_Line绘图

时间:2016-05-22 14:50:16

标签: r ggplot2 clipping

我想制作一个线条图,我需要在某些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之上不可见(在这种情况下),但不确定是否可能

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

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是根据您的情况制定一个因素并使用它来为线条着色:

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

给出:

enter image description here

重新阅读你的问题后,我想我可能误解了它。略微调整您的代码只包含等于或大于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")

给出:

enter image description here