From de77d0cdbf529f7c06c4299ff8f98352d076f7b6 Mon Sep 17 00:00:00 2001
From: elmeraa <eazadpour@usgs.gov>
Date: Wed, 24 Jan 2024 11:53:58 -0800
Subject: [PATCH] add viz targets/fxns

---
 3_visualize.R                | 149 ++++++++++++++++++++++++++++++++++-
 3_visualize/src/plot_utils.R |  45 +++++++++++
 2 files changed, 192 insertions(+), 2 deletions(-)
 create mode 100644 3_visualize/src/plot_utils.R

diff --git a/3_visualize.R b/3_visualize.R
index 6a4f6c4..401d42c 100644
--- a/3_visualize.R
+++ b/3_visualize.R
@@ -1,6 +1,151 @@
-# source('1_fetch/src/file_utils.R')
-# source('3_visualize/src/plot_utils.R')
+source('3_visualize/src/plot_utils.R')
 
 p3_targets <- list(
+  tar_target(
+    p3_med_income_png,
+    plot_census_map(
+      census_data = p2_med_income_sf,
+      var = 'estimate', 
+      conus_sf = p1_conus_sf, 
+      outfile_path = "3_visualize/out/med_income_census_2022.png",
+      pal = "OrRd",
+      leg_title = "Median household income\n2022",
+      width = 6,
+      height = 4,
+      dpi = 300, 
+      counties_outline_col = "grey80",
+      conus_outline_col = 'grey50',
+      bg_col = "white",
+      load_font = 'Source Sans Pro',
+      font_size = 10
+    ),
+    format = "file"
+  ),
   
+  tar_target(
+    p3_tot_black_png,
+    plot_census_map(
+      census_data = p2_tot_black_sf,
+      var = 'estimate',
+      conus_sf = p1_conus_sf, 
+      outfile_path = "3_visualize/out/tot_black_census_2022.png",
+      pal = "OrRd",
+      leg_title = "Total Black\n2022",
+      width = 6,
+      height = 4,
+      dpi = 300, 
+      counties_outline_col = "grey80",
+      conus_outline_col = 'grey50',
+      bg_col = "white",
+      load_font = 'Source Sans Pro',
+      font_size = 10
+    ),
+    format = "file"
+  ),
+  
+  
+  tar_target(
+    p3_perc_black_png,
+    plot_census_map(
+      census_data = p2_perc_black_sf,
+      var = 'percent',
+      conus_sf = p1_conus_sf, 
+      outfile_path = "3_visualize/out/perc_black_census_2022.png",
+      pal = "OrRd",
+      leg_title = "Percent Black\n2022",
+      width = 6,
+      height = 4,
+      dpi = 300, 
+      counties_outline_col = "grey80",
+      conus_outline_col = 'grey50',
+      bg_col = "white",
+      load_font = 'Source Sans Pro',
+      font_size = 10
+    ),
+    format = "file"
+  ),
+  
+  tar_target(
+    p3_tot_latino_png,
+    plot_census_map(
+      census_data = p2_tot_latino_sf,
+      var = 'estimate',
+      conus_sf = p1_conus_sf, 
+      outfile_path = "3_visualize/out/tot_latino_census_2022.png",
+      pal = "OrRd",
+      leg_title =  "Total Latino\n2022",
+      width = 6,
+      height = 4,
+      dpi = 300, 
+      counties_outline_col = "grey80",
+      conus_outline_col = 'grey50',
+      bg_col = "white",
+      load_font = 'Source Sans Pro',
+      font_size = 10
+    ),
+    format = "file"
+  ),
+  
+  tar_target(
+    p3_perc_latino_png,
+    plot_census_map(
+      census_data = p2_perc_latino_sf,
+      var = 'percent',
+      conus_sf = p1_conus_sf, 
+      outfile_path = "3_visualize/out/perc_latino_census_2022.png",
+      pal = "OrRd",
+      leg_title = "Percent Latino\n2022",
+      width = 6,
+      height = 4,
+      dpi = 300, 
+      counties_outline_col = "grey80",
+      conus_outline_col = 'grey50',
+      bg_col = "white",
+      load_font = 'Source Sans Pro',
+      font_size = 10
+    ),
+    format = "file"
+  ),
+  
+  tar_target(
+    p3_tot_male_png,
+    plot_census_map(
+      census_data = p2_tot_male_sf,
+      var = 'estimate',
+      conus_sf = p1_conus_sf, 
+      outfile_path = "3_visualize/out/tot_male_census_2022.png",
+      pal = "OrRd",
+      leg_title =  "Total Male\n2022",
+      width = 6,
+      height = 4,
+      dpi = 300, 
+      counties_outline_col = "grey80",
+      conus_outline_col = 'grey50',
+      bg_col = "white",
+      load_font = 'Source Sans Pro',
+      font_size = 10
+    ),
+    format = "file"
+  ),
+  
+  tar_target(
+    p3_tot_female_png,
+    plot_census_map(
+      census_data = p2_tot_female_sf,
+      var = 'estimate', 
+      conus_sf = p1_conus_sf, 
+      outfile_path = "3_visualize/out/tot_female_census_2022.png",
+      pal = "OrRd",
+      leg_title =  "Total Female\n2022",
+      width = 6,
+      height = 4,
+      dpi = 300, 
+      counties_outline_col = "grey80",
+      conus_outline_col = 'grey50',
+      bg_col = "white",
+      load_font = 'Source Sans Pro',
+      font_size = 10
+    ),
+    format = "file"
+  )
 )
\ No newline at end of file
diff --git a/3_visualize/src/plot_utils.R b/3_visualize/src/plot_utils.R
new file mode 100644
index 0000000..89e1440
--- /dev/null
+++ b/3_visualize/src/plot_utils.R
@@ -0,0 +1,45 @@
+# Map census data 
+#'
+#' @param census_data, dataframe of census data for specified variable of interest 
+#' @param conus_sf, sf of conus states outline
+#' @param pal, assign map palette 
+#' @param leg_title, character string for legend title
+#' @param outfile_path, outfile path for pngs 
+#' @param width, set png width
+#' @param height, set png height 
+#' @param dpi, set png dots per inches 
+#' @param counties_outline_col, assign color to counties outline
+#' @param conus_outline_col, assign color to conus outline
+#' @param bg_col, assign background color for maps
+#' @param load_font, assign font name
+plot_census_map <- function(census_data, conus_sf, pal, leg_title, outfile_path, width, height, dpi, 
+                            counties_outline_col, conus_outline_col, bg_col, load_font, font_size, var){
+  
+  font_legend <- load_font
+  font_add_google(font_legend)
+  showtext_opts(dpi = 300, regular.wt = 200, bold.wt = 700)
+  showtext_auto(enable = TRUE)
+
+  census_map <- census_data |> 
+    ggplot(aes(fill = .data[[var]])) + 
+    geom_sf(color = counties_outline_col,
+            linewidth = 0.05) +
+    geom_sf(data = conus_sf,
+            fill = NA,
+            color = conus_outline_col,
+            linewidth = 0.2,
+            linetype = "solid") + 
+    theme_void() +
+    scale_fill_distiller(
+      palette = pal, 
+      direction = 1,
+      name = leg_title,
+      limits = c(0, max(census_data[[var]], na.rm = TRUE)),
+      labels = scales::comma) +
+    theme(text = element_text(family = font_legend, size = font_size),
+          legend.margin = margin(r = 10))
+  
+  ggsave(outfile_path, census_map, width = width, height = height, dpi = dpi, bg = bg_col)
+  
+  return(outfile_path)
+}
-- 
GitLab