创建具有不连续性的线图

时间:2014-03-18 05:14:27

标签: r plot lines

我想为具有一些不连续性的函数生成线图。我的功能是由模拟的布朗运动路径形成的,如下所示:

  t <- 1:100
  std <- 0.01
  x <- rnorm(n = length(t) - 1, sd = sqrt(std))
  x <- c(0, cumsum(x))

  #add in some discontinuities

  x[25:35] <- x[25:35] + 0.2
  x[45:55] <- x[45:55] - 0.5

我的方法是用plot(0, xlim = c(-49,50), ylim = c(-2, 2))设置一个空图,然后尝试通过

逐步添加函数的连续部分
  lines((-49):(-25), x[1:25])
  lines((-25):(-15), x[25:35])
  lines((-15):(-5), x[35:45])
  lines((-5):5, x[45:55])
  lines(5:50, x[55:100])

问题是结果图是连续的。由于某种原因,R连接图中应该是不相交的部分。我该如何抑制这种行为?

非常感谢!

1 个答案:

答案 0 :(得分:1)

同样,由于您的x和y长度不同,您的一些lines命令会出现错误(例如,在lines((-15):5, x[35:45])中,-15:5长度为21个元素,而x[35:45]为11个元素很长,还有一些其他lines来电。)

但是,您的问题是,当您绘制线条时,包括两个lines来电中的“断点”。

首先,让我们构建一些更简单的数据......

x <- 1:10
y <- c(1:5, 10:15)

绘制第一段:

plot(x[1:5], y[1:5], xlim=range(x), ylim=range(y), type='l') # type='l' draws a line

请注意,您正在进行下一个细分为x[6:10] x[5:10]

lines(x[6:10], y[6:10])

你得到:

enter image description here

所以基本上在绘制细分时,请确保它们实际上彼此不同(因为linesplot绘制包含的结束点):

e.g。而不是:

行(( - 49)​​:( - 25),x [1:25])   (( - 25):( - 15),x [25:35])

使用

行(( - 49)​​:( - 25),x [1:25])   (( - 24):( - 15),x [26:35])#&lt; - 删除重叠

等等。