Quiero usar ggplot, preferiblemente geom_line, para trazar puntos de datos unidos por una línea donde los puntos de datos se unen en el orden en que aparecen en el marco de datos. Esencialmente lo que Excel ofrece para un diagrama de dispersión unido.
MWE
library(ggplot2)
# Sample dataframe
df <- data.frame(
time = c(0, 1, 2, 3, 4, 5, 6, 7),
x = c(0, 1, 2, 2.5, 2, 1.5, 1, 0),
y = c(0, 2, 5, 4, 3, 1.2, 1, 0.9)
)
ggplot(data=df, aes(x=x, y=y) +
geom_line()
Esto consiste en ordenar los puntos por valor de x y unirlos. Necesito unirme por tiempo (el df está ordenado por tiempo). Mi marco de datos real tiene aproximadamente 1500 filas y los valores de x suben y bajan bastante (múltiples bucles en los datos).
Probé lo anterior y tres variaciones menores sugeridas por chatGPT, y todas dieron el mismo resultado básico.
geom_line() normalmente conecta los puntos en el orden de la variable x. Si quieres que los puntos se unan según el orden de las filas (o según time), debes indicar explícitamente el agrupamiento y usar una variable que represente la secuencia.
Por ejemplo, si time define el orden correcto:
ggplot(df, aes(x = x, y = y, group = 1)) +
geom_path()
La diferencia clave es que geom_path() conecta los puntos en el orden en que aparecen en el conjunto de datos, mientras que geom_line() suele ordenarlos por x antes de dibujar la línea. Para trayectorias, recorridos o datos con bucles donde x aumenta y disminuye, geom_path() suele ser la opción adecuada.