```{r , include=FALSE} library(devtools) install_github("hansthompson/gtfsnetwork") library(gtfsnetwork)
## Example
```{r}
library(lubridate)
download.file("http://transitfeeds.com/p/people-mover/370/latest/download",
destfile = "gtfs.zip")
unzip("gtfs.zip")
trips <- read.csv("trips.txt", stringsAsFactors = TRUE)
stop_times <- read.csv("stop_times.txt", stringsAsFactors = TRUE)
stops <- read.csv("stops.txt", stringsAsFactors = TRUE)
gtfs_el <- gtfs2edgelist(stop_times)
starting_time <- hms("09:00:00")
ending_time <- hms("11:30:00")
srv_id <- "1" # weekdays Monday-Friday for People Mover
filtered_gtfs_edge_list <- filter_srv_id(gtfs_edgelist = gtfs_el, trips, srv_id = "1")
filtered_gtfs_edge_list <- filter_gtfs_edgelist(gtfs_edgelist = filtered_gtfs_edge_list,
start_time = starting_time, end_time = ending_time)
filtered_gtfs_edge_list <- remove_duplicate_edges(filtered_gtfs_edge_list, trips)
edges <- filtered_gtfs_edge_list %>% select(source, target, size = transit_time)
library(igraph)
filtered_gtfs_edge_list <- filtered_gtfs_edge_list %>% group_by(source, target) %>% mutate(n = length(source)) %>%
group_by(trip_id)
edges <- filtered_gtfs_edge_list %>% select(source, target, size = transit_time,
edge_sequence, trip_id, n)
graph_object <- edges %>%
mutate(n = n + ifelse(row_number(n) == 1, 1, 0)) %>%
mutate(n = n + ifelse(row_number() == n(), 1, 0)) %>%
mutate(n = n - min(n)) %>%
ungroup() %>%
mutate(foo = create_mapping(n, source, 1))
vertex_names <- V(graph.data.frame(graph_object[,1:2]))$name
for(i in seq(vertex_names)) {
if(any(vertex_names[i] == graph_object$source)){
vertex_names[i] <- graph_object[vertex_names[i] == graph_object$source,]$foo[1]
}
#print(sum(vertex_names[i] == graph_object$source))
}
hootie <- graph_object %>% select(source, target)
h3 <- graph.data.frame(hootie)
plot(h3, vertex.size = 2,
edge.arrow.size=0.01, vertex.label = NA)
h4 <- simplify(graph.data.frame(as_edgelist(contract.vertices(h3,
mapping = vertex_names,
vertex.attr.comb = toString)),
directed = T))
V(h4)$name[str_detect(V(h4)$name, ",")] <- paste0(countCharOccurrences(",", V(h4)$name[str_detect(V(h4)$name, ",")]), "-nodes")
stops$stop_id <- as.character(stops$stop_id)
V(h4)$name[!str_detect(V(h4)$name, "-")] <- tolower(as.character(inner_join(data.frame(stop_id = as.character(V(h4)$name[!str_detect(V(h4)$name, "-")])), stops, by = "stop_id")$stop_name))
V(h4)$label.cex = 0.75
plot(h4, vertex.size = 2,
edge.arrow.size=0.01)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.