Creating a 3D Time-Space Diagram using R— MTA BusTime Data
2 min readFeb 6, 2018
Let’s first load the library we are going to use in R.
library("rgl")
This is a Markdown document. If you are interested about how to do similar HTML pages, please visit: http://rmarkdown.rstudio.com
We stored MTA Bustime Data using their API for a day for all the buses and converted it into pings.csv
# Read the input into a dataframe df <- read.csv("../Data/pings.csv", head=TRUE, skip=1) # Check the class of the RecordedAtTime column class(df$RecordedAtTime)## [1] "factor"# convert the class of the RecordedAtTime column
df$RecordedAtTime <- as.POSIXlt(df$RecordedAtTime) # Extract hour from the column head(df$RecordedAtTime$hour)## [1] 7 8 7 8 8 7
Let’s create a subset of the data only containing the bus line B54 and direction 0 so that we can create a 3D Time-space diagram.
# Create another dataframe which will contain one bus line and one direction
# Bus line = B54
df2 <- subset(df, df$PublishedLineName == "B54")
# Direction = 0
df2 <- subset(df2, df2$DirectionRef == 0)
# Let's take a look at the data
head(df2)
# Before creating a 3D Plot, we need to order the dataframe by RecordedAtTime df2 <- df2[with(df2, order(df2$RecordedAtTime)),] # This function will create an interactive 3D plot plot3d(df2$Longitude,df2$Latitude, df2$RecordedAtTime, type="l", col=as.numeric(df2$DatedVehicleJourneyRef))
rglwidget()