首页 > 解决方案 > 在 R 中按顺序切割的画线

问题描述

我有一个脚本可以在 R 的图中绘制线段。

# Make data 
max = 10 
y0 = rep(0,max)
x = 1:max
y = rep(1,max)/1:max
df = data.frame(x,y,y0)

plot(y ~ x, 
     ylim = c(0,max(y)), type = "n")
segments(x0 = df$x, y0 = df$y0, x1 = df$x,y1 = y, lend =2)

# Draw the capping lines 
eps = .1
segments(x0 = df$x-eps, y0 = df$y0, 
         x1 = df$x+eps, y1 = df$y0, lend =2)
segments(x0 = df$x-eps, y0 = df$y, 
         x1 = df$x+eps, y1 = df$y, lend =2)

在此处输入图像描述

但我想用分隔符分隔行。结果看起来像这样(之后添加了红线,但我希望它们是黑色的。) 在此处输入图像描述

你看到的是每一行都是按顺序分开的:第一行没有分开,第二行分成两半,第三行分成三分之二等。

我意识到的问题是我需要 for 循环中的 for 循环等,这似乎不是一个好的解决方案。

我想知道是否expand.grid可以用于那个。

标签: r

解决方案


对于循环解决方案中的循环,我不明白为什么不这样做 - 它可以工作并且它没有进行一些疯狂的大型计算:

k <- 10
plot(x = c(0,k), y = c(0,1), typ = "n")

for(i in 1:k){
  points(x = c(i,i), y = c(0,1), typ = "l")
  for(j in 1:(i+1)){
    points(x = c(i-0.1,i+0.1), y = c(seq(0,1,1/i)[j], seq(0,1,1/i) [j]), typ = "l")
  }
}

推荐阅读