From 840842b286a4af0e82cef65607041407caa42e9a Mon Sep 17 00:00:00 2001 From: boB Rudis Date: Sun, 14 Jul 2019 10:30:28 -0400 Subject: [PATCH] initial commit --- .Rbuildignore | 1 + DESCRIPTION | 16 ++- LICENSE | 2 + LICENSE.md | 21 +++ NAMESPACE | 16 ++- R/geom-econodist.R | 181 ++++++++++++++++++++++++++ R/ggeconodist-package.R | 14 +- R/globals.R | 28 ++++ R/legend-helpers.R | 150 +++++++++++++++++++++ R/stat-econodist.R | 74 +++++++++++ R/theme-econ.R | 40 ++++++ R/utils-infix-helpers.R | 4 + R/utils-pipe.R | 11 ++ R/utils.R | 26 ++++ README.Rmd | 42 +++++- README.md | 98 ++++++++++++++ README_files/figure-gfm/unnamed-chunk-1-1.png | Bin 0 -> 112753 bytes man/add_econodist_legend.Rd | 28 ++++ man/econodist_legend_grob.Rd | 31 +++++ man/geom_econodist.Rd | 93 +++++++++++++ man/ggeconodist.Rd | 9 +- man/left_align.Rd | 21 +++ man/mammogram_costs.Rd | 14 ++ man/pipe.Rd | 12 ++ man/theme_econodist.Rd | 31 +++++ 25 files changed, 941 insertions(+), 22 deletions(-) create mode 100644 LICENSE create mode 100644 LICENSE.md create mode 100644 R/geom-econodist.R create mode 100644 R/globals.R create mode 100644 R/legend-helpers.R create mode 100644 R/stat-econodist.R create mode 100644 R/theme-econ.R create mode 100644 R/utils-infix-helpers.R create mode 100644 R/utils-pipe.R create mode 100644 R/utils.R create mode 100644 README.md create mode 100644 README_files/figure-gfm/unnamed-chunk-1-1.png create mode 100644 man/add_econodist_legend.Rd create mode 100644 man/econodist_legend_grob.Rd create mode 100644 man/geom_econodist.Rd create mode 100644 man/left_align.Rd create mode 100644 man/mammogram_costs.Rd create mode 100644 man/pipe.Rd create mode 100644 man/theme_econodist.Rd diff --git a/.Rbuildignore b/.Rbuildignore index b28703c..da6311f 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -15,3 +15,4 @@ ^CONDUCT.*$ ^CODE.*$ ^\.gitlab-ci\.yml$ +^LICENSE\.md$ diff --git a/DESCRIPTION b/DESCRIPTION index 0c1a303..c3fcb39 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,18 +1,22 @@ Package: ggeconodist Type: Package -Title: ggeconodist title goes here otherwise CRAN checks fail +Title: Create Diminutive Distribution Charts Version: 0.1.0 Date: 2019-07-14 Authors@R: c( person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-5670-2640")) ) Maintainer: Bob Rudis -Description: A good description goes here otherwise CRAN checks fail. +Description: 'The Economist' has a unique boxplot aesthetic for + communicating distrribution characteristics. Tools are provided + to create similar charts in 'ggplot2'. URL: https://gitlab.com/hrbrmstr/ggeconodist BugReports: https://gitlab.com/hrbrmstr/ggeconodist/issues Encoding: UTF-8 -License: AGPL -Suggests: covr, tinytest -Depends: R (>= 3.2.0) -Imports: httr, jsonlite +License: MIT + file LICENSE +Suggests: covr, tinytest, scales +Depends: R (>= 3.2.0), ggplot2 (>= 3.2.0), grid +Imports: + gtable, + magrittr Roxygen: list(markdown = TRUE) RoxygenNote: 6.1.1 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b6a10f1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,2 @@ +YEAR: 2019 +COPYRIGHT HOLDER: Bob Rudis diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..c36552c --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2019 Bob Rudis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/NAMESPACE b/NAMESPACE index 5b4b9ae..e7d1e3e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,4 +1,16 @@ # Generated by roxygen2: do not edit by hand -import(httr) -importFrom(jsonlite,fromJSON) +export("%>%") +export(GeomEconodist) +export(StatEconodist) +export(add_econodist_legend) +export(econodist_legend_grob) +export(geom_econodist) +export(left_align) +export(mammogram_costs) +export(stat_econodist) +export(theme_econodist) +import(ggplot2) +import(grid) +import(gtable) +importFrom(magrittr,"%>%") diff --git a/R/geom-econodist.R b/R/geom-econodist.R new file mode 100644 index 0000000..e2c3ae5 --- /dev/null +++ b/R/geom-econodist.R @@ -0,0 +1,181 @@ +#' Econodist geom / stat +#' +#' Like [ggplot2::geom_boxplot()] you can either pass in pre-computed +#' values for "ymin", "median", and "ymax" or a single y column +#' which will then use [stat_econodist()] to compute the needed +#' statistics. +#' +#' @param mapping Set of aesthetic mappings created by `aes()` or +#' `aes_()`. If specified and `inherit.aes = TRUE` (the +#' default), it is combined with the default mapping at the top level of the +#' plot. You must supply `mapping` if there is no plot mapping. +#' @param data The data to be displayed in this layer. There are three +#' options: +#' +#' If `NULL`, the default, the data is inherited from the plot +#' data as specified in the call to `ggplot()`. +#' +#' A `data.frame`, or other object, will override the plot +#' data. All objects will be fortified to produce a data frame. See +#' `fortify()` for which variables will be created. +#' +#' A `function` will be called with a single argument, +#' the plot data. The return value must be a `data.frame.`, and +#' will be used as the layer data. +#' @param stat ggplot2 stat to use +#' @param geom ggplot2 geom to use +#' @param position Position adjustment, either as a string, or the result of a call to a position adjustment function. +#' @param tenth_col,median_col,ninetieth_col,median_point_size colors for geom components +#' @param endcap_adjust multipler to make endcaps wider/thinner +#' @param na.rm If `FALSE`, the default, missing values are removed with +#' a warning. If `TRUE`, missing values are silently removed. +#' @param show.legend logical. Should this layer be included in the legends? +#' `NA`, the default, includes if any aesthetics are mapped. +#' `FALSE` never includes, and `TRUE` always includes. +#' It can also be a named logical vector to finely select the aesthetics to +#' display. +#' @param inherit.aes If `FALSE`, overrides the default aesthetics, +#' rather than combining with them. This is most useful for helper functions +#' that define both data and aesthetics and shouldn't inherit behaviour from +#' the default plot specification, e.g. `borders()`. +#' @param ... other arguments passed on to `layer()`. These are +#' often aesthetics, used to set an aesthetic to a fixed value, like +#' `color = "red"` or `size = 3`. They may also be parameters +#' to the paired geom/stat. +#' @export +#' @examples +#' ggplot(mammogram_costs, aes(x = city)) + +#' geom_econodist( +#' aes(ymin = tenth, median = median, ymax = ninetieth), +#' stat = "identity", +#' ) + +#' scale_y_comma(expand = c(0,0), position = "right", limits = range(0, 800)) + +#' coord_flip() + +#' labs( +#' x = NULL, y = NULL +#' ) +geom_econodist <- function(mapping = NULL, data = NULL, + stat = "econodist", position = "dodge2", + tenth_col = econ_tenth, + median_col = econ_median, + ninetieth_col = econ_ninetieth, + median_point_size = NULL, + endcap_adjust = 1.5, + ..., + na.rm = FALSE, + show.legend = NA, + inherit.aes = TRUE) { + + layer( + data = data, + mapping = mapping, + stat = stat, + geom = GeomEconodist, + position = position, + show.legend = show.legend, + inherit.aes = inherit.aes, + params = list( + na.rm = na.rm, + tenth_col = tenth_col, + median_col = median_col, + ninetieth_col = ninetieth_col, + median_point_size = median_point_size, + endcap_adjust = endcap_adjust, + ... + ) + ) +} + +#' @rdname geom_econodist +#' @export +GeomEconodist <- ggproto( + `_class` = "GeomEconodist", + `_inherit` = Geom, + + extra_params = c("na.rm", "width", + "tenth_col", "median_col", "ninetieth_col", + "median_point_size", "endcap_adjust"), + + default_aes = aes( + colour = NA, fill = econ_main, size = 1, weight = 1, + alpha = 0.2, shape = 19, linetype = "solid", stroke = 1 + ), + + required_aes = c("x", "ymin", "median", "ymax"), + + setup_data = function(data, params) { + + data$width <- data$width %||% + params$width %||% (ggplot2::resolution(data$x, FALSE) * 0.6) + + data$xmin <- data$x - data$width / 2 + data$xmax <- data$x + data$width / 2 + + data + + }, + + draw_group = function(data, panel_params, coord, + tenth_col = econ_tenth, + median_col = econ_median, + ninetieth_col = econ_ninetieth, + median_point_size = NULL, + endcap_adjust = 1.5) { + + if (nrow(data) != 1) { + stop( + "It looks like you may have forgotten a grouping aesthetic, i.e. aes(group = ...)", + call. = FALSE + ) + } + + transform( + data, + y = median, + fill = alpha(fill, alpha) + ) -> d_range + + transform( + data, + y = median, + alpha = 1, + colour = median_col, + size = median_point_size %||% (width * 3), + fill = alpha(fill, alpha), + shape = "circle" + ) -> d_median + + transform( + data, + x = xmin, + xend = xmax, + y = ymin, + yend = ymin, + size = size * (endcap_adjust %||% 1.5), + alpha = NA, + colour = tenth_col + ) -> d_tenth + + transform( + data, + x = xmin, + xend = xmax, + y = ymax, + yend = ymax, + size = size * (endcap_adjust %||% 1.5), + alpha = NA, + colour = ninetieth_col + ) -> d_ninetieth + + ggname("geom_econodist", grobTree( + GeomRect$draw_panel(d_range, panel_params, coord), + GeomSegment$draw_panel(d_tenth, panel_params, coord), + GeomSegment$draw_panel(d_ninetieth, panel_params, coord), + GeomPoint$draw_panel(d_median, panel_params, coord) + )) + + }, + + draw_key = ggplot2::draw_key_boxplot + +) diff --git a/R/ggeconodist-package.R b/R/ggeconodist-package.R index 467eaf4..392e76d 100644 --- a/R/ggeconodist-package.R +++ b/R/ggeconodist-package.R @@ -1,12 +1,12 @@ -#' ... -#' -#' - URL: -#' - BugReports: -#' +#' Create Diminutive Distribution Charts +#' +#' 'The Economist' has a unique boxplot aesthetic for +#' communicating distrribution characteristics. Tools are provided +#' to create similar charts in 'ggplot2'. +#' #' @md #' @name ggeconodist #' @keywords internal #' @author Bob Rudis (bob@@rud.is) -#' @import httr -#' @importFrom jsonlite fromJSON +#' @import ggplot2 grid gtable "_PACKAGE" diff --git a/R/globals.R b/R/globals.R new file mode 100644 index 0000000..aab9619 --- /dev/null +++ b/R/globals.R @@ -0,0 +1,28 @@ +econ_tenth <- "#39c0d1" +econ_ninetieth <- "#14709f" +econ_plot_bg_col <- "#d7e6ee" +econ_median <- "#6b7a83" +econ_main <- "#6794a7" +econ_text_col <- "#3b454a" +econ_grid_col <- "#63696d" + + +#' Cost of a mammogram in various U.S. Citites (2016, USD) +#' +#' @docType data +#' @export +mammogram_costs <- +structure(list(city = structure(1:11, .Label = c("Houston, TX", +"Los Angeles, CA", "Dallas, TX", "Chicago, IL", "Atlanta, GA", +"Seattle, WA", "Philadelphia, PA", "New York, NY", "Boston, MA", +"Baltimore, MD", "Denver, CO"), class = "factor"), median = c(133.325464181588, +169.66205927832, 182.665045621407, 195.658588982401, 218.661693362764, +228.321864044665, 257.991713783213, 264.327954768116, 277, 277.000436737922, +300.003541118285), ninetieth = c(300.003541118285, 753.00227811943, +225.998890449604, 325.669566449085, 468.674087276762, 294.989317626506, +541.337834488131, 490.997296946376, 394.008427861519, 557.013184763748, +393.337976132863), tenth = c(60.000708223657, 116.328096412847, +102.654658341104, 115.657644684191, 128.670074009372, 104.996517900353, +141.333112997084, 164.336217377448, 197.339439795087, 197.008935421806, +153.335143238235), state = c("TX", "CA", "TX", "IL", "GA", "WA", +"PA", "NY", "MA", "MD", "CO")), class = "data.frame", row.names = c(NA, -11L)) \ No newline at end of file diff --git a/R/legend-helpers.R b/R/legend-helpers.R new file mode 100644 index 0000000..e5de0b7 --- /dev/null +++ b/R/legend-helpers.R @@ -0,0 +1,150 @@ +#' Helper to flush ggplot2 plot components to the left +#' +#' Stolen from the BBC (don't tell Scotland Yard) +#' +#' @param gg ggplot2 plot +#' @param components ggplot2 named gtable components to operate on +#' @family Econodist legend helpers +#' @export +left_align <- function(gg, components){ + grob <- ggplot2::ggplotGrob(gg) + n <- length(components) + grob$layout$l[grob$layout$name %in% components] <- 2 + grob +} + +#' Create a legend grob that can be used with econodist charts +#' +#' @param family font family +#' @param label_size size of legend text +#' @param tenth_col color for the tenth bar +#' @param med_col color for the median point +#' @param ninetieth_col color for the ninetieth bar +#' @param label_col color of the legend text +#' @family Econodist legend helpers +#' @export +econodist_legend_grob <- function(family = "EconSansCndLig", + label_size = 10, + tenth_col = econ_tenth, + med_col = econ_median, + ninetieth_col = econ_ninetieth, + label_col = econ_text_col) { + + x_pos <- unit(4, "points") + y_pos <- unit(label_size / 2, "points") + yq <- unit(label_size / 4, "points") + + segmentsGrob( + x0 = x_pos, y0 = y_pos + yq, + x1 = x_pos, y1 = y_pos - yq, + default.units = "points", + gp = gpar( + lwd = 3 * ggplot2::.pt, + lty = "solid", + lineend = "square", + col = tenth_col + ) + ) -> tenth_seg + + x_pos <- x_pos + convertUnit(grobWidth(tenth_seg), "points") + unit(6, "points") + + textGrob( + label = "10th percentile", + x = x_pos, y = y_pos, + hjust = 0, vjust = 0.5, + gp = gpar( + fontfamily = family, + fontsize = label_size, + col = label_col + ) + ) -> tenth_text + + x_pos <- x_pos + convertUnit(grobWidth(tenth_text), "points") + unit(label_size, "points") + + pointsGrob( + x = x_pos, y = y_pos, + size = unit(label_size, "points"), pch = 19, + gp = gpar( + col = med_col, + fill = med_col + ) + ) -> med_pt + + x_pos <- x_pos + convertUnit(grobWidth(med_pt), "points") + unit(8, "points") + + textGrob( + label = "Median", + x = x_pos, y = y_pos, + hjust = 0, vjust = 0.5, + gp = gpar( + fontfamily = family, + fontsize = label_size, + col = label_col + ) + ) -> med_text + + x_pos <- x_pos + convertUnit(grobWidth(med_text), "points") + unit(label_size, "points") + + segmentsGrob( + x0 = x_pos, y0 = y_pos - yq, + x1 = x_pos, y1 = y_pos + yq, + gp = gpar( + lwd = 3 * ggplot2::.pt, + lty = "solid", + lineend = "square", + col = ninetieth_col + ) + ) -> ninth_seg + + x_pos <- x_pos + grobWidth(ninth_seg) + unit(8, "points") + + textGrob( + label = "90th percentile", + x = x_pos, y = y_pos, + hjust = 0, vjust = 0.5, + gp = gpar( + fontfamily = family, + fontsize = label_size, + col = label_col + ) + ) -> ninth_text + + vp <- viewport(default.units = "points") + + gTree( + name = "econodist_legend", + children = gList( + tenth_seg, tenth_text, + med_pt, med_text, + ninth_seg, ninth_text + ), + childrenvp = vp + ) + +} + +#' Helper utility to get an econodist legend into a ggplot2 plot +#' +#' @param gg ggplot2 plot object to add +#' @param legend legend grob (any grob, really) +#' @param below which named gtable element to stick it below? +#' @param legend_height height of the legend row +#' @param spacer height of the spacer that is put below `legend`? +#' @family Econodist legend helpers +#' @export +add_econodist_legend <- function(gg, legend, below = "subtitle", + legend_height = unit(16, "points"), + spacer = unit(10, "points")) { + + if (!inherits(gg, "gtable")) gg <- ggplot2::ggplotGrob(gg) + + st <- gg$layout[gg$layout$name == below,] + gtable::gtable_add_rows( + gtable::gtable_add_grob( + gtable::gtable_add_rows(gg, legend_height, st$b), + legend, t = st$b + 1, l = st$l, b = st$b + 1, r = st$r + ), + spacer, st$b + 1 + ) + +} diff --git a/R/stat-econodist.R b/R/stat-econodist.R new file mode 100644 index 0000000..b9ab233 --- /dev/null +++ b/R/stat-econodist.R @@ -0,0 +1,74 @@ +#' @rdname geom_econodist +#' @export +stat_econodist <- function(mapping = NULL, data = NULL, + geom = "econodist", position = "dodge2", + ..., + na.rm = FALSE, + show.legend = NA, + inherit.aes = TRUE) { + layer( + data = data, + mapping = mapping, + stat = StatEconodist, + geom = geom, + position = position, + show.legend = show.legend, + inherit.aes = inherit.aes, + params = list( + na.rm = na.rm, + ... + ) + ) +} + +#' @rdname geom_econodist +#' @export +StatEconodist <- ggproto( + `_class` = "StatEconodist", + `_inherit` = Stat, + + required_aes = c("y"), + + setup_data = function(data, params) { + + data$x <- data$x %||% 0 + + ggplot2::remove_missing( + data, + na.rm = FALSE, + vars = "x", + name = "stat_econodist" + ) + + }, + + setup_params = function(data, params) { + + params$width <- params$width %||% (resolution(data$x %||% 0) * 0.75) + + if (is.double(data$x) && !has_groups(data) && any(data$x != data$x[1L])) { + warning("Continuous x aesthetic -- did you forget aes(group=...)?", call. = FALSE) + } + + params + + }, + + compute_group = function(data, scales, width = NULL, na.rm = FALSE) { + + qs <- c(0.10, 0.5, 0.90) + + stats <- as.numeric(stats::quantile(data$y, qs)) + names(stats) <- c("tenth", "median", "ninetieth") + + if (length(unique(data$x)) > 1) width <- diff(range(data$x)) * 0.9 + + xdf <- new_data_frame(as.list(stats)) + xdf$x <- if (is.factor(data$x)) data$x[1] else mean(range(data$x)) + xdf$width <- width + + xdf + + } + +) diff --git a/R/theme-econ.R b/R/theme-econ.R new file mode 100644 index 0000000..2b9d246 --- /dev/null +++ b/R/theme-econ.R @@ -0,0 +1,40 @@ +#' A more current Economist-style ggplot2 theme +#' +#' @param econ_text_col color for text elements +#' @param econ_plot_bg_col plot background color +#' @param econ_grid_col plot grid color +#' @param econ_font core plot font +#' @param light_font light font used in various polaces +#' @param bold_font bold font used in various places +#' @note You *need* their fonts installed. You can get them from +#' [here](https://github.com/economist-components/component-typography) +#' @export +theme_econodist <- function(econ_text_col = "#3b454a", + econ_plot_bg_col = "#d7e6ee", + econ_grid_col = "#bbcad2", + econ_font = "EconSansCndReg", + light_font = "EconSansCndLig", + bold_font = "EconSansCndBol") { + + theme_minimal(base_family = econ_font) + + theme( + plot.title = element_text(family = bold_font), + plot.subtitle = element_text(family = light_font, 12), + plot.caption = element_text(family = light_font, 10, colour = econ_text_col, lineheight = 1.1), + plot.background = element_rect(fill = econ_plot_bg_col, colour = econ_plot_bg_col), + panel.background = element_rect(fill = econ_plot_bg_col, colour = econ_plot_bg_col), + axis.ticks = element_blank(), + axis.ticks.x = element_blank(), + axis.ticks.y = element_blank(), + axis.text = element_text(family = light_font, colour = econ_text_col), + axis.text.x = element_text(family = light_font, size = 10, colour = econ_text_col), + axis.text.y = element_text(hjust = 0, family = light_font, size = 10, colour = econ_text_col), + axis.line.x = element_blank(), + axis.line.y = element_line(colour = econ_grid_col, size = 0.5), + plot.margin = margin(10, 15, 10, 12), + panel.grid.major.x = element_line(linetype = "solid", size = 0.4, colour = econ_grid_col), + panel.grid.major.y = element_line(linetype = "solid", size = 0.4, colour = econ_grid_col), + panel.grid.minor.x = element_blank(), + panel.grid.minor.y = element_blank() + ) +} diff --git a/R/utils-infix-helpers.R b/R/utils-infix-helpers.R new file mode 100644 index 0000000..11e792d --- /dev/null +++ b/R/utils-infix-helpers.R @@ -0,0 +1,4 @@ +`%l0%` <- function(x, y) if (length(x) == 0) y else x +`%||%` <- function(x, y) if (is.null(x)) y else x +`%@%` <- function(x, name) attr(x, name, exact = TRUE) +`%nin%` <- function(x, table) match(x, table, nomatch = 0) == 0 diff --git a/R/utils-pipe.R b/R/utils-pipe.R new file mode 100644 index 0000000..e79f3d8 --- /dev/null +++ b/R/utils-pipe.R @@ -0,0 +1,11 @@ +#' Pipe operator +#' +#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. +#' +#' @name %>% +#' @rdname pipe +#' @keywords internal +#' @export +#' @importFrom magrittr %>% +#' @usage lhs \%>\% rhs +NULL diff --git a/R/utils.R b/R/utils.R new file mode 100644 index 0000000..ad044b6 --- /dev/null +++ b/R/utils.R @@ -0,0 +1,26 @@ + +ggname <- function(prefix, grob) { + grob$name <- grobName(grob, prefix) + grob +} + +new_data_frame <- function(x = list(), n = NULL) { + if (length(x) != 0 && is.null(names(x))) stop("Elements must be named", call. = FALSE) + lengths <- vapply(x, length, integer(1)) + if (is.null(n)) { + n <- if (length(x) == 0 || min(lengths) == 0) 0 else max(lengths) + } + for (i in seq_along(x)) { + if (lengths[i] == n) next + if (lengths[i] != 1) stop("Elements must equal the number of rows or 1", call. = FALSE) + x[[i]] <- rep(x[[i]], n) + } + + class(x) <- "data.frame" + attr(x, "row.names") <- .set_row_names(n) + x +} + +data_frame <- function(...) { + new_data_frame(list(...)) +} diff --git a/README.Rmd b/README.Rmd index bd0a17a..b84215d 100644 --- a/README.Rmd +++ b/README.Rmd @@ -1,10 +1,10 @@ --- output: rmarkdown::github_document editor_options: - chunk_output_type: inline + chunk_output_type: console --- ```{r pkg-knitr-opts, include=FALSE} -knitr:: sopts_chunk$set( +knitr::opts_chunk$set( collapse = TRUE, fig.retina = 2, message = FALSE, warning = FALSE ) options(width=120) @@ -16,10 +16,22 @@ options(width=120) # ggeconodist +Create Diminutive Distribution Charts + ## Description +'The Economist' has a unique boxplot aesthetic for +communicating distrribution characteristics. Tools are provided +to create similar charts in 'ggplot2'. + +Inspired by: + ## What's Inside The Tin +```{r ingredients, results='asis', echo=FALSE, cache=FALSE} +hrbrpkghelpr::describe_ingredients() +``` + The following functions are implemented: ## Installation @@ -38,6 +50,32 @@ packageVersion("ggeconodist") ``` +### The whole shebang + +**YOU WILL NEED** to install [these fonts](https://github.com/economist-components/component-typography) to use the built-in theme. More on how to do that at some point. + +```{r} +ggplot(mammogram_costs, aes(x = city)) + + geom_econodist( + aes(ymin = tenth, median = median, ymax = ninetieth), + stat = "identity", show.legend = TRUE + ) + + scale_y_continuous(expand = c(0,0), position = "right", limits = range(0, 800)) + + coord_flip() + + labs( + x = NULL, y = NULL, + title = "Mammoscams", + subtitle = "United States, prices for a mammogram*\nBy metro area, 2016, $", + caption = "*For three large insurance companies\nSource: Health Care Cost Institute" + ) + + theme_econodist() -> gg + +grid.newpage() +left_align(gg, c("subtitle", "title", "caption")) %>% + add_econodist_legend(econodist_legend_grob(), below = "subtitle") %>% + grid.draw() +``` + ## ggeconodist Metrics ```{r cloc, echo=FALSE} diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a3c535 --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ + +[![Travis-CI Build +Status](https://travis-ci.org/hrbrmstr/ggeconodist.svg?branch=master)](https://travis-ci.org/hrbrmstr/ggeconodist) +[![Coverage +Status](https://codecov.io/gh/hrbrmstr/ggeconodist/branch/master/graph/badge.svg)](https://codecov.io/gh/hrbrmstr/ggeconodist) +[![CRAN\_Status\_Badge](https://www.r-pkg.org/badges/version/ggeconodist)](https://cran.r-project.org/package=ggeconodist) + +# ggeconodist + +Create Diminutive Distribution Charts + +## Description + +‘The Economist’ has a unique boxplot aesthetic for communicating +distrribution characteristics. Tools are provided to create similar +charts in ‘ggplot2’. + +Inspired by: + + +## What’s Inside The Tin + + - `add_econodist_legend`: Helper utility to get an econodist legend + into a ggplot2 plot + - `econodist_legend_grob`: Create a legend grob that can be used with + econodist charts + - `geom_econodist`: Econodist geom / stat + - `left_align`: Helper to flush ggplot2 plot components to the left + - `mammogram_costs`: Cost of a mammogram in various U.S. Citites + (2016, USD) + - `theme_econodist`: A more current Economist-style ggplot2 theme + +The following functions are implemented: + +## Installation + +``` r +devtools::install_git("https://git.rud.is/hrbrmstr/ggeconodist.git") +# or +devtools::install_git("https://git.sr.ht/~hrbrmstr/ggeconodist") +# or +devtools::install_gitlab("hrbrmstr/ggeconodist") +# or +devtools::install_bitbucket("hrbrmstr/ggeconodist") +``` + +## Usage + +``` r +library(ggeconodist) + +# current version +packageVersion("ggeconodist") +## [1] '0.1.0' +``` + +### The whole shebang + +**YOU WILL NEED** to install [these +fonts](https://github.com/economist-components/component-typography) to +use the built-in theme. More on how to do that at some point. + +``` r +ggplot(mammogram_costs, aes(x = city)) + + geom_econodist( + aes(ymin = tenth, median = median, ymax = ninetieth), + stat = "identity", show.legend = TRUE + ) + + scale_y_continuous(expand = c(0,0), position = "right", limits = range(0, 800)) + + coord_flip() + + labs( + x = NULL, y = NULL, + title = "Mammoscams", + subtitle = "United States, prices for a mammogram*\nBy metro area, 2016, $", + caption = "*For three large insurance companies\nSource: Health Care Cost Institute" + ) + + theme_econodist() -> gg + +grid.newpage() +left_align(gg, c("subtitle", "title", "caption")) %>% + add_econodist_legend(econodist_legend_grob(), below = "subtitle") %>% + grid.draw() +``` + + + +## ggeconodist Metrics + +| Lang | \# Files | (%) | LoC | (%) | Blank lines | (%) | \# Lines | (%) | +| :--- | -------: | ---: | --: | ---: | ----------: | ---: | -------: | ---: | +| R | 10 | 0.91 | 338 | 0.93 | 68 | 0.75 | 125 | 0.77 | +| Rmd | 1 | 0.09 | 27 | 0.07 | 23 | 0.25 | 38 | 0.23 | + +## Code of Conduct + +Please note that this project is released with a [Contributor Code of +Conduct](CONDUCT.md). By participating in this project you agree to +abide by its terms. diff --git a/README_files/figure-gfm/unnamed-chunk-1-1.png b/README_files/figure-gfm/unnamed-chunk-1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a51942240eeafdccc864e739b891a4d33030efd6 GIT binary patch literal 112753 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\%} +\alias{\%>\%} +\title{Pipe operator} +\usage{ +lhs \%>\% rhs +} +\description{ +See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. +} +\keyword{internal} diff --git a/man/theme_econodist.Rd b/man/theme_econodist.Rd new file mode 100644 index 0000000..33da680 --- /dev/null +++ b/man/theme_econodist.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/theme-econ.R +\name{theme_econodist} +\alias{theme_econodist} +\title{A more current Economist-style ggplot2 theme} +\usage{ +theme_econodist(econ_text_col = "#3b454a", + econ_plot_bg_col = "#d7e6ee", econ_grid_col = "#bbcad2", + econ_font = "EconSansCndReg", light_font = "EconSansCndLig", + bold_font = "EconSansCndBol") +} +\arguments{ +\item{econ_text_col}{color for text elements} + +\item{econ_plot_bg_col}{plot background color} + +\item{econ_grid_col}{plot grid color} + +\item{econ_font}{core plot font} + +\item{light_font}{light font used in various polaces} + +\item{bold_font}{bold font used in various places} +} +\description{ +A more current Economist-style ggplot2 theme +} +\note{ +You \emph{need} their fonts installed. You can get them from +\href{https://github.com/economist-components/component-typography}{here} +}