Williamson County Leads in Income Levels and Home Ownership compared to Rutherford and Davidson counties.

In the histogram below, you can see that the home ownership percentage crowds around 68%. While the distribution of home ownership is relatively consistent in the histogram, the box plot shows how that percentage is distributed among Davidson, Rutherford, and Williamson County. Williamson County’s home ownership rates have a narrower range and a higher median compared to its neighbors.

The scatter plot further emphasizes this trend, showing that Williamson County not only has the highest income levels but also the highest rates of home ownership. Davidson and Rutherford counties are distributed throughout the plot, which suggests a clear correlation: as income rises, so does the likelihood of owning a home, regardless of county.





Code:

# ----------------------------------------------------------
# Step 1: Install required packages (if missing)
# ----------------------------------------------------------

if (!require("tidyverse"))
  install.packages("tidyverse")
if (!require("plotly"))
  install.packages("plotly")

# ----------------------------------------------------------
# Step 2: Load libraries
# ----------------------------------------------------------

library(tidyverse)
library(plotly)

# ----------------------------------------------------------
# Step 3: Read data from CSV file
# ----------------------------------------------------------

mydata <- read_csv(
  "https://raw.githubusercontent.com/drkblake/Data/main/MGRData.csv"
)

# ----------------------------------------------------------
# Step 4: Histogram
# ----------------------------------------------------------

Histogram <- plot_ly( # <== New
  data = mydata,
  x = ~ Ownership,
  type = "histogram",
  nbinsx = 40,
  opacity = 0.6,
  marker = list(
    color = "#4682B4",
    line = list(color = "black", width = 1)
  )
) %>%
  layout(
    title = "Distribution of Home Ownership",
    xaxis = list(title = "Home Ownership %"),
    yaxis = list(title = "Number of Districts")
  )

Histogram

# ----------------------------------------------------------
# Step 5: Box Plot
# ----------------------------------------------------------

Boxplot <- plot_ly(
  data = mydata,
  x = ~County,
  y = ~Ownership,
  type = "box",
  color = ~County,
  colors = c(
    "Davidson"   = "#d73027",
    "Rutherford" = "#fc8d59",
    "Williamson" = "#1a9850"
  ),
  boxpoints = "outliers",
  opacity = 0.8
) %>%
  layout(
    title = "Home Ownership Rate by County",
    xaxis = list(title = "County"),
    yaxis = list(title = "Home Ownership Rate (%)"),
    showlegend = FALSE   # optional, since x-axis already labels groups
  )

Boxplot

# ----------------------------------------------------------
# Step 5: ScatterPlot
# ----------------------------------------------------------


Scatterplot <- plot_ly(
  data = mydata,
  x = ~Med_Income,
  y = ~Ownership,
  type = "scatter",
  mode = "markers",
  text = ~County,
  hoverinfo = "text+x+y",
  color = ~County,
  colors = c(
    "Davidson"   = "#d73027",
    "Rutherford" = "#fc8d59",
    "Williamson" = "#1a9850"
  ),
  marker = list(
    size = 8,
    opacity = 0.7
  )
) %>%
  add_trace(
    type = "scatter",
    mode = "lines",
    x = ~Med_Income,
    y = fitted(lm(Ownership ~ Med_Income, data = mydata)),
    name = "OLS trend",
    line = list(color = "black", width = 2),
    inherit = FALSE
  ) %>%
  layout(
    title = "Home Ownership Rate by County",
    xaxis = list(title = "Median Household Income"),
    yaxis = list(title = "Home Ownership Rate (%)"),
    legend = list(title = list(text = "County"))
  )

Scatterplot