id | Geography | Nobs | html |
---|---|---|---|
City_MedianValuePerSqft_AllHomes | City | 8049470 | html |
City_PriceToRentRatio_AllHomes | City | 2347688 | html |
County_MedianRentalPrice_AllHomes | County | 54654 | html |
County_MedianRentalPricePerSqft_AllHomes | County | 56716 | html |
County_MedianValuePerSqft_AllHomes | County | 589123 | html |
County_PriceToRentRatio_AllHomes | County | 240760 | html |
Metro_MedianRentalPrice_AllHomes | Metro | 50760 | html |
Metro_ZORI_AllHomesPlusMultifamily_SSA | Metro | 8766 | html |
Zip_ZORI_AllHomesPlusMultifamily_SSA | Zip | 254960 | html |
All Homes: Zillow defines all homes as single-family, condominium and co-operative homes with a county record. Unless specified, all series cover this segment of the housing stock.
Condo/Co-op: Condominium and co-operative homes.
Multifamily 2+ units: Units in buildings with 5 or more housing units, that are not condominiums or co-ops.
Duplex/Triplex: Housing units in buildings with 2 or 3 housing units.
For-Sale Inventory: The count of unique listings that were active at any time in a given month.
Newly Pending Listings: The count of listings that changed from for-sale to pending status on Zillow.com in a given time period.
Days to Pending: How long it takes homes in a region to change to pending status on Zillow.com after first being shown as for sale. The reported figure indicates the number of days (mean or median) that it took for homes that went pending during the week being reported, to go pending. This differs from the old “Days on Zillow” metric in that it excludes the in-contract period before a home sells.
Median List Price: The median price at which homes across various geographies were listed.
Median Sale Price: The median price at which homes across various geographies were sold.
Share of Listings With a Price Cut: The number of unique properties with a list price at the end of the month that’s less than the list price at the beginning of the month, divided by the number of unique properties with an active listing at some point during the month.
Price Cuts: The mean and median price cut for listings in a given region during a given time period, expressed as both dollars ($) and as a percentage (%) of list price.
dataraw_county_long %>%
filter(variable == "UNR", date == as.Date("2007-10-01")) %>%
select(county_code, value) %>%
mutate(value = value/100) %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = "county_code") %>%
right_join(map_county, by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(labels = scales::percent_format(accuracy = 1),
na.value = "white",
breaks = c(0, 0.05, 0.10, 0.15, 0.20),
values = c(0, 0.1, 0.2, 0.3, 1)) +
theme_void() +
theme(legend.position = c(0.9, 0.2)) + labs(fill = "Unemp.\nRate")
mme_percap_county %>%
select(county_code = fips, value) %>%
filter(value <= 500) %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = "county_code") %>%
right_join(map_county, by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(labels = scales::dollar_format(accuracy = 1, prefix = ""),
na.value = "white",
breaks = c(-100, 0, 100, 200, 300, 400, 500),
values = c(0, 0.1, 0.2, 0.3, 1)) +
theme_void() +
theme(legend.position = c(0.9, 0.2)) + labs(fill = "Opioid\nConsumption")
dataraw_county_long %>%
filter(variable == "UNR", date == as.Date("2007-10-01")) %>%
select(county_code, value) %>%
mutate(value = value/100) %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = "county_code") %>%
right_join(map_county %>%
filter(region == "california"),
by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(labels = scales::percent_format(accuracy = 1),
na.value = "white",
breaks = c(0, 0.05, 0.10, 0.15, 0.20),
values = c(0, 0.1, 0.2, 0.3, 1)) +
theme_void() +
theme(legend.position = c(0.8, 0.8)) +
labs(fill = "Unemp.\nRate") + coord_fixed(ratio = 1)
dataraw_county_long %>%
filter(variable == "HOUSE_zillow_sqfeet", date == as.Date("2007-10-01")) %>%
select(county_code, value) %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = "county_code") %>%
right_join(map_county %>%
filter(region == "california"),
by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(labels = scales::dollar_format(accuracy = 1),
na.value = "white",
breaks = c(0, 200, 300, 400, 500, 600),
values = c(0, 0.2, 0.4, 0.6, 0.8, 1)) +
theme_void() +
theme(legend.position = c(0.8, 0.8)) +
labs(fill = "Price Per\nSq Feet") + coord_fixed(ratio = 1)
The list of maps data is: https://code.highcharts.com/mapdata/
dataraw_county_long %>%
filter(variable == "UNR", date == as.Date("2007-10-01")) %>%
select(county_code, value) %>%
mutate(county_code = str_pad(county_code, 5, pad = "0")) %>%
hcmap("countries/us/us-all-all", data = .,
name = "Unemployment", value = "value", joinBy = c("fips", "county_code"),
borderColor = "transparent", valueSuffix = "%") %>%
hc_colorAxis(dataClasses = color_classes(c(seq(0, 10, by = 2), 50))) %>%
hc_legend(layout = "vertical", align = "right",
floating = TRUE, valueDecimals = 0, valueSuffix = "%") %>%
hc_mapNavigation(enabled = TRUE)
dataraw_county_long %>%
filter(variable == "UNR", date == as.Date("2007-10-01")) %>%
select(county_code, value) %>%
mutate(county_code = str_pad(county_code, 5, pad = "0")) %>%
hcmap("countries/us/us-ca-all", data = .,
name = "Unemployment", value = "value", joinBy = c("fips", "county_code"),
borderColor = "transparent") %>%
hc_colorAxis(dataClasses = color_classes(c(seq(0, 10, by = 2), 50))) %>%
hc_legend(layout = "vertical", align = "right",
floating = TRUE, valueDecimals = 0, valueSuffix = "%")
cities <- data.frame(
name = c("London", "Birmingham", "Glasgow", "Liverpool"),
lat = c(51.507222, 52.483056, 55.858, 53.4),
lon = c(-0.1275, -1.893611, -4.259, -3),
z = c(1, 2, 3, 2)
)
hcmap("countries/gb/gb-all", showInLegend = FALSE) %>%
hc_add_series(data = cities, type = "mapbubble", name = "Cities", maxSize = '10%') %>%
hc_mapNavigation(enabled = TRUE)
cbsa_nodate %>%
select(cbsa_code, value = elasticity) %>%
left_join(county_to_cbsa %>%
select(county_code, cbsa_code),
by = "cbsa_code") %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = c("county_code")) %>%
right_join(map_county,
by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(na.value = "white",
labels = scales::dollar_format(accuracy = 1, prefix = "")) +
theme_void() +
theme(legend.position = c(0.9, 0.2)) +
labs(fill = "CBSA\nElasticity")
cbsa_nodate %>%
select(cbsa_code, value = elasticity) %>%
left_join(county_to_cbsa %>%
select(county_code, cbsa_code),
by = "cbsa_code") %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = c("county_code")) %>%
right_join(map_county %>%
filter(region == "florida"),
by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(na.value = "white",
labels = scales::dollar_format(accuracy = 0.1, prefix = "")) +
theme_void() +
theme(legend.position = c(0.2, 0.4)) +
labs(fill = "CBSA\nElasticity") +
coord_fixed(ratio = 1)
cbsa_nodate %>%
select(cbsa_code, value = elasticity) %>%
left_join(county_to_cbsa %>%
select(county_code, cbsa_code),
by = "cbsa_code") %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = c("county_code")) %>%
right_join(map_county %>%
filter(region == "california"),
by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(na.value = "white",
labels = scales::dollar_format(accuracy = 0.1, prefix = "")) +
theme_void() +
theme(legend.position = c(0.05, 0.25)) +
labs(fill = "CBSA\nElasticity") +
coord_fixed(ratio = 1)
cbsa %>%
filter(date == as.Date("2017-01-01")) %>%
mutate(rent_share = median_rent*12/medincome) %>%
select(cbsa_code, value = rent_share) %>%
left_join(county_to_cbsa %>%
select(county_code, cbsa_code),
by = "cbsa_code") %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = c("county_code")) %>%
right_join(map_county %>%
filter(region == "florida"),
by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(na.value = "white",
labels = scales::percent_format(accuracy = 1, prefix = "")) +
theme_void() +
theme(legend.position = c(0.2, 0.4)) +
labs(fill = "Rent\nShare") +
coord_fixed(ratio = 1)
cbsa %>%
filter(date == as.Date("2015-01-01")) %>%
mutate(rent_share = median_gross_rent*12/medincome) %>%
select(cbsa_code, value = rent_share) %>%
left_join(county_to_cbsa %>%
select(county_code, cbsa_code),
by = "cbsa_code") %>%
left_join(county_code_name %>%
select(county_code, subregion = county_name3, region = state_name3),
by = c("county_code")) %>%
right_join(map_county %>%
filter(region == "california"),
by = c("region", "subregion")) %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(na.value = "white",
labels = scales::percent_format(accuracy = 1, prefix = "")) +
theme_void() +
theme(legend.position = c(0.05, 0.4)) +
labs(fill = "Rent\nShare") +
coord_fixed(ratio = 1)
cbsa_nodate %>%
left_join(county_to_cbsa %>%
select(county_code, cbsa_code),
by = "cbsa_code") %>%
select(county_code, value = elasticity) %>%
mutate(county_code = str_pad(county_code, 5, pad = "0"),
value = value %>% round(digits = 1)) %>%
hcmap("countries/us/us-all-all", data = .,
name = "Elasticity", value = "value", joinBy = c("fips", "county_code"),
borderColor = "transparent") %>%
hc_colorAxis(dataClasses = color_classes(c(seq(0, 10, by = 1), 15))) %>%
hc_legend(layout = "vertical", align = "right",
floating = TRUE, valueDecimals = 0) %>%
hc_mapNavigation(enabled = TRUE)
us <- map_data("state")
load_data("maps/map_state.RData")
ggplot() +
geom_map(data = sh_top10_state_fig2b %>%
left_join(fips_statenames_xwalk_short, by = "state") %>%
mutate(mean_s_stateig10 = mean_s_stateig10 /100),
map = map_state,
aes(fill = mean_s_stateig10, map_id = region),
color = "white", size = 0.15) +
geom_map(data = map_state, map = map_state,
aes(long, lat, map_id = region),
color = "#2b2b2b", fill = NA, size = 0.20) +
scale_fill_viridis(name = "Top 10% \nShare",
labels = percent_format(accuracy = 1),
values = c(0, 0.2, 0.4, 0.5, 1)) +
theme_map() +
theme(legend.position = c(0.87, 0.1))
sh_top10_state_fig2b %>%
left_join(fips_statenames_xwalk_short, by = "state") %>%
mutate(value = mean_s_stateig10 /100) %>%
right_join(map_state, by = "region") %>%
ggplot(aes(long, lat, group = group)) +
geom_polygon(aes(fill = value), colour = alpha("black", 1/2), size = 0.2) +
scale_fill_viridis_c(labels = scales::percent_format(accuracy = 1),
breaks = c(0.05, 0.08, 0.10, 0.12, 0.15),
values = c(0, 0.2, 0.4, 0.5, 1)) +
theme_void() +
theme(legend.position = c(0.9, 0.2)) + labs(fill = "Top 10%\nShare")
ggplot() +
geom_map(data = df_state_demographics, map = map_state,
aes(fill = per_capita_income, map_id = region),
color = "white", size = 0.15) +
geom_map(data = map_state, map = map_state,
aes(long, lat, map_id = region),
color = "#2b2b2b", fill = NA, size = 0.20) +
scale_fill_viridis(name = "Per Capita \nIncome",
labels = dollar_format(accuracy = 1),
values = c(0, 0.2, 0.3, 0.4, 1)) +
theme_map() + theme(legend.position = c(0.87, 0.1))
ggplot() +
geom_map(data = df_state_demographics, map = map_state,
aes(fill = median_rent, map_id = region),
color = "white", size = 0.15) +
geom_map(data = map_state, map = map_state,
aes(long, lat, map_id = region),
color = "#2b2b2b", fill = NA, size = 0.20) +
scale_fill_viridis(name = "Median Rent",
labels = dollar_format(accuracy = 1),
values = c(0, 0.2, 0.3, 0.4, 1)) +
theme_map() + theme(legend.position = c(0.87, 0.1))
ggplot() +
geom_map(data = df_state_demographics, map = map_state,
aes(fill = median_age, map_id = region),
color = "white", size = 0.15) +
geom_map(data = map_state, map = map_state,
aes(long, lat, map_id = region),
color = "#2b2b2b", fill = NA, size = 0.20) +
scale_fill_viridis(name = "Median Age",
labels = comma,
values = c(0, 0.2, 0.3, 0.5, 0.7, 1)) +
theme_map() + theme(legend.position = c(0.87, 0.1))
df_county_demographics %>%
left_join(county.regions, by = "region") %>%
rename(fips = region, subregion = county.name) %>%
left_join(us, by = "subregion") %>%
ggplot(., aes(x = long, y = lat, group = group, fill = per_capita_income)) +
geom_polygon() + coord_map() +
theme_map() +
geom_map(data = map_state, map = map_state,
aes(long, lat, map_id = region),
color = "#2b2b2b", fill = NA, size = 0.20) +
scale_fill_viridis(name = "Per Capita \nIncome",
labels = dollar_format(accuracy = 1),
values = c(0, 0.2, 0.3, 0.4, 1)) +
theme(legend.position = c(0.87, 0.1))
df_county_demographics %>%
left_join(county.regions, by = "region") %>%
rename(fips = region, subregion = county.name) %>%
left_join(us, by = "subregion") %>%
ggplot(., aes(x = long, y = lat, group = group, fill = median_rent)) +
geom_polygon() + coord_map() +
theme_map() +
geom_map(data = map_state, map = map_state,
aes(long, lat, map_id = region),
color = "#2b2b2b", fill = NA, size = 0.20) +
scale_fill_viridis(name = "Monthly Rent",
labels = scales::dollar,
breaks = c(200, 400, 800, 1200, 1600),
values = c(0, 0.2, 0.4, 0.5, 1)) +
theme(legend.position = c(0.87, 0.1))
df_county_demographics %>%
left_join(county.regions, by = "region") %>%
rename(fips = region, subregion = county.name) %>%
left_join(us, by = "subregion") %>%
ggplot(., aes(x = long, y = lat, group = group, fill = median_age)) +
geom_polygon() + coord_map() +
theme_map() +
geom_map(data = map_state, map = map_state,
aes(long, lat, map_id = region),
color = "#2b2b2b", fill = NA, size = 0.20) +
scale_fill_viridis(name = "Median Age",
labels = comma,
values = c(0, 0.2, 0.3, 0.5, 0.7, 1)) +
theme(legend.position = c(0.87, 0.1))