Figure 7.6 Space-time paths for 100 Beijing taxis

figures
code
R

Taking advantage of the web format, here I show an interactive version of this figure.

Code
library(dplyr)
library(timeDate)
library(gg3D)
library(plotly)

We filter the data so they are all within 0.25 decimal degrees of the mean location of all points (I know, I know… decimal degrees are terrible, but the point here is the time dimension, not the geographical coordinates).

Code
taxis <- read.table('taxis100.txt', sep=',') |>
  rename(id = V1, t = V2, lon = V3, lat = V4)

lon.mean <- mean(taxis$lon)
lat.mean <- mean(taxis$lat)

taxis.bj <- taxis |>
  mutate(time = as.double(timeDate(t))) |>
  filter(abs(lon - lon.mean) < .25,
         abs(lat - lat.mean) < .25)

plotly makes a nice interactive plot, without too much fuss.

Code
plot_ly(group_by(taxis.bj, id), 
        x = ~lat, y = ~lon, z = ~t, color = ~id, 
        type = 'scatter3d', mode = 'lines', asp = 1, lwd = 0.5)