I hadn’t realised The Economist do a daily chart. They range from the simple and powerful to really complex visualisations. I won’t show any here, as their website/blog licensing of a single chart for 1 month to an academic costs £159, but you can see the map I’m going to recreate here: Which countries offer gender-neutral passports?
Setup
library(tidyverse) # for data wrangling and visualisationlibrary(sf) # for mapslibrary(rnaturalearth) # for map coordinateslibrary(ggthemes) # for map themelibrary(lwgeom) # for map projectionlibrary(showtext) # for adding fontslibrary(magick) # for adding a red rectangle to the top of the plot
12.1 Data
They don’t give a data source beyond “Press reports; The Economist”, but there aren’t that many countries, so I can just create the data table myself, with the help of Wikipedia’s article on legal recognition of non-binary gender. I also added the year that the first non-gendered passport was issued.
Code
nb_passports <-tribble(~country, ~restriction, ~year,"Argentina", "Self-declaration", 2021,"Australia", "Self-declaration", 2003,"Canada", "Self-declaration", 2017,"Colombia", "Self-declaration", 2022,"Denmark", "Self-declaration", 2014,"Ireland", "Self-declaration", 2015, # unclear if X or just gender change introduced then"Iceland", "Self-declaration", 2020,"Nepal", "Self-declaration", 2007,"New Zealand", "Self-declaration", 2012,"Pakistan", "Self-declaration", 2017,"United States of America", "Self-declaration", 2021,"Malta", "Self-declaration", 2017,#"Taiwan", "Medical assessment", 2020, # planned, not confirmed https://en.wikipedia.org/wiki/Intersex_rights_in_Taiwan"India", "Medical assessment", 2005,"Bangladesh", "Medical assessment", 2001,"Germany", "Medical assessment", 2019,"Austria", "Medical assessment", 2018,"Netherlands", "Medical assessment", 2018) %>%mutate(restriction =factor(restriction, c("Self-declaration", "Medical assessment")))
I tried do this with a new data table containing each country’s label, plus values for the text’s color, hjust, vjust, x, y, and the curve’s curvature, x, y, xend, and yend. However, you can’t set curvature in the mapping, so I had to sort that with pmap().