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)
- Good design should be understandable, unobtrusive, and as minimal as
possible. To achieve these goals, I have implemented a bar chart
visualization, whilst using color to note that a heuristic I care about
(> 35 percent bachelor’s degree attainment) should be met. To make it
more perceptible, we utilize color to create an impact right away, and
help the user interpret the states that meet the heuristic.
Initial result
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%
mapping: yintercept = ~yintercept
geom_hline: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
Follow up (Week 3)
Problem to be solved
The situation has now changed, and we want to add to our options in
terms of where we can move. Picking from a list of states that fall
within the famous Acela corridor (close proximity to financial
institutions), we chose 5 more states to be potential options to
consider. These states are Maryland, New Jersey, Conneticut, Virginia,
and Pennsylvannia.
New result
edu_attainment <- data.frame(
State = c("California", "Texas", "New York", "Florida", "Illinois", "Maryland", "New Jersey", "Conneticut", "Virginia", "Pennsylvania"),
Bachelor_Percent = c(36.19, 33.12, 40.90, 33.16, 37.14,48.55,43.10 ,42.13 ,41.81,36.54)
)
# 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%
mapping: yintercept = ~yintercept
geom_hline: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
Result
With this new dataset, it is clear that moving to the east coast
might be a better move, more specifically either New Jersey or
Maryland.
LS0tCnRpdGxlOiAiV2VlayAzIEhvbWV3b3JrIC0gQ2hhaXRhbnlhIFByYXNoYW50IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIyMgUHJvYmxlbSB0byBiZSBzb2x2ZWQKClRoZXJlIGlzIGEgaHlwb3RoZXRpY2FsIHNpdHVhdGlvbiB3aGVyZSBJIGNhbiBvbmx5IG1vdmUgdG8gNSBzdGF0ZXMgYmV0d2VlbiBDYWxpZm9ybmlhLCBUZXhhcywgTmV3IFlvcmssIEZsb3JpZGEsIGFuZCBJbGxpbm9pcy4gVGhlIHJlYXNvbiBmb3IgdGhpcyBtb3ZlIGlzIHRoYXQgdGhlc2Ugc3RhdGVzIGFyZSBjbG9zZXN0IHRvIGZpbmFuY2lhbCBzZXJ2aWNlIGluZHVzdHJpZXMsIHNvbWV0aGluZyB0aGF0IGlzIGEgaGV1cmlzdGljIGZvciBteSBmYW1pbHkgc2luY2Ugd2UgYXJlIGFsbCB3b3JraW5nIGluIHRoZSBpbmR1c3RyeS4gQW5vdGhlciBrZXkgZGF0YSBwb2ludCB3ZSBhcmUgY29uc2lkZXJpbmcgaXMgdGhlIHN0YXRlJ3Mgb3ZlcmFsbCBhdHRhaW5tZW50IG9mIGVkdWNhdGlvbiwgdGhhdCBpcywgdGhlIHBlcmNlbnRhZ2Ugb2YgY2l0aXplbnMgd2hvIGhhdmUgYXR0YWluZWQgYSBiYWNoZWxvcidzIGRlZ3JlZSBvciBoaWdoZXIuIFRoaXMgaXMgYSBoZXVyaXN0aWMgZm9yIHByb3hpbWl0eSBhbmQgbnVtYmVyIG9mIHBvdGVudGlhbCBmaW5hbmNpYWwgc2VydmljZSBhbmQgd2hpdGUgY29sbGFyIGpvYnMsIHNpbmNlIG1vc3Qgb2YgdGhlc2Ugam9icyBkbyByZXF1aXJlIGF0IGxlYXN0IGEgYmFjaGVsb3IncyBkZWdyZWUgZm9yIHF1YWxpZmljYXRpb24uIEkgd2FudCB0byBvcHRpbWl6ZSBmb3Igc3RhdGVzIHRoYXQgaGF2ZSBhIGJhY2hlbG9yJ3MgYXR0YWlubWVudCBvZiBhdCBsZWFzdCAzNSBwZXJjZW50LiAKCiMjIyBEYXRhc2V0IAoKYGBgClVTIENlbnN1cyBCdXJlYXUgLSBFZHVjYXRpb25hbCBhdHRhaW5tZW50IApodHRwczovL2RhdGEuY2Vuc3VzLmdvdi90YWJsZS9BQ1NTVDFZMjAyMS5TMTUwMT9xPVMxNTAxJmc9MDEwWFgwMFVTJDA0MDAwMDAmbW9lPWZhbHNlJnRwPWZhbHNlJnRpZD1BQ1NTVDFZMjAyMS5TMTUwMSAKYGBgCgoKIyMjIFByaW5jaXBsZXMgKERlc2lnbikKCi0gR29vZCBkZXNpZ24gc2hvdWxkIGJlIHVuZGVyc3RhbmRhYmxlLCB1bm9idHJ1c2l2ZSwgYW5kIGFzIG1pbmltYWwgYXMgcG9zc2libGUuIFRvIGFjaGlldmUgdGhlc2UgZ29hbHMsIEkgaGF2ZSBpbXBsZW1lbnRlZCBhIGJhciBjaGFydCB2aXN1YWxpemF0aW9uLCB3aGlsc3QgdXNpbmcgY29sb3IgdG8gbm90ZSB0aGF0IGEgaGV1cmlzdGljIEkgY2FyZSBhYm91dCAoPiAzNSBwZXJjZW50IGJhY2hlbG9yJ3MgZGVncmVlIGF0dGFpbm1lbnQpIHNob3VsZCBiZSBtZXQuIFRvIG1ha2UgaXQgbW9yZSBwZXJjZXB0aWJsZSwgd2UgdXRpbGl6ZSBjb2xvciB0byBjcmVhdGUgYW4gaW1wYWN0IHJpZ2h0IGF3YXksIGFuZCBoZWxwIHRoZSB1c2VyIGludGVycHJldCB0aGUgc3RhdGVzIHRoYXQgbWVldCB0aGUgaGV1cmlzdGljLiAKCiMjIyBJbml0aWFsIHJlc3VsdAoKYGBge3J9CgplZHVfYXR0YWlubWVudCA8LSBkYXRhLmZyYW1lKAogIFN0YXRlID0gYygiQ2FsaWZvcm5pYSIsICJUZXhhcyIsICJOZXcgWW9yayIsICJGbG9yaWRhIiwgIklsbGlub2lzIiksCiAgQmFjaGVsb3JfUGVyY2VudCA9IGMoMzYuMTksIDMzLjEyLCA0MC45MCwgMzMuMTYsIDM3LjE0KQopCiMgY29sb3IgY29kaW5nCmVkdV9hdHRhaW5tZW50JENvbG9yID0gaWZlbHNlKGVkdV9hdHRhaW5tZW50JEJhY2hlbG9yX1BlcmNlbnQgPiAzNSwgImdyZWVuIiwgInJlZCIpCmVkdV9hdHRhaW5tZW50JENvbG9yID0gYXMuZmFjdG9yKGVkdV9hdHRhaW5tZW50JENvbG9yKQoKIyBPcmRlcmluZyBzdGF0ZXMgYnkgQmFjaGVsb3JfUGVyY2VudAplZHVfYXR0YWlubWVudCRTdGF0ZSA8LSBmYWN0b3IoZWR1X2F0dGFpbm1lbnQkU3RhdGUsIGxldmVscyA9IGVkdV9hdHRhaW5tZW50JFN0YXRlW29yZGVyKGVkdV9hdHRhaW5tZW50JEJhY2hlbG9yX1BlcmNlbnQsIGRlY3JlYXNpbmcgPSBUUlVFKV0pCgojIFBsb3QKbGlicmFyeShnZ3Bsb3QyKQpnZ3Bsb3QoZGF0YSA9IGVkdV9hdHRhaW5tZW50LCBhZXMoeCA9IFN0YXRlLCB5ID0gQmFjaGVsb3JfUGVyY2VudCwgZmlsbCA9IENvbG9yKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiZ3JlZW4iID0gImdyZWVuIiwgInJlZCIgPSAicmVkIikpICsgCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIkNvbGxlZ2UgRWR1Y2F0aW9uYWwgQXR0YWlubWVudCBieSBTdGF0ZSAoT3JkZXJlZCkiLAogICAgICAgeCA9ICJTdGF0ZSIsCiAgICAgICB5ID0gIlBlcmNlbnQgb2YgQmFjaGVsb3IgRGVncmVlcyBBdHRhaW5lZCIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKSArCiAgZ3VpZGVzKGZpbGw9RkFMU0UpICMgUmVtb3ZlIGxlZ2VuZCBmb3IgY29sb3IKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAzNSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGUgPSAiZGFzaGVkIiwgc2l6ZSA9IDEpICMgQWRkIHJlZCBkYXNoZWQgbGluZSBhdCAzNSUKCgoKCgoKYGBgCgojIyMgRm9sbG93IHVwIChXZWVrIDMpCgojIyMgUHJvYmxlbSB0byBiZSBzb2x2ZWQKClRoZSBzaXR1YXRpb24gaGFzIG5vdyBjaGFuZ2VkLCBhbmQgd2Ugd2FudCB0byBhZGQgdG8gb3VyIG9wdGlvbnMgaW4gdGVybXMgb2Ygd2hlcmUgd2UgY2FuIG1vdmUuIFBpY2tpbmcgZnJvbSBhIGxpc3Qgb2Ygc3RhdGVzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIGZhbW91cyBBY2VsYSBjb3JyaWRvciAoY2xvc2UgcHJveGltaXR5IHRvIGZpbmFuY2lhbCBpbnN0aXR1dGlvbnMpLCB3ZSBjaG9zZSA1IG1vcmUgc3RhdGVzIHRvIGJlIHBvdGVudGlhbCBvcHRpb25zIHRvIGNvbnNpZGVyLiBUaGVzZSBzdGF0ZXMgYXJlIE1hcnlsYW5kLCBOZXcgSmVyc2V5LCBDb25uZXRpY3V0LCBWaXJnaW5pYSwgYW5kIFBlbm5zeWx2YW5uaWEuIAoKIyMjIE5ldyByZXN1bHQKCmBgYHtyfQoKZWR1X2F0dGFpbm1lbnQgPC0gZGF0YS5mcmFtZSgKICBTdGF0ZSA9IGMoIkNhbGlmb3JuaWEiLCAiVGV4YXMiLCAiTmV3IFlvcmsiLCAiRmxvcmlkYSIsICJJbGxpbm9pcyIsICJNYXJ5bGFuZCIsICJOZXcgSmVyc2V5IiwgIkNvbm5ldGljdXQiLCAiVmlyZ2luaWEiLCAiUGVubnN5bHZhbmlhIiksCiAgQmFjaGVsb3JfUGVyY2VudCA9IGMoMzYuMTksIDMzLjEyLCA0MC45MCwgMzMuMTYsIDM3LjE0LDQ4LjU1LDQzLjEwICw0Mi4xMyAsNDEuODEsMzYuNTQpCikKIyBjb2xvciBjb2RpbmcKZWR1X2F0dGFpbm1lbnQkQ29sb3IgPSBpZmVsc2UoZWR1X2F0dGFpbm1lbnQkQmFjaGVsb3JfUGVyY2VudCA+IDM1LCAiZ3JlZW4iLCAicmVkIikKZWR1X2F0dGFpbm1lbnQkQ29sb3IgPSBhcy5mYWN0b3IoZWR1X2F0dGFpbm1lbnQkQ29sb3IpCgojIE9yZGVyaW5nIHN0YXRlcyBieSBCYWNoZWxvcl9QZXJjZW50CmVkdV9hdHRhaW5tZW50JFN0YXRlIDwtIGZhY3RvcihlZHVfYXR0YWlubWVudCRTdGF0ZSwgbGV2ZWxzID0gZWR1X2F0dGFpbm1lbnQkU3RhdGVbb3JkZXIoZWR1X2F0dGFpbm1lbnQkQmFjaGVsb3JfUGVyY2VudCwgZGVjcmVhc2luZyA9IFRSVUUpXSkKCiMgUGxvdApsaWJyYXJ5KGdncGxvdDIpCmdncGxvdChkYXRhID0gZWR1X2F0dGFpbm1lbnQsIGFlcyh4ID0gU3RhdGUsIHkgPSBCYWNoZWxvcl9QZXJjZW50LCBmaWxsID0gQ29sb3IpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJncmVlbiIgPSAiZ3JlZW4iLCAicmVkIiA9ICJyZWQiKSkgKyAKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiQ29sbGVnZSBFZHVjYXRpb25hbCBBdHRhaW5tZW50IGJ5IFN0YXRlIChPcmRlcmVkKSIsCiAgICAgICB4ID0gIlN0YXRlIiwKICAgICAgIHkgPSAiUGVyY2VudCBvZiBCYWNoZWxvciBEZWdyZWVzIEF0dGFpbmVkIikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKICBndWlkZXMoZmlsbD1GQUxTRSkgIyBSZW1vdmUgbGVnZW5kIGZvciBjb2xvcgpnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAzNSwgY29sb3IgPSAicmVkIiwgbGluZXR5cGUgPSAiZGFzaGVkIiwgc2l6ZSA9IDEpICMgQWRkIHJlZCBkYXNoZWQgbGluZSBhdCAzNSUKCgoKCgoKYGBgCgojIyMgUmVzdWx0CgpXaXRoIHRoaXMgbmV3IGRhdGFzZXQsIGl0IGlzIGNsZWFyIHRoYXQgbW92aW5nIHRvIHRoZSBlYXN0IGNvYXN0IG1pZ2h0IGJlIGEgYmV0dGVyIG1vdmUsIG1vcmUgc3BlY2lmaWNhbGx5IGVpdGhlciBOZXcgSmVyc2V5IG9yIE1hcnlsYW5kLiA=