Arizona Indigenous Tribal Water Rights

DataViz
Tables
Indigenous Rights
#2024PositTableContest
Examination of US federally recognized indigenous tribes in AZ, with respect to their water rights…or lack thereof
Author
Affiliation

Dr. Greg Chism

School of Information, University of Arizona

Important

Throughout this project I personally use the term “Indigenous” and “Tribal” to refer to the Indigenous Peoples that lived in pre-colonial North America. The U.S. Census Bureau uses the term “American Indian” (a term some Indigenous Peoples also prefer), and subsequently many of the Federally Recognized Tribal Reservations use this term. It is not my wish to create or follow prejudice against Indigenous Peoples through this project, as it was meant only as a learning resource. Any concerns about the content of this project will lead to its immediate correction or complete removal.

0 - Set up

I used several packages for this project, most of which related to plotting maps with {ggplot2} or creating interactive/reactive tables with {reactable} and {reactablefmtr}.

Packages installed
if(!require(pacman))
  install.packages("pacman")

pacman::p_load(here,
               htmltools,
               lwgeom,
               tidyverse,
               tigris,
               sf,
               ggtext,
               ggrepel,
               ggiraph,
               glue,
               readxl,
               janitor,
               reactable,     # for HTML tables
               reactablefmtr, # for easier formatting reactable tables
               scales,
               patchwork,
               usmap,
               webshot2)

webshot::install_phantomjs()

# Options to use tigris datasets with sf
options(tigris_use_cache = TRUE, tigris_class = "sf")

Setting the default theme ggplot and output options for the project.

Theme Settings
# setting theme for ggplot2
ggplot2::theme_set(cowplot::theme_map())

# setting figure parameters for knitr
knitr::opts_chunk$set(
  fig.width = 8,        # 8" width
  fig.asp = 0.65,       # the golden ratio
  fig.retina = 1,       # dpi multiplier for displaying HTML output on retina
  fig.align = "center", # center align figures
  dpi = 350,            # higher dpi, sharper image
  message = FALSE
)

1 - Introduction

What is the status of Indigenous Tribal water rights in Arizona?

As both a resident of Arizona and a member of the University of Arizona (UArizona) faculty, I have been acutely aware of the influence of Indigenous Peoples and their culture. Arizona is home to 22 federally recognized tribes, and my city of residence, Tucson, is home to the O’odham and Yaqui tribed. The UArizona Land Acknowledgement recognizes that the campus is on the land and territories of Indigenous Peoples, and as such strives to build sustainable relationships with sovereign Native Nations and Indigenous communities through education offerings, partnerships, and community service1.

Arizona is the sunniest state in the U.S., with an average of 5,755 kJ/m² in annual sunlight. In addition, there has been a +12.23% change in sunlight since 19922. Over the last 15 years, the Southwest has experience substantial drought, especially affecting the Colorado River3 and Lake Mead4. The Colorado River supplies about 36% of Arizona’s water. Whereas other sources are from groundwater, 41%; in-state rivers, 18%, and reclaimed water, 5%5. Due to climate projections for the southwestern U.S., it is likely that Arizona’s drought situation will only worsen over time6.

Of the 22 federally recognized tribes in AZ, only 14 have either fully resolved, adjudicated rights, or partially resolved rights claims7. In fact, Navajo Nation, the largest federally recognized tribe, only recently passed a proposed settlement that would ensure water rights for its tribe - a deal that has yet to be passed by Congress8. What has taken so long? Legally, Indigenous Tribal users were left out of water rights decisions until 1908, when the Supreme Court ruled on the Winters Doctrine, a decision that guaranteed water rights to tribes9. Since this landmark decision, tribes have had an uphill battle due in part to their sovereign nation status not being respected. In fact, Congress tried to abolish tribal governments, disband their reservations, and relocate residents to urban areas in 195310. In addition, tribes were forced to endure existential threats to their ways of life, such as fleeing boarding schools that wished to assimilate Indigenous Peoples into U.S. society11. Due to this, 1978 was the year the Ak-Chin Indian Community (near Maricopa AZ) was the first tribe to settle water rights12. As a result from this constant uphill battle, there are still 8 Arizona tribes with completely unresolved water rights.

2 - Data Import & Wrangling

2.1 - Arizona shapefiles

There were two sources for shapefiles used in this project:

  1. AZ counties data from {tigris}
  2. University of Arizona Institutional Repository (UAiR) for major Arizona rivers, lakes, and the Central Arizona Project.

All column names were cleaned using janitor::clean_names().

Load and wrangle AZ shapefiles
# Download the shapefile for Arizona counties
az_map <- states(cb = TRUE, progress = FALSE) %>%
  clean_names() %>%
  filter(name == "Arizona")

# Import Arizona rivers shapefile
rivers <- st_read(here("data", "azRivers", "Major_Rivers.shp")) %>% 
  clean_names() %>%
  st_transform(crs = st_crs(az_map))

# Import Arizona lakes shapefile
lakes <- st_read(here("data", "azLakes", "Major_Lakes.shp")) %>% 
  clean_names() %>%
  st_transform(crs = st_crs(az_map))

# Import Central Arizona Project shapefile
centralAZ <- st_read(here("data", "Cen_AZ_Proj", "Cen_AZ_Proj.shp")) %>% 
  clean_names() %>%
  st_transform(crs = st_crs(az_map))

2.2 - Arizona Indigenous Tribes

The shapefile for Arizona Indigenous Tribes was sourced from the Arizona Department of Health Services. Several columns were added onto this original data:

Column Type Description Source
tribe Character Standardized Tribal name US Census Bureau
pop Numeric Population of Tribes (includes all reservations in and outside of AZ). US Census Bureau
number Numeric Tribal Alphabetical Ranking

Notable steps:

  • Reading .shp data from the data folder using st_read the {sf} package.
  • Set the crs to 4269, which is standard for US Census data
  • Transform the crs to the same as the az_counties_pop to ensure its standardized.
Load and wrangle AZ tribal shapefiles
tribal_lands <- st_read(here("data", "azTribes", "American_Indian_Reservations_in_Arizona.shp")) %>% 
  clean_names()
tribal_lands <- st_set_crs(tribal_lands, 4269)
tribal_lands <- st_transform(tribal_lands, crs = st_crs(az_map))

tribal_lands <- tribal_lands %>%
  mutate(
    tribe = case_when(
      tribe = str_detect(name, "Ak-Chin") ~ "Ak-Chin Indian Community",
      tribe = str_detect(name, "Hopi") ~ "Hopi Tribe",
      tribe = str_detect(name, "Hualapai") ~ "Hualapai Tribe",
      tribe = str_detect(name, "Navajo") ~ "Navajo Nation",
      tribe = str_detect(name, "Pascua") ~ "Pascua Yaqui Tribe",    
      tribe = str_detect(name, "Tohono") ~ "Tohono O'odham Nation",
      tribe = str_detect(name, "Tonto Apache") ~ "Tonto Apache Tribe",
      tribe = str_detect(name, "Yavapai-Apache") ~ "Yavapai-Apache Tribe",
      TRUE ~ name
    ),
    url = case_when(
      tribe == "Ak-Chin Indian Community" ~ "https://ak-chin.nsn.us/",
      tribe == "Cocopah Indian Tribe" ~ "https://www.cocopah.com/",
      tribe == "Colorado River Indian Tribes" ~ "https://www.crit-nsn.gov/",
      tribe == "Fort McDowell Yavapai Nation" ~ "https://fmyn.org/",
      tribe == "Fort Mojave Indian Tribe" ~ "https://www.fortmojaveindiantribe.com/",
      tribe == "Gila River Indian Community" ~ "https://www.gilariver.org/",
      tribe == "Havasupai Tribe" ~ "https://theofficialhavasupaitribe.com/",
      tribe == "Hopi Tribe" ~ "https://www.hopi-nsn.gov/",
      tribe == "Hualapai Tribe" ~ "https://hualapai-nsn.gov/",
      tribe == "Kaibab-Paiute Tribe" ~ "https://www.kaibabpaiute-nsn.gov/",
      tribe == "Navajo Nation" ~ "https://www.navajo-nsn.gov/",
      tribe == "Pascua Yaqui Tribe" ~ "https://www.pascuayaqui-nsn.gov/",
      tribe == "Pueblo of Zuni" ~ "https://www.ashiwi.org/",
      tribe == "Quechan Tribe" ~ "https://www.quechantribe.com/index.html",
      tribe == "Salt River Pima-Maricopa Indian Community" ~ "https://www.srpmic-nsn.gov/",
      tribe == "San Carlos Apache Tribe" ~ "https://itcaonline.com/member-tribes/san-carlos-apache-tribe/",
      tribe == "Tohono O'odham Nation" ~ "http://www.tonation-nsn.gov/",
      tribe == "Tonto Apache Tribe" ~ "https://itcaonline.com/member-tribes/tonto-apache-tribe/",
      tribe == "White Mountain Apache Tribe" ~ "http://www.wmat.us/",
      tribe == "Yavapai-Apache Tribe" ~ "https://yavapai-apache.org/",
      tribe == "Yavapai-Prescott Indian Tribe" ~ "https://ypit.com/",
      TRUE ~ NA
    ),
    pop = case_when(
      tribe == "Ak-Chin Indian Community" ~ 1450,
      tribe == "Cocopah Indian Tribe" ~ 1158,
      tribe == "Colorado River Indian Tribes" ~ 8385,
      tribe == "Fort McDowell Yavapai Nation" ~ 1006,
      tribe == "Fort Mojave Indian Tribe" ~ 1572,
      tribe == "Gila River Indian Community" ~ 12179,
      tribe == "Havasupai Tribe" ~ 730,
      tribe == "Hopi Tribe" ~ 7895,
      tribe == "Hualapai Tribe" ~ 1738,
      tribe == "Kaibab-Paiute Tribe" ~ 249,
      tribe == "Navajo Nation" ~ 166545,
      tribe == "Pascua Yaqui Tribe" ~ 3678,
      tribe == "Pueblo of Zuni" ~ 8134,
      tribe == "Quechan Tribe" ~ 1536,
      tribe == "Salt River Pima-Maricopa Indian Community" ~ 5949,
      tribe == "San Carlos Apache Tribe" ~ 10204,
      tribe == "Tohono O'odham Nation" ~ 10052,
      tribe == "Tonto Apache Tribe" ~ 102,
      tribe == "White Mountain Apache Tribe" ~ 14620,
      tribe == "Yavapai-Apache Tribe" ~ 1085,
      tribe == "Yavapai-Prescott Indian Tribe" ~ 551,
      TRUE ~ NA
    ),
    name = ifelse(name == "Tohono O’odham Nation", "Tohono O'odham Nation", name),
    number = dense_rank(name)) 

2.3 - Arizona Tribal Water Rights

Column Type Description Source
tribe Character Standardized Tribal name US Census Bureau
claim Numeric Water rights claim filing (year) propublica.org13
recognized Numeric Water rights claim recognized (year) propublica.org
resolved Character Water rights claim status cap-az.com
Create AZ tribal water rights tribble
water_rights <- tribble(
  ~tribe, ~claim, ~recognized, ~resolved,
  "Salt River Pima-Maricopa Indian Community", 1949, 1988, "Fully",
  "Cocopah Indian Tribe", 1953, 1963, "Adjudicated",
  "Colorado River Indian Tribes", 1953, 1963, "Adjudicated",
  "Fort Mojave Indian Tribe", 1953, 1963, "Adjudicated",
  "Quechan Tribe", 1953, 1963, "Adjudicated",
  "Ak-Chin Indian Community", 1974, 1978, "Fully",
  "Tohono O'odham Nation", 1975, 1982, "Partially",
  "Gila River Indian Community", 1976, 2005, "Fully",
  "Yavapai-Prescott Indian Tribe", 1978, 1995, "Fully",
  "White Mountain Apache Tribe", 1979, 2010, "Fully",
  "Fort McDowell Yavapai Nation", 1979, 1990, "Fully",
  "Pueblo of Zuni", 1979, 2003, "Fully",
  "Yavapai-Apache Tribe", 1979, NA, "Unresolved",
  "San Carlos Apache Tribe", 1979, 1999, "Partially",
  "Hualapai Tribe", 1985, 2014, "Fully",
  "Hopi Tribe", 1985, NA, "Unresolved",
  "Tonto Apache Tribe", 1985, NA, "Unresolved",
  "Navajo Nation", 1985, NA, "Unresolved",
  "Pascua Yaqui Tribe", 1987, NA, "Unresolved",
  "San Juan Southern Paiute Tribe", 1991, NA, "Unresolved",
  "Havasupai Tribe", 2016, NA, "Partially",
  "Kaibab-Paiute Tribe", NA, NA, "Unresolved"
)

2.4 - Joined Arizona Tribal data

Column Type Description
years Numeric Length of time (years) between water rights claim filing and recognition.
res_color Category Hex color assigned to water rights status
Create water rights timeline and color
tribal_lands_water <- 
  tribal_lands %>%
  left_join(water_rights) %>%
  mutate(
    years = case_when(
      is.na(recognized) & !is.na(claim) ~ 2024 - claim,
      is.na(recognized) & is.na(claim) ~ 0,
      TRUE ~ recognized - claim
      ),
    res_color = case_when(
      resolved == "Fully" | resolved == "Adjudicated" ~ "#127852",
      resolved == "Partially" ~ "goldenrod",
      resolved == "Unresolved" ~ "firebrick",
      TRUE ~ "gray"
      )
    ) 

3 - Arizona Indigenous Tribal Boundaries

Plotting AZ Indigenous Tribal boundaries from the az counties shapefile and the shapefile from AZGeo Data. There are a few noteworthy steps:

  1. Utilizing five geom_sf() arguments - i. for the AZ counties, ii. for major AZ rivers, iii. for the Central Arizona Project, iv. for major AZ lakes, v. for the indigenous regions.
  2. Utilizing geom_label_repel_interactive() to create interactive labels (tooltips).
  3. Utilizing scale_fill_identity() to fill the tribal land geometry and give it a custom legend.
Note

This visual is inspired by the ProPublica article “How Arizona Stands Between Tribes and Their Water”.

Create interactive AZ map
tribal_map <-
  ggplot(az_map) +
  geom_sf(fill = "#E7E4D9") +
  geom_sf(data = rivers, color = "#8ca7c0", linewidth = 0.5) +
  geom_sf(data = centralAZ, color = "#98A68F", linewidth = 0.5) +
  geom_sf(data = lakes, fill = "#8ca7c0", color = "#8ca7c0", size = 1) +
  geom_sf(data = tribal_lands_water, aes(fill = "#BA8172"), alpha = 0.5, color = "gray85", linewidth = 0.15) +
  geom_label_repel_interactive(
    data = tribal_lands_water,
    aes(label = number, geometry = geometry, 
        tooltip = paste0("<a href='", url, "'>", name, "</a>\n"),
        onclick = paste0('window.open("', url , '")')),
    stat = "sf_coordinates",
    min.segment.length = 0,
    force = 16) +
  scale_fill_identity(guide = "legend", labels = "Federally Recognized Tribal\nReservations and Trust Land") +
  labs(title = "Federally Recognized Tribal Reservations and Trust Land\nin Arizona",
       x = "Longitude",
       y = "Latitude",
       caption = "Source: Shapefile obtained using {tigris} R package, v2.0.1\nIndigenous Tribe Shapefile obtained from AZGeo Data\nWater body data obtained from UAiR",
       fill = NULL) +
  coord_sf(clip = "off") +
  theme(plot.title.position = "plot",
        legend.key.size = unit(1, "cm"),
        legend.position = "left",
        legend.justification = "top",
        plot.caption = element_text(color = "gray80"))

girafe(ggobj = tribal_map)