Comparing London Memorials: Johns, Women, and Dogs (Updated)

In England’s grand capital, dear, More Johns than dames, it appears. For each woman of might, A John’s in plain sight, Confirming our gendered-statue fears.

Introduction

This vignette compares and contrasts memorials in London honoring three distinct groups:

  1. Men named John - to examine how common male figures are commemorated
  2. Women (of any name) - to assess gender representation in public memorials
  3. Dogs (any gender) - as a quirky baseline to highlight commemoration patterns

Data Sources: * Wikidata: Structured data for statues and public art in London. * OpenStreetMap: Crowdsourced data for memorials and statues.

Load Data

We use the targets package to manage the data pipeline.

Show code
# Note: statuesnamedjohn not loaded - vignette uses pre-computed targets objects
# devtools::load_all()  # Uncomment if package functions are needed
library(dplyr)
library(ggplot2)
library(sf)
library(targets)
library(leaflet)
Show code
# Load data from targets pipeline
# We assume targets::tar_make() has been run previously
if (dir.exists(file.path(rprojroot::find_root(rprojroot::is_r_package), "_targets"))) {
  # Set path to project root
  tar_config_set(store = file.path(rprojroot::find_root(rprojroot::is_r_package), "_targets"))
  
  all_memorials <- targets::tar_read(all_memorials, store = "_targets")
  summary_table <- targets::tar_read(summary_table, store = "_targets")
  findings <- targets::tar_read(findings, store = "_targets")
  category_plot <- targets::tar_read(category_plot, store = "_targets")
  memorial_map_plot <- targets::tar_read(memorial_map_plot, store = "_targets")
  johns_comparison <- targets::tar_read(johns_comparison, store = "_targets")
  memorial_interactive_map <- targets::tar_read(memorial_interactive_map, store = "_targets")
  
  gender_analysis <- targets::tar_read(gender_analysis, store = "_targets")
} else {
  message("Targets pipeline store not found. Please run targets::tar_make() to generate data.")
  # Create dummy data for rendering if pipeline not run
  all_memorials <- data.frame()
  summary_table <- data.frame()
  findings <- data.frame()
  category_plot <- ggplot()
  memorial_map_plot <- ggplot()
  johns_comparison <- list(message = "Pipeline not run", claim_validated = FALSE, john_statues = 0, john_percent = 0, woman_statues = 0, woman_percent = 0)
  memorial_interactive_map <- leaflet()
  gender_analysis <- list(top_names_by_gender = data.frame())
}

Data Overview

Show code
knitr::kable(summary_table,
             caption = "Gender Representation Summary")
Gender Representation Summary
inferred_gender n percent
Unknown 1409 68.3
Male 562 27.2
Female 91 4.4
Animal 1 0.0
Other 1 0.0

Top Names by Gender

We extracted the first names from the memorials to identify the most common names for each gender group.

Show code
top_names_f <- gender_analysis$top_names_by_gender %>%
  dplyr::filter(inferred_gender == "Female") %>%
  dplyr::select(Name = extracted_names, Count = n, Percent = percent) %>%
  dplyr::arrange(desc(Count))

knitr::kable(top_names_f, caption = "Most Common Female Names")
Most Common Female Names
Name Count Percent
Mary 14 14.9
Margaret 6 6.4
Marie 6 6.4
Edith 5 5.3
Elizabeth 4 4.3
Show code
top_names_m <- gender_analysis$top_names_by_gender %>%
  dplyr::filter(inferred_gender == "Male") %>%
  dplyr::select(Name = extracted_names, Count = n, Percent = percent) %>%
  dplyr::arrange(desc(Count))

knitr::kable(top_names_m, caption = "Most Common Male Names")
Most Common Male Names
Name Count Percent
John 69 11.8
George 52 8.9
William 52 8.9
Charles 41 7.0
Thomas 30 5.1

Representation Analysis

Show code
category_plot

Geographic Distribution

We can map the location of these memorials to see spatial patterns.

Interactive Map

Explore the memorials interactively. Click clusters to zoom in, and click markers to see details.

Show code
memorial_interactive_map

Comparison with External Studies

The campaign Statues for Equality claims that: * “The percentage of women’s statues in the UK that aren’t mythical or royal is approximately 3%” * “More statues of men named John dotted around the country than of women!”

Our analysis of London-specific data finds:

  • Found 71 statues named John/Jon/Jean (3.4%) vs 91 women statues (4.4%).

Validation: The claim that there are “more statues of men named John than of women” is refuted by our current London dataset.

  • Men named John: 71 (3.44%)
  • Women: 91 (4.41%)

(Note: Percentages are relative to the total dataset of queried memorials).

Session Info

Show code
sessionInfo()
#> R version 4.5.2 (2025-10-31)
#> Platform: aarch64-apple-darwin24.6.0
#> Running under: macOS Sequoia 15.7.1
#> 
#> Matrix products: default
#> BLAS:   /nix/store/jammm5gz621n7dkzfzc1c43gs6xv9a10-blas-3/lib/libblas.dylib 
#> LAPACK: /nix/store/30ypx3jnyq4r1z4nv742j1csfflsd66v-openblas-0.3.30/lib/libopenblasp-r0.3.30.dylib;  LAPACK version 3.12.0
#> 
#> locale:
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#> 
#> time zone: UTC
#> tzcode source: internal
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] leaflet_2.2.3  targets_1.11.4 sf_1.0-21      ggplot2_4.0.0  dplyr_1.1.4   
#> 
#> loaded via a namespace (and not attached):
#>  [1] generics_0.1.4     class_7.3-23       KernSmooth_2.23-26 digest_0.6.37     
#>  [5] magrittr_2.0.4     evaluate_1.0.5     grid_4.5.2         RColorBrewer_1.1-3
#>  [9] fastmap_1.2.0      rprojroot_2.1.1    jsonlite_2.0.0     processx_3.8.6    
#> [13] e1071_1.7-16       backports_1.5.0    secretbase_1.0.5   DBI_1.2.3         
#> [17] ps_1.9.1           purrr_1.1.0        crosstalk_1.2.2    scales_1.4.0      
#> [21] codetools_0.2-20   cli_3.6.5          rlang_1.1.6        units_1.0-0       
#> [25] bit64_4.6.0-1      withr_3.0.2        yaml_2.3.10        tools_4.5.2       
#> [29] base64url_1.4      assertthat_0.2.1   vctrs_0.6.5        R6_2.6.1          
#> [33] proxy_0.4-27       lifecycle_1.0.4    classInt_0.4-11    bit_4.6.0         
#> [37] htmlwidgets_1.6.4  arrow_20.0.0       pkgconfig_2.0.3    callr_3.7.6       
#> [41] pillar_1.11.1      gtable_0.3.6       glue_1.8.0         data.table_1.17.8 
#> [45] Rcpp_1.1.0         xfun_0.54          tibble_3.3.0       tidyselect_1.2.1  
#> [49] knitr_1.50         farver_2.1.2       htmltools_0.5.8.1  igraph_2.2.1      
#> [53] labeling_0.4.3     rmarkdown_2.30     compiler_4.5.2     prettyunits_1.2.0 
#> [57] S7_0.2.0