Tengo algunas coordenadas x e y que estoy tratando de parcela en los segmentos de línea. Y estoy recibiendo un comportamiento inesperado de lo que yo creo que debería funcionar.

Para cada segmento, hay un conjunto inicial de coordenadas (x1,y1) y un final conjunto de coordenadas (x2,y2). Es un marco de datos (llamada «df») que se parece a esto:

  x1   y1   x2   y2
34.9 67.9 62.5 68.8
66.8 80.9 58.8 88.4
58.8 88.4 66.0 68.4
64.0 65.8 56.2 62.6
56.2 62.6 56.6 75.3
54.5 70.0 72.9 51.3

Los segmentos no son necesariamente continuas. Por eso me refiero a que a veces el final x,y de un segmento es el punto de partida de la siguiente segmento; otras veces no lo es.

Así que intenta trazar

lines(c(df$x1, df$x2), c(df$y1, df$y2))

Y me da el siguiente, que no es en absoluto lo que yo quiero. Hay segmentos adicionales de ser atraídos y todos ellos están saliendo conectado. Y simplemente está mal. Parece conspirar 11 o 12 segmentos de 6 conjuntos de inicio/final de puntos.

Dibujo de segmentos de línea en R

Ahora, puedo pasar y la trama de una en una:

lines(c(df$x1[1], df$x2[1]), c(df$y1[1], df$y2[1]))
lines(c(df$x1[2], df$x2[2]), c(df$y1[2], df$y2[2]))
lines(c(df$x1[3], df$x2[3]), c(df$y1[3], df$y2[3]))
Etc.

Puedo obtener el gráfico siguiente, que es lo que yo busco.
Dibujo de segmentos de línea en R
Así alguien puede ayudar a explicar lo que ocurre en la primera instancia, que la hace diferente de la segunda? Y es allí una manera de hacer todo esto en una sola línea, sin tener que pasar a través de, o escribir una función que se repite a través de?

OriginalEl autor noLongerRandom | 2014-11-28

1 Comentario

  1. 8

    La segments función es lo que usted está buscando:

    > data
        x1   y1   x2   y2
    1 34.9 67.9 62.5 68.8
    2 66.8 80.9 58.8 88.4
    3 58.8 88.4 66.0 68.4
    4 64.0 65.8 56.2 62.6
    5 56.2 62.6 56.6 75.3
    6 54.5 70.0 72.9 51.3
    > plot(range(data$x1,data$x2), range(data$y1, data$y2),type="n")
    > segments(data$x1, data$y1, data$x2, data$y2)

    Nota tiene que establecer el gráfico como el primero. Es posible que desee hacer:

    > plot(NA, xlim=c(0,100), ylim=c(0,100), xlab="x", ylab="y")
    > segments(data$x1, data$y1, data$x2, data$y2)

    para obtener los límites de su figura.

    Dibujo de segmentos de línea en R

    Maravilloso. Que, en realidad, de dos soluciones. No me doy cuenta de que podría usar ‘NA’ en la configuración de la trama (si usted nota que tiene un extraño punto en el 0,0 por lo que no era algo para poner los segmentos de línea). Me salva de tener que volver atrás y eliminar ese punto. Aún así, quisiera saber por qué mi primera versión está tramando algo tan extraño, si alguien puede iluminar…
    El lines función está pensada para dibujo conectado conjuntos de puntos, así que si usted alimenta a todos sus puntos de inicio y final simplemente se conecta a todos ellos, como se vio. puede hacer es romper por poner un NA en el vector: plot(1:10,1:10) ; líneas(c(1:4,NA,6:10), c(1:4,NA,6:10)) – pero los segmentos que se entiende para el caso de uso.

    OriginalEl autor Spacedman

Dejar respuesta

Please enter your comment!
Please enter your name here