Skip to content

delabj/AfricaCountryBins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AfricaCountryBins

Create Uniform Square Country Cartogram heatmaps

Description

Heatmaps in a tile shape are an alternative to choropleth maps that don’t distort perception of results based on land mass size.

This package is a essentially a fork of Bob Rudis’s statebins package designed for use for data involving Africa.

This grid attempts to preserve the general position of countries on the continent, while providing an equal area by country.

Whatcha Get?

The main function implemented is - geom_countrybins_africa: which is a countrybin Geom for africa

Installation

Use the following to install:

devtools::install_github("delabj/AfricaCountryBins")
# or 
remotes::install_github("delabj/AfricaCountryBins")

To use these options you’ll have to install devtools or remotes respectively.

Examples

library(AfricaCountryBins)
library(hrbrthemes)
library(tidyverse)

data("africa_mines")

count(africa_mines, countrycode, wt=count) %>%
  mutate(n = ifelse(n == 0, NA, n)) %>%
  ggplot(aes(country = countrycode, fill = n)) +
  geom_countrybins_africa() +
  coord_fixed() +
  scale_fill_viridis_c(
    name = "# mines (log2)",
    option = "magma",
    direction = -1,
    na.value = "#DEE5E8",
    trans = "log2",
    label = scales::comma_format(1)
  ) +
  guides(
    fill = guide_colourbar(
      title.position = "top"
    )
  ) +
  labs(
    title = "Mines in Africa",
    caption = "Source: data.world <hdata.world/datainspace/mines-in-africa>"
  ) +
  theme_ipsum_es(grid="") +
  theme(legend.position = c(0.2, 0.4)) +
  theme(legend.direction = "horizontal") +
  theme(legend.key.width = unit(1.5, "lines")) +
  theme(axis.text.x = element_blank()) +
  theme(axis.text.y = element_blank()) +
  theme(plot.title = element_text(hjust = 0.5))

africa_mines %>%
  count(countrycode, mine_type, wt = count) %>%
  mutate(mine_type = fct_reorder(mine_type, n, sum)) %>%
  filter(mine_type %in% rev(levels(mine_type))[1:8]) %>%
  mutate(n = ifelse(n == 0, NA, n)) %>%
  ggplot(aes(country = countrycode, fill = n)) +
  geom_countrybins_africa(
    radius = unit(0, "pt"),
    family = font_an, size = 2
  ) +
  scale_fill_viridis_c(
    name = "# mines (log2)",
    option = "magma",
    direction = -1,
    na.value = "#DEE5E8",
    trans = "log2",
    label = scales::comma_format(1)
  ) +
  coord_equal() +
  facet_wrap(~mine_type) +
  guides(
    fill = guide_colourbar(
      title.position = "top"
    )
  ) +
  labs(
    title = "Mines in Africa",
    caption = "Source: data.world <hdata.world/datainspace/mines-in-africa>"
  ) +
  theme_ipsum(grid="", strip_text_face = "bold") +
  theme(legend.position = c(0.85, 0.2)) +
  theme(legend.direction = "vertical") +
  theme(axis.text.x = element_blank()) +
  theme(axis.text.y = element_blank())