Problem to be solved

There is a hypothetical situation where I can only move to 5 states between California, Texas, New York, Florida, and Illinois. The reason for this move is that these states are closest to financial service industries, something that is a heuristic for my family since we are all working in the industry. Another key data point we are considering is the state’s overall attainment of education, that is, the percentage of citizens who have attained a bachelor’s degree or higher. This is a heuristic for proximity and number of potential financial service and white collar jobs, since most of these jobs do require at least a bachelor’s degree for qualification. I want to optimize for states that have a bachelor’s attainment of at least 35 percent.

Dataset

US Census Bureau - Educational attainment 
https://data.census.gov/table/ACSST1Y2021.S1501?q=S1501&g=010XX00US$0400000&moe=false&tp=false&tid=ACSST1Y2021.S1501 

Principles (Design)


edu_attainment <- data.frame(
  State = c("California", "Texas", "New York", "Florida", "Illinois"),
  Bachelor_Percent = c(36.19, 33.12, 40.90, 33.16, 37.14)
)
# color coding
edu_attainment$Color = ifelse(edu_attainment$Bachelor_Percent > 35, "green", "red")
edu_attainment$Color = as.factor(edu_attainment$Color)

# Ordering states by Bachelor_Percent
edu_attainment$State <- factor(edu_attainment$State, levels = edu_attainment$State[order(edu_attainment$Bachelor_Percent, decreasing = TRUE)])

# Plot
library(ggplot2)
ggplot(data = edu_attainment, aes(x = State, y = Bachelor_Percent, fill = Color)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("green" = "green", "red" = "red")) + 
  theme_minimal() +
  labs(title = "College Educational Attainment by State (Ordered)",
       x = "State",
       y = "Percent of Bachelor Degrees Attained") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  guides(fill=FALSE) # Remove legend for color

  geom_hline(yintercept = 35, color = "red", linetype = "dashed", size = 1) # Add red dashed line at 35%
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
Please use `linewidth` instead.
mapping: yintercept = ~yintercept 
geom_hline: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity 
LS0tCnRpdGxlOiAiV2VlayAyIEhvbWV3b3JrIC0gQ2hhaXRhbnlhIFByYXNoYW50IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIyMgUHJvYmxlbSB0byBiZSBzb2x2ZWQKClRoZXJlIGlzIGEgaHlwb3RoZXRpY2FsIHNpdHVhdGlvbiB3aGVyZSBJIGNhbiBvbmx5IG1vdmUgdG8gNSBzdGF0ZXMgYmV0d2VlbiBDYWxpZm9ybmlhLCBUZXhhcywgTmV3IFlvcmssIEZsb3JpZGEsIGFuZCBJbGxpbm9pcy4gVGhlIHJlYXNvbiBmb3IgdGhpcyBtb3ZlIGlzIHRoYXQgdGhlc2Ugc3RhdGVzIGFyZSBjbG9zZXN0IHRvIGZpbmFuY2lhbCBzZXJ2aWNlIGluZHVzdHJpZXMsIHNvbWV0aGluZyB0aGF0IGlzIGEgaGV1cmlzdGljIGZvciBteSBmYW1pbHkgc2luY2Ugd2UgYXJlIGFsbCB3b3JraW5nIGluIHRoZSBpbmR1c3RyeS4gQW5vdGhlciBrZXkgZGF0YSBwb2ludCB3ZSBhcmUgY29uc2lkZXJpbmcgaXMgdGhlIHN0YXRlJ3Mgb3ZlcmFsbCBhdHRhaW5tZW50IG9mIGVkdWNhdGlvbiwgdGhhdCBpcywgdGhlIHBlcmNlbnRhZ2Ugb2YgY2l0aXplbnMgd2hvIGhhdmUgYXR0YWluZWQgYSBiYWNoZWxvcidzIGRlZ3JlZSBvciBoaWdoZXIuIFRoaXMgaXMgYSBoZXVyaXN0aWMgZm9yIHByb3hpbWl0eSBhbmQgbnVtYmVyIG9mIHBvdGVudGlhbCBmaW5hbmNpYWwgc2VydmljZSBhbmQgd2hpdGUgY29sbGFyIGpvYnMsIHNpbmNlIG1vc3Qgb2YgdGhlc2Ugam9icyBkbyByZXF1aXJlIGF0IGxlYXN0IGEgYmFjaGVsb3IncyBkZWdyZWUgZm9yIHF1YWxpZmljYXRpb24uIEkgd2FudCB0byBvcHRpbWl6ZSBmb3Igc3RhdGVzIHRoYXQgaGF2ZSBhIGJhY2hlbG9yJ3MgYXR0YWlubWVudCBvZiBhdCBsZWFzdCAzNSBwZXJjZW50LiAKCiMjIyBEYXRhc2V0IAoKYGBgClVTIENlbnN1cyBCdXJlYXUgLSBFZHVjYXRpb25hbCBhdHRhaW5tZW50IApodHRwczovL2RhdGEuY2Vuc3VzLmdvdi90YWJsZS9BQ1NTVDFZMjAyMS5TMTUwMT9xPVMxNTAxJmc9MDEwWFgwMFVTJDA0MDAwMDAmbW9lPWZhbHNlJnRwPWZhbHNlJnRpZD1BQ1NTVDFZMjAyMS5TMTUwMSAKYGBgCgoKIyMjIFByaW5jaXBsZXMgKERlc2lnbikKCi0gR29vZCBkZXNpZ24gc2hvdWxkIGJlIHVuZGVyc3RhbmRhYmxlLCB1bm9idHJ1c2l2ZSwgYW5kIGFzIG1pbmltYWwgYXMgcG9zc2libGUuIFRvIGFjaGlldmUgdGhlc2UgZ29hbHMsIEkgaGF2ZSBpbXBsZW1lbnRlZCBhIGJhciBjaGFydCB2aXN1YWxpemF0aW9uLCB3aGlsc3QgdXNpbmcgY29sb3IgdG8gbm90ZSB0aGF0IGEgaGV1cmlzdGljIEkgY2FyZSBhYm91dCAoPiAzNSBwZXJjZW50IGJhY2hlbG9yJ3MgZGVncmVlIGF0dGFpbm1lbnQpIHNob3VsZCBiZSBtZXQuIFRvIG1ha2UgaXQgbW9yZSBwZXJjZXB0aWJsZSwgd2UgdXRpbGl6ZSBjb2xvciB0byBjcmVhdGUgYW4gaW1wYWN0IHJpZ2h0IGF3YXksIGFuZCBoZWxwIHRoZSB1c2VyIGludGVycHJldCB0aGUgc3RhdGVzIHRoYXQgbWVldCB0aGUgaGV1cmlzdGljLiAKCmBgYHtyfQoKZWR1X2F0dGFpbm1lbnQgPC0gZGF0YS5mcmFtZSgKICBTdGF0ZSA9IGMoIkNhbGlmb3JuaWEiLCAiVGV4YXMiLCAiTmV3IFlvcmsiLCAiRmxvcmlkYSIsICJJbGxpbm9pcyIpLAogIEJhY2hlbG9yX1BlcmNlbnQgPSBjKDM2LjE5LCAzMy4xMiwgNDAuOTAsIDMzLjE2LCAzNy4xNCkKKQojIGNvbG9yIGNvZGluZwplZHVfYXR0YWlubWVudCRDb2xvciA9IGlmZWxzZShlZHVfYXR0YWlubWVudCRCYWNoZWxvcl9QZXJjZW50ID4gMzUsICJncmVlbiIsICJyZWQiKQplZHVfYXR0YWlubWVudCRDb2xvciA9IGFzLmZhY3RvcihlZHVfYXR0YWlubWVudCRDb2xvcikKCiMgT3JkZXJpbmcgc3RhdGVzIGJ5IEJhY2hlbG9yX1BlcmNlbnQKZWR1X2F0dGFpbm1lbnQkU3RhdGUgPC0gZmFjdG9yKGVkdV9hdHRhaW5tZW50JFN0YXRlLCBsZXZlbHMgPSBlZHVfYXR0YWlubWVudCRTdGF0ZVtvcmRlcihlZHVfYXR0YWlubWVudCRCYWNoZWxvcl9QZXJjZW50LCBkZWNyZWFzaW5nID0gVFJVRSldKQoKIyBQbG90CmxpYnJhcnkoZ2dwbG90MikKZ2dwbG90KGRhdGEgPSBlZHVfYXR0YWlubWVudCwgYWVzKHggPSBTdGF0ZSwgeSA9IEJhY2hlbG9yX1BlcmNlbnQsIGZpbGwgPSBDb2xvcikpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImdyZWVuIiA9ICJncmVlbiIsICJyZWQiID0gInJlZCIpKSArIAogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJDb2xsZWdlIEVkdWNhdGlvbmFsIEF0dGFpbm1lbnQgYnkgU3RhdGUgKE9yZGVyZWQpIiwKICAgICAgIHggPSAiU3RhdGUiLAogICAgICAgeSA9ICJQZXJjZW50IG9mIEJhY2hlbG9yIERlZ3JlZXMgQXR0YWluZWQiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwogIGd1aWRlcyhmaWxsPUZBTFNFKSAjIFJlbW92ZSBsZWdlbmQgZm9yIGNvbG9yCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMzUsIGNvbG9yID0gInJlZCIsIGxpbmV0eXBlID0gImRhc2hlZCIsIHNpemUgPSAxKSAjIEFkZCByZWQgZGFzaGVkIGxpbmUgYXQgMzUlCgoKCgoKCmBgYAoKCg==