Click the Original, Code and Reconstruction tabs to read about the issues and how they were fixed.
Objective
The objective of this visualisation is to convey the relative strengths of a country’s military. Its target audience is anyone with an interest in military, history, or geopolitics.
The visualisation chosen had the following three main issues:
Reference
The following code was used to fix the issues identified in the original.
library(ggplot2)
library(maps)
library(dplyr)
library(rgeos)
library(maptools)
library(ggmap)
library(broom)
library(stringr)
## There were some country names that didn't match between the two files.
## I edited these manually in excel.
military <- read.csv('military_data.csv', fileEncoding="UTF-8-BOM")
world <- map_data("world")
shp <- readShapeSpatial('shp/world-administrative-boundaries.shp')
library(leaflet)
military.leaf <- military %>%
rename(name = country)
merged<-sp::merge(shp, military.leaf, by='name', all.x= TRUE, duplicateGeoms = TRUE)
bins = c(0,100000,500000,1000000,5000000,11000000)
bins <- as.integer(bins)
pal <- colorBin(
"YlOrBr",
domain = military.leaf$total,
bins = bins,
pretty = FALSE
)
labels <- sprintf(
"<strong>%s</strong><br/>
%s Active Duty <br>
%s Paramilitary <br>
%s Reserves <br>
%s Total Military Personnel <br>
%s Total Military Personnel Per 1000 Capita",
merged$name,
prettyNum(merged$activeDuty,big.mark=","),
prettyNum(merged$paramilitary,big.mark=","),
prettyNum(merged$reserves,big.mark=","),
prettyNum(merged$total,big.mark=","),
prettyNum(round(merged$total/(merged$pop2022),0),big.mark=",")
) %>% lapply(htmltools::HTML)
library(htmlwidgets)
library(htmltools)
title <- tags$div(
HTML('<h3>Total Military Personnel by Country - 2022</h3>')
)
p3 <- leaflet(merged, options = leafletOptions(zoomSnap=0.25)) %>%
setView(lng = 0, lat = 35, zoom = 1.25)
p3 <- p3 %>% addPolygons(
fillColor = ~pal(total),
weight = 1,
opacity = 1,
color = "#444444",
dashArray = "1",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 3,
color = "white",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend(pal = pal,
values = ~total,
opacity = 0.7, title = "Total Military Personnel",
position = "bottomleft") %>%
addControl(title, position = "topright")
Data Reference
Worldpopulationreview.com. 2022. Military Size by Country 2022. [online] Available at: https://worldpopulationreview.com/country-rankings/military-size-by-country [Accessed 25 April 2022].
Public.opendatasoft.com. 2022. World Administrative Boundaries - Countries and Territories. [online] Available at: https://public.opendatasoft.com/explore/dataset/world-administrative-boundaries/export/?refine.status=Member+State [Accessed 27 April 2022].
The following plot fixes the main issues in the original.