Рисование линий, которые вырезаются последовательно в R - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть скрипт для рисования сегментов на графике в 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)

enter image description here

Но я бы хотел отделить линии с помощью разделитель. Результат будет выглядеть примерно так (красные линии были добавлены после, но я бы хотел, чтобы они были черными.) enter image description here

Что вы видите, так это то, что каждая строка разделяется последовательно: первое не разделяется, второе пополам, третье третями и т. д. c.

Проблема, которую я осознал, заключается в том, что мне нужно для l oop in для l oop in для l oop, et c. и это не похоже на хорошее решение.

Мне было интересно, можно ли использовать для этого expand.grid.

1 Ответ

1 голос
/ 11 февраля 2020

Для всего oop в решении oop, и я не вижу, почему нет - оно работает, и это не какое-то безумное большое вычисление, которое делается:

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")
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...