Introduction

Mapping the proportion of people with West Indian Ancestry in Brooklyn.

library(tidyverse)
library(tidycensus)
library(sf)
library(scales)
library(RColorBrewer)
library(plotly)
library(knitr)

Methods

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

Neighborhood boundaries are represented with a shapefile of Neighborhood Tabulation Areas that was downloaded from NYC Planning.

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("~/Desktop/methods1/part2/data/raw/geo/Borough_Boundaries.geojson")

nabes <- st_read("~/Desktop/methods1/part2/data/raw/geo/nynta2020_23c")

raw_ancestry <- suppressWarnings(get_acs(geography = "tract", 
                        variables = c(ancestry_pop = "B04006_001",
                                      west_indian = "B04006_094"), 
                        state='NY',
                        county = 'Kings',
                        geometry = T, 
                        year = 2020,
                        output = "wide"))

west_indian <- raw_ancestry |> 
  mutate(pct_west_indian = west_indianE/ancestry_popE) |>
  filter(ancestry_popE > 0)

Results

west_indian_map <- suppressWarnings(ggplot()  + 
  geom_sf(data = west_indian,
          mapping = aes(fill = pct_west_indian,
                        text = paste0(NAME, ":",
                                      "<br>Percent West Indian ancestry: ",
                                      scales::percent(pct_west_indian, accuracy = 1))),
                        color = "transparent") +
  theme_void() +
  scale_fill_distiller(breaks=c(0, .2, .4, .6, .8, 1),
                       direction = 1,
                       na.value = "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 = nabes |> filter(BoroName == "Brooklyn"), 
          color = "gray", fill = NA, lwd = 0.25) + 
  geom_sf(data = boros |> filter(boro_name == "Brooklyn"), 
          color = "black", fill = NA, lwd = .3))

ggplotly(west_indian_map, tooltip = "text")

As you can see from the map above, there is a higher concentration of West Indian Ancestry in central, East Brooklyn, while surrounding areas have very low proportions of people reporting West Indian Ancestry.