Create Diminutive Distribution Charts
‘The Economist’ has a unique boxplot aesthetic f or communicating distrribution characteristics. Tools are provided to create similar charts in ‘ggplot2’.
Inspired by: https://www.economist.com/united-states/2019/06/29/will-transparent-pricing-make-americas-health-care-cheaper
add_econodist_legend
: Helper utility to get an econodist legend
into a ggplot2 ploteconodist_legend_grob
: Create a legend grob that can be used with
econodist chartsgeom_econodist
: Econodist geom / statleft_align
: Helper to flush ggplot2 plot components to the leftmammogram_costs
: Cost of a mammogram in various U.S. Citites
(2016, USD)theme_econodist
: A more current Economist-style ggplot2 themeThe following functions are implemented:
install.packages("ggeconodist", repos = "https://cinc.rud.is")
# or
remotes::install_git("https://git.rud.is/hrbrmstr/ggeconodist.git")
# or
remotes::install_git("https://git.sr.ht/~hrbrmstr/ggeconodist")
# or
remotes::install_gitlab("hrbrmstr/ggeconodist")
# or
remotes::install_bitbucket("hrbrmstr/ggeconodist")
# or
remotes::install_github("hrbrmstr/ggeconodist")
NOTE: To use the ‘remotes’ install options you will need to have the {remotes} package installed.
library(ggeconodist)
# current version
packageVersion("ggeconodist")
## [1] '0.1.0'
YOU WILL NEED to install these fonts to use the built-in theme. More on how to do that at some point.
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()
library(dplyr)
library(patchwork)
library(hrbrthemes)
library(gapminder)
p <- ggplot(mpg, aes(class, hwy)) + theme_ipsum_rc()
(p + geom_boxplot()) +
(p + geom_econodist(width = 0.25)) +
plot_layout(ncol = 1)
(p + geom_boxplot() + coord_flip()) +
(p + geom_econodist(tenth_col = ft_cols$blue, ninetieth_col = ft_cols$red) +
coord_flip()) +
plot_layout(ncol = 1)
(p + geom_boxplot(aes(fill = factor(drv)))) +
(p + geom_econodist(aes(fill = factor(drv)))) +
plot_layout(ncol = 1)
gapminder %>%
filter(year %in% c(1952, 1962, 1972, 1982, 1992, 2002)) %>%
filter(continent != "Oceania") %>%
ggplot(aes(x = factor(year), y = lifeExp, fill = continent)) +
geom_econodist(
median_point_size = 1.2,
tenth_col = "#b07aa1",
ninetieth_col = "#591a4f",
show.legend = FALSE
) +
ggthemes::scale_fill_tableau(name = NULL) +
coord_flip() +
labs(
x = "Year", title = "Life Expectancy", y = NULL,
caption = "Example borrowed from @cmdline_tips"
) +
facet_wrap(~continent, nrow = 4) +
theme_ipsum_rc() -> gmgg
grid.newpage()
gmgg %>%
add_econodist_legend(
econodist_legend_grob(
tenth_col = "#b07aa1",
ninetieth_col = "#591a4f",
),
below = "axis-b-1-4",
just = "right"
) %>%
grid.draw()
| Lang | # Files | (%) | LoC | (%) | Blank lines | (%) | # Lines | (%) | | :--- | -------: | ---: | --: | ---: | ----------: | ---: | -------: | ---: | | R | 10 | 0.91 | 398 | 0.85 | 76 | 0.72 | 137 | 0.77 | | Rmd | 1 | 0.09 | 69 | 0.15 | 30 | 0.28 | 40 | 0.23 |
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.