You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

107 lines
3.3 KiB

library(sf)
library(grid)
library(gtable)
library(ggimage)
library(tigris)
library(hrbrthemes)
library(tidyverse)
loons_sf <- readRDS(here::here("data/loons-sf.rds"))
st_read(here::here("data/me-counties.json")) %>%
st_set_crs(4326) %>%
st_transform("+proj=longlat +datum=WGS84 +no_defs") %>%
left_join(
st_intersection(loons_sf, .) %>%
count(NAME, wt=total) %>%
as_tibble() %>%
select(NAME, n)
) %>%
mutate(
col = ifelse(NAME == "Kennebec", "white", "black")
) -> maine
border <- st_union(maine)
ggplot() +
geom_sf(data = border, color = "black", fill = NA, size = 0.5) +
geom_sf(data = maine, color = "#5c5c5c", aes(fill = n), size = 0.125, linetype = "dotted") +
geom_sf_label(
data = maine, aes(label = NAME, color = I(col)), fill = NA,
family = font_es_light, size = 4, lineheight = 0.875,
label.padding = unit(0.05, "lines"), label.size = 0,
) +
geom_sf(
data = loons_sf, aes(size = total), show.legend = "point",
shape = 21, fill = alpha("#670409", 2/3), color = "white", stroke = 0.5
) +
scale_fill_distiller(palette = "YlGn", direction = 1) +
scale_size_area() +
coord_sf(crs=albersusa::us_laea_proj, datum=NA) +
guides(
size = guide_legend(direction = "vertical"),
fill = guide_colourbar(
direction = "horizontal",
title.position = "top"
)
) +
labs(
x = NULL, y = NULL,
size = "2018 Audubon\nLoon Count",
fill = "County Loon Count",
title = "Maine Loon Population Counts (2018)",
caption = "Data source: Maine Audubon Society <www.maineaudubon.org/news/results-of-the-2018-loon-count>\nhttps://git.rud.is/hrbrmstr/y2019-30daymapchallenge • #30DayMapChallenge"
) +
theme_ipsum_es(grid="") +
theme(plot.title = element_text(hjust = 0.5)) -> gg
legends <- gtable_filter(ggplot_gtable(ggplot_build(gg)), "guide-box")
ggplot() +
geom_sf(data = border, color = "black", fill = NA, size = 0.5) +
geom_sf(data = maine, color = "#5c5c5c", aes(fill = n), size = 0.125, linetype = "dotted") +
geom_image(
data = data.frame(),
aes(x = -69.25, y = 46.95, image = here::here("data/loon.png")),
size = 0.1
) +
geom_sf_label(
data = maine, aes(label = NAME, color = I(col)), fill = NA,
family = font_es_light, size = 4, lineheight = 0.875,
label.padding = unit(0.05, "lines"), label.size = 0,
) +
geom_sf(
data = loons_sf, aes(size = total), show.legend = "point",
shape = 21, fill = alpha("#670409", 2/3), color = "white", stroke = 0.5
) +
annotation_custom( # loons/size
legends$grobs[[1]]$grobs[[1]],
xmin = -67, xmax = -66.8854, ymin = 46, ymax = 47
) +
annotation_custom( # county/fill
legends$grobs[[1]]$grobs[[2]],
xmin = -71, xmax = -65.8854, ymin = 42, ymax = 45
) +
scale_fill_distiller(palette = "YlGn", direction = 1) +
scale_size_area() +
coord_sf(crs=albersusa::us_longlat_proj, datum=NA) +
labs(
x = NULL, y = NULL,
size = "2018 Audubon Loon Count",
fill = "County Loon Count",
title = "Maine Loon Population Counts (2018)",
caption = "Data source: Maine Audubon Society <www.maineaudubon.org/news/results-of-the-2018-loon-count>\nhttps://git.rud.is/hrbrmstr/y2019-30daymapchallenge • #30DayMapChallenge"
) +
theme_ipsum_es(grid="") +
theme(legend.position = "none") +
theme(plot.title = element_text(hjust = 0.5))