Mapping the proportion of people with West Indian ancestry in Brooklyn, New York.

library(tidyverse)
## Warning: package 'ggplot2' was built under R version 4.4.2
library(tidycensus)
## Warning: package 'tidycensus' was built under R version 4.4.2
library(sf)
## Warning: package 'sf' was built under R version 4.4.2
library(scales)
library(viridis)
library(RColorBrewer)
library(plotly)
## Warning: package 'plotly' was built under R version 4.4.2
library(ggplot2)

Methods

Borough boundaries are represented with a shapefile that was downloaded from NYC Open Data.

Census tract boundaries and data are from the 2016-2020 5-year American Community Survey, accessed with the tidyverse R package. Census data includes:

The proportion of people with West Indian ancestry for each census tract was calculated and the census tracts with no residents were removed.

boros <- st_read("C:/Users/arooj/OneDrive/Desktop/class 1/part2-20241014T141218Z-001/part2/data/raw/geo/Borough Boundaries.geojson")

raw_ancestry <- get_acs(geography = "tract", 
                        variables = c(ancestry_pop = "B04006_001",
                                      west_indian = "B04006_094"), 
                        state='NY',
                        county = 'Kings',
                        geometry = T, 
                        year = 2022,
                        output = "wide")
## 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.
west_indian <- raw_ancestry |> 
  mutate(pct_west_indian = west_indianE/ancestry_popE) |> 
  filter(ancestry_popE > 0)

Results

 west_indian_map <- ggplot() +
  geom_sf(data = west_indian |>
            filter(!is.na(pct_west_indian)), #need to remove nas for ggploty to work
          mapping = aes(fill = pct_west_indian,
                        text = paste0(NAME, ":",
                        "<br>Percent West Indian ancestry: ", #br next line
                        scales::percent(pct_west_indian, accuracy=1))), #scales when you are just using the package
          color = "transparent") +
  theme_void() +
  scale_fill_distiller(breaks=c(0, .2, .4, .6, .8, 1),
                       direction = 1,
                       na.value = "#fafafa", #light grey or "transparent"
                       name="Percent West Indian Ancestry (%)",
                       labels=percent_format(accuracy = 1L)) +
  labs(
    title = "Brooklyn, West Indian Ancestry by Census Tract",
    caption = "Source: American Community Survey, 2016-20"
  )+
  geom_sf(data = boros |>
            filter(boro_name == "Brooklyn"),
          color = "black", fill = NA, lwd = .5) #line width
## Warning in layer_sf(geom = GeomSf, data = data, mapping = mapping, stat = stat,
## : Ignoring unknown aesthetics: text
ggplotly(west_indian_map, tooltip = "text")

The map above reveals a distinct cluster in Central Brooklyn where West Indian ancestry is notably more prevalent. As we move away from this central area, the percentage of residents with West Indian ancestry gradually decreases. This pattern highlights the presence of cultural hubs, particularly in neighborhoods like Flatbush, Crown Heights, and East Flatbush, which are historically known for their strong ties to West Indian communities.