Giter Club home page Giter Club logo

worldtilegrid's Introduction

Travis-CI Build Status Coverage Status CRAN_Status_Badge

worldtilegrid

A ggplot2 Geom for World Tile Grids

Description

A “tile grid map” is a cartogram that uses same-sized tiles in approximate, relative positions of each other to represent a world map. The world tile grid relative position reference system used by this ‘ggplot2’ ‘Geom/Stat’ was the original work of ‘Jon Schwabish’ and converted to ‘CSV’ by ‘Maarten Lambrechts’.

What’s Inside The Tin

The following functions are implemented:

  • geom_wtg: World Tile Grid Geom
  • theme_enhance_wtg: World tile grid theme cruft remover that can be used with any other theme
  • wtg: World Tile Grid Basemap Data

The following data is included/exported:

wtg: World Tile Grid Basemap Data

Installation

install.packages("worldtilegrid", repos = "https://cinc.rud.is")
# or
devtools::install_git("https://git.rud.is/hrbrmstr/worldtilegrid.git")
# or
devtools::install_git("https://git.sr.ht/~hrbrmstr/worldtilegrid")
# or
devtools::install_gitlab("hrbrmstr/worldtilegrid")
# or
devtools::install_bitbucket("hrbrmstr/worldtilegrid")
# or
devtools::install_github("hrbrmstr/worldtilegrid")

Usage

library(worldtilegrid)
library(tidyverse)

# current verison
packageVersion("worldtilegrid")
## [1] '0.2.0'

Example (All countries are in the data set)

iso3cs <- worldtilegrid::wtg$alpha.3

set.seed(1)
data_frame(
  ctry = iso3cs,
  `Thing Val` = sample(1000, length(ctry))
) -> xdf

ggplot(xdf, aes(country = ctry, fill = `Thing Val`)) +
  geom_wtg(border_size = 0.5, border_col = "#252a32") +
  geom_text(
    aes(
      label = stat(alpha.2), 
      colour = I(ifelse(`Thing Val` < 500, "white", "black"))
    ), 
    stat = "wtg", size = 2
  ) + 
  coord_equal() +
  viridis::scale_fill_viridis() +
  labs(title = "World Tile Grid") +
  hrbrthemes::theme_ft_rc() +
  theme_enhance_wtg()

Example (Only a few countries are in the data set)

set.seed(1)
data_frame(
  ctry = worldtilegrid::wtg$alpha.3[1:30],
  `Thing Val` = sample(1000, length(ctry))
) -> xdf

ggplot(xdf, aes(country = ctry, fill = `Thing Val`)) +
  geom_wtg() +
  geom_text(
    aes(
      label = stat(alpha.2),
      colour = I(ifelse(`Thing Val` < 400, "#b2b2b2", "#2b2b2b"))
    ), 
    stat="wtg", size=2
  ) + 
  coord_equal() +
  viridis::scale_fill_viridis() +
  labs(title = "World Tile Grid") +
  hrbrthemes::theme_ft_rc() +
  theme_enhance_wtg()

Facet Example (All countries are in the data set)

set.seed(1)
data_frame(
  ctry = worldtilegrid::wtg$alpha.3,
  `Thing Val` = sample(1000, length(ctry)),
  grp = 'Thing One'
) -> xdf1

data_frame(
  ctry = worldtilegrid::wtg$alpha.3,
  `Thing Val` = sample(1000, length(ctry)),
  grp = 'Thing Two'
) -> xdf2

bind_rows(
  xdf1,
  xdf2
) -> xdf

ggplot(xdf, aes(country = ctry, fill = `Thing Val`)) +
  geom_wtg() +
  coord_equal() +
  facet_wrap(~grp) +
  viridis::scale_fill_viridis() +
  labs(title = "World Tile Grid Facets") +
  hrbrthemes::theme_ft_rc() +
  theme_enhance_wtg()

Facet Example (Only a few countries are in the data set)

The geom will fill in the gaps for you:

set.seed(1)
tibble(
  ctry = sample(iso3cs, 40),
  `Thing Val` = sample(1000, length(ctry)),
  grp = 'Thing One'
) -> xdf1

tibble(
  ctry = sample(iso3cs, 40),
  `Thing Val` = sample(1000, length(ctry)),
  grp = 'Thing Two'
) -> xdf2

bind_rows(
  xdf1,
  xdf2
) -> xdf

ggplot(xdf, aes(country = ctry, fill = `Thing Val`)) +
  geom_wtg(border_size = 0.5) +
  coord_equal() +
  facet_wrap(~grp) +
  scale_fill_viridis_c(
    na.value = alpha(hrbrthemes::ft_cols$gray, 2/5), direction = -1,
    option = "magma"
  ) +
  guides(
    fill = guide_colourbar(title.position = "top", title.hjust = 0.5)
  ) +
  labs(title = "World Tile Grid Facets") +
  hrbrthemes::theme_ipsum_rc() +
  theme_enhance_wtg() +
  theme(legend.position = "bottom") +
  theme(legend.key.width = unit(2, "lines"))

worldtilegrid's People

Contributors

erjanmx avatar hrbrmstr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

worldtilegrid's Issues

Confusing alpha.2 and alpha.3

Hi Bob,

first, thanks a lot for this beautiful package! I am not sure whether I am not using it correctly or whether this is a small bug.

When I use three-digit country codes in my data frame and label the data with stat(alpha.3), R returns an error. It works when using stat(alpha.2) and the output yields Using alpha.3 while the labels are only two-digit. Conversely, when my data frame contains two-digit country codes, it only works when using stat(alpha.3). Then, R returns Using alpha.2 and plots three-digit labels.

This is the code I'm running: https://gist.github.com/mschnetzer/3264b3997189867d5b0a9822ba569b2a

Any ideas? Thanks,
Matthias

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.