Examining global shifts in birth sex ratios over five decades, highlighting the impact of technology and cultural preferences on gender imbalances.
A4 Size Viz
Our World in Data
Public Health
Author
Aditya Dahiya
Published
June 24, 2024
Decades of Imbalance: Sex Ratios at Birth Worldwide (1970-2020)
The graphic, based on data from Our World in Data (2022), compiled from United Nations World Population Prospects (2022), illustrates the sex ratio at birth across various countries from 1970 to 2020. The world maps for each decade depict the number of boys born per 100 girls, highlighting significant deviations from the natural sex ratio of 105 boys per 100 girls. The findings reveal that with the advent of sex-determination technology, countries like China, Azerbaijan, Vietnam, and Armenia experienced increasingly skewed sex ratios, favouring male births. Conversely, sub-Saharan African nations traditionally displayed a preference for female births, resulting in lower male-to-female birth ratios than expected. Recently, countries like China and India are trending back towards a balanced sex ratio at birth after decades of a strong preference for male children. The inset below the maps identifies the top 10 countries with the highest male births for each decade, underscoring regional and temporal variations in birth gender preferences.
How I made this graphic?
Getting the data
Code
# Data Import and Wrangling Toolslibrary(tidyverse) # All things tidylibrary(owidR) # Get data from Our World in R# Final plot toolslibrary(scales) # Nice Scales for ggplot2library(fontawesome) # Icons display in ggplot2library(ggtext) # Markdown text support for ggplot2library(showtext) # Display fonts in ggplot2library(colorspace) # To lighten and darken colourssearch_terms <- owidR::owid_search("gender")search_terms_1 <- owidR::owid_search("sex ratio")rawdf <- owidR::owid("sex-ratio-by-age")
Visualization Parameters
Code
# Font for titlesfont_add_google("Patua One",family ="title_font") # Font for the captionfont_add_google("Stint Ultra Condensed",family ="caption_font") # Font for plot textfont_add_google("Sorts Mill Goudy",family ="body_font") showtext_auto()# Colour Palettemypal <-c("#F5F5F5FF", "#0000C0FF", "#0000FFFF", "#C31E6EFF", "#8B3A62FF")# Background Colourbg_col <- mypal[1]text_col <- mypal[2]text_hil <- mypal[2]# Base Text Sizebts <-80plot_title <-"Decades of Imbalance: Sex Ratios at Birth Worldwide (1970-2020)"plot_subtitle <-"The global shifts in sex ratios at birth over the past five decades, highlighting significant deviations from the natural ratio of 105 boys per 100 girls. Advancements in sex-determination technology led to skewed ratios favoring boys in countries like China and Vietnam, while sub-Saharan Africa consistently showed a preference for female births."plot_subtitle <-str_wrap(plot_subtitle, 135)str_view(plot_subtitle)inset_title <-"Top 10 countries in each decade (by the most skewed sex-ratio at birth)."data_annotation <-"About the Data: The data for this analysis is sourced from Our World in Data, which compiles information based on the United Nations World Population Prospects (2022). The dataset includes sex ratio statistics—number of males per 100 females—at birth and various age levels from 1950 to 2021. This comprehensive dataset enables a detailed examination of global and regional trends in birth sex ratios over several decades."# Caption stuff for the plotsysfonts::font_add(family ="Font Awesome 6 Brands",regular = here::here("docs", "Font Awesome 6 Brands-Regular-400.otf"))github <-""github_username <-"aditya-dahiya"xtwitter <-""xtwitter_username <-"@adityadahiyaias"social_caption_1 <- glue::glue("<span style='font-family:\"Font Awesome 6 Brands\";'>{github};</span> <span style='color: {text_hil}'>{github_username} </span>")social_caption_2 <- glue::glue("<span style='font-family:\"Font Awesome 6 Brands\";'>{xtwitter};</span> <span style='color: {text_hil}'>{xtwitter_username}</span>")plot_caption <-paste0("**Data:** Our World in Data & United Nations | ","**Code:** ", social_caption_1, " | **Graphics:** ", social_caption_2 )