将序列变成R中的图

时间:2019-02-19 22:16:26

标签: r plot

说我有一些由2个数字组成的序列:

seq <- c(0, 1, 1, 1, 0, 0)

假设我想通过以下方式将其绘制到图形中:

我的图(x,y)从(0,0)开始,到(1,0)有一条直线。 然后,该序列开始起作用: 如果数字为0,则以1坐标向左转;如果数字为1,则以1坐标向右转。 因此,对于示例序列,我从以下内容开始:

(0, 0) -> (1, 0) -> (1, 1) -> (1, 2) -> (1, 1) -> (1, 0) etc.

如果您想了解我左右转弯的意思,最好画出这个。

我如何将这些点计入情节?有提示吗?

绘制序列示例: enter image description here

1 个答案:

答案 0 :(得分:1)

x = c(0, 1, 1, 1, 0, 0)
m = cbind(x = c(0, 1),
          y = c(0, 0))
flag_xy = 1  #Track whether to add to x- or y- coordinate
for (i in x){
    flag_direction = diff(tail(m, 2))  #Track which way the line is facing
    if (i == 0){
        if (flag_xy == 1){
            m = rbind(m, tail(m, 1) + c(0, flag_direction[,1] * 1))
        } else{
            m = rbind(m, tail(m, 1) + c(flag_direction[,2] * -1, 0))
        }
        flag_xy = flag_xy * -1
    } else{
        if (flag_xy  == 1){
            m = rbind(m, tail(m, 1) + c(0, flag_direction[,1] * -1))
        } else{
            m = rbind(m, tail(m, 1) + c(flag_direction[,2]* 1, 0))
        }
        flag_xy = flag_xy * -1
    }
}
graphics.off()
plot(m, asp = 1)
lines(m)

enter image description here

m
#     x  y
#     0  0
#     1  0
#[2,] 1  1
#[2,] 2  1
#[2,] 2  0
#[2,] 1  0
#[2,] 1 -1
#[2,] 2 -1