From 1d18ada8b8b1d970bbd54dbf4df07502e1d57fb7 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Tue, 24 Sep 2024 23:43:25 -0400 Subject: [PATCH 01/18] Create reusable citation details block --- R/utils.R | 14 ++++++++++++++ man/setd-citation.Rd | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 man/setd-citation.Rd diff --git a/R/utils.R b/R/utils.R index 96811f6..e62f1f1 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,3 +1,17 @@ +#' Citation for Spatial Equity Data Tool API Data +#' +#' @name setd-citation +#' @details +#' Please use the following citation for data obtained from the API: +#' +#' Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and +#' Graham MacDonald. 2024. “Spatial Equity Data Tool API” (Version +#' `r utils::packageVersion("sedtR")`). Washington, DC: Urban Institute. +#' . Data originally sourced +#' from various sources, analyzed at the Urban Institute and made available +#' under the ODC Attribution License. +NULL + #' Get API Response #' #' Calls call_upload_user_files() for a given file path, lat col, diff --git a/man/setd-citation.Rd b/man/setd-citation.Rd new file mode 100644 index 0000000..11237fd --- /dev/null +++ b/man/setd-citation.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils.R +\name{setd-citation} +\alias{setd-citation} +\title{Citation for Spatial Equity Data Tool API Data} +\description{ +Citation for Spatial Equity Data Tool API Data +} +\details{ +Please use the following citation for data obtained from the API: + +Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and +Graham MacDonald. 2024. “Spatial Equity Data Tool API” (Version +0.0.0.4000). Washington, DC: Urban Institute. +\url{https://ui-research.github.io/sedt_documentation/}. Data originally sourced +from various sources, analyzed at the Urban Institute and made available +under the ODC Attribution License. +} From 05ec4e53bbff86469f558a14cf4ad5b06b7165e7 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Tue, 24 Sep 2024 23:44:31 -0400 Subject: [PATCH 02/18] Create package docs --- R/sedtR-package.R | 6 ++++++ man/sedtR-package.Rd | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 R/sedtR-package.R create mode 100644 man/sedtR-package.Rd diff --git a/R/sedtR-package.R b/R/sedtR-package.R new file mode 100644 index 0000000..a65cf64 --- /dev/null +++ b/R/sedtR-package.R @@ -0,0 +1,6 @@ +#' @keywords internal +"_PACKAGE" + +## usethis namespace: start +## usethis namespace: end +NULL diff --git a/man/sedtR-package.Rd b/man/sedtR-package.Rd new file mode 100644 index 0000000..4b13bac --- /dev/null +++ b/man/sedtR-package.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/sedtR-package.R +\docType{package} +\name{sedtR-package} +\alias{sedtR} +\alias{sedtR-package} +\title{sedtR: sedtR allows programmers to call the Urban Institute's Spatial Equity Data Tool API} +\description{ +The Urban Institute has developed the Spatial Equity Data Tool to analyze the equitability of resources across cities, counties, states, and the entirety of the United States. This package allows users to call the Spatial Equity Data Tool API programmatically using R code. +} +\author{ +\strong{Maintainer}: Gabriel Morrison \email{gmorrison@urban.org} (\href{https://orcid.org/0009-0008-1815-5920}{ORCID}) + +Authors: +\itemize{ + \item Alena Stern \email{astern@urban.org} (\href{https://orcid.org/0009-0002-7171-8207}{ORCID}) +} + +Other contributors: +\itemize{ + \item Eli Pousson \email{eli.pousson@gmail.com} (\href{https://orcid.org/0000-0001-8280-1706}{ORCID}) [contributor] +} + +} +\keyword{internal} From e27851a0b5e47571ed41430c96300c6077556ebb Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Wed, 25 Sep 2024 00:02:17 -0400 Subject: [PATCH 03/18] Import rlang package --- NAMESPACE | 1 + R/sedtR-package.R | 1 + 2 files changed, 2 insertions(+) diff --git a/NAMESPACE b/NAMESPACE index e83ee51..3e6756f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -8,3 +8,4 @@ export(create_map) export(get_output_data) export(get_status) export(is_valid_col_type) +import(rlang) diff --git a/R/sedtR-package.R b/R/sedtR-package.R index a65cf64..d248733 100644 --- a/R/sedtR-package.R +++ b/R/sedtR-package.R @@ -2,5 +2,6 @@ "_PACKAGE" ## usethis namespace: start +#' @import rlang ## usethis namespace: end NULL From 71ed343d5a893a3a851eec01e4ba627262210f10 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Wed, 25 Sep 2024 00:05:23 -0400 Subject: [PATCH 04/18] Split up create_demo_chart internals Create new supporting functions: - filter_baseline_group - fmt_pos_diff - fmt_census_var_short - plot_demo_lollipop plot_demo_lollipop is also supported by: - annotation_demo_lollipop - demo_text_label - theme_demo_lollipop - scale_color_demo_pos_diff Also inherit citation details --- R/create_demo_chart.R | 484 ++++++++++++++++++++++++--------------- man/create_demo_chart.Rd | 16 +- 2 files changed, 307 insertions(+), 193 deletions(-) diff --git a/R/create_demo_chart.R b/R/create_demo_chart.R index 6746b2d..d892f45 100644 --- a/R/create_demo_chart.R +++ b/R/create_demo_chart.R @@ -9,203 +9,315 @@ #' @param file_path (character) - Default set to "dem_disparity_chart.png". #' A file path of where to save the file. This should include a data type #' suffix. EX: "results/visuals/dem_disparity_chart.png" +#' @inherit setd-citation details #' @return plot (ggplot object) - The ggplot object that was created. #' @export -#' @details -#' Please use the following citation for data obtained from the API, -#' replacing the version number with the current version: -#' -#' Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and Graham MacDonald. 2024. -#' “Spatial Equity Data Tool API” (Version X.x.x). Washington, DC: Urban Institute. -#' https://ui-research.github.io/sedt_documentation/. Data originally sourced from various sources, -#' analyzed at the Urban Institute and made available under the ODC Attribution License. - -create_demo_chart <- function(demo_df, - group = "total", - save_chart = FALSE, - file_path = "dem_disparity_chart.png") { - - rlang::check_installed( - c("forcats", "janitor", "scales", "ggplot2", "dplyr", "urbnthemes"), +create_demo_chart <- function( + demo_df, + group = "total", + save_chart = FALSE, + file_path = "dem_disparity_chart.png", + ggsave_args = list( + width = 11, + height = 8.5, + units = "in" + )) { + check_installed( + c("forcats", "janitor", "scales", "ggplot2", "dplyr"), reason = "to use the `create_demo_chart()` function." - ) + ) - #Data is correct class: + # Data is correct class: stopifnot("data.frame" %in% class(demo_df)) stopifnot(is.logical(save_chart)) stopifnot(is.character(file_path)) stopifnot(is.character(group)) - #Other checks: - stopifnot(group %in% c("total", "poverty", "under18")) #group is one of provided options - stopifnot(TRUE %in% endsWith(file_path, - c("eps", "ps", "tex", "pdf", "jpeg", - "tiff", "png", "bmp", "svg", "wmf")) - ) #file path is allowed by ggsave - - tryCatch( - #TRY: - { - #Handle filtering to one of the baseline groups - if(group == "total") { - df <- demo_df |> - dplyr::filter(!(stringr::str_detect(census_var, "pct_pov"))) |> - dplyr::filter(!(stringr::str_detect(census_var, "pct_under18"))) - }else if(group == "poverty"){ - df <- demo_df |> - dplyr::filter(stringr::str_detect(census_var, "pct_pov")) - }else{ - df <- demo_df |> - dplyr::filter(stringr::str_detect(census_var, "pct_under18")) - } - - #Convert from percent (ex 10.5%) to decimal (ex: .105) - df <- dplyr::mutate(df, diff_data_city = diff_data_city / 100) - - - #Edit string names: - df <- df |> - dplyr::mutate(census_var = janitor::make_clean_names(census_var, case = "title"), - census_var = stringr::str_replace_all(census_var, "Pct", "Pct."), - census_var = stringr::str_replace_all(census_var, "under18", "Under 18"), - census_var = stringr::str_replace_all(census_var,"Unins", "Uninsured"), - census_var = stringr::str_replace_all(census_var, "Hisp", "Hispanic"), - census_var = stringr::str_replace_all(census_var, "under", "Under"), - census_var = stringr::str_replace_all(census_var, "Unemp$", "Unemployed"), - census_var = stringr::str_replace_all(census_var, "Cb", "Cost-Burdened"), - census_var = stringr::str_replace_all(census_var, "Hh", "Household"), - census_var = stringr::str_replace_all(census_var, "Bach", "Bachelors"), - census_var = stringr::str_replace_all(census_var, "Pov ", "Poverty ") - ) - - # We get max value before filtering bc the limits of all 3 baseline_pops - # should be equal for comparability - max_val = max(abs(df$diff_data_city)) * 1.1 - - df_plot <- df |> - dplyr::mutate( - pos_diff = dplyr::case_when( - diff_data_city > 0 & sig_diff ~ "positive", - diff_data_city < 0 & sig_diff ~ "negative", - TRUE ~ "not_stat_sig" + # Other checks: + stopifnot(TRUE %in% endsWith( + file_path, + c( + "eps", "ps", "tex", "pdf", "jpeg", + "tiff", "png", "bmp", "svg", "wmf" + ) + )) # file path is allowed by ggsave + + df <- filter_baseline_group( + demo_df, + group = group + ) + + # Convert from percent (ex 10.5%) to decimal (ex: .105) + df <- dplyr::mutate(df, diff_data_city = diff_data_city / 100) + + df <- fmt_pos_diff(df) + + # Edit string names + df <- fmt_census_var_short(df) + + # We get max value before filtering bc the limits of all 3 baseline_pops + # should be equal for comparability + max_val <- max(abs(df$diff_data_city)) * 1.1 + + demo_lollipop_plot <- plot_demo_lollipop( + data = df, + max_val = max_val + ) + + if (save_chart) { + ggplot2::ggsave( + filename = file_path, + plot = demo_lollipop_plot, + !!!ggsave_args + ) + } + + return(demo_lollipop_plot) +} + +#' Create geom for demographic lollipop plot +#' @noRd +plot_demo_lollipop <- function(data, + max_val, + ..., + labelled = TRUE) { + lollipop_plot <- ggplot2::ggplot( + data = data, + mapping = ggplot2::aes(y = census_var, x = diff_data_city) + ) + + lollipop_plot_labels <- list() + + if (labelled) { + lollipop_plot_labels <- list( + # Put text to left/right of 0 line to match equity tool + ggplot2::geom_text( + data = dplyr::filter(data, diff_data_city >= 0), + ggplot2::aes(x = 0, y = census_var, label = census_var), + nudge_x = -(max_val * 0.01), + hjust = "right", + size = 4 + ), + ggplot2::geom_text( + data = dplyr::filter(data, diff_data_city < 0), + ggplot2::aes(x = 0, y = census_var, label = census_var), + nudge_x = max_val * 0.01, + hjust = "left", + size = 4 + ) + ) + } + + lollipop_plot + + c( + list( + ggplot2::geom_vline( + xintercept = 0, + color = "#353535" + ), + ggplot2::geom_segment( + ggplot2::aes( + x = 0, + xend = diff_data_city, + y = census_var, + yend = census_var ), - census_var = forcats::fct_reorder(census_var, diff_data_city)) |> - dplyr::arrange(dplyr::desc(diff_data_city)) - - - last_var = df_plot |> - dplyr::arrange(dplyr::desc(diff_data_city)) |> - utils::tail(1) |> - dplyr::pull(census_var) |> - as.character() - first_var = df_plot |> - dplyr::arrange(dplyr::desc(diff_data_city)) |> - utils::head(1) |> - dplyr::pull(census_var) |> - as.character() - - # Generate under/overrep labels to use in annotation_custom. This is the only - # way we can set x and y relatively to full plot window instead of actual - # axis numbers which vary with the data - underrep_label = grid::textGrob(label = "Underrepresented", x = .02, y = 0.02, - just = c("left", "top"), - rot = 90, - gp=grid::gpar(fontface = "bold", - col = "#ca5800", - fontsize = 18, - alpha = .75 - )) - - overrep_label = grid::textGrob(label = "Overrepresented", x = .96, y = 0.98, - just = c("right", "top"), - rot = 90, - gp=grid::gpar(fontface = "bold", - col = "#1696d2", - fontsize = 18, - alpha = 0.75)) - - - - plot <- - df_plot |> - ggplot2::ggplot(ggplot2::aes(y = census_var, x = diff_data_city)) + - ggplot2::geom_vline(xintercept = 0, - color = "#353535" - ) + - ggplot2::geom_segment(ggplot2::aes(x = 0, - xend = diff_data_city, - y = census_var, - yend = census_var), - color = "#9d9d9d" - ) + - ggplot2:: geom_point(ggplot2::aes(color = pos_diff), - size = 3) + - # Put text to left/right of 0 line to match equity tool - ggplot2::geom_text(data = df_plot |> - dplyr::filter(diff_data_city >= 0), - ggplot2::aes(x = 0, y = census_var, label = census_var), - nudge_x = -(max_val * 0.01), - hjust = "right", - size = 4) + - ggplot2::geom_text(data = df_plot |> - dplyr::filter(diff_data_city < 0), - ggplot2::aes(x = 0, y = census_var, label = census_var), - nudge_x = max_val * 0.01, - hjust = "left", - size = 4) + - ggplot2::annotation_custom(underrep_label, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) + - ggplot2::annotation_custom(overrep_label, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) + - # ggplot2::scale_color_manual(values = c('positive' = urbnthemes::palette_urbn_diverging[1], - # 'negative' = urbnthemes::palette_urbn_diverging[7])) + - ggplot2::scale_x_continuous(position = "top", - limits = c(-max_val, max_val), - labels = scales::percent) + - ggplot2::labs(y = "", x = "") + - ggplot2::theme(panel.grid.major = ggplot2::element_blank(), - panel.grid.minor = ggplot2::element_blank(), - axis.ticks.y = ggplot2::element_blank(), - axis.text.y = ggplot2::element_blank(), - panel.background = ggplot2::element_rect( - fill = "white", - colour = "black" - ), - plot.margin = ggplot2::margin( - r = 10, - l = 5, - t = 5, - b = 5 - ), - legend.position = "none") + - ggplot2::scale_color_manual(values = c( - "positive" = "#1696d2", - "not_stat_sig" = "#7f7f7f", - "negative" = "#ca5800" - )) - - if(save_chart){ - ggplot2::ggsave(filename = file_path, - plot = plot, - width = 11, - height = 8.5, - units = "in") - } - - return(plot) - }, - - #ERROR: - error=function(e) { - message('An Error Occurred') - print(e) - }, - - #WARNING - warning=function(w) { - message('A Warning Occurred') - print(w) - return(NA) - } + color = "#9d9d9d" + ), + ggplot2::geom_point( + ggplot2::aes( + color = pos_diff + ), + size = 3 + ), + ggplot2::scale_x_continuous( + position = "top", + limits = c(-max_val, max_val), + labels = scales::label_percent() + ), + ggplot2::labs(y = "", x = ""), + scale_color_demo_pos_diff() + ), + lollipop_plot_labels, + annotation_demo_lollipop(), + theme_demo_lollipop() + ) +} + +#' ggplot2 theme for create_demo_chart function +#' @inheritParams ggplot2::theme +#' @param ... Additional parameters passed to [ggplot2::theme()] +#' @noRd +theme_demo_lollipop <- function( + plot.margin = ggplot2::margin( + t = 5, r = 10, b = 5, l = 5 + ), + panel.background = ggplot2::element_rect( + fill = "white", + colour = "black" + ), + legend.position = "none", + ...) { + list( + ggplot2::theme( + panel.grid.major = ggplot2::element_blank(), + panel.grid.minor = ggplot2::element_blank(), + axis.ticks.y = ggplot2::element_blank(), + axis.text.y = ggplot2::element_blank(), + panel.background = panel.background, + plot.margin = plot.margin, + legend.position = legend.position, + ), + ggplot2::theme( + ... + ) + ) +} + +#' @noRd +demo_text_label <- function( + label = "Underrepresented", + x = .02, + y = 0.02, + just = c("left", "top"), + rot = 90, + font_face = "bold", + font_color = "#ca5800", + font_size = 18, + font_alpha = 0.75, + ...) { + grid::textGrob( + label = label, + x = x, + y = y, + just = just, + rot = rot, + gp = grid::gpar( + fontface = font_face, + col = font_color, + fontsize = font_size, + alpha = font_alpha + ), + ... + ) +} + +#' Annotations for create_demo_chart function +#' @noRd +annotation_demo_lollipop <- function() { + # Generate under/overrep labels to use in annotation_custom. This is the only + # way we can set x and y relatively to full plot window instead of actual + # axis numbers which vary with the data + list( + ggplot2::annotation_custom( + demo_text_label( + label = "Underrepresented", + x = 0.02, + y = 0.02, + just = c("left", "top"), + font_color = "#ca5800" + ), + xmin = -Inf, + xmax = Inf, + ymin = -Inf, + ymax = Inf + ), + ggplot2::annotation_custom( + demo_text_label( + label = "Overrepresented", + x = 0.96, + y = 0.98, + just = c("right", "top"), + font_color = "#1696d2" + ), + xmin = -Inf, + xmax = Inf, + ymin = -Inf, + ymax = Inf + ) + ) +} +#' Scale color based on pos_diff column derived by `fmt_diff_data_city()` +#' @noRd +scale_color_demo_pos_diff <- function( + values = c( + "positive" = "#1696d2", + "not_stat_sig" = "#7f7f7f", + "negative" = "#ca5800" + ), + ...) { + ggplot2::scale_color_manual( + values = values, + ... ) +} + +#' Use diff_data_city to derive pos_diff column +#' @noRd +fmt_pos_diff <- function(data) { + data |> + dplyr::mutate( + pos_diff = dplyr::case_when( + diff_data_city > 0 & sig_diff ~ "positive", + diff_data_city < 0 & sig_diff ~ "negative", + TRUE ~ "not_stat_sig" + ) + ) |> + dplyr::arrange(dplyr::desc(diff_data_city)) +} + +#' Shorten census_var column +#' @noRd +fmt_census_var_short <- function(data, call = caller_env()) { + check_installed( + c("forcats", "janitor", "dplyr"), + reason = "to create plots with `create_demo_chart()`", + call = call + ) + + dplyr::mutate( + data, + census_var = janitor::make_clean_names(census_var, case = "title"), + census_var = stringr::str_replace_all(census_var, "Pct", "Pct."), + census_var = stringr::str_replace_all(census_var, "under18", "Under 18"), + census_var = stringr::str_replace_all(census_var, "Unins", "Uninsured"), + census_var = stringr::str_replace_all(census_var, "Hisp", "Hispanic"), + census_var = stringr::str_replace_all(census_var, "under", "Under"), + census_var = stringr::str_replace_all(census_var, "Unemp$", "Unemployed"), + census_var = stringr::str_replace_all(census_var, "Cb", "Cost-Burdened"), + census_var = stringr::str_replace_all(census_var, "Hh", "Household"), + census_var = stringr::str_replace_all(census_var, "Bach", "Bachelors"), + census_var = stringr::str_replace_all(census_var, "Pov ", "Poverty "), + census_var = forcats::fct_reorder(census_var, diff_data_city) + ) +} + +#' Match baseline group value +#' @noRd +match_baseline_group <- function(group, error_call = caller_env()) { + arg_match0(group, c("total", "poverty", "under18"), error_call = error_call) +} + +#' Filter data to baseline group variable +#' @noRd +filter_baseline_group <- function( + data, + group = c("total", "poverty", "under18"), + call = caller_env()) { + group <- match_baseline_group(group, error_call = call) + if (group == "total") { + data |> + dplyr::filter( + !stringr::str_detect(census_var, "pct_pov"), + !stringr::str_detect(census_var, "pct_under18") + ) + } else if (group == "poverty") { + data |> + dplyr::filter(stringr::str_detect(census_var, "pct_pov")) + } else { + data |> + dplyr::filter(stringr::str_detect(census_var, "pct_under18")) + } } diff --git a/man/create_demo_chart.Rd b/man/create_demo_chart.Rd index 33a27b8..d2990f3 100644 --- a/man/create_demo_chart.Rd +++ b/man/create_demo_chart.Rd @@ -8,7 +8,8 @@ create_demo_chart( demo_df, group = "total", save_chart = FALSE, - file_path = "dem_disparity_chart.png" + file_path = "dem_disparity_chart.png", + ggsave_args = list(width = 11, height = 8.5, units = "in") ) } \arguments{ @@ -33,11 +34,12 @@ plot (ggplot object) - The ggplot object that was created. Function to visualize demographic disparity scores on a lollipop chart } \details{ -Please use the following citation for data obtained from the API, -replacing the version number with the current version: +Please use the following citation for data obtained from the API: -Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and Graham MacDonald. 2024. -“Spatial Equity Data Tool API” (Version X.x.x). Washington, DC: Urban Institute. -https://ui-research.github.io/sedt_documentation/. Data originally sourced from various sources, -analyzed at the Urban Institute and made available under the ODC Attribution License. +Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and +Graham MacDonald. 2024. “Spatial Equity Data Tool API” (Version +0.0.0.4000). Washington, DC: Urban Institute. +\url{https://ui-research.github.io/sedt_documentation/}. Data originally sourced +from various sources, analyzed at the Urban Institute and made available +under the ODC Attribution License. } From 2a9f23d71101fa9d3298e7cb41ea1ea4ebd902a0 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Wed, 25 Sep 2024 00:06:51 -0400 Subject: [PATCH 05/18] Split up create_map function internals Allow support for mapping w/ ggplot2 as well as tmap Add helper functions: - tm_plot_bias_map - plot_bias_map - fmt_col_to_plot - prep_geo_df --- R/create_map.R | 276 ++++++++++++++++++++++++++++++++-------------- man/create_map.Rd | 42 ++++--- 2 files changed, 219 insertions(+), 99 deletions(-) diff --git a/R/create_map.R b/R/create_map.R index 443ee26..22bd359 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -1,131 +1,241 @@ -#' Function to create a choropleth map to visualize the geographic disparity scores +#' Create a chloropleth map to visualize the geographic disparity scores +#' +#' [create_map()] uses `{tmap}` and `{urbnthemes}` to create a chloropleth map +#' to visualize the geographic disparity scores returned with the response +#' object from [call_sedt_api()]. #' #' @param geo_df (sf dataframe) - a spatial dataframe containing the geographic #' disparity scores outputted from the Spatial Equity Data Tool. #' @param col_to_plot (string) - The column in the geo_df to plot in #' choropleth map. +#' @param pkg (string) Package to use when creating the map. One of "tmap" +#' (default) or "ggplot2". +#' @param interactive (logical) - Default set to TRUE. Whether the map should be +#' interactive or not. #' @param save_map (logical) - Default set to FALSE. Whether to save the chart -#' or not. Note that if interactive is set to true, the map will save as a -#' .html. Otherwise, the map will save as a .png. -#' @param interactive (logical) - Default set to TRUE. Whether the map should -#' be interactive or not. +#' or not. Note that if `interactive = TRUE` and `pkg = "tmap"`, the map will +#' save as a .html. Otherwise, the map will save as a .png. #' @param file_path (character) - Default set to "bias_map". A file path of where #' to save the file. This should not include a file type as that is controlled #' by the interactive variable. An example file-path would be, #' "visuals/interactives/disparity_map". -#' @return bias_map (tmap map) - the choropleth map created +#' @return bias_map (tmap map or ggplot2 plot) - the choropleth map created +#' @inherit setd-citation details #' @export -#' @details -#' Please use the following citation for data obtained from the API, -#' replacing the version number with the current version: -#' -#' Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and Graham MacDonald. 2024. -#' “Spatial Equity Data Tool API” (Version X.x.x). Washington, DC: Urban Institute. -#' https://ui-research.github.io/sedt_documentation/. Data originally sourced from various sources, -#' analyzed at the Urban Institute and made available under the ODC Attribution License. - create_map <- function(geo_df, col_to_plot = "diff_pop", - save_map = FALSE, + ..., + pkg = "tmap", interactive = TRUE, - file_path = "bias_map" - - ){ + save_map = FALSE, + save_args = list(), + file_path = "bias_map", + file_ext = "png") { + check_installed( + c("dplyr"), + reason = "to use the `create_map()` function. If urbnthemes not installed, we use RdBu color palette." + ) - rlang::check_installed( - c("tmap", "dplyr", "janitor", "urbnthemes"), - reason = "to use the `create_map()` function. If urbnthemes not installed, we use RdBu color palette" - ) + pal <- "RdBu" # Choose color palette: if (rlang::is_installed("urbnthemes")) { pal <- urbnthemes::palette_urbn_diverging - } else { - pal <- "RdBu" } - - #Check all Inputs for correct types: + # Check all Inputs for correct types: stopifnot("sf" %in% class(geo_df)) stopifnot(is.logical(save_map)) stopifnot(is.logical(interactive)) stopifnot(is.character(file_path)) - #Check that col_to_plot is a column in the geo_df + # Check that col_to_plot is a column in the geo_df stopifnot(col_to_plot %in% colnames(geo_df)) - tryCatch( - #TRY: + # TRY: { - #Set file suffix for saving the chart and set tmap to interactive if + # Set file suffix for saving the chart and set tmap to interactive if # interactive is true - file_suffix = ".png" - if(interactive){ - tmap::tmap_mode("view") - file_suffix = ".html" - } else{ - tmap::tmap_mode("plot") - file_suffix = ".png" + if (interactive && pkg == "tmap") { + file_ext <- "html" } - # replace observations that are not significantly different with NA - # multiply by 100 to convert to percentage - geo_df <- geo_df |> - dplyr::mutate(!!rlang::sym(col_to_plot) := - dplyr::if_else(!!rlang::sym(stringr::str_glue("sig_{col_to_plot}")) == "FALSE", - NA_real_, - !!rlang::sym(col_to_plot)*100 - ) - ) - - # Avoid possible errors by ensuring geometry is valid - valid_geo_df <- sf::st_make_valid(geo_df) + pkg <- arg_match0(pkg, c("tmap", "ggplot2")) + + if (pkg == "tmap") { + bias_map <- tm_plot_bias_map( + data = geo_df, + fill_col = col_to_plot, + fill_palette = pal, + ... + ) + } else { + bias_map <- plot_bias_map( + data = geo_df, + fill_col = col_to_plot, + fill_palette = pal, + ... + ) + } - # Remove empty units to avoid warning. This is caused by tracts that do not have - # an associated geometry. - valid_geo_df <- valid_geo_df[!sf::st_is_empty(valid_geo_df),] - - bias_map <- - tmap::tm_basemap("CartoDB.PositronNoLabels") + - tmap::tm_shape(valid_geo_df) + - tmap::tm_fill(col = col_to_plot, - palette = pal, - midpoint = 0, - legend.show = TRUE, - id = "id_col", - title = "Disparity Score", - textNA = "Not Stat. Sig.", - legend.format= list( - fun=function(x) paste0(formatC(x, digits=1, format="f"), " %") - ) - ) + - tmap::tm_borders(lwd = .25) + - tmap::tm_tiles("CartoDB.PositronOnlyLabels") + - tmap::tm_layout(legend.outside = TRUE, - attr.outside = TRUE, - title = janitor::make_clean_names(string = col_to_plot, case = "title") - ) - - if(save_map){ - tmap::tmap_save(tm = bias_map, - filename = stringr::str_c(file_path, file_suffix)) + if (save_map) { + filename <- stringr::str_c(file_path, ".", file_ext) + + if (pkg == "tmap") { + tmap::tmap_save( + tm = bias_map, + filename = filename, + !!!save_args + ) + } else { + ggplot2::ggsave( + plot = bias_map, + filename = filename, + !!!save_args + ) + } } + return(bias_map) }, - #CATCH ERROR: - error = function(e){ + # CATCH ERROR: + error = function(e) { message("An Error Occurred") print(e) }, - #HANDLE WARNING: - warning = function(w){ + # HANDLE WARNING: + warning = function(w) { message("A Warning Occured") print(w) return(NA) } - ) +} + +#' Use tmap to plot a bias map +#' @noRd +tm_plot_bias_map <- function(data, + fill_col = "diff_pop", + fill_label = "Disparity Score", + basemap_server = "CartoDB.PositronNoLabels", + border_lwd = 0.25, + fill_palette = "RdBu", + title = NULL, + legend.outside = TRUE, + attr.outside = TRUE, + interactive = FALSE, + ...) { + check_installed(c("tmap", "janitor")) + + if (interactive) { + tmap::tmap_mode("view") + } else { + tmap::tmap_mode("plot") + } + + data <- data |> + fmt_col_to_plot() |> + prep_geo_df() + + tmap::tm_basemap( + server = basemap_server + ) + + tmap::tm_shape(data) + + tmap::tm_fill( + col = fill_col, + palette = fill_palette, + midpoint = 0, + legend.show = TRUE, + id = "id_col", + title = fill_label, + textNA = "Not Stat. Sig.", + legend.format = list( + fun = function(x) { + paste0( + formatC(x, digits = 1, format = "f"), + " %" + ) + } + ) + ) + + tmap::tm_borders( + lwd = border_lwd + ) + + tmap::tm_tiles( + server = basemap_server + ) + + tmap::tm_layout( + legend.outside = legend.outside, + attr.outside = attr.outside, + title = title %||% janitor::make_clean_names( + string = fill_col, + case = "title" + ) + ) +} + +#' Use ggplot2 to plot a bias map +#' @noRd +plot_bias_map <- function(data, + fill_col = "diff_pop", + fill_label = "Disparity Score", + fill_palette = "RdBu", + fill_scale = ggplot2::scale_fill_distiller( + type = "div", + palette = fill_palette, + direction = 1 + ), + plot_theme = ggplot2::theme_void()) { + geo_df <- data |> + fmt_col_to_plot( + col_to_plot = fill_col + ) |> + prep_geo_df() + + check_installed("ggplot2") + + geo_df |> + ggplot2::ggplot() + + ggplot2::geom_sf( + ggplot2::aes(fill = .data[[fill_col]]), + color = "white" + ) + + fill_scale + + plot_theme + + ggplot2::labs( + fill = fill_label + ) +} +#' Format column to plot on map +#' @noRd +fmt_col_to_plot <- function(data, col_to_plot = "diff_pop") { + check_installed("dplyr") + + data |> + dplyr::mutate( + !!sym(col_to_plot) := dplyr::if_else( + # Replace observations that are not significantly different with NA + !!sym(stringr::str_glue("sig_{col_to_plot}")) == "FALSE", + NA_real_, + # Otherwise multiply by 100 to convert to percentage + !!sym(col_to_plot) * 100 + ) + ) } +#' Prep a sf data frame by ensuring valid geometry and dropping empty geometry +#' @noRd +prep_geo_df <- function(data) { + check_installed("dplyr") + + data |> + # Avoid possible errors by ensuring geometry is valid + sf::st_make_valid() |> + dplyr::filter( + # Remove empty units to avoid warning. This is caused by tracts that do not have + # an associated geometry. + !sf::st_is_empty(.data[[attr(data, "sf_column")]]) + ) +} diff --git a/man/create_map.Rd b/man/create_map.Rd index 5df82c1..f0cca1a 100644 --- a/man/create_map.Rd +++ b/man/create_map.Rd @@ -2,14 +2,18 @@ % Please edit documentation in R/create_map.R \name{create_map} \alias{create_map} -\title{Function to create a choropleth map to visualize the geographic disparity scores} +\title{Create a chloropleth map to visualize the geographic disparity scores} \usage{ create_map( geo_df, col_to_plot = "diff_pop", - save_map = FALSE, + ..., + pkg = "tmap", interactive = TRUE, - file_path = "bias_map" + save_map = FALSE, + save_args = list(), + file_path = "bias_map", + file_ext = "png" ) } \arguments{ @@ -19,12 +23,15 @@ disparity scores outputted from the Spatial Equity Data Tool.} \item{col_to_plot}{(string) - The column in the geo_df to plot in choropleth map.} -\item{save_map}{(logical) - Default set to FALSE. Whether to save the chart -or not. Note that if interactive is set to true, the map will save as a -.html. Otherwise, the map will save as a .png.} +\item{pkg}{(string) Package to use when creating the map. One of "tmap" +(default) or "ggplot2".} -\item{interactive}{(logical) - Default set to TRUE. Whether the map should -be interactive or not.} +\item{interactive}{(logical) - Default set to TRUE. Whether the map should be +interactive or not.} + +\item{save_map}{(logical) - Default set to FALSE. Whether to save the chart +or not. Note that if \code{interactive = TRUE} and \code{pkg = "tmap"}, the map will +save as a .html. Otherwise, the map will save as a .png.} \item{file_path}{(character) - Default set to "bias_map". A file path of where to save the file. This should not include a file type as that is controlled @@ -32,17 +39,20 @@ by the interactive variable. An example file-path would be, "visuals/interactives/disparity_map".} } \value{ -bias_map (tmap map) - the choropleth map created +bias_map (tmap map or ggplot2 plot) - the choropleth map created } \description{ -Function to create a choropleth map to visualize the geographic disparity scores +\code{\link[=create_map]{create_map()}} uses \code{{tmap}} and \code{{urbnthemes}} to create a chloropleth map +to visualize the geographic disparity scores returned with the response +object from \code{\link[=call_sedt_api]{call_sedt_api()}}. } \details{ -Please use the following citation for data obtained from the API, -replacing the version number with the current version: +Please use the following citation for data obtained from the API: -Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and Graham MacDonald. 2024. -“Spatial Equity Data Tool API” (Version X.x.x). Washington, DC: Urban Institute. -https://ui-research.github.io/sedt_documentation/. Data originally sourced from various sources, -analyzed at the Urban Institute and made available under the ODC Attribution License. +Stern, Alena, Gabe Morrison, Sonia Torres Rodríguez, Ajjit Narayanan, and +Graham MacDonald. 2024. “Spatial Equity Data Tool API” (Version +0.0.0.4000). Washington, DC: Urban Institute. +\url{https://ui-research.github.io/sedt_documentation/}. Data originally sourced +from various sources, analyzed at the Urban Institute and made available +under the ODC Attribution License. } From ef29b80b7437f1e653b0e09adfd0d191fc824f7c Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Fri, 27 Sep 2024 00:50:04 -0400 Subject: [PATCH 06/18] Rename map functions with geo_bias map in name - Update plot_geo_bias_map and tm_plot_geo_bias_map to share docs - Fix issue w/ tmap returning specs not map --- R/create_map.R | 81 +++++++++++++++++++++++-------------- man/geo_bias_map.Rd | 36 +++++++++++++++++ man/tm_plot_geo_bias_map.Rd | 35 ++++++++++++++++ 3 files changed, 121 insertions(+), 31 deletions(-) create mode 100644 man/geo_bias_map.Rd create mode 100644 man/tm_plot_geo_bias_map.Rd diff --git a/R/create_map.R b/R/create_map.R index 22bd359..b56bfc2 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -113,19 +113,31 @@ create_map <- function(geo_df, ) } -#' Use tmap to plot a bias map -#' @noRd -tm_plot_bias_map <- function(data, - fill_col = "diff_pop", - fill_label = "Disparity Score", - basemap_server = "CartoDB.PositronNoLabels", - border_lwd = 0.25, - fill_palette = "RdBu", - title = NULL, - legend.outside = TRUE, - attr.outside = TRUE, - interactive = FALSE, - ...) { +#' Plot a map of geo bias data with `{tmap}` or `{ggplot2}` +#' +#' @param fill_col String with column name to map to fill. +#' @param fill_label Label to use for fill column. Passed as title for +#' [tmap::tm_fill()] or fill label for [ggplot2::labs()]. +#' @param fill_palette String with palette name. +#' @name geo_bias_map +NULL + +#' [tm_plot_geo_bias_map()] uses [tmap::tm_shape()] and [tmap::tm_fill()] to map +#' the geo bias data returned by [call_sedt_api()]. +#' @inheritParams tmap::tm_layout +#' @keywords internal +tm_plot_geo_bias_map <- function( + data, + fill_col = "diff_pop", + fill_label = "Disparity Score", + basemap_server = "CartoDB.PositronNoLabels", + border_lwd = 0.25, + fill_palette = "RdBu", + title = NULL, + legend.outside = TRUE, + attr.outside = TRUE, + interactive = FALSE, + ...) { check_installed(c("tmap", "janitor")) if (interactive) { @@ -138,7 +150,7 @@ tm_plot_bias_map <- function(data, fmt_col_to_plot() |> prep_geo_df() - tmap::tm_basemap( + bias_map <- tmap::tm_basemap( server = basemap_server ) + tmap::tm_shape(data) + @@ -173,20 +185,28 @@ tm_plot_bias_map <- function(data, case = "title" ) ) + + bias_map } -#' Use ggplot2 to plot a bias map -#' @noRd -plot_bias_map <- function(data, - fill_col = "diff_pop", - fill_label = "Disparity Score", - fill_palette = "RdBu", - fill_scale = ggplot2::scale_fill_distiller( - type = "div", - palette = fill_palette, - direction = 1 - ), - plot_theme = ggplot2::theme_void()) { + +#' [plot_geo_bias_map()] uses [ggplot2::geom_sf()] to map the geo bias data +#' returned by [call_sedt_api()]. +#' @rdname geo_bias_map +#' @param fill_scale ggplot2 scale function to use with map. +#' @param plot_theme ggplot2 theme to use with map. +#' @keywords internal +plot_geo_bias_map <- function( + data, + fill_col = "diff_pop", + fill_label = "Disparity Score", + fill_palette = "RdBu", + fill_scale = ggplot2::scale_fill_distiller( + type = "div", + palette = fill_palette, + direction = 1 + ), + plot_theme = ggplot2::theme_void()) { geo_df <- data |> fmt_col_to_plot( col_to_plot = fill_col @@ -195,8 +215,7 @@ plot_bias_map <- function(data, check_installed("ggplot2") - geo_df |> - ggplot2::ggplot() + + ggplot2::ggplot(data = geo_df) + ggplot2::geom_sf( ggplot2::aes(fill = .data[[fill_col]]), color = "white" @@ -231,11 +250,11 @@ prep_geo_df <- function(data) { check_installed("dplyr") data |> - # Avoid possible errors by ensuring geometry is valid + # Ensure geometry is valid to avoid possible errors sf::st_make_valid() |> dplyr::filter( - # Remove empty units to avoid warning. This is caused by tracts that do not have - # an associated geometry. + # Remove empty units to avoid warning from tracts with no associated + # geometry. !sf::st_is_empty(.data[[attr(data, "sf_column")]]) ) } diff --git a/man/geo_bias_map.Rd b/man/geo_bias_map.Rd new file mode 100644 index 0000000..81f061f --- /dev/null +++ b/man/geo_bias_map.Rd @@ -0,0 +1,36 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/create_map.R +\name{geo_bias_map} +\alias{geo_bias_map} +\alias{plot_geo_bias_map} +\title{Plot a map of geo bias data with \code{{tmap}} or \code{{ggplot2}}} +\usage{ +plot_geo_bias_map( + data, + fill_col = "diff_pop", + fill_label = "Disparity Score", + fill_palette = "RdBu", + fill_scale = ggplot2::scale_fill_distiller(type = "div", palette = fill_palette, + direction = 1), + plot_theme = ggplot2::theme_void() +) +} +\arguments{ +\item{fill_col}{String with column name to map to fill.} + +\item{fill_label}{Label to use for fill column. Passed as title for +\code{\link[tmap:tm_polygons]{tmap::tm_fill()}} or fill label for \code{\link[ggplot2:labs]{ggplot2::labs()}}.} + +\item{fill_palette}{String with palette name.} + +\item{fill_scale}{ggplot2 scale function to use with map.} + +\item{plot_theme}{ggplot2 theme to use with map.} +} +\description{ +Plot a map of geo bias data with \code{{tmap}} or \code{{ggplot2}} + +\code{\link[=plot_geo_bias_map]{plot_geo_bias_map()}} uses \code{\link[ggplot2:ggsf]{ggplot2::geom_sf()}} to map the geo bias data +returned by \code{\link[=call_sedt_api]{call_sedt_api()}}. +} +\keyword{internal} diff --git a/man/tm_plot_geo_bias_map.Rd b/man/tm_plot_geo_bias_map.Rd new file mode 100644 index 0000000..d58bf03 --- /dev/null +++ b/man/tm_plot_geo_bias_map.Rd @@ -0,0 +1,35 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/create_map.R +\name{tm_plot_geo_bias_map} +\alias{tm_plot_geo_bias_map} +\title{\code{\link[=tm_plot_geo_bias_map]{tm_plot_geo_bias_map()}} uses \code{\link[tmap:tm_shape]{tmap::tm_shape()}} and \code{\link[tmap:tm_polygons]{tmap::tm_fill()}} to map +the geo bias data returned by \code{\link[=call_sedt_api]{call_sedt_api()}}.} +\usage{ +tm_plot_geo_bias_map( + data, + fill_col = "diff_pop", + fill_label = "Disparity Score", + basemap_server = "CartoDB.PositronNoLabels", + border_lwd = 0.25, + fill_palette = "RdBu", + title = NULL, + legend.outside = TRUE, + attr.outside = TRUE, + interactive = FALSE, + ... +) +} +\arguments{ +\item{title}{Global title of the map. For small multiples, multiple titles can be specified. The title is drawn inside the map. Alternatively, use \code{panel.labels} to print the map as a panel, with the title inside the panel header (especially useful for small multiples). Another alternative is the \code{main.title} which prints a title above the map. Titles for the legend items are specified at the layer functions (e.g. \code{\link[tmap]{tm_fill}}).} + +\item{legend.outside}{Logical that determines whether the legend is plot outside of the map/facets. Especially useful when using facets that have a common legend (i.e. with \code{free.scales=FALSE}).} + +\item{attr.outside}{Logical that determines whether the attributes are plot outside of the map/facets.} + +\item{...}{other arguments from \code{tm_layout}} +} +\description{ +\code{\link[=tm_plot_geo_bias_map]{tm_plot_geo_bias_map()}} uses \code{\link[tmap:tm_shape]{tmap::tm_shape()}} and \code{\link[tmap:tm_polygons]{tmap::tm_fill()}} to map +the geo bias data returned by \code{\link[=call_sedt_api]{call_sedt_api()}}. +} +\keyword{internal} From 82c75a35d3278436ddd6d5a2181bda18d5b52c87 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Fri, 27 Sep 2024 16:57:07 -0400 Subject: [PATCH 07/18] Update create_demo_chart - Add str_to_label function - Add GeomLollipop and geom_lollipop and symmetric_limits functions - Rename fmt_census_var_short to fmt_census_var_label - Add aesthetics argument to scale_color_demo_pos_diff - Simplify fmt_pos_diff - Expose new pct_abb argument for create_demo_chart --- R/create_demo_chart.R | 83 ++++++++++++++++++---------------------- R/utils-ggplot2.R | 49 ++++++++++++++++++++++++ R/utils.R | 14 +++++++ man/create_demo_chart.Rd | 2 + 4 files changed, 103 insertions(+), 45 deletions(-) create mode 100644 R/utils-ggplot2.R diff --git a/R/create_demo_chart.R b/R/create_demo_chart.R index d892f45..18a7d38 100644 --- a/R/create_demo_chart.R +++ b/R/create_demo_chart.R @@ -15,8 +15,10 @@ create_demo_chart <- function( demo_df, group = "total", + ..., save_chart = FALSE, file_path = "dem_disparity_chart.png", + pct_abb = "Pct.", ggsave_args = list( width = 11, height = 8.5, @@ -47,13 +49,10 @@ create_demo_chart <- function( group = group ) - # Convert from percent (ex 10.5%) to decimal (ex: .105) - df <- dplyr::mutate(df, diff_data_city = diff_data_city / 100) - df <- fmt_pos_diff(df) # Edit string names - df <- fmt_census_var_short(df) + df <- fmt_census_var_label(df, pct_abb = pct_abb) # We get max value before filtering bc the limits of all 3 baseline_pops # should be equal for comparability @@ -72,7 +71,7 @@ create_demo_chart <- function( ) } - return(demo_lollipop_plot) + demo_lollipop_plot } #' Create geom for demographic lollipop plot @@ -80,7 +79,9 @@ create_demo_chart <- function( plot_demo_lollipop <- function(data, max_val, ..., - labelled = TRUE) { + labelled = TRUE, + plot_annotation = annotation_demo_lollipop(), + plot_theme = theme_demo_lollipop()) { lollipop_plot <- ggplot2::ggplot( data = data, mapping = ggplot2::aes(y = census_var, x = diff_data_city) @@ -93,15 +94,21 @@ plot_demo_lollipop <- function(data, # Put text to left/right of 0 line to match equity tool ggplot2::geom_text( data = dplyr::filter(data, diff_data_city >= 0), - ggplot2::aes(x = 0, y = census_var, label = census_var), - nudge_x = -(max_val * 0.01), + ggplot2::aes( + x = max(diff_data_city) * -0.06, + y = census_var, + label = census_var + ), hjust = "right", size = 4 ), ggplot2::geom_text( data = dplyr::filter(data, diff_data_city < 0), - ggplot2::aes(x = 0, y = census_var, label = census_var), - nudge_x = max_val * 0.01, + ggplot2::aes( + x = max(abs(diff_data_city)) * 0.06, + y = census_var, + label = census_var + ), hjust = "left", size = 4 ) @@ -115,17 +122,10 @@ plot_demo_lollipop <- function(data, xintercept = 0, color = "#353535" ), - ggplot2::geom_segment( + geom_lollipop( ggplot2::aes( - x = 0, - xend = diff_data_city, + x = diff_data_city, y = census_var, - yend = census_var - ), - color = "#9d9d9d" - ), - ggplot2::geom_point( - ggplot2::aes( color = pos_diff ), size = 3 @@ -133,14 +133,14 @@ plot_demo_lollipop <- function(data, ggplot2::scale_x_continuous( position = "top", limits = c(-max_val, max_val), - labels = scales::label_percent() + labels = scales::label_percent(scale = 1) ), ggplot2::labs(y = "", x = ""), scale_color_demo_pos_diff() ), lollipop_plot_labels, - annotation_demo_lollipop(), - theme_demo_lollipop() + plot_annotation, + plot_theme ) } @@ -246,30 +246,31 @@ scale_color_demo_pos_diff <- function( "not_stat_sig" = "#7f7f7f", "negative" = "#ca5800" ), - ...) { + ..., + aesthetics = c("color", "fill")) { ggplot2::scale_color_manual( values = values, + aesthetics = aesthetics, ... ) } -#' Use diff_data_city to derive pos_diff column +#' Use sig_diff and diff_data_city to derive pos_diff column #' @noRd fmt_pos_diff <- function(data) { data |> dplyr::mutate( pos_diff = dplyr::case_when( - diff_data_city > 0 & sig_diff ~ "positive", - diff_data_city < 0 & sig_diff ~ "negative", - TRUE ~ "not_stat_sig" + !sig_diff ~ "not_stat_sig", + diff_data_city > 0 ~ "positive", + diff_data_city < 0 ~ "negative" ) - ) |> - dplyr::arrange(dplyr::desc(diff_data_city)) + ) } #' Shorten census_var column #' @noRd -fmt_census_var_short <- function(data, call = caller_env()) { +fmt_census_var_label <- function(data, pct_abb = "Pct.", call = caller_env()) { check_installed( c("forcats", "janitor", "dplyr"), reason = "to create plots with `create_demo_chart()`", @@ -278,14 +279,15 @@ fmt_census_var_short <- function(data, call = caller_env()) { dplyr::mutate( data, - census_var = janitor::make_clean_names(census_var, case = "title"), - census_var = stringr::str_replace_all(census_var, "Pct", "Pct."), + census_var = str_to_label(census_var, case = "title"), + census_var = stringr::str_replace_all(census_var, "Pct", pct_abb), census_var = stringr::str_replace_all(census_var, "under18", "Under 18"), census_var = stringr::str_replace_all(census_var, "Unins", "Uninsured"), census_var = stringr::str_replace_all(census_var, "Hisp", "Hispanic"), census_var = stringr::str_replace_all(census_var, "under", "Under"), census_var = stringr::str_replace_all(census_var, "Unemp$", "Unemployed"), census_var = stringr::str_replace_all(census_var, "Cb", "Cost-Burdened"), + census_var = stringr::str_replace_all(census_var, "Hs ", "HS "), census_var = stringr::str_replace_all(census_var, "Hh", "Household"), census_var = stringr::str_replace_all(census_var, "Bach", "Bachelors"), census_var = stringr::str_replace_all(census_var, "Pov ", "Poverty "), @@ -307,17 +309,8 @@ filter_baseline_group <- function( call = caller_env()) { group <- match_baseline_group(group, error_call = call) - if (group == "total") { - data |> - dplyr::filter( - !stringr::str_detect(census_var, "pct_pov"), - !stringr::str_detect(census_var, "pct_under18") - ) - } else if (group == "poverty") { - data |> - dplyr::filter(stringr::str_detect(census_var, "pct_pov")) - } else { - data |> - dplyr::filter(stringr::str_detect(census_var, "pct_under18")) - } + data |> + dplyr::filter( + stringr::str_detect(baseline_pop, group) + ) } diff --git a/R/utils-ggplot2.R b/R/utils-ggplot2.R new file mode 100644 index 0000000..0f8d3c3 --- /dev/null +++ b/R/utils-ggplot2.R @@ -0,0 +1,49 @@ +#' @noRd +GeomLollipop <- ggplot2::ggproto("GeomLollipop", Geom, + + required_aes = c("x", "y"), + + default_aes = ggplot2::aes( + xend = 0, + colour = "black", + linewidth = .5, + size = 1, + linetype = 1, + shape = 19, + fill = NA, + alpha = NA, + stroke = 1 + ), + + draw_panel = function(data, panel_params, coord, ...) { + # Return all three components + grid::gList( + GeomSegment$draw_panel(data, panel_params, coord, ...), + GeomPoint$draw_panel(transform(data), panel_params, coord, ...) + ) + } +) + +#' @noRd +geom_lollipop <- function(mapping = NULL, data = NULL, + stat = "identity", position = "identity", + ..., na.rm = FALSE, show.legend = NA, + inherit.aes = TRUE) { + layer( + data = data, + mapping = mapping, + geom = GeomLollipop, + stat = stat, + position = position, + show.legend = show.legend, + inherit.aes = inherit.aes, + params = list(na.rm = na.rm, ...) + ) +} + +# https://github.com/aphalo/ggpmisc +#' @noRd +symmetric_limits <- function (x) { + max <- max(abs(x)) + c(-max, max) +} diff --git a/R/utils.R b/R/utils.R index e62f1f1..2e71692 100644 --- a/R/utils.R +++ b/R/utils.R @@ -139,3 +139,17 @@ get_api_results <- function(file_id) { } } + +#' @noRd +str_to_label <- function(string, case = "title", locale = "en") { + case <- arg_match(case, c("title", "upper", "lower", "sentence")) + label <- stringr::str_replace_all(string, "_", " ") + + switch (case, + title = stringr::str_to_title(label, locale), + upper = stringr::str_to_upper(label, locale), + lower = stringr::str_to_lower(label, locale), + sentence = stringr::str_to_sentence(label, locale) + ) +} + diff --git a/man/create_demo_chart.Rd b/man/create_demo_chart.Rd index d2990f3..d50239f 100644 --- a/man/create_demo_chart.Rd +++ b/man/create_demo_chart.Rd @@ -7,8 +7,10 @@ create_demo_chart( demo_df, group = "total", + ..., save_chart = FALSE, file_path = "dem_disparity_chart.png", + pct_abb = "Pct.", ggsave_args = list(width = 11, height = 8.5, units = "in") ) } From 642dc7eefd5e4388f92acbf005385c836b3de007 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Fri, 27 Sep 2024 16:57:25 -0400 Subject: [PATCH 08/18] Replace janitor::make_clean_names w/ str_to_label --- R/create_map.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/create_map.R b/R/create_map.R index b56bfc2..ad77152 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -180,7 +180,7 @@ tm_plot_geo_bias_map <- function( tmap::tm_layout( legend.outside = legend.outside, attr.outside = attr.outside, - title = title %||% janitor::make_clean_names( + title = title %||% str_to_label( string = fill_col, case = "title" ) From 9711f349ae98de04038baf73cf3cd888c80a43d2 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Mon, 7 Oct 2024 20:12:00 -0400 Subject: [PATCH 09/18] Add geom_barbell Also add missing ggplot2 package namespacing --- R/utils-ggplot2.R | 59 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/R/utils-ggplot2.R b/R/utils-ggplot2.R index 0f8d3c3..dda8f69 100644 --- a/R/utils-ggplot2.R +++ b/R/utils-ggplot2.R @@ -1,5 +1,5 @@ #' @noRd -GeomLollipop <- ggplot2::ggproto("GeomLollipop", Geom, +GeomLollipop <- ggplot2::ggproto("GeomLollipop", ggplot2::Geom, required_aes = c("x", "y"), @@ -16,10 +16,10 @@ GeomLollipop <- ggplot2::ggproto("GeomLollipop", Geom, ), draw_panel = function(data, panel_params, coord, ...) { - # Return all three components + # Return both the line and point components grid::gList( - GeomSegment$draw_panel(data, panel_params, coord, ...), - GeomPoint$draw_panel(transform(data), panel_params, coord, ...) + ggplot2::GeomSegment$draw_panel(data, panel_params, coord, ...), + ggplot2::GeomPoint$draw_panel(transform(data), panel_params, coord, ...) ) } ) @@ -29,7 +29,7 @@ geom_lollipop <- function(mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) { - layer( + ggplot2::layer( data = data, mapping = mapping, geom = GeomLollipop, @@ -40,6 +40,55 @@ geom_lollipop <- function(mapping = NULL, data = NULL, params = list(na.rm = na.rm, ...) ) } +#' +#' @noRd +GeomBarbell <- ggplot2::ggproto("GeomBarbell", ggplot2::Geom, + + required_aes = c("x", "y", "xend|yend"), + + default_aes = ggplot2::aes( + xend = 0, + yend = 0, + colour = "black", + # linewidth = ggplot2::from_theme(linewidth), + size = 1, + linetype = 1, + shape = 19, + fill = NA, + alpha = NA, + stroke = 1 + ), + + draw_panel = function(data, panel_params, coord, ...) { + # Transformed data for the points + point1 <- transform(data) + point2 <- transform(data, x = xend, y = yend) + + # Return all three components + grid::gList( + ggplot2::GeomSegment$draw_panel(data, panel_params, coord, ...), + ggplot2::GeomPoint$draw_panel(point1, panel_params, coord, ...), + ggplot2::GeomPoint$draw_panel(point2, panel_params, coord, ...) + ) + } +) + +#' @noRd +geom_barbell <- function(mapping = NULL, data = NULL, + stat = "identity", position = "identity", + ..., na.rm = FALSE, show.legend = NA, + inherit.aes = TRUE) { + ggplot2::layer( + data = data, + mapping = mapping, + geom = GeomBarbell, + stat = stat, + position = position, + show.legend = show.legend, + inherit.aes = inherit.aes, + params = list(na.rm = na.rm, ...) + ) +} # https://github.com/aphalo/ggpmisc #' @noRd From ee0ea6d020c91b5b76e2d798c471ecf693eac5f1 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Mon, 7 Oct 2024 20:13:11 -0400 Subject: [PATCH 10/18] Adjust point size for plot_demo_lollipop --- R/create_demo_chart.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/create_demo_chart.R b/R/create_demo_chart.R index 18a7d38..a1fa7c7 100644 --- a/R/create_demo_chart.R +++ b/R/create_demo_chart.R @@ -100,7 +100,7 @@ plot_demo_lollipop <- function(data, label = census_var ), hjust = "right", - size = 4 + size = 3 ), ggplot2::geom_text( data = dplyr::filter(data, diff_data_city < 0), @@ -110,7 +110,7 @@ plot_demo_lollipop <- function(data, label = census_var ), hjust = "left", - size = 4 + size = 3 ) ) } @@ -128,7 +128,7 @@ plot_demo_lollipop <- function(data, y = census_var, color = pos_diff ), - size = 3 + size = 2 ), ggplot2::scale_x_continuous( position = "top", From 8617031029ce48df1ade55a0e7942b06e6c0f64d Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Mon, 7 Oct 2024 20:13:55 -0400 Subject: [PATCH 11/18] Fix function names to match renamed helpers --- R/create_map.R | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/R/create_map.R b/R/create_map.R index ad77152..9a0ad26 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -36,11 +36,11 @@ create_map <- function(geo_df, reason = "to use the `create_map()` function. If urbnthemes not installed, we use RdBu color palette." ) - pal <- "RdBu" - # Choose color palette: if (rlang::is_installed("urbnthemes")) { pal <- urbnthemes::palette_urbn_diverging + } else { + pal <- "RdBu" } # Check all Inputs for correct types: @@ -64,14 +64,14 @@ create_map <- function(geo_df, pkg <- arg_match0(pkg, c("tmap", "ggplot2")) if (pkg == "tmap") { - bias_map <- tm_plot_bias_map( + bias_map <- tm_plot_geo_bias_map( data = geo_df, fill_col = col_to_plot, fill_palette = pal, ... ) } else { - bias_map <- plot_bias_map( + bias_map <- plot_geo_bias_map( data = geo_df, fill_col = col_to_plot, fill_palette = pal, @@ -204,6 +204,7 @@ plot_geo_bias_map <- function( fill_scale = ggplot2::scale_fill_distiller( type = "div", palette = fill_palette, + labels = scales::label_percent(scale = 1), direction = 1 ), plot_theme = ggplot2::theme_void()) { From a7404c856415027f98b2c42fe33e23e9f2ff4d89 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Mon, 7 Oct 2024 20:14:00 -0400 Subject: [PATCH 12/18] Update geo_bias_map.Rd --- man/geo_bias_map.Rd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/geo_bias_map.Rd b/man/geo_bias_map.Rd index 81f061f..9416580 100644 --- a/man/geo_bias_map.Rd +++ b/man/geo_bias_map.Rd @@ -10,8 +10,8 @@ plot_geo_bias_map( fill_col = "diff_pop", fill_label = "Disparity Score", fill_palette = "RdBu", - fill_scale = ggplot2::scale_fill_distiller(type = "div", palette = fill_palette, - direction = 1), + fill_scale = ggplot2::scale_fill_distiller(type = "div", palette = fill_palette, labels + = scales::label_percent(scale = 1), direction = 1), plot_theme = ggplot2::theme_void() ) } From 094468158e284ae52b08ef16faebae6ec070594d Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Mon, 7 Oct 2024 20:16:06 -0400 Subject: [PATCH 13/18] Drop janitor from dependencies --- DESCRIPTION | 3 +-- R/create_demo_chart.R | 4 ++-- R/create_map.R | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ce512ec..f72c5b4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -43,7 +43,6 @@ Suggests: forcats, ggplot2, here, - janitor, openxlsx, readr, scales, @@ -58,4 +57,4 @@ Remotes: UrbanInstitute/urbnthemes Encoding: UTF-8 Roxygen: list(markdown = TRUE) -RoxygenNote: 7.3.1 +RoxygenNote: 7.3.2 diff --git a/R/create_demo_chart.R b/R/create_demo_chart.R index a1fa7c7..adfab2e 100644 --- a/R/create_demo_chart.R +++ b/R/create_demo_chart.R @@ -25,7 +25,7 @@ create_demo_chart <- function( units = "in" )) { check_installed( - c("forcats", "janitor", "scales", "ggplot2", "dplyr"), + c("forcats", "scales", "ggplot2", "dplyr"), reason = "to use the `create_demo_chart()` function." ) @@ -272,7 +272,7 @@ fmt_pos_diff <- function(data) { #' @noRd fmt_census_var_label <- function(data, pct_abb = "Pct.", call = caller_env()) { check_installed( - c("forcats", "janitor", "dplyr"), + c("forcats", "dplyr"), reason = "to create plots with `create_demo_chart()`", call = call ) diff --git a/R/create_map.R b/R/create_map.R index 9a0ad26..5e21f87 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -138,7 +138,7 @@ tm_plot_geo_bias_map <- function( attr.outside = TRUE, interactive = FALSE, ...) { - check_installed(c("tmap", "janitor")) + check_installed("tmap") if (interactive) { tmap::tmap_mode("view") From 859cb25d857b5d52d3c4191197b192a5fb45f1f2 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Wed, 16 Oct 2024 12:01:10 -0400 Subject: [PATCH 14/18] Export tm_plot_geo_bias_map and plot_geo_bias_map helpers --- NAMESPACE | 2 ++ R/create_map.R | 5 +++++ man/geo_bias_map.Rd | 6 ++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 3e6756f..093e685 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -8,4 +8,6 @@ export(create_map) export(get_output_data) export(get_status) export(is_valid_col_type) +export(plot_geo_bias_map) +export(tm_plot_geo_bias_map) import(rlang) diff --git a/R/create_map.R b/R/create_map.R index 5e21f87..2eec303 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -115,6 +115,9 @@ create_map <- function(geo_df, #' Plot a map of geo bias data with `{tmap}` or `{ggplot2}` #' +#' [tm_plot_geo_bias_map()] and [plot_geo_bias_map()] are internal plotting +#' functions called by the more generic [create_map()] function. +#' #' @param fill_col String with column name to map to fill. #' @param fill_label Label to use for fill column. Passed as title for #' [tmap::tm_fill()] or fill label for [ggplot2::labs()]. @@ -126,6 +129,7 @@ NULL #' the geo bias data returned by [call_sedt_api()]. #' @inheritParams tmap::tm_layout #' @keywords internal +#' @export tm_plot_geo_bias_map <- function( data, fill_col = "diff_pop", @@ -196,6 +200,7 @@ tm_plot_geo_bias_map <- function( #' @param fill_scale ggplot2 scale function to use with map. #' @param plot_theme ggplot2 theme to use with map. #' @keywords internal +#' @export plot_geo_bias_map <- function( data, fill_col = "diff_pop", diff --git a/man/geo_bias_map.Rd b/man/geo_bias_map.Rd index 9416580..2b94ab2 100644 --- a/man/geo_bias_map.Rd +++ b/man/geo_bias_map.Rd @@ -28,9 +28,7 @@ plot_geo_bias_map( \item{plot_theme}{ggplot2 theme to use with map.} } \description{ -Plot a map of geo bias data with \code{{tmap}} or \code{{ggplot2}} - -\code{\link[=plot_geo_bias_map]{plot_geo_bias_map()}} uses \code{\link[ggplot2:ggsf]{ggplot2::geom_sf()}} to map the geo bias data -returned by \code{\link[=call_sedt_api]{call_sedt_api()}}. +\code{\link[=tm_plot_geo_bias_map]{tm_plot_geo_bias_map()}} and \code{\link[=plot_geo_bias_map]{plot_geo_bias_map()}} are internal plotting +functions called by the more generic \code{\link[=create_map]{create_map()}} function. } \keyword{internal} From 3f014b4188967ac8f3e294ef854166abc5fe5e22 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Wed, 16 Oct 2024 12:01:20 -0400 Subject: [PATCH 15/18] Update README --- README.Rmd | 32 ++++-- README.md | 134 +++++++++++++---------- man/figures/README-unnamed-chunk-5-1.png | Bin 0 -> 65124 bytes man/figures/README-unnamed-chunk-6-1.png | Bin 0 -> 62320 bytes man/figures/README-unnamed-chunk-7-1.png | Bin 0 -> 52258 bytes 5 files changed, 99 insertions(+), 67 deletions(-) create mode 100644 man/figures/README-unnamed-chunk-5-1.png create mode 100644 man/figures/README-unnamed-chunk-6-1.png create mode 100644 man/figures/README-unnamed-chunk-7-1.png diff --git a/README.Rmd b/README.Rmd index f773921..68e7143 100644 --- a/README.Rmd +++ b/README.Rmd @@ -85,19 +85,35 @@ sedt_response$demo_bias_data |> head() ``` -The package allows users to visualize the geographic disparity scores and demographic disparity scores with `create_map()` and `create_demo_chart()`, respectively. By default, these functions do not save the resulting images, but both provide arguments (`save_map` and `save_chart`) which take logicals and allow a user to save the outputted visualization. Like the interactive visualizations on the [SEDT website] (https://apps.urban.org/features/equity-data-tool/), these functions allow users to visualize different geographic or demographic disparity scores. `create_map()` allows interactive or static visualizations. +The package allows users to visualize the geographic disparity scores and demographic disparity scores with `create_map()` and `create_demo_chart()`, respectively. By default, these functions do not save the resulting images, but both provide arguments (`save_map` and `save_chart`) which take logicals and allow a user to save the outputted visualization. Like the interactive visualizations on the [SEDT website] (https://apps.urban.org/features/equity-data-tool/), these functions allow users to visualize different geographic or demographic disparity scores. + +`create_map()` allows interactive or static visualizations. By default, `create_map()` uses `{tmap}`: ```{r} -create_map(sedt_response$geo_bias_data, - interactive = FALSE, # optional, defaults to TRUE - save_map = FALSE, #optional, defaults to FALSE. If TRUE, provide file_path - col_to_plot = "diff_pop") #optional, default is "diff_pop" +create_map( + sedt_response$geo_bias_data, + interactive = FALSE, # optional, defaults to TRUE + save_map = FALSE, # optional, defaults to FALSE. If TRUE, provide file_path + col_to_plot = "diff_pop" # optional, default is "diff_pop" +) ``` + ```{r} -create_demo_chart(sedt_response$demo_bias_data, - group = "total", # optional, default is "total" - save_chart = FALSE) # optional, default is FALSE. If TRUE provide file_path +plot_geo_bias_map( + sedt_response$geo_bias_data, + fill_col = "diff_pop" +) +``` + + +```{r} +create_demo_chart( + sedt_response$demo_bias_data, + group = "total", # optional, default is "total" + save_chart = FALSE, + pct_abb = "%" # optional, default is FALSE. If TRUE provide file_path +) ``` ## Where Can I Learn More: diff --git a/README.md b/README.md index dcbc7c8..bae7aee 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ The following example illustrates using the `call_sedt_api()` function on Minneapolis, MN bikeshare data stored on the Urban Institute’s [Data Catalog](https://datacatalog.urban.org/). - #> Loading sedtR - using staging API + #> Loading sedtR - using production API #> [1] "getting output file" `call_sedt_api()` returns a list object that contains a `sf` object @@ -76,55 +76,34 @@ storing the geographic disparity scores: ``` r sedt_response$geo_bias_data |> head() -#> prop_cb_renter_hh diff_no_internet prop_pov diff_pov -#> 1 0.00049 -0.006 0.00345 -0.003 -#> 2 0.00937 -0.008 0.01036 -0.005 -#> 3 0.00158 -0.007 0.00721 -0.007 -#> 4 0.00316 -0.007 0.00515 -0.005 -#> 5 0.00024 -0.006 0.00160 -0.002 -#> 6 0.00487 0.001 0.00384 -0.001 -#> disp_name sig_diff_seniors diff_seniors diff_pop -#> 1 Census Tract 1.01, Minneapolis, MN TRUE -0.007 -0.008 -#> 2 Census Tract 1.02, Minneapolis, MN FALSE -0.004 -0.007 -#> 3 Census Tract 3, Minneapolis, MN TRUE -0.008 -0.008 -#> 4 Census Tract 6.01, Minneapolis, MN TRUE -0.015 -0.011 -#> 5 Census Tract 6.03, Minneapolis, MN TRUE -0.007 -0.008 -#> 6 Census Tract 11, Minneapolis, MN FALSE 0.000 -0.002 -#> GEOID prop_children prop_pop diff_children diff_cb_renter_hh data_prop -#> 1 27053000101 0.01043 0.00786 -0.010 0.000 0.00000 -#> 2 27053000102 0.01378 0.01152 -0.009 -0.004 0.00506 -#> 3 27053000300 0.00746 0.00753 -0.007 -0.002 0.00000 -#> 4 27053000601 0.01193 0.01091 -0.012 -0.003 0.00000 -#> 5 27053000603 0.00486 0.00761 -0.005 0.000 0.00000 -#> 6 27053001100 0.00533 0.00493 -0.002 -0.002 0.00253 -#> prop_no_internet diff_under_200_poverty_line prop_seniors -#> 1 0.00552 -0.008 0.00684 -#> 2 0.01252 -0.010 0.00938 -#> 3 0.00728 -0.006 0.00799 -#> 4 0.00735 -0.009 0.01453 -#> 5 0.00622 -0.002 0.00700 -#> 6 0.00198 -0.002 0.00330 -#> prop_under_200_poverty_line sig_diff_cb_renter_hh sig_diff_children -#> 1 0.00809 FALSE TRUE -#> 2 0.01458 FALSE TRUE -#> 3 0.00563 FALSE TRUE -#> 4 0.00855 FALSE TRUE -#> 5 0.00243 FALSE TRUE -#> 6 0.00517 FALSE FALSE -#> sig_diff_no_internet sig_diff_pop sig_diff_pov -#> 1 FALSE TRUE FALSE -#> 2 FALSE TRUE FALSE -#> 3 FALSE TRUE TRUE -#> 4 TRUE TRUE TRUE -#> 5 TRUE TRUE FALSE -#> 6 FALSE TRUE FALSE -#> sig_diff_under_200_poverty_line weighted_counts -#> 1 TRUE 0 -#> 2 TRUE 2 -#> 3 TRUE 0 -#> 4 TRUE 0 -#> 5 TRUE 0 -#> 6 FALSE 1 +#> sig_diff_seniors data_prop diff_cb_renter_hh diff_pop prop_children +#> 1 TRUE 0.00000 0.000 -0.008 0.01043 +#> 2 FALSE 0.00506 -0.004 -0.007 0.01378 +#> 3 TRUE 0.00000 -0.002 -0.008 0.00746 +#> 4 TRUE 0.00000 -0.003 -0.011 0.01193 +#> 5 TRUE 0.00000 0.000 -0.008 0.00486 +#> 6 FALSE 0.00253 -0.002 -0.002 0.00533 +#> diff_no_internet diff_under_200_poverty_line GEOID diff_pov +#> 1 -0.006 -0.008 27053000101 -0.003 +#> 2 -0.008 -0.010 27053000102 -0.005 +#> 3 -0.007 -0.006 27053000300 -0.007 +#> 4 -0.007 -0.009 27053000601 -0.005 +#> 5 -0.006 -0.002 27053000603 -0.002 +#> 6 0.001 -0.002 27053001100 -0.001 +#> diff_seniors diff_children prop_under_200_poverty_line prop_cb_renter_hh +#> 1 -0.007 -0.010 0.00809 0.00049 +#> 2 -0.004 -0.009 0.01458 0.00937 +#> 3 -0.008 -0.007 0.00563 0.00158 +#> 4 -0.015 -0.012 0.00855 0.00316 +#> 5 -0.007 -0.005 0.00243 0.00024 +#> 6 0.000 -0.002 0.00517 0.00487 +#> prop_no_internet prop_pop +#> 1 0.00552 0.00786 +#> 2 0.01252 0.01152 +#> 3 0.00728 0.00753 +#> 4 0.00735 0.01091 +#> 5 0.00622 0.00761 +#> 6 0.00198 0.00493 #> geometry #> 1 -93.31950, -93.31419, -93.30431, -93.29919, -93.29921, -93.29906, -93.30668, -93.31943, -93.31943, -93.31944, -93.31950, 45.05125, 45.05124, 45.05118, 45.05114, 45.04392, 45.03766, 45.03935, 45.04217, 45.04397, 45.04760, 45.05125 #> 2 -93.29919, -93.29409, -93.29153, -93.28223, -93.28083, -93.28343, -93.28321, -93.28270, -93.28673, -93.28811, -93.28811, -93.29041, -93.29403, -93.29489, -93.29906, -93.29921, -93.29919, 45.05114, 45.05113, 45.05113, 45.05116, 45.04357, 45.03536, 45.03345, 45.03243, 45.03151, 45.03151, 45.03272, 45.03473, 45.03646, 45.03674, 45.03766, 45.04392, 45.05114 @@ -132,6 +111,27 @@ sedt_response$geo_bias_data |> #> 4 -93.26411, -93.26238, -93.26210, -93.25998, -93.25992, -93.24985, -93.24739, -93.24218, -93.23711, -93.23711, -93.23712, -93.23712, -93.23711, -93.24748, -93.24734, -93.26071, -93.26311, -93.26269, -93.26411, 45.02760, 45.02760, 45.02944, 45.03051, 45.03554, 45.03555, 45.03555, 45.03558, 45.03561, 45.02766, 45.02405, 45.02397, 45.02044, 45.02038, 45.01677, 45.01682, 45.01682, 45.02101, 45.02760 #> 5 -93.23712, -93.23711, -93.23711, -93.22693, -93.22690, -93.22690, -93.22688, -93.22687, -93.22686, -93.22686, -93.22961, -93.23328, -93.23712, -93.23712, 45.02405, 45.02766, 45.03561, 45.03567, 45.02773, 45.02771, 45.02410, 45.02047, 45.01951, 45.01892, 45.01922, 45.02226, 45.02397, 45.02405 #> 6 -93.24748, -93.23711, -93.23713, -93.23715, -93.24225, -93.24734, -93.24734, -93.24748, 45.02038, 45.02044, 45.01682, 45.01320, 45.01318, 45.01316, 45.01677, 45.02038 +#> prop_pov prop_seniors sig_diff_cb_renter_hh sig_diff_children sig_diff_pop +#> 1 0.00345 0.00684 FALSE TRUE TRUE +#> 2 0.01036 0.00938 FALSE TRUE TRUE +#> 3 0.00721 0.00799 FALSE TRUE TRUE +#> 4 0.00515 0.01453 FALSE TRUE TRUE +#> 5 0.00160 0.00700 FALSE TRUE TRUE +#> 6 0.00384 0.00330 FALSE FALSE TRUE +#> sig_diff_no_internet sig_diff_pov disp_name +#> 1 FALSE FALSE Census Tract 1.01, Minneapolis, MN +#> 2 FALSE FALSE Census Tract 1.02, Minneapolis, MN +#> 3 FALSE TRUE Census Tract 3, Minneapolis, MN +#> 4 TRUE TRUE Census Tract 6.01, Minneapolis, MN +#> 5 TRUE FALSE Census Tract 6.03, Minneapolis, MN +#> 6 FALSE FALSE Census Tract 11, Minneapolis, MN +#> sig_diff_under_200_poverty_line weighted_counts +#> 1 TRUE 0 +#> 2 TRUE 2 +#> 3 TRUE 0 +#> 4 TRUE 0 +#> 5 TRUE 0 +#> 6 FALSE 1 ``` A data frame with demographic information used in the analysis is also @@ -171,27 +171,43 @@ save the resulting images, but both provide arguments (`save_map` and visualization. Like the interactive visualizations on the \[SEDT website\] (), these functions allow users to visualize different geographic or demographic -disparity scores. `create_map()` allows interactive or static -visualizations. +disparity scores. + +`create_map()` allows interactive or static visualizations. By default, +`create_map()` uses `{tmap}`: ``` r -create_map(sedt_response$geo_bias_data, - interactive = FALSE, # optional, defaults to TRUE - save_map = FALSE, #optional, defaults to FALSE. If TRUE, provide file_path - col_to_plot = "diff_pop") #optional, default is "diff_pop" +create_map( + sedt_response$geo_bias_data, + interactive = FALSE, # optional, defaults to TRUE + save_map = FALSE, # optional, defaults to FALSE. If TRUE, provide file_path + col_to_plot = "diff_pop" # optional, default is "diff_pop" +) #> tmap mode set to plotting ``` ``` r -create_demo_chart(sedt_response$demo_bias_data, - group = "total", # optional, default is "total" - save_chart = FALSE) # optional, default is FALSE. If TRUE provide file_path +plot_geo_bias_map( + sedt_response$geo_bias_data, + fill_col = "diff_pop" +) ``` +``` r +create_demo_chart( + sedt_response$demo_bias_data, + group = "total", # optional, default is "total" + save_chart = FALSE, + pct_abb = "%" # optional, default is FALSE. If TRUE provide file_path +) +``` + + + ## Where Can I Learn More: The Spatial Equity Data Tool has comprehensive documentation in the form diff --git a/man/figures/README-unnamed-chunk-5-1.png b/man/figures/README-unnamed-chunk-5-1.png new file mode 100644 index 0000000000000000000000000000000000000000..20a44e59df45ccacfcfd4f29c3fc8320c6b878dd GIT binary patch literal 65124 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 z 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 literal 0 HcmV?d00001 diff --git a/man/figures/README-unnamed-chunk-6-1.png b/man/figures/README-unnamed-chunk-6-1.png new file mode 100644 index 0000000000000000000000000000000000000000..19ed97b6ce0551694cb6fa149287458a3e71c9cf GIT binary patch literal 62320 zcmdqJWmjEGur-WpaCi4jAi>?;-Q6KTaCZyt8rs3Jfw|aq?;nTGY3reP)mwXEvUUUKE?&8h(&3CPCDiX`GvvB&{dih+4 z0P2USC$XFvEZCD4rn=VnW~=tm)yMtx3-5zOho`RsytV14nf>Hgj9q*7iC^v7DzQaSqw>9z^T8%BSv zjxU73^APN!;R9?R*SB=yZPeZd5H;*fq|4gL)Yz{-^h5yEr4es^D?gwQ$nG>DpdBt( zqPSU#D`-eZMTS|+(qzeI+XJ3`8b#Ku`c?wuqU#vF&^N%F?~-ZlleR*Tvs89h9e-4P zwy5hzem7~cfW0CE(P?c9vWL6k?K4vGXv05rEGcE1?xHK2OEp8@2yk`k<{lY17k+8@ zqL&WmI47`~cr)<_w_Dg25AumlXOWnZDKiL9#e($`em!tCw9XlYs_0fuky{HE-zPuMfC}c zXcWY&#kCd23`*-|_kNf!&T9BRj)>A{XMLA=tj$g!nFJpWX^?fRd*In^p|iIX&vKRDfWy@{ zZb(B$J_`wB!KDY$zzdK;r+2H?OgKmC&iK@4< z3If6pA|WiG>ubn4vznqO@HgO)<_S98uzTXw}aK`c+na0wCi>B@s{C-1}&fa zoX7oDkI4pebYcM*7*G;oh(KRtWH3Q~81f&!ECPGtUx1hY_dW_TC@q8kKR@~BKEELB z4-gq@8ye~V=Z6r*ZQ%dU-@;N5gE8kc7cl;xhrocMWM3ox-|=C{6MSK&0=JWT{+r0( zZ-sqFxc+x;z*{l$V5IzLVOnr#ACvu`5kP4#{+<6nxBh=JIej^E3&j-V9|68qW$wuTBqF)o6-N13EdzmgPZ}%I+T>TY}IV&0sYW9|k7Nxw;;r>P+KvB%n zfdK4@##|W3KwmLnU5zQRIaV zhUvTyWTnF<5WW4-M_GIDOpQOQ@xI1h;}W;zhKh`0D(Jj zov=Da88d<@uM0@%+bk5({2x>2g9E=mnvzl+BnG96?7k5bR0pdp%`>h${7>7Dxm`Q^@-Pb@>0@OPwP3xZa3#YGbit8%}skEctAahMhPSk2>AIdP*{Y&f|{;#$8kCBl<(>T3ISa72FX~QSCjx&7^ zfUsLGRQB|v1ZhAg`Nsivz(?Xz@k?atgOLh`K%83?<6XCKqyKB97&r)F-$FqKaRO3O zVkQ2N!QILdLf*K(zx47E!p6X*#jk=Ywjndd`96TL#1-yR{4=mAkY+3~HHOt-$o+iF zp0L4mKa8*}(004!IY97S|TA~Qk4CzY`eqB{0rrBJ@N^ns-@E-S|TW7&p#mN)&ue<6oTa{l2J7Qda+I!Vb+~bVQLG zaEI=#<7QJz@z{BgjivBxtw2?$zUh>Psu!Z5SK!bYor0gfYcVI$o8 zt7$Xu#u!pJ5JKzvz;}N#GZ_G(Sot4Te*nD~iJd4cjqZ1su>y_0XI(A^@5Nqk{VwkX zhyv`&W`^~MP#N82xX@Xd-#}mF*}ZBuM-kw}gp{x;>SMIEXCrImNy%6j8h`!=Qi5GD zKvza)Q@de{cFnFrn1DtSi$&gXUp$y6KPmIwu-j8AlV$~H7kTZKRkNp?ueAj99j=&f zv@`jyZb$Se@yByR&v7{8<1@<${Fndyl&OI3n)jgYJwC9q2yV~*QJzLM&Bz_y2kq-C zT9lRszFgyiMK51UC{BS)yyY(Mb*$@-IB^ZPJDwf@tEN*StnuvkYQ9`eIDTQB`$8?3 z2aeQD<%Z$;c`}|J1=P}UQPTS#zv**-5Drr!{tj`M>KKm8drE?tyz8~Xc$KlA*w&`4 z4~nku9o?*s7Q!2I$1Nv*KgCcgE4az%r0`ym4ZoTbOB(AnX<iRZX^s+)^@YJu639dcDRB1udg$<|5@i2+jd%+fHI(=* z=-5c0jWM_w%vD$!9xi2a<8^YR9xuYxMB^oGKZY}d7If-=Sgfra5_jhHLZuZ+mc;}| znyNxjS$EPP9**bIJ^q^qrh&uZ$|zqmCHh*ll1%rIFUATTE8Sn;e2*#+k*?d%xlTLL zr=t}e?C>)8G$YVlU%_wmvP3Lqc{&0$U<%(d?e<60ci=Pjkn;pH8U}67Ycfg z+lK6LaExzEY z$>&)$p4%Vx0m|YIU#QmXLu!K?FP23oE*5i7HhGm!(z%?VYKP!x|5KFwzdq8*XC8`M zWr&xvvl0paec#%tUAeOxxn2$%uxqo)-UlmNU;0ku4CuSuw}#|tC-cs&TZWX*p-XNG zq5o*c6qs!+DRqWdzJqn#srKG5lL@)ZD_jjbwQ)iG`bGZgD&AiiH*Y?knv ziq~L@VY=Q^!~VyvGoe6FIUZMhsc`3@qCqd9scB#q}7xa)S+UmV=W z&D)a}Zn)X5PVCgt4fJZLW+t(J&6#NvDcip%+q@BY^_4uhXG7zZUZ#c!#<2F@xqrIuGeAi|?2N4^VF2I9YZ0?KR^-Af3rmgSyi32Klgp%2%&fZ;Ugb z>x^-%RwdZmsf(M>Beaoe|LmgRd5ucEsn+|vNs!7CB$}#yQ1e*8l!z_ltPu2uY`8-!$~Vfycy1iTP4(xNvGR69Mnx zV^C*93wo#Oxg0eXn()CE zLR?!6?er0n{pIEzEZl+O&9S?n4-=LGGn(W+!S}cW%X45`e7M0pERxQqU&clMfWZfH z@v5(-G_0XVgMxxOgAZP1@`Zi@@RU!N(wRNkp#7J(z9s@8B7OGAY}2%ilnHPYf{ar^ zfy6XO^4@024TKW8W?k6X4Cv$^PCd}?4)E!|Te0!4YM|I&)o_jT4=!q?-DVz+GFRx( zMx%3&Uo)lA`zQN9p&nYX9zRQ02J%ayGTQUG5_%6*?<>ZCiGhr3dMS6`W=L@#)bZt^ z+XnMucIryYAh3H$_#wV<5Rvhi7rdvGiQ;UOO3B5ID^|IZLf0!r25zG*j;E0DCY{hIBxlJ=+b`or)ck^y~ zuNob_S5+I%V;GxVl5P{5i7?78@w;qF#A)cPyxVL=@a*3FtQgTF8r%Ur|FlH?FRzrT z8e636gZ$sJ;ufqBw!4m?CU!)Ha(gu&Pa;Nx!M2hdfiRpI$VaPQvL2ZC+t<_lrPg+O! z(Po9*tIFPL%qFsD{%9YR^)K#!RH`2{B{Aj{^Ld+e#jhF%ev7ZUnu%*tN-}b%E>-sy zml06g&l_L=EIYIX-$idgQ*opbF~@xWtm%nMFE}Eyo*on+D%Aqrw;*0-IMN_TOa4z% z>qSL|Kdk;iE?A1fsOTGqimMN5aEEtuAxD#YtI=b%YmU$53V@)=2h%| zenHJ+L6WxNE)$)!EQWc%e|$e@-C6E0x7HDx229}pQw{^23Y@3Lw>ttD{gc(|4gqL1 z`Gn+lS9E+x5lcH{2IN`}k2Ufm2arU_7=j*$>}%HplDh+mm6Jc}&;%5Du{_?S07PiV zEei(xpgSEd`PazZ8g|@bGQ~ zEFd;}VX*IIG7UEKTZYN>ck!ouS1QUgDvuAFY8{EHWC#PjDVolfqH;Chr)qY3z2y{7 z6g9%@9ELPkU6zF`=V$ts$t}*SL+Rtn{}w!7P==;#{ZiB=a+OK=h1P;0F(J55Gxl@d zD%fJUJU{^?H!?~U5*kLdjOY74LZg00m&`0hnzyJ*L@3#zTY!R(QtKK5Sg>5{kYk+6 zbq$fYW`?t)1_!uF0+k_xec>4YL1o2jEXC`u??o1CLshF(+g;0RLfvR_{ zr!YAok-VJLAd}B*e{FEY53H~_|HRGJAc2x$k61szMdwO zG|)2;5kMp5OMB&${#)ft>&uKiL>sVX-c8P&mFbd}c*Jc3>olz)7( z2=sjZ(!#2ztEQ&R2oFJBBFTf}DN9KmaJd6$F(Tq0a$SZ}f49^r@@}8dc||6E#mMn) ze)0vu;cdsJ{+l}Z_}N#^XM>wjzANS3agE|e?D5L)}UP+po{@{JM-iS67puD90Z5(nJa98B_|h%MUql~qPH zu4+d<-QtbWjh&_=+{J8Kp;=Y`)}ed^R{1f65XLaPJWmpqID%bMI*uA3lNctfQ|`Ahv~gz5V|Y34P_zsor+QzM4)bNm|} zAPC)fsd}_E<+&}{6lQwq-^HFgk|=kRk_%AbO2Yq1EBV+!Axg7AqL{G-i`@#B=^}`m z`i@h7wu;F2t)Ay#Y%2#BI{?yLRUp%kBPzeV4~#R;U1^yVC^JqWMEBWjPr1oWaFKy* zYsn4G40}V47S!_e*lC2WC4hzvrn7smbkm#3K-U4SpG@)qD!v;Gd}^u$5OSt>9#2in z#q-0=os))51$@y0np1x!+|}VlyE(jPh`)@roLRF+`Qyxv4RcpGV8EMex@0Nq0&{*Z z5IroP3XBsN!N_?d)0#@|{Mo)MDD_|qE6DF~;l;4ID4^49M<17P1iwhc?@Uq;b6kGb zsP#~Y;}Qr1a)`b#D&s`X_K!ZYNJ${~0I1-wGK%ptkc#z+O%l`?Zk(D`#@2*#CcYRM zj8BMmw?WoN%7cKe5q#I&xd?$tOY4|3>cWU0{v$AZaSrB%hFQz>e-3xiaX_MOU z5KcA*%57Ku2Gp{o)G1a65y_hD?R!R;>WImjED`Q$(==R$wLYXvOzB4eSx$<#Ls96v za5A31++^2KJ#^Aw>HvhvRG`+3WJ z{`v4r4u3+8=fJi5U?CmfynZsEwI;R?aM6fP8`wZ7BYg+#5pu@4B7_li3<@Um(oV%z zwa$mT7sgJVbu4;}H<_#O70h1PW#*R}FjVkQ{NXrUZgrqG4Cc9EVawIu!U^6>E{`bx z%|Wg03Kk}-;h!{)w^JFs{6KuJO%DE7YCfR>$?MH4#f~0k>MpJ!nosyS)1`myF7Adw zOiYN&QqPn3yiJe^+hyK~y0tkI8`(!y5NR{XWKyzUofQd`_x(|Bv) zW8GVn>aJ|MzAg^zSgMHmS!r_34fH*+%gCp(xAo{)CObtiD`Jtq%>q$OU^J4I@iFDH zaLavVSNr<5PaB>ffjRYHWu}c-xy;#>X`&sBvYX$yoBox;KjjFmUq>w@`uv?E>g|k1 zx@C`5+53E-nyzZ{B=T#jFc9wiFcFNvZh@G3h^e&0C)7ypzS4aO+)q&lj@P(3%CMlo zs-NX{NHUvGUTz*`SEf`N10r}K?`TbC=`PD97CH!D`gNI&bb>2!J@f}1J<4CZQUa?^ zOEBf(8DlW+mx*wv2$*u1a}dk77Pps!&-4@DfG$Ihr@W(~l~dqF;l=P;>rr8S{P74rMcQZxrJ68>PuGq1%>J{tkATnZjhqx}B#Q%j0 z)Yoaz+`v{eu@TGmNmGy4DUnwon^;^Q1?xmLzrz(~k*7>vCzse!ZUH9exuUt@FvH7vI71 zxVuvFg*>=pFq}FGcCw1)X#|_?bfdakb(ze*+V%TLH^j5B#=%EavmS1J4O#TrQ0>2- zc+be96ds^hE?%e&=(Z9e>)V+;MaJ5sywap6p$0R(aCKBvQm*G2&r@Hn!VQ_GCD#82 zo-hhBym_v;6vqI{)WIQ6Odf9VUi&-(qGe_&C?0e5Y zd|)(?-~OZF{n>|x2NMh`D&m!KgnOQE?nVp#r}HJ(n3aDBPYll zN|WF1R|sbBh*Rc!%ifC1l&2O|t!UzuVIeB}V1&SQE}Bpo?ZMx5M0{+}7`5_7;>nVg zkMx);qe)l$LV;wB=&%Ny@uC$7ajF2RLumRaC^jlw~ikA__}h*9n&x|D6pa(9gquYT7Ti)tVrLLcB!8!5SyQm?quUWB z>#DhIK%`^puJ&8P*FDYvbk8kG^vuR&PTMHM8Q)NKQZVZ8>|*(eZ#ziDz*H;(S|A>z zR;h1Pp?>vS{1(!(m(8@XAyPPBXajTAivI#3H%l9Vnmvb@r^_9-6n`t}K;Ik) zW5nVdc8a<_WPJhs80yV$pS0%^Qtk%TBxe^0VA$b?1XH8=#XLMy5n`7$xp8-@o*)K( zG2mcJ-6Qjh=`tHnn@<1+4Qm!(BZBfF$thb~(+-?VAqAeIkvbNLoWq4>jTmStp|9O8 zkpL`>Tu_?BiHku?mLw&A^%vO(EuqY3;LKpNKx|Y8wFCDXI|Ov6>92XhC7qf)Bg0@Ab&1^6=8D^__FO-;n3;oHQwO;G$=#gLoG{vb!Z4 ztZ}~hVY2twxW;94Ra4P|!89_^?Qses7EX7mt!w0ylfTb}f<-O?_^4)o0Jl-5u(KuN zc2VVLW{F=*G-v2_<5o)hl5}5}aU*f(K8+hiFo?#qd$8^f;7dyMl`0M4XW6}+*Cd|j&7*6wvNlp# zeMU!q=a zRM0_Dj&37$zVgXqT#udrP%IHhP21;#?P$c~2} z_wumpqMyaiwHtL+^t39y<3LC$mRG1!9Rh(8+1r&g_;-ZEk7jFTYQ8utDB%FJB)UAW z1e%1z{*qfc?wOcnEYli3N*Vyv=8&3=rDy2H7{fD8&z%OS68#cBwtGx|3DTk>fcEb1 z(UANEl%UImkB6?Pc;Mf?kUD%Ng5A~yWbe1(#gzf62}cg7Ne4Q?j$rsx`6J7k6?z*6 z=BW)hT2An~JsP8n^%I=5Lkx|*MbngSpN19w3b^180cTJokr?W$ptlRfiE}Z_0MMM_ zUvi#ji2w3&y+*C+_*dC|xiV#NPa3=7UkYroY3*3}%|n zMY_&#wSUw;z+)gjQG4*o7>`f*0lRl1Ohxz2D_a?Ef9fqK2=$z~$`7oh?i=j4`b>%s zj|(LSo9qYVgwMzFQe3A;HqUt-XSb_+(-I*&N5RK0lthX}|KT}ejKq^s@aZLvEtC@ZO4B(q1 zqoz9b{Ou)I1;3YPnWJ~lZ8mtdcAICG)I*x?v)-}`J-2qldA+mvcFWl|$66dS{6|-4cC8Q?9(l$<_ zl~CH#W4z(Tw|PV2GG?A#f}6HjfxS{h@6W=0|FBFDpNZ1Oki@DeCR5 zbIYn6sfFv3*>N!=v*;K9aYrnZHEWohPSjJ;JD5&$j>kP-IO;cY@jqk*XTNbmoIdH* z!6>B#??CpGhF3RwZ%15UWY`ggnW_j{*&eF$(Hc}!{%LzAFZTOY^^57E1@|QoLurF? zQ#J(;6K@SbD{_t_!RHA0&8EYi90K4gcF2wll_@Qs&+ydK!OaH(up zZ0DjC+Ac_5v6@G^p1(-0P!GjXONYPzIax}+Fk@FOmuV*MMgC7>s{N>>G2Lj`oWTgO zC|4c15Z_Kakq=L?zh-$~o9k=WvR<$6_{rYf2`|ErXL7uE*0jXSBl7|B{U~h5k94Ux`Zc7*i5R=)lCdt>G$`O*Eb# z)OwA06YoHV&XY-(5?pzA&a<%cI_71sDN_^ontjTTyA&PK$48=o_A*ev!ku=Js{{lS zi}Q90v%fsx_)!qAxl12QK`=YEHDNAPvPN_q#zP?w>w`)f2BYVIej*#~k@VmA28yd8 zllxV8G0|YTsM7DCm+je<40Ec3dsh<34)x@~;pkgsXvZwRZj8`IQiY%eb%_B~IuU`}=A9D;=~0d`*ry|LgAFF`0i3RxN% zAZbXtL@R&B2Yqd2o0^Uq@ZpXKv$73j;S*I8{G(IJ5QC_;@T0S68eiS3TbUGB3XC}% z^DbX0+e8w!%BFu$jhJr|Y@@@^!D0Tg^^HiN$BGj2Zw8M5^4A=8RGbtkZ1r&MGyIa4 z6U^C(u1a{EVTs^?ZRC*9B_#vg@hk(g&!RwO@z^Jx%Iq;fUte3@VDw;uoHpF#zFJ8F z2>sM^M+LUH ziESrxi{na%aLW09L#hb2gIwavd$=QXTWN0V#)K~FMr&J9y@a?Ryb;#jX0b`d00#n2 z%IG7Sn{V=u+aX-3vIflFBd+OeeG{E~LfNN2Glix>;HI}?*^Q&3#a38^Itq#KvixrG z(1bLxW9}Sii7(2&&UM&wySUAPH)50ikngd7<@?@;V0-)=2PZ1o<y4kov$#S-00|aMkt|&y%PPah&DP zKAhzn(|sz$--Y9Tl)D2NR4PQ`+16*YyDG8*clj3JM8U0j0N>EZNq!}dRw~J}V5?K& zdvWw0oAVyxc4N$J=lGCK4PRQTI$iVhL1FXu;jB(rjdQ4n=rg>I#y=C3Mka5U81dMD zkv;@VzWhMHpho>I6g31h-5V~}B zz`?ezVb(gu7|V>jGRuUUe6|&yGwCkDHw2A@NfJf{%5IYnd;G494eOWeYIos!k!hgT zbu%c}NQwK*k2xhg&K6k+`YkbVSamq_sTy)_Q{}RyrG=V-Verq)|*)b>zNKmGX>_hwil@m7H65sBZIlQr0Dwx zdB)0L!r-oBl79w#yQWGLFwzh6w5OtE%P?Et9$a>qW z>RPvl$XxD?T@0sRpj@E24g(tT1FxqLP~K>LnaTO+V6dc&FPC|p1t@2Dx?=sedVMu~ zZ-!IuCG&l-s6pQ>q$Sq6z?c<;E|rsb#@26?ie&pS4yt_DR(`LjaRM@LhI(c$NbZG{ z7y0R?e#6w?aCm$aVA@{a>56TT%TBm&bf6Qn03dsMDy|ub zqkL-6RPeN10J zED()<+&cVN$2~{kF!<_-(T3BBUFh@5s%~{hJSESg?Eu9ay*aqpC2TMD*Wa2DP-&!! zW!{Q-A3#Mq!`P@jerJ6AdA~hXu zMf`P^?wc}qX82(ALzYcAo><<`?)tT(IfpnA?xI+=Zmx7%oqImo4%&eDW2&{sVlA&X zlA2X9h7j$*^tt{l!X{ zN?ElYRP9-<&*^%8HdbZs3$LGxo1bh%Mhqn;c8)kVok`5L$sK>+q>@3i@NosxZduIw9XAZ=a$wn|GVRc z8WkqOLOK2eyyUcjT`7BxU`XEe_@;tRF?+Xkws1^hV2}PAy~jlvK6`-vp-agIB2O)2 z9kXh0k2NVu-ZW#2=z>w>QtgG}g9PIYzI0@Ha$^`xb!17P&*1VDfRwi>NyTunkq3Mm z3o8z!GE!(Mc-OpP>GF4-T)|O}^1aPf6=(3y;i4qEqM3rcP12z^QtvrCCa+?MX1%HA zl(PxrXP3`D%|(ar->mn#yheN8sSRqV#iHP?4$+dWVw_TcM56Zf;`K;2X{8MQ_E=)L*rB2 z=|wu9_z+s5({}3apezyn_-de@UuG5fjv&h2%$N$DHSGp)%=*$2^Z%Z(?GpyBOL~c1 z;VUczy_CSH67%gP{&M&L)thgP+FIbR1qr1)Guyfcpa*INJ=W|qB0^X;~BaNds)<9FZ0Z;t^0R}x9v=0bNFG;q*qv5{`9(3g>q4-^P}?tG8T{!4#Ex zqfTo&BH5BCYd*r3h-TlXCp(u_*RmY5h!|l>V(aZY&KF$Z9=x9m{|*A_`bfmEGZedi zgvg_Wq?nVb2n{6euff2IGvdh7qFAhD1U3j3$FRsy{{NV&UcSs@jkiU}n~;S*)?O0wdLO6n_6%frw`fhZzflJEn+ zWPgEN;FtH{`8?7sFE95r%0ZZ`1MHQ6gcuJ@u`D>%#k-(A#_~P1hVn4@*sJ&e&W^LWYPV-v?0hJ}$ zNAVv!6^^qITzmjP><=lA8$3C-`@xNn@vRZY1au@`%?Re#Xd!kS;?F<=7|673twf%0 zB&Z}L5Z~aF^SrkO+iJY?aBc2yD8YLn@|+`a3$fk)wiOPAh;PTfc$HFN3F;I3We11L z3?Ym~o=RNrYyFJP&72$1+I~=Gv z&3{nSYafid3X^;LB5p7>_{Zyw2Nbz5`%b@F7(;^lqzgj~z^&wKRI}G@t;oHZJkwu? zQirRP?O_UPxqrEXti2l9(CeGd6U&>B*!LBUltu;ii}XQ&9);ph0H8|qhsy1Uh{^}P zp-sqnqf$-if^AerLa_m&IDgicYQb)!J1!Bjxz-_M?>cVqI`OWendY$+L4=f+ZrQhf zxp^_6{xfy1Ddy5WYM79|{S)IGRXP7!^P_sZ4S3_X-=vswb^KBtz%`}_@o)ep7|9rAIqCWaU&q0t~T!@k7v<0tjOly>{)Hm*h5?G~?7 zPa_M|2#J1?A}=O+Sb(VVWovpy7lS`zH>pRN`+8$MH>u+{nCXhz(9i(>VqxE{TZI*Z zNT8UdX3ZKwz=g?VHrBPu#2ci5NpuYq0rCw*e!r+gM(P~4QtU{V2POqnijb~q?FW)L6upFx3Fi@TzUa9?%u>w`!ZD|ubrC>kY7qy4c&YAwwO zZ8<#qlW5}aj?wN}^uOJzcc-Z6pfOR?bPn=^l{ zdi%7i`Jq@CKXy6;Vq>3aqm{u!EEM%xsM_!?F9#$5>q>1ANK!9i0pd2W}DHy9@djOrQiu0ZIT$|Jnot04S?nsyXQ1$ThN+iV_~B z_ID=x#y2U1pSUYO4(;I~A_(OXld7OfwSMN7NptqG&VWfOeTl+S+kU;*V=LbS0Gv(^ z3&(#VjIt#~2>T8Q%FF=QhRgtZ1&+%gAi-w{`!f0d#_)FVp4nS@CAGd9)4VEax`a;jd%{Zt=jIQ~tSz zvC6|8W*q?=@i+g`wp6vPNBBr*IwcsFXy%RI!tr~PruZ92ecboD7+X23dqlCvb!TG(2S+AKBy(#=b*EC zc+j8Vn5{x4RqQhh>9`yUNcHj5Cc60O#-{7^=P6o&f^wlcBR!gmpcUCM&Ilt)8j7aJ z*!o+eeB`8v-Hrx%T=peASML^eNeMgE?Z_)lwn$nLtN*+=;I{N+4i!P>L<9Rt$Q~k!fGsLk6jvK1Pct709QavTpq?vEz#>zrPDx}C(Vz!52z?NepSwj zSuxGDgv{HrwFx=sk`)RYPGd%E>`8CFsbzPV`n`-dvZ z)SaooOHiK?j5`5ObPN&G3u3M5dn->jJ-L{Cow?0-){1jB{Rv8qIj&*0qQ5NwUt~t$ zp=9};RLLj{QDP-}{x$@vHX8jcCf8E`#Qj@bl5+Z}(+K43)Tg(i-&r&zmB`q3z{rnk z{+tLUBH}BO(k-C(-ROH`uvwAjL_C8M3HB1w2p5Nj{Tjk zL$*#s$ZaSYq;5beB8KQeMrM;X$R4VYCgq2l(+5X}*JSC-*v9sH1F7Gx*~LqI`$TTV zo;k8GAPZirg^;7t{9*)CztEc&AL7f!i*ii$UZcxkZOYga01(98A^?n|fzf=t2NLES zp-g87@o6C|w5%DF!VL_QeU#R3`4wsx(*)C~sF%l-Gi?Y>8O2%`-F8T)4K*o>(mp*) z#6QVJ^SDVtAOZ5hAfDubI+cR#smkZoikU^B(xy(y8=au6LihslX7^{wD0-{?em!7xucs#n z-mV`*O@Fo7?#nKvL?Hh*EH=}5;)A~W=C87d=H^qzyK_ZGO z!5tqTXFn;g`+icD*kb>G$d476g@D)(-tGa=_< zXX!@RvASco3XJl_M=?G=FX1tcr>|IGEx}{}13ZF4gZrqI^@Q&I&`WeTSJ}})h^6C* z!uxt8x6_Nnr<^o+Qq@WLBBAQKpK9hFW(wNkaetn9VlJ2I{bb>J*$utaWJ@#6|mpN6%s8tR4&5dV2$^5I;$y0VnYFKqb z!o-+N2uUfat5t_dgZH=BhuN&ReBAD&?iJh4_9B6c&Uap$wky$ehY616$Nir*b~^)^ zW}T1YwwFEd44YV;50IZb9t=GXxHh^cGQ66?yxtxUt{x|SbPL|c%y{#H?{7aXRO*Bi zy*~`^!-#qb84PvXF{N`MQCa7G5I53#!AEyd$0s0{!#X)LsF}JEI?@g_$gn zA2bQ~kEWW!7@nD5h}xxEIh}0jfX9<7c7=H>`AHk|%Rn6tCL-y6I*O;C3ta|$F&*6m z7M2@FR-g9t2?#4IYEnC%C zudtSDx1bJ25hzV+NY}DB9nY0Wc3mY^e6w4tw}^M|FqUKrZmHgt4yGMFz_ zaeY2(GH6<FB*X!FK|2e(BURgd=)%nIL%XP-=cSlHI@U%#jd_wTy|%Qklq8j)0u9&1MvsIQ)T;SXF#WB%-;ZgRu|pq`;I z69Bkw>$@pmjJ}VvEPiw}{$$?0VedV50!GvsYa#8P{v0)5bUY_e+&o)P%QSFytn!Q!zaU_TVPlr2&U)x-?bJ|9bEN~BQ5O8oZQm~JPEfNKsN zEU|fmk1GAUf7-=Jl15`@tx9}9s}{%a(&O*!@;W+^7e4RLwCky6nI-m{kdl+U&*hd> z@Jf|UpGP`h_85#t5@=|77;Ls<;^PD6%hY;B2}#(s-H!^If$??quoGQog?X{cyWgW~ z1S?343oM25awzPA`1>GSQOz%sHTs6*&=uw#Pd{n0d;dsp9<1S^VqnDOLz2;@!%bVe zgeEoH%!O2_?D=Xu$pcwQ@RN*G!EyNZ(weHfH0V>ZhlH=`pap2b47f}Kc9By_KVVB( zS{Oq*Ks+ax4xtoJ1w%_qtGjIbIix@;xzs!3i%~GHq^Uyxw)LOGX&!}1o_lQy-djBG z-Iw!LV~e7$olg)~o+mRW*}rWWl+S z{~F!58w{z{_IIrakE!4IjWm(xr2vJXhHouoVi8U?B-82!nJz@XU&yX6^1ObsNKo&ycjr}{WB3E(pH9jv9)8*$toLD ziv(BR2`j>E50jlAq(*b-sj;2#Ct$w%vuHmu5Mw=Z<=X0d$?3<_&_&LrmJD9(t#RvHTU@MGZ?T zggGb9)}MHjmJ`ZwFtD)6xpN8=)H60mJs$sCOdyyoEwfLV>%SCO6`{O~CEc^F89sko zSrY1bmKCGre|$0L>97?jc+_GNNOg&V}{GnSC3$Lp3r9r;W7Ao?nvi$ zl)9{VtCdY-3{X0U)Kqfjgz;!bY{5lM{|4>cd^g1(P#yLa!@gRQ0~b9=mSOeA8+%$% z{zH@gu`I0#>9;Y3ft`<+%JQtI`hUh_Fy~)Wx_$fR2zuLRnEmYlm?kcOedj`$QBGp} zGoLv=Jy^w{jeqsKJZ^_EjL}uJI4GNYqF@|s#h%deQ)|8Bkfx=BSeXG9gYIA6SQXY{ zM=uTY?#E^Ahi$8}%1UKeGk0{3cd(@slc!n%Sbl;6(~~PYK@SaXm8iQq?sv>1QHe{D zoa#T;cP3Wk+CMz@kQxsRpY41uw0DWmXNh0FjzaVr*^n@vWvVAS z6e~7$x5bP;&?~xb*$wuNJSA~#Db-zfHsMFm)1UH~;a9KLI8f)s=tr52bnu8BhURX;=a2 zj8dZiQ0Rwp3gq)Ug?_Zu;+!Hhe77m_%4dDqd*4OQ`zDR&^bFmDIDaLu9f|Ak-Pk&C z=I0BnE3B$0k;N1XBZt~H3egujIY2L9**JZ!>sdvT7!paypeSIu)7+*cqfi~5yWSg+==U*pVMD^Bc_qcg*C=9+x*KNcDlM=9RsLMV z0qpB77SsN8HlKfv`7AI*jbdicSejyH1r8r#Z)qEqQcmTbX6+HBmH?4*F_wU@f-a42 z7zkkrvvF{=n&l(j><^MCUUTA1)t|iKUJHx}nj~9%SH2E3aO{p1gceBp- z;8ms}8ve#hHMC~Ju5YW)dc1>`t36N6wU4#^ zaVxxlegW^trSmG0#L zY5Qm(KG_^nQ}QgrkWf@qRM zj3FaJL{SV8zxlTAnVwpE8CzG zFKczPG#<_Fl(kUZ?X-#)bR&lAN29W^nH5?(oU8fyzLUJ}7+H`>@`@NERV4#dlMyy) zO0~kaDe&#|!1+^@8DCJI?RJ!Qqq?{&MeDooDs8WNfK6SWt*qF}fWgs>40ZRlNZ@r$ z9%WesxF8sERzDNs1&mOa|D%?G8vN&rf}16iOn}yaW7c$JG0!Q~$}$p6jKavXbg%VV z@@`r>;L7X7FODZcYswpu7Y2Y-3Tq1MF36AMBfy^XZ1P#%x98A_SZV2U&f*B_j?tkM zVD?I3Ow6sZYkd;hNP8Z{I?cj-(p#Ai`N36ma^Px=$ObLj#Z*0QSEj|Af$;24vw{FU zl5we|5v9ViU=l{nMdri?IKXj7tb-N|37zfSVor+rj;%H}S9kVBW%pDxEc7f5U9G=BCjfZ% zckCRzLN?$*X%8#nJw*YeG;o8qJD9z%13ozJgAGx9_@HPE^fG zZa7tD?=lCI)j5gx+j`~Q%TA6O?V(+fu8XBr#hg?(uC|ueoFLE1tq{|8M!djftV3Dv zP1SWpq$ptzt@omUH~zKW>3#nE8dX>J=0P0~K}WWLtK+&|p=|!?z_LF7Jc~>0B)LA?)Zl6UA1mZHzuu64$}v{7K$_PS zAP2aSGAa2t^j0?ymS0M3ehmoAWt(Ngt<=5&IH`)q6*UF^~1I@@1;(JW$bu_FhZe zogNPgYk7ERq;HEI`s+4??q+yfiePg#{;iy1z<)w{D3F4H!G=!e9-DjL%suY}Yg27W z49hHw6_Cv7#JznKaiHO`p*kJgN_q70A~C}{%_vxqR(qynb0#HV$?ChahDkGI$N?Mk zS{ha$Re7)N+l_N`&2KA}o!fRIlvQt^MeQM70tD#7|4Viw!iTO~3I~rR4#1zoO;G%a zN(xby30@YGC4;Lj;7GSaFQl0@$kU_JoECyeFHu27*Slw$8bJ2THWSZ&`6{sW*g)r1 zYg9MMrXS9^>p>v?M0i>FyMeYozXIAS*B63A_a1t+bTZ8DRjnn~)!)gxD~8(=wMsvAn4f&nLcpoa#zc@3QH?jDpdm1V(*Z>f4IM)GI zqHioapi*m;kv=sNJbO<+@E5XWVYYwO^d^?}I)`Sj@bWJl={?;)QE=#|{&ujM0tawU z?WO%4C%Rhk==tc$Rhid~{6VT4h`X2QlT7tl7Q!RQycIE}NZd*C633~44*MFDHB&3OA0rV>1S{?!B*iM;OGfKJ%=oO$ zNe&!}H8;*oAfx50p(u$(C{$OXAHZb!NJX3!u%?FoMYIhOTOM`~Y%T&#=~sGjwTq#` zy*Rxy=ljI@*txJfsBYc4_TYFK85)Qci154Q1fBR(X^5{%py+FXOdSpH!=5uCCEz{z zg7s?5Our3QUW6p^{{bt-7$C4*1+l+>ySAy-{l^B7uI%ax0x#42j!1yAu^@Vu84g#N zx)AH0isfCerrH+F0R64!*wN%=?5!E^-a5krpM$t8k`&wQ4ElHa4UNF#jc~P_@1vl! zb)`lawYs$-+mYB>8B;9DZd{!CNL0F^Z@Cs*tsZqPLF8B89_1~>gp0^!nfRyR2vTKzwrLmEx1RZ}XoGFQ{-MmnB4G^^G4C80XT?l%lg!XD7iXHKdPHNHW(?7CrikuDu@7=L9=x=7#NXyBV%--TqVSb7fUgZ`+ECsbddPB9k5{&Dhm6@@G1bm18B%g7H`> zc{4=N=%3;k&WxH|6#C!tBYxTIZYt>O)i+6Tf2xTptGnKFU+37Cx)(ZtX{z9!T@H^3 z(WIJ)wc+GHbuItVDd45kC&oiLr3-U|BzGcw|IFBqRom5#^Z59f-};_)9~*fupB6i; zp7SfO3mwwe5mPI6X`uZhv2J$!q6+R@Oy-axpH*|qGhpeq7j0MdUB4d1kQplTBna`lVK;ze*&+& zQ7cyoHsic6nHNZTuJD-FiN{9rJhyvcgb3J=myK#fb-zhFN31;emw2DVRX*=MIOTdk zm+KQfuS=K4?4@W!a0`$90lW&R{K8W`roYB+CdMdpqr?e)&>#`;dV!#J`Nz<7CI=!f z>x>^_MP((E&ztiH5d0spY27OEt}Xc~SDt|+K?NjyGZZ$JG-#0P;wte0)77CviJ2zrRmTb{b0{f0>K*4Nj(2ukgqP zvb=48aaxDFA3b{Nunw<7Y%?{XPBN~@3-d(shK4a9mRmK?WRI5GE7#Gj;nXmu1Wdw6 z{t#$rt5>$=z97Z+tP<+8Gy7cYWsK>b@p#5&e0_aNd>oLbE#=c=yjtAPN55ida&_Jv zN>$H~aGk|wK*PY;ztHc3C^WBi+2&_93`mlj;;$AYp_vf~Fjtrd@Q z8~)~2aS_C~`&!Ceb**#g^&z$8y-i+l7@usY)3n+8iw=v)FoVBtXCJ`SzX6=Ham31`3@_U_cHg+0un%*3+Fq5gOE{ z+io}xSLSe=gj{KHF_OmtB7yTlJSXNLjQAFmSX%kj^`j47ATthmk<+gkzFzfpteylg z8?tz;c-d2^ix062KcpQ%bZBS#7iQuVa49w)UU3zLYQjOG(Q+}gWEKLwyS|vM|S#1$r6MI4b^I!rjJVp7Gy+@cIQpx6OX2`vKwH z^@=Fc^q=LZ4(i=cAK5(1Yswo8Qz0zNr-@)_)Fkx8>RddSvYl6gnP=YnNfs|4H*lND zZqxq{3CMEW_OL|%XtCK?9DjYk?x>~A$$|=y`KO*k_2Qe_u%03@bPe9ji5oS+Ey<`H z3ibXy2FEVfs&PIN%#q&u>yRE%^T8F;Z%m{UcdsBV_UUTiMKSWBsDx0{yCvb}V=`9V z_~Pq_j>j_%@2mca;Zs`YFZ#NyVMR`yYri>#XQbus-Z{QH*CvDY0w?=HHGg&v?W}yY ziPXeKkBj_gi&an5rka+v4U1A6@+G7fg<~~_kg7(Td$s+c(%hibszu?DiD^Dun_6CJ zBk$Af92hxnc&-B){{zA~24(zFO$RPsp6!t5fhFPJxgTbH%U_4;2$JZ6Ed)Z*5UaW@vdAJ0$`EFP0)(3}NlTQ5W)1G)DqT zZi@HjZDHQa;m0~RU)x)b`t6HfcC3f-y=3q_O?F%!T`rm6R&D%?HKA{r=E0C4?svpE z>U7`TrXyNkbk(}et&KJ$VRaSLr~@?Bj-OVMT@IXxl=G?7*Nu zuBvueOM)W>`pOnmlk$7m(Lr&SgV?LF-^8tJ|m{_d!a`l{y}`X)+nyY|GHhu|46;*FoJJsR^4&atsP4t zP8?Scj&cv5TJK)GC*%)xIG0uD;8gE%f7>r{GIZ_F3UDxY-5nCPA>$W#PGlPgU~B1h zOoUl=_rSz%yD(tL5+Sdnqvc~jPQ4bzK3|nubd;pbk_qQnWwTCppNS^T@Zl4+%6IaW zn8v-B)L*By!d*w#!f8T2#%;pX?nTxRfb4_Koa~<_nZQ z65qRwk<{Yvh&v^W^m)Ff?s;B0WEcqw&?(WwRW~YCxA>eFs`cDpBXpDi`MRE@uM)5QMlxDSKlEK9CiRVoSm$5q634K=B@D6;Bg2`kuNAEf1#jS$y zrS8AP!MSll1sI*O*XS&k_9*CKo?)$MNG30~Vdgwxufl^D!qAD{wsD%U& z3&C;CP)Ucn#hXP#05M}A05a6Go4~vU`i(IgWoWc~04GvYg#1L7T&NbDHt+3AO(u z@YN3V_)X+V_Vd-vaG`H^9g5@}>mp!&z^WTPYFmZrx;uZZnI%eiqi%=hzpjd><{vt1 zJ?gZ&wH1tcUIwalKx!tM_A}Wa>sVPNf5dMMl(O)Macc{%Evcgb>F22|Y-o;Gh6p zMpRFr37x5Vi1Ogci}!YxGDkswN6_~aK5J)K_>GltDO)!%^2VFm=&rmqfbF|7GjZr= zzm)~_f|?%OYLrF|RycG#>*O?BNAb^bs~SAIEMH~YS7e=Yg21|jADIGgwXFbM1}4{u zPGnZ)n8)Ylg1K;TmElAJ6d1I|6`7y~LK${0>+%uUuQ7b$xWIo}hrnzSRh$e#``({J zqEyueyZ8$G(0TwT?n$A|@W$5J&M5{fhA+T4|K@iq;^;5m%an-}1VrEWOSP(XXYf`Z z063lgPh5|Vov2Yz?3#WX<)uHD_r_%yE#8BEr&yWK3h}!xS;pUG8-){-KJ5AD6{u*3ghf+`xzK=pr45Q! z`YB9f0xm@kq@~ztPuXY`GnqVb+}OWk!ttimV&hYn;pLu^O8jIT(!9r2Bhs8Q_dJ`G zl93-|m2snt!NwJr-)F0t)BUh)9r10o-uUz~$}V441$~w@5ql&>07g63c{fGBJDAkP zXN&r5&WOv`xd~g}Z`Ver!5XIfp?>0LhYxKN73Qjj6yo!i}P4(Zg(a~Qk9 z^&!fp^PEza=XyDox`#0!dV9~?f18Az$dCQSHT8{k_eX4&BN-drjx3us3@C-Z zwUE-=<+%P7s#C_(o5J$^Ikh}{HU}Wgsi-;ALEq0-iUW8U}?E_R$^?4 zk-2d(2y$w-5NU@d^ki;s5@1JFm%MJTy(um0w-&A?tdb#hW9Me&6xd#uzn_-Am#%YLrJ+A9Zs?+L{8&? z4yfXNscHgK^n#38T0ZFABQ>llW~u;d=v;#pn-h~E03Usvdzh!&d`usDd8=La*QLeA zx5VLbxEaX2`*={oNzo4-I?#&yoYTTdA>4$q$>zkZ^;-;~e-GV$&vrB2mmfOi)v0Sk zNu}?CUI1Mh-4-6WM{d*IZ&|mHI}?XQ$nWgLD}I&BD|sJ*y-^GCcr~u^gYD8hV00k3MS8aitNUg-i)# z>NR)Fk=Lzqsm*JR$`nPoe4gi>1GCgKUp~|v&1eMgULUx%)s}{BL3kcph>K(;2y9)T zaSxNM+1P5b;?p%fjRbx%CinQeND#@s)f#J;RY=MLGdWS(~xiFYCQrABHe47>kTE8GxDJm6{BquX}+fg!9s;bvSD zw(hvZEW{K$O*nk6E&Oa<4FecwT0E077~gtSZy&Af&Qxv>TS#LXpA8B*l8VBHkw7m} z5{Uz{t($#c+-~uBg7=S3j6a%J7RH}H!JMc_O7BIFW>3SymOVRX)T+Qp-FEg2Ju!+O z>JOE+!lPYz$?Pz~50#gd6r_ZobZ@WSA-iKGkPut9PV*q1e0Fs_;3GDRee6ocmgM!f zBR+osvx;nW@@(o;)fKZBaUdRMxMK!9*<84?m4-`xB|Q&-kL21ghtNJO=WwyOLX1BHbh;Br<> zY)NlI=xLjzdT;3Yn>vQw+303&)a~aVjPTshBR2xeeybaG;X+lw0kGMF3Pi}PLrWsA zM=9U-+;rUGR9D2Zzl>UX)Rn-`)CvSYzHjW+q(v7fPY;$QkobQ@BDgbNy0XghpjYmA z!>)LLpm1uLcUu(obbOM1@!*)xyn9FS-#Bto%88EsaVm=~!&^Ty7qnl9^Mr+#*ZTPz zpYK#|U1y#D)Tb7ot}_yWlX zOY}%8vcUo2m8#2VO$5yZqLlu&$J&5_kr9Ni#G}ObP{ShUH#(z2ahxxj zf);EC3Ba zU&1QW^#p%_2q#sK7`|fG@I% z1hO}oX7WJVS@T8bb~TLrMB!{o?Zbn_7Od7`1$nN{h$)Bgd3j$szdaW_fVRhY4l zR5Qwv;ipu`-1GZ>V^;B$R2ubId#yV<7PcrSpKw~{lMVcVa^|B2ysZcY&v^y5Ov7I# zQlx7OZrmpeX2IUbDHY$wrN;6KTROUDwb(GL7nnRml|1;mm7?d zA;&?b1^(A1HbI7rwFc$BK9g_u&i!z?`rk-e#Av1;wBvLpqBcVN$QcPr|3*%ETG}rQ z5?Yy(MdS(;FT!g*b_Ay}qH_V?9@Gs4vDRS@P#jEAB~PmfN$<{Yx)gdWGnm&y2kvsh z+mT#`9LC*bpF*c1oGtmPO4Ab&-?1FY zNR4QZe_iKU4~f>*elYVMHcWPX8@I_1De%nR>;7SjA=_?DMD+~Qj5&?|0~#;FYod-4 z;4CDFGV82W4ToK6KiSKVENLb`h*MhF&mApN^I|?lPbQqH)Ry@m?Y0`&eX}cfSD&0j z8aa0QA#GTjCiGUYm>h4C)S~yx7{fE&T4Au82y9r?dx|iJ7Pq->+u)3|&CAoU^>#%$ z6H9D&u$#W{%s*5>SfyriE|!N8H#&rc=63R3{FVfHaQh4D2m79j@`tC9D)DeKay;h# z3{=q7MTrK)78!hXU~^RXx#T)Qtl=s~K7@^?kBLc&It|@nv+ANoMs6uXLw{*(vI;^2 zV<(IzrfyI-JY)Zc25LT&&5TCyk5GErNIkJe>eC=>Nh!f8LDd#&WGoTjcmJY0Opkzi zxZDI+H^z5hY<;m;!KFwO>WRl|qCMnLbXed+5TG7Si?x1}piE>T$$J3vc9jke08VtSotUD%P<|4&Z)g3??}rx^+y~w+A?(M zkg>%#dWGO`FFf&%Qxv46(dF?7=8=KiTs6EcA*5CwDOWxDy+B!`6vp=alF`^7!t$Yj@PQG~=6Olb< z^%I5J#^ zlds1=T!`e!K|w*PN!ro;=^3ye6VO(K1din}(+r;Rbs$&L6YV(?4;8L3+Wd0VNIHtG zu2H!w=x6w^otV%k+)U8CR}ssgK(LRxE36Y(Q@MCw=I1Txcx#ocCmOd)QfxeEB@MY` zPV9^AHhCe{r^$NqKF`N`S_`q&03`n{L&D$ZTdwl1?nV@CNmAzVg0P2L@)DQyE4g`D zVAGi-g#|JXl%!sUHkdzW@1vw89Ab3-I|Rrb0omUz(Mm(l3c{h5*RG` zv(S>qwgf96nnJ2Mj;1xE0w-$4PeNDb+;$iGOj%JBXt@MVUiQ^sUL|p7peeUga-}u^ zeiIvjL!q@3^ku-%tLDpHYl_lf@z$>U^_ZL+T`ohx&!gu=#q?pahgdG=WJz$9 z{GYiPj+sRd8JJK+Pf4GQ5Y`bhN{WF0`fAGO*|;RWSu&GbWF;=gr70r(MS6L`=iP3G zcx6l`Oo{U1Wzw0z3)dgcqHM*UQ=WG#_-b;!6Z#bIrkYGQ&N2Nw+Z*|hiGX_K~Js=X=V`4 zg7|o-+qCxW8XPCpX5@@ke0^^TPi|pu+Q2e5v3{fQo7Jf_eyxQ(J8rz;v*DSsZmi3F9o00Kk zS|$&G$)^1Pd=bjQ`^HExD*H{d=Wu%(Bn(pvP&I|L?{yy&~{ASfRCYxxz}y! zQ-Kyn8t`cr%6K+In4}V|de!loLifn6i7zsq2ouo=kZV3KJXhuWn$gq z-iBF(&1-IA{QU5Y1Vn(ZG3-6w%Q8J?-rxlIY-$ynFQ8<|xc+HD%bLd^NA+{De#rfB zdnheQmg!`yGVq#gG%(`kXbpnX`Nf#`{<2Y{)167JRwG8p6?N$sBhe+lg@)4GAHg+9 z^At(7TT5rbi;Igppur=ytf~r6qy1{5)fnhV(CG4H`{#N22OG!D0Y$rDKw1-zic+2o zG(EW1Qa}IHWHintZjbHbThLH?)!wFSdP&486FFx37GDKIUed z2~qz$7Ng1SBD{}aQzQ8P9Kidr;UjJD%XG%ZjcT0>U6#_d0(B6Pyi~Y4w|KZ9yVYWY z>w2{wlDtyWJ0Ef%za{)b`LH8V=E#_h_y&U5;8|KQr~!^A+6-dGZ{fQAgy7?4MBtx^ z;xWM2Y$hi<0|)R^Ff?37p;R_A^dB9H$b0+Wl?<6Y{%-?8fCx!k0h9!2Mgc6#erWPu zPk9S~CTaT){^5Fq!C73^#a#|Dw)OZwYgFoSL~YK-cS07F&t8m;H~R(ABMrwdn1_US zYH>SoCE4W_*x|zitCg8ydA-%&rxH>y4YxD;+JTW`3n@I(;ixibRSPPh>t{-{+x+JK zhh+U9$J%zr3&-?rM3)OtH=l=P0I|2Qd z3dtz0j)b&#DQ{8OEdT5k!DzI!v;#ojmi_1B%0c)0wXnWE;c~5h>_0+e_v*EZ4)AHU zFD*A}a2O&&6au`Wv4&upiNMQR+r*S%m*>bVFRoGPJ&HDc-yzx)2;}|EnaS*&zEX62 zxmoMMej?}SC41xgiO7gN$wV%C>ksEQ8cM0u@YrHBHGj8S*MY$kYu+jsyGU{Jc@%wU zYe9nz{|ImUE>2s?y(0)#bIbp}l@HEp-_zWT{{4KhV>DkR*%lpssxx&FJ*#-rL%%$Bq>8%2paBIW63CszOaZDqC7!)cJ@pHJ;&;0#EG5C8Mb zv~GJ!V-dGg?+zQs@`Y+Po=D-Pn$l{P8Ua>*OcdE(IWF22DHr1f@|(wK6*d9dRcGL@q@81Nx8;}4ai zq$$tTnJBkgqKji30f&+wCw_bZJ6(4K>wwDqB*jBA$I9Qf%y!+!F&ihB0T9Wi-bT>W zxqe?Bc)adNs;a6~G&KF?%B6ModqSN+DFLzaG5rfZk1LdM(Fma*-pA`PM^A)Vjt50i zR%hJ5{*vHtx?h1flEtC`s@3#ndnl6|l(HiL!VyBelm)kYnFB^RAT~WyeW^vY%vf>U z_evYrG%MBfwQY-zB9V}k!kKwH0a-iPYL^YW&A*a49_e)Z?d!l#Ll;zI_t1i_BY#%f zmdz#Frx}_vLXz8uUvGOV@VOCtcbu|yN}nmCm?1XzmVSS-9yLPZ&S09;Sp0XYNS;pX zOaA*ozQ}PtGA0J$E}heXg#YyrRR?H|BVO=1j2FM{y77@etUqKC5Fq42(`#*HQIY2^ zO8EChP@s;m{K6Poax4*0arKI8m_5`&_ATAFu%Es{@K_B(cO$xlU2wE#LEIFRfvKBZ z9t9dR7iZIQa+6)zMbG8z0Mz)sh-E$AI!oRZMyyEv&iY)sLu#G!AH{qWGKf{_VeNxs zv$(%!^k+=k5VQ+e<_^q7YX)7U9ub7$LVoJD+VTNSm!V55J|LJg>CoboniGll?&;o8 zw`x3BZKWng<)`ta;&nztFihPY*MDIV`Co{pvw6Y@KXxIhxlFmJA_STLZJBg)Ge><3 ztUt;#jt&x24Lm&&+g;Yy50v_sc6{&=+}22i9RNYm5W33h;=;L}yWbj8G<#_-(7cDj zDv}C4vr@J>bZATxZ6P?PvRlv>!PAWO2XnR41INXQcP|rO_HAMzXvrD+Ee3dMj5y-_ z3OxA=boPZ?m>w2#DR_=80+ZmZ{$xBq{q~Ae>%Ru1HeK(d)0k}k$_pgvIASNlxsOI+ zhaaoa9nwY&bZ5jjVZmf`Iv9;2@e&~Bc%GLBe0be-VNRsb3j?iu;}a8*fTIWzBISSI zrL3+uy(VOA-p z0yClUu<6bu*%KZ-wJsi29+!wOK1go3y!SeJC-ciBYi-N>YPY$#^;tO&<^P2|@#&FvQ1|a5^eIsytNt*yfRk6rgbl_@XWw zcf`5Ou?Y@o?B`vA^DSmi35GyX_TPqo`XuO?^+!A~jA(k^R-+p`3}wx^1ERrR{9Ax@ zaZWm;E+78V`%0n1j;-^2>9L=0X#Xp0gtg}`aZkDJ{21_cJJ+bc=TcOj2kng}X$7(Y z{aNSaCv!}Dt$zmR>y1Zl3&s7SzF$uKZWC(nZ(tcvoh}HL-gZRqr`ityPiupB1|@_<6~0X`7T9cQ|L23j*aqIyc|+@ND~_6@?*`X(SbDd8VcP!$ zbG8`IR=+kT9jevR4}%N@w!5R6IBU6-W5?$_ejv?06l+y|jWMK6N{H1YV;>~iNP*Ae z1FOB@199|{82R5B=J8YqIFR2Y3RH^P{>;t0C~PH7Y!(qW^#@m}Mo*kyfnTX{v9I4K zsbAPjYlk8VB4-B}ir;q+9yb2B?K)qJH!AI%pppyKNnZIMe9zmSpz&4*f2hlM>B}(v zv%xD^>RykYKsc=U+HCj1K>)L&Jh+9t%<(jevGgMv6@4@H1>DzQ`9hodJ}3Zu78(6d zyl+qs$w#~-2@$e{z`y$Tuu0D#mo|bYk!1%uPyY>v(}S7y`yl$u@15w(CqI|s;-7`x zL)Q<(k$}c5rJiC5bHI7$z25vhUqXiZlX;wYte`|hNhc-TQ|>aP*^w7{E^;r8ITaM( zJdh*Kkh+eWk99g6F=9GJD|R7%Gob0m?OcXd(s1yqZ!jNB{W8@01z{sEfZ-{yj!yf7 zA`7ie>)eo#1y*VSdi{^OS$?j4D-Mpi6{(xdlQleB0h+8n2$jGd@E{m(7`KiPtRMw$ z*NWQNaBTgzkMXriN+Q3zrMlGEz-nhSI<$!4C5=di23xn~Y}US?XpVK)YtM>GBl}n8#FBNHaDb(E=x83ngljDes~+Qb ziY%WuN~TD&#GvotSYPx;nNeAmY9)#N)2kvxH!LBsY+vT_1VsQT4s|@MOI0DFpYQXQ z`}ONdA9Bn?5o2{b#M9GTFdy0J8PC%Bt&%kDi;6Zn7eRzSH*hK83fGWWqHu z^Z3TYB_&%_lomJ6PcId=>oyE@Xcyavz~PKGPw!%Q zO`2*zCXvx;9+c+S`glzim~K8KMI$sDQBoHK{yfPzqs9dQ_IA8DGgO z6YcllL6x1pf4SBibL6l5BauE@%KY`NN74jLNRHr1=?_UQI9Y_AA6eSB&c>imVCAv3 zgGM82RoR}#=rKteH3tE{8p|Xi2F=K>cTUWwp3hRzD>XmCwPd{8eWlhZ!nFPVRv;lm z3TO5m@TuWA$BPzcnABVuqQX3?*b|>{2IW)Yh*8_5sePN^Uji7PsE-B*76%`?lIjF0 z(7(%)7ZBlmJkySa5d!s}G>_Hu*;~Ha^itm88{^((_aTacl_Z2`Hp8LF&o{-t5&%g; zJ7s)(KyUA6dJ;nLjmhyPWlsML#YIO=r&nIpF>1vQFwmV>cil(s34fuMXQSPVc9>2# zqH}Cv)=4OPx==LuC%)JllAPH6n16W@&M75W{qTXvGGASDc3#_v#|W)4xBQ8Q5UWGbXOsO4ad!|Dgcle>YcjFwem##Ha`1mzSck$+%t zc-`n^ldylm{b3{ed&0lxZR62-;-^ar$?BzN<<0alt%n4^=2cI(A8h9h#wZR7ms?z; zmW?0?i8oCRdM_3D!C^^~miMJJR=ZG;)r(7m__Iw!r4mP1 zv=iy)(cAGx*6V-K@PEhpg{p@%#nE3RGJr(0V^S27m7B1J4F2_`DEGx9r*1}VSq6Hx z4DqsPYlp0AyX59d7sXS!yjZbpnU{D-JCbLISWh_=fQ;kxP zgPuhI;f}L*+jKrlN4Og-wjWP_=IWB8g_eWMN7H%1FdD>6w|I&_lk#7v=t~tlKPa4U zRt1&l9yf|3;QHBJnYlYUnAS(DP1Xxq8Fe6v^K>r5JG8ZTt+`?4l}Rtjf7hw14CpC{ z*p|T!T` zI@ks-ezs9W2zueomv-Ct9bfj4#hn5lAD`2s1Vq{C-hxLj8;z~a_iwKD&@*XXc-D1e z{6Q*|3C6z>a@iAc$C^z7;2x(&BJ?y~A84{3VZvQ8@{Tuv%GIzs1{Fk}c?lN(z>3cP zkVo$-T-_8DZ?whd#^^ZHgVfd03cka1)mduE41k4|M8c+tSll8$)AQ8PW3~H&@}Z3B z-x3mIR!kU*54m(mjN@=(0G#N;TDf8<2pSo{qx_|ky_mN3eQm|M??s$j5uA$vz*2E9 zz)>Zu7X3E(#V-lc!CpPm9&NS9ZC1dPay^HrrXpdsAiI3~#MJ0eP(v`&b=ygSKiik` zV}^hGj=H4kFDS+qIP27JpDJ~_L=i!fIM;t@jjMD@30RDAhR&PWbL8szQ-V^1=QJie zYoGy4f~4B245*hyW_@D}nZuh8)wyVFbvs}67%>M|BgTGPB)dvxCev^kp?d$$)>=%B z`~j*t0^_>de)vn%#~nE*jkxiH{wKWD^&7=oOO5c2p{u4SBlID`xD+G!Q@_zF%xTtg zba5$O&0?lLI3sZ8Et?%Hg86D+9qUq2bAa~5nfc?2hLb7u8;?HvG`GW!|NpZ9e81V+ zaLxx|C9aFkMsawM$J@s2Q=)`e$~Bv6+n}3WTsU==!(x2G&baD#TQb#*&<9nl3e; zT3z{%Oa%YoFjM|nui8V3d!0dARsyB{`}c2ia|szgr|0V}jYdy&M~xef0k{OZ2c9 zj{Xcu!WQG+iE0U+}H)tdu(4!TaZ11TjCg`|c6 z@cVz*dI!fkqo!NDQDZx4Y}-1qZM%)rrcq;?Cu|y{v2DAtjmCBw-zV?;-TUKTaQ4~H z-g{=&TC-+kK(jZl<~q2Pbm7(h>*?B#=e#wZ+#sJ0P?#DUf5-HBJl;SID0g!vaeRZW zT`)kkMeq&18E5(| z6$u}W;c%gp{aX{+S_TG^B@3&M<@(c8DZRY3e{5vQCLl&GWI?}V_9c!7xt1O-$X<|m5rY(A_1qVYV5b3sOA59waan$$~BUa>< z*P(eA=bJ&(*Bsuf(Jp|#xO_KkYT61R3@U-|bQZeo!^9KvaCT?8(j$+net#^h<+J!P zzeKvZ4)U- zxnzG)$zAEhKPjxly?XN(c_KwT-$0sd2C0`ba}^Dk0FIlOG$5Ttm~xAeM1H_JTC6Z( zP6msnxzbGA@Fc^ZDxN-zaG`@KwXF&6e)YxjPbxb)U&a@WR!zBo@aWf{Ky>9wj1o6Y zj4+B$W*NJ_FAKi?0_Saky0xFfL68YF$^-YEZ{DByo#B8m*#-3HT;9wmn@?m4ZF)Mk zU4Gultw~w`nJD9FF}2UR7U6 z_yxpovGVe`SF;b!H{>Xl<7{6PCCYvP(C+LlJ)ZoQY|?j$&0H$-kTM1vnY8aPt6Aq% zrLOGR@~nI!4QwqL$`%EEEZomgBsQc3~pYktm42la|;|wBy52dF40YpqcYl{Nm^xneMW zh`8A4s;Hj_y7b;X(SSMeS(8(SojyYEv{+85?ZBwESH1;&IOvFslq$Qpk($C;V#@Nz z9Y(|-@yG9UzZR={ZP#1%#_NsyJXc&L>KGfVEPhudW`|$f;z1hW%`3dVfXO{|EoEeL ze(_o$au;>HaT<(ZEr;DP)cOQ1sdZj1@8U^@NS8fXyKdXNadWaWy42_F$99UY-`>Xw z)DZXuG7e#3LlksI&JxSqb9Lv(<>2v9=Uitd6Iix)4*B$pxuv?uS*uDdnXbU zQu&XxGT-Y_q}79w+WRSIvLV+HSqq1%jVe!8Xc`ZLcsS)to$0}_ujh+&)0ZVl72zM+ z$}aXUVWfIaNR-*Lt&PPf?Z?Jq>sKq;oEb9qP(t=r_{JW1(Q!J4A<!B|ZN>xkuKT zKfFg$JNtZ+nKxG5%Q+BizMG+QKSiA*fKxoYcYB_pNv(^V=<=yD*`gGsP`o z=6?H5a+uO)?W8BV2}KSadO7W8Qr9MYaK|{Z{qwlMd7mV%VbB}k7W>I#ChK~LB6ibr<0-Sr zZ1{_hPsc?bVZ|{~J;V=ja@GKJR;hfp00^);2b@2i$TUvP2cEH?b)vmr;LE4IAa{)) zslzd>+dk%((e3BWr-f2T$KXw-MNsEyF!*1CT z0fxshmHh_UG;ox`^fzPhu18H+Sc?tntUpihqqC_RCJx~3LaW3fTy4atQ!= z2Ja*kWIZp{SSFEjsa{w$+k zTVu7s7VH9o!i%@8;cCR(#cF(Att3X?ITA7QhMo7RQay;3wCPg;QyU=n>jcR_!HrOi zSm8lflG`4v1`OcyuGQP(Y8n5ai=bUCm|nsd;y$zjlgJU+zy0PhVWJOgPh@=3H`lrQ z#aXN2m<&Zp%Zm7Ru#pnU(!qOl&+UibY6IZ=g^(#t0Jl_ax5S>9n3&zx=0*Chj$p@r z2asKM69mtTL@+27>*97mvY2E@34ZC99I9S_jk|Q+KFyceMMP#Q@+ZH-SLH8sQt_Ht z^~MZCJtp|bR+Z-?JqbK@se!Fz<2VxNo*Gx~V_S>-dGf)x-=~?BO;zf@74QQd|9@b9qHa{$R$~H} zHwqO!S|?93WozeoFhie?N*0_dk!xxnUiZU-~*jr3h5i%lDJqY9ASN78cT(cL) ztZ)JIm@;#Tt7wWA2^u4kQ)0xL+Hkw4;m;;U3XhN^$^W3UIAjewy!e3IN8N+=@o|&g z|IuHteGq%WAn^EebZB97aHb(@eCOVqKUIpD%V)i|d%O?2AQrdZe7Os6-r;N(KjZ;K_X2=Ji@dPFK_I+% zays4qc3(uoU_y-+{RGaBfi2%K4=G387cx<0T}bVW=v%5X+}Q3u@t;u0u#F&ssT;=4 zvDCarm7_FMQ0Zm*DoRV`wXtwrM~EE0_VsZJvJ~+s7P^KKWu^sQ%=-$fDD!>Ca;xk> zAtq?7xsKh7p8&;v##A{g?1XK1d?C4VXpS|SA2LRh)B}g3ZLY!88W|;2S2&?lLE=aG zaf*#>_A4LF_6EW4y1j9IdeBu_9;bG}lXCuCoce)Bm+qJ>>r-v3<+GPpopmj`xax)! zIheoOuop+gdqP}}fDQt=2ol;Y*SV46cxaIJf`4q`&7#;A92Swn_~`k1z3oyes#lnGB9u`-N!gal6+1%D!59+JkbaizMm%3iu&7f< zU0G$w!?da;k>Ilm_k(~NVseK9B`Wqw zXW#5qW?RhJ3!A6EI?&#pcntBXVfsQ3B$^zmzYU(N986wR(a|qYjEIW&bJ}@7xzQs$ zMN~ysl7;`8dJ2@=;R5HYjy1WLz7R~$IP+&fd1TGa&GndA-yY57!aMvD*?KJS;>czg zk)9W2VrG=^T*=maio)NAfSs586!EmF#hbkP;ds~9OMjk>QgA0g;Ht4(`Xj?vqSZPP z-)zRUyttp-SJgIzLZ(&GUEcgxz8wt@L-wkKV%l>X9lRGpZ?~Y%bld~|I(D6qD{Mr3 zUrmLp2ROwWeEb8NN#n;)*pI}I&Q*$d-y`roq_J`=a;A05c{a*u}J)_|AR#!yt5njoDds9W>A+cGFaHG$Dn-VM-w8*^3|nD8F@3aVIL)^+ka`jmRHoYQs&izmbIZA%@sH4 zZ)EGFSlI$)HezYRRAn@AQP|g&@K6p z{)8yIwO~N4(&an723Oz}aDiTu9?AX&N{aW|!4>srW}`ZsJm8~pX24Wj?Dl3(_0J8*wTZ*BTjzBZcIdeFyKi4dzRddLNIq-6VXy_c+1ize-)R*lne|bRZ>wsw&_NPcf5o27-kTIWCO(Y<4SPCy-v(^ zo?;&@Bz?olt;C<)a`y$|eWCS~Yz;AZJQqaXitMGlto0q-bDyO(N!D8n&2N&yKu-yc4 zd^F)x4fp%;{@4&V)a;@`PwPOB$;6SacnBFf|QR!R_Z7E%MyrA)EOsBNjM;Dc}s2E!Y+Q7qGL9XOxsy~@#@p3>& zLI+ZtNpVyVyDOgsxtuV%>mT`5AT7n*Ps?XWZ@6)su|s$0e?uGr>iTd$V&D_a1*VlH ze1p?L9JLzvDb5X9x;LysvfWrCE$iUYz?9T=KR7)VonSlN;c8>?RApRpcLLjC+*8_!;&r^dLeBQxqrgU262>_W|1tvv ze9sVS_KVNp-w6>ycEPULSnLWMRELQTzu0k>iX=>+$+Pe8t)Ruo3MtXU0zOFE)+B3@ zK8>uH&@o1tU7zGuZIHuYe?vXBqX7)3-8N03Q zBw5Ek<(PkTyp+xM>Ax9IS~WFpM$Lrb^RuC3Hro7+(x$P83+4cY_f7Z#7j@F9w6{gA zKOX^Vd1G_rMPO)d9oGHEv$``sSnml%hV}$o;<=|*=DBOXMmY_-mCd@)at!4AVf8y> zoa2j5F1Ob(jpE#1D5qCl8DfdETMyU}#NSS#tv$W6Axl~JVZNl86282k*)>$0&7J6p zjhHbd;7i1c_z~N(bLpItxGZQ*+@7Q+U4k^>{q!bii^zWGQHn^(hmbxF`8)5%*~@0n z+-7e#>qM$2yGT9J-Q7YxI~OmUx!%{;C9|zG&AJkRO)n)*1RIZ0V1eaYxsop*?I*xt z^Adf9(B<&+)AwXG+C_93kgl8o8_fFmFI(%^)F6zfvdGH7{v}D~KAlriD^pED_+ldo zvhd1aAT&xdH@$D3KHW5@%Wc7FkXdwUF-8B$OCwcxDBe{^k>5P#0eFvh8 zvGZpy1dM&>F+ybN=Q1_Ol8;onQsmi$Kr-qgPQ&n-5mGYgVm2c}P8dJMH6l&J*f$p)SHtFUQeyxvoRyE|ex4}M@`hJuIYhf0 zG_z`sr6o5QhsZ2opudq*B!iqo6`tSR(5B>&w%7HoyTCasb96mslHJ;4x1jk)#%KF( zd3dWdVH~GL>i{5|kxK}cJ2#Cf6WK{V5p!3PZdCZPARlc{1fRf70zo8v;xzFqu=c@n zu{9;%nm-{PLxp1HYL+;JiotllOszD{a+Z^pi0G?>k3H=J5(Et{WifO1HoNI7aCx^@gt)Ac}z>mAi`^lA2r|LtgcICi~vPiU$=N%mT;{c(f$=`wK>a@grN=W=*09?Ya zUv;VpCpXDqvYxO8b4$wad}!;n6;D7ZJl#@UUX&SN5rXe5d`aWE>HqEXTq5DRno`!a zhiepJ%&i2E-cGB8U*9OHU(M&g{9A(05tEPto!aheLCE5AjY)Aj^!`3<_6-=Oyx(5C$)4d;IyV_~d*GZ^XJOm6y?;GX6J17iyH0mDcfbxsKhf zviE?Kbe>L&bMXh8o*?*lsUo0DVg-D2Js=9|b8(T@bF;YZ35dOKR0S`(pwPA~W}x)= zhK1a zHOE!geROpV4JBph?Rdxb1pYAhCPi|PJVVT0<8f@$Mb%YxSzGA`;m;v@Bh=ZBD^Ea9 zi_@OICmgtpbIeFL#_vmJK+>r+A+|lCF?10|$|vFl z0T}MbtyCeJFp;lKa>_4px()^{k>#B|gsm!D*WFB{Re!jvRu@~|x(!QK$`XzSY}-AG z@t(DkQd07AazxQ4xoqeC8h6iI&xLPpZ%tnwZ-J>QzHsZA6C=5}KY@|xk8uwe{_*cB zX$tS)-RCIL>^PtF?{bsZkG|@jQ{kYu18d$k*HSWXf=7yiJJ{HKw+hM8s@rBun`tuN zrJuDE4wv?#^D?*L%&TI`9LVMKDyp5|)qkxPsN2jBEV@74K>4(YzKS46lR@G{>lR>k%t-hxd6bjp}UF7Z80%0DtFa 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%0AkDrdr#UW`>YAPoc=Ub1-H2s*`!Mrm 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 xnNQZPtqcqYDiv}raknZm8I?vkg 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 yYxN_@%>=nD7?|HqF=E7wuqgQd^NIEZ`y_ Date: Mon, 18 Nov 2024 16:48:13 -0500 Subject: [PATCH 16/18] Fix citation setd -> sedt --- R/create_demo_chart.R | 2 +- R/create_map.R | 2 +- R/utils.R | 2 +- man/{setd-citation.Rd => sedt-citation.Rd} | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename man/{setd-citation.Rd => sedt-citation.Rd} (93%) diff --git a/R/create_demo_chart.R b/R/create_demo_chart.R index adfab2e..a72d709 100644 --- a/R/create_demo_chart.R +++ b/R/create_demo_chart.R @@ -9,7 +9,7 @@ #' @param file_path (character) - Default set to "dem_disparity_chart.png". #' A file path of where to save the file. This should include a data type #' suffix. EX: "results/visuals/dem_disparity_chart.png" -#' @inherit setd-citation details +#' @inherit sedt-citation details #' @return plot (ggplot object) - The ggplot object that was created. #' @export create_demo_chart <- function( diff --git a/R/create_map.R b/R/create_map.R index 2eec303..a04311a 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -20,7 +20,7 @@ #' by the interactive variable. An example file-path would be, #' "visuals/interactives/disparity_map". #' @return bias_map (tmap map or ggplot2 plot) - the choropleth map created -#' @inherit setd-citation details +#' @inherit sedt-citation details #' @export create_map <- function(geo_df, col_to_plot = "diff_pop", diff --git a/R/utils.R b/R/utils.R index 2e71692..941741a 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,6 +1,6 @@ #' Citation for Spatial Equity Data Tool API Data #' -#' @name setd-citation +#' @name sedt-citation #' @details #' Please use the following citation for data obtained from the API: #' diff --git a/man/setd-citation.Rd b/man/sedt-citation.Rd similarity index 93% rename from man/setd-citation.Rd rename to man/sedt-citation.Rd index 11237fd..983b868 100644 --- a/man/setd-citation.Rd +++ b/man/sedt-citation.Rd @@ -1,7 +1,7 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R -\name{setd-citation} -\alias{setd-citation} +\name{sedt-citation} +\alias{sedt-citation} \title{Citation for Spatial Equity Data Tool API Data} \description{ Citation for Spatial Equity Data Tool API Data From 4ec4f48c9c5fa187d26b960241260a92c66eb397 Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Mon, 18 Nov 2024 19:59:08 -0500 Subject: [PATCH 17/18] Pass `interactive` arg to `tm_plot_geo_bias_map()` --- R/create_map.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/create_map.R b/R/create_map.R index a04311a..42658e4 100644 --- a/R/create_map.R +++ b/R/create_map.R @@ -68,6 +68,7 @@ create_map <- function(geo_df, data = geo_df, fill_col = col_to_plot, fill_palette = pal, + interactive = interactive, ... ) } else { From ac6d9383cbbdd0014c3bceb9962e281f83d7671a Mon Sep 17 00:00:00 2001 From: Eli Pousson Date: Mon, 18 Nov 2024 20:25:55 -0500 Subject: [PATCH 18/18] Use `rlang::exec()` for splicing ggsave_args --- R/create_demo_chart.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/R/create_demo_chart.R b/R/create_demo_chart.R index a72d709..d7f391a 100644 --- a/R/create_demo_chart.R +++ b/R/create_demo_chart.R @@ -64,7 +64,8 @@ create_demo_chart <- function( ) if (save_chart) { - ggplot2::ggsave( + rlang::exec( + ggplot2::ggsave, filename = file_path, plot = demo_lollipop_plot, !!!ggsave_args