5  Install necessary packages

#install.packages(c("leaflet", "rnaturalearth", "rnaturalearthdata", "sf", "dplyr"))

6 Load libraries

library(leaflet) 
library(rnaturalearth) 
library(rnaturalearthdata) 

Attaching package: 'rnaturalearthdata'
The following object is masked from 'package:rnaturalearth':

    countries110
library(sf) 
Linking to GEOS 3.13.0, GDAL 3.8.5, PROJ 9.5.1; sf_use_s2() is TRUE
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union

7 Get world countries shapefile

world <- ne_countries(scale = "medium", returnclass = "sf")

8 List of countries to highlight

highlighted_countries <- c( "China", "India", "Japan", "Pakistan", "Singapore", "Democratic Republic of the Congo", "Ethiopia", "Nigeria", "Senegal", "Sierra Leone", "South Africa", "Tanzania", "Gambia", "Uganda", "Zambia", "Zimbabwe", "Germany", "United Kingdom" )

9 Create a new column to flag highlighted countries

world <- world %>% mutate(highlight = ifelse(admin %in% highlighted_countries, "Yes", "No"))

10 Make the map

10.1 Leaflet Map

# Make the map
leaflet(world) %>%
  addTiles() %>%
  addPolygons(
    fillColor = ~ifelse(highlight == "Yes", "darkred", "lightgray"),
    weight = 1,
    color = "white",
    fillOpacity = 0.7,
    label = ~admin
  )

10.2 Robinson Projection

# Load packages
library(sf)
library(rnaturalearth)
library(ggplot2)
library(dplyr)

# Load country shapes
world <- ne_countries(scale = "medium", returnclass = "sf")

# Your countries
highlighted_countries <- c(
  "China", "India", "Japan", "Pakistan", "Singapore",
  "Democratic Republic of the Congo", "Ethiopia", "Nigeria", "Senegal", 
  "Sierra Leone", "South Africa", "Tanzania", "Gambia", "Uganda", 
  "Zambia", "Zimbabwe", "Germany", "United Kingdom"
)

# Flag the selected countries
world <- world %>%
  mutate(highlight = ifelse(admin %in% highlighted_countries, "Yes", "No"))

# Plot with Robinson projection
ggplot(world) +
  geom_sf(aes(fill = highlight), color = "white", size = 0.2) +
  scale_fill_manual(values = c("Yes" = "red", "No" = "gray90")) +
  coord_sf(crs = "+proj=robin") +  # Robinson projection
  theme_minimal() 

10.3 Equal Earth Projection

# Load required packages
library(sf)
library(rnaturalearth)
library(ggplot2)
library(dplyr)

# Load world countries shapefile
world <- ne_countries(scale = "medium", returnclass = "sf")

# List of countries to highlight
highlighted_countries <- c(
   "India", "Japan", "Pakistan", "Singapore",
  "Democratic Republic of the Congo", "Ethiopia", "Nigeria", "Senegal", 
  "Sierra Leone", "South Africa", "Tanzania", "Gambia", "Uganda", 
  "Zambia", "Zimbabwe", "Germany", "United Kingdom"
)

# Flag the countries
world <- world %>%
  mutate(highlight = ifelse(admin %in% highlighted_countries, "Yes", "No"))

# Plot with Equal Earth projection
ggplot(world) +
  geom_sf(aes(fill = highlight), color = "white", size = 0.2) +
  scale_fill_manual(values = c("Yes" = "#D7191C", "No" = "gray90")) +
  coord_sf(crs = "+proj=eqearth") +  # Equal Earth projection
  theme_minimal()+
  theme(legend.position = "none")