library(tidyverse)
library(leaflet)
library(sf)
library(tidycensus)
ridership <- read_delim("Boardings_by_Route_Table.csv", delim = "\t", locale = locale(encoding = "UTF-16LE"), trim_ws = TRUE)
#ridership <- read_csv("Boardings_by_Route_Table.csv")
#ridership <- read_csv("Boardings_by_Route_Table.csv", locale = locale(encoding = "UTF-16LE"))
#stations <- read_csv("Metro_Stations_Regional.csv", locale = locale(encoding = "UTF-16LE"))
stations <- read_csv("Metro_Stations_Regional.csv")Untitled
Edits made: added states, counties, silver line to new carrelton
stations <- stations |>
select(-c(8, 9, 11, 14, 15, 16))ridership <- ridership |>
mutate(total_ridership = `AM Peak (Open-9:30am)` + `Midday (9:30am-3pm)` + `PM Peak (3pm-7pm)` + `Evening (7pm-12am)` + `Late Night (12am-Close)`)station_data <- st_as_sf(stations, coords = c("X", "Y"), crs = 3857)
station_data <- st_transform(station_data, 4326)merged <- left_join(
station_data, ridership,
by = c("NAME" = "Station Name")
)plot 1
plot 2
counties <- get_acs(
geography = "county",
variables = "B01001_001", # dummy variable just to get geometry
state = c("DC", "MD", "VA"),
year = 2023,
geometry = TRUE
)Getting data from the 2019-2023 5-year ACS
Warning: • You have not set a Census API key. Users without a key are limited to 500
queries per day and may experience performance limitations.
ℹ For best results, get a Census API key at
http://api.census.gov/data/key_signup.html and then supply the key to the
`census_api_key()` function to use it throughout your tidycensus session.
This warning is displayed once per session.
Downloading feature geometry from the Census website. To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
|
| | 0%
|
| | 1%
|
|= | 1%
|
|= | 2%
|
|== | 2%
|
|== | 3%
|
|== | 4%
|
|=== | 4%
|
|=== | 5%
|
|==== | 5%
|
|==== | 6%
|
|===== | 6%
|
|===== | 7%
|
|===== | 8%
|
|====== | 8%
|
|====== | 9%
|
|======= | 9%
|
|======= | 10%
|
|======= | 11%
|
|======== | 11%
|
|======== | 12%
|
|========= | 12%
|
|========= | 13%
|
|========= | 14%
|
|========== | 14%
|
|========== | 15%
|
|=========== | 15%
|
|=========== | 16%
|
|============ | 17%
|
|============ | 18%
|
|============= | 18%
|
|============= | 19%
|
|============== | 19%
|
|============== | 20%
|
|============== | 21%
|
|=============== | 21%
|
|=============== | 22%
|
|================ | 22%
|
|================ | 23%
|
|================ | 24%
|
|================= | 24%
|
|================= | 25%
|
|================== | 25%
|
|================== | 26%
|
|=================== | 27%
|
|=================== | 28%
|
|==================== | 28%
|
|==================== | 29%
|
|===================== | 29%
|
|===================== | 30%
|
|===================== | 31%
|
|====================== | 31%
|
|====================== | 32%
|
|======================= | 32%
|
|======================= | 33%
|
|======================= | 34%
|
|======================== | 34%
|
|======================== | 35%
|
|========================= | 35%
|
|========================= | 36%
|
|========================== | 36%
|
|========================== | 37%
|
|========================== | 38%
|
|=========================== | 38%
|
|=========================== | 39%
|
|============================ | 39%
|
|============================ | 40%
|
|============================ | 41%
|
|============================= | 41%
|
|============================= | 42%
|
|============================== | 42%
|
|============================== | 43%
|
|=============================== | 44%
|
|=============================== | 45%
|
|================================ | 45%
|
|================================ | 46%
|
|================================= | 47%
|
|================================= | 48%
|
|================================== | 48%
|
|================================== | 49%
|
|=================================== | 49%
|
|=================================== | 50%
|
|=================================== | 51%
|
|==================================== | 51%
|
|==================================== | 52%
|
|===================================== | 52%
|
|===================================== | 53%
|
|===================================== | 54%
|
|====================================== | 54%
|
|====================================== | 55%
|
|======================================= | 55%
|
|======================================= | 56%
|
|======================================== | 57%
|
|======================================== | 58%
|
|========================================= | 58%
|
|========================================= | 59%
|
|========================================== | 59%
|
|========================================== | 60%
|
|========================================== | 61%
|
|=========================================== | 61%
|
|=========================================== | 62%
|
|============================================ | 62%
|
|============================================ | 63%
|
|============================================ | 64%
|
|============================================= | 64%
|
|============================================= | 65%
|
|============================================== | 65%
|
|============================================== | 66%
|
|=============================================== | 66%
|
|=============================================== | 67%
|
|=============================================== | 68%
|
|================================================ | 68%
|
|================================================ | 69%
|
|================================================= | 69%
|
|================================================= | 70%
|
|================================================= | 71%
|
|================================================== | 71%
|
|================================================== | 72%
|
|=================================================== | 72%
|
|=================================================== | 73%
|
|==================================================== | 74%
|
|==================================================== | 75%
|
|===================================================== | 75%
|
|===================================================== | 76%
|
|====================================================== | 77%
|
|====================================================== | 78%
|
|======================================================= | 78%
|
|======================================================= | 79%
|
|======================================================== | 79%
|
|======================================================== | 80%
|
|======================================================== | 81%
|
|========================================================= | 81%
|
|========================================================= | 82%
|
|========================================================== | 82%
|
|========================================================== | 83%
|
|=========================================================== | 84%
|
|=========================================================== | 85%
|
|============================================================ | 85%
|
|============================================================ | 86%
|
|============================================================= | 86%
|
|============================================================= | 87%
|
|============================================================= | 88%
|
|============================================================== | 88%
|
|============================================================== | 89%
|
|=============================================================== | 89%
|
|=============================================================== | 90%
|
|=============================================================== | 91%
|
|================================================================ | 91%
|
|================================================================ | 92%
|
|================================================================= | 92%
|
|================================================================= | 93%
|
|================================================================= | 94%
|
|================================================================== | 94%
|
|================================================================== | 95%
|
|=================================================================== | 95%
|
|=================================================================== | 96%
|
|==================================================================== | 97%
|
|==================================================================== | 98%
|
|===================================================================== | 98%
|
|===================================================================== | 99%
|
|======================================================================| 99%
|
|======================================================================| 100%
counties <- counties |>
filter(GEOID == 11001 | GEOID == 24031 | GEOID == 24033 | GEOID == 51107 | GEOID == 51510 | GEOID == 51013 | GEOID == 51059 | GEOID == 51600 | GEOID == 51610)line_colors <-
c("blue" = "#0c73a6",
"yellow" = "#f9cb27",
"orange" = "#e98a2f",
"green" = "#029d49",
"red" = "#d1213b",
"silver" = "#999b96",
"green, yellow" = "#029d49",
"blue, orange, silver" = "#0c73a6",
"blue, silver" = "#0c73a6",
"blue, yellow" = "#f9cb27",
"orange, silver" = "#e98a2f",
"red, green" = "#d1213b",
"red, blue, orange, silver" = "black",
"green, yellow, orange, blue, silver" = "black",
"red, green, yellow" = "blue")leaflet(merged) |>
addProviderTiles("Esri.WorldStreetMap") |>
addCircles(
radius = ~total_ridership / 20,
fill = TRUE,
fillColor = ~LINE,
weight = 2,
color = "black",
opacity = 1,
fillOpacity = 0.75
) |>
addPolygons(
data = counties,
color = "black",
fillOpacity = 0,
weight = 2
)Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'
This map shows the locations of every metro station, sized proportionally to show the average weekday entries (an easily trackable metric for ridership). They are colored to show what line serves the station, however I could not get any stations with multiple lines to work without destroying the rest of the graph. I also added the counties served by the metro to show which stations serve not just particular states but counties as well. I wanted to use this to see what the top ridership stations were by county, but the handful of stations in the heart of downtown DC are so much higher then everything else that almost all stations not in the core of the network are tiny. I had to add black outlines to all the points so that the outer stations could actually be seen since they are so tiny.