Click the Original, Code and Reconstruction tabs to read about the issues and how they were fixed.
Objective
The objective of the above data visualization is to graphically showcase Gold Reserves among the countries by their central banks, across the world. The designer of the graph aims to categorize the countries according to the value of Gold Reserves in 2023. There were total of 124 countries present under the data and more than 75 of them has reported gold reserves value less than $50B.
Since the visualisation was published on howmuch.net.com and the data has been sourced from GoldHub of World Gold Council (www.gold.org) that represents the gold holdings by central banks of each country, the Target audience is likely to be gold/forex investors , traders or could be any individual who is interested to learn/investigate about Gold’s reserve and prices across the world.
The visualisation chosen had the following three main issues:
Visual Accuracy: The graph is depicted as a world map where the countries has been represented in terms of their “size” with respect to the amount of gold reserve holdings. However, there is no differentiation between two nations (as there should be in world map) as because they were all separated and also the border line between nations was not present.
Color(Bombardment): The color Gold is very rich and attractive to human eyes but in this graph every country was filled with Gold color which makes difficult for a viewer to understand and differentiate the amount of Gold Reserves between countries.
Poor Label Positioning (Deceptive): Straightforwardly the annotation 1 Dot = $ 40M of Gold Reserve makes no sense here. A normal human cannot judge/identify the amount of Gold Reserve(in Dollars) with the help of this annotation. Also the country names were written outside the country which makes it difficult to analyse as to which country it is representing. For ex- it very hard to observe and identify some countries like Hungary, Myanmar ,Thailand etc.
Reference
Raul Amoros, 30 May 2019, World’s Gold Reserves Mapped , howmuch.net
The following code was used to fix the issues identified in the original.
library(ggplot2)
library(dplyr)
library(tidyverse)
library(readxl)
library(png)
library(patchwork)
#Importing the Gold dataset
Gold <- read_xlsx("gold_reserve.xlsx")
head(Gold)
## # A tibble: 6 × 5
## region `region sector` `Gold Reserves Tonnes` `Holdings %`
## <chr> <chr> <dbl> <dbl>
## 1 Afghanistan Central Asia 21.9 13.4
## 2 Albania Central and Eastern Europe 3.11 3.53
## 3 Algeria Middle East & North Africa 174. 14.1
## 4 Argentina Latin America & Caribbean 61.7 8.04
## 5 Armenia Central and Eastern Europe 0 0
## 6 Aruba Latin America & Caribbean 3.11 11.7
## # ℹ 1 more variable: `Gold Reserves Millions` <dbl>
tail(Gold)
## # A tibble: 6 × 5
## region `region sector` `Gold Reserves Tonnes` `Holdings %`
## <chr> <chr> <dbl> <dbl>
## 1 UK Western Europe 310. 10.3
## 2 USA North America 8133. 67.1
## 3 Uruguay Latin America & Caribbean 0.1 0.04
## 4 Uzbekistan Central Asia 396. 64.5
## 5 Venezuela Latin America & Caribbean 161. 83.0
## 6 Yemen Middle East & North Africa 1.56 8.75
## # ℹ 1 more variable: `Gold Reserves Millions` <dbl>
# It is clearly evident that USA is far more ahead in terms of Gold Reserves as compared to other countries in the world.
#importing the world map data
mapdata <- map_data("world")
#joining the World map data with Gold dataset
mapdata <- left_join(mapdata, Gold , by="region", )
#Converting NA values to Zero under Gold Reserve Variable
mapdata <- mapdata %>% mutate(`Gold Reserves Millions` = ifelse(is.na(`Gold Reserves Millions`), 0, `Gold Reserves Millions`))
str(mapdata)
## 'data.frame': 99338 obs. of 10 variables:
## $ long : num -69.9 -69.9 -69.9 -70 -70.1 ...
## $ lat : num 12.5 12.4 12.4 12.5 12.5 ...
## $ group : num 1 1 1 1 1 1 1 1 1 1 ...
## $ order : int 1 2 3 4 5 6 7 8 9 10 ...
## $ region : chr "Aruba" "Aruba" "Aruba" "Aruba" ...
## $ subregion : chr NA NA NA NA ...
## $ region sector : chr "Latin America & Caribbean" "Latin America & Caribbean" "Latin America & Caribbean" "Latin America & Caribbean" ...
## $ Gold Reserves Tonnes : num 3.11 3.11 3.11 3.11 3.11 3.11 3.11 3.11 3.11 3.11 ...
## $ Holdings % : num 11.7 11.7 11.7 11.7 11.7 11.7 11.7 11.7 11.7 11.7 ...
## $ Gold Reserves Millions: num 181 181 181 181 181 ...
# Plotting the World Map with respective country names
country_text <- mapdata %>%
group_by(region) %>%
reframe(long = mean(long, na.rm = T), lat = mean(lat, na.rm = T), group = group)
map1 <- ggplot(mapdata, aes(x = long, y = lat, group=group)) +
geom_polygon(aes(fill = `Gold Reserves Millions`), color = "black")+
geom_text(data= country_text, aes(x=long, y=lat, label=region, group=group),
color = "black",fontface = "bold", check_overlap = TRUE , size = 2)+
geom_text(data= country_text, aes(x=long, y=lat-2, label=mapdata$`Holdings %`, group=group),
color = "black",fontface = "bold", check_overlap = TRUE , size = 1.2)
map1
# Annotating 3 countries names as they were not printed appropriately
map1 <- map1 + annotate(geom = "text", x = -100, y = 40, label = "USA ", color = "black", size = 2.2)+
annotate(geom = "text", x = -100, y = 37.5, label = "67.08 ", color = "black", size = 1.5)+
annotate(geom = "text", x = 80, y = 25, label = "India", color = "black", size = 2.2)+
annotate(geom = "text", x = 80, y = 23, label = "8.09",fontface = "bold", color = "black", size = 1.35)+
annotate(geom = "text", x = -120, y = 60, label = "Canada",fontface = "bold", color = "black", size = 2)+
annotate(geom = "text", x = -120, y = 57.85, label = "0.0", color = "black", size = 1.35)
# Final map of World with labelled sequential color scale
map2 <- map1 + scale_fill_gradient(name = "Gold Reserve in Millions",
low = "seashell",
high = "darkgoldenrod4",
limits = c(0,480000),
labels = c("0","50k","100k","150k","200k","250k","300k","350k","400k","450k","500k"),
breaks = c(0,50000,100000,150000,200000,250000,300000,350000,400000,450000,500000))+
theme(axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
axis.title.y = element_blank(),
axis.title.x=element_blank(),
rect = element_blank(),
plot.title = element_text(size=25),
plot.subtitle = element_text(size=14),
plot.caption = element_text(size = 9),
panel.background = element_rect(fill = "aliceblue")
)+
coord_fixed()+
labs(title = "Gold Reserves around the World", subtitle = "Gold Reserves holdings(%) of each country and their monetary value through sequential color scale",
caption = "Data sourced from https://howmuch.net/articles/gold-reserves-around-the-world")
map2
# Importing the image of IMF_ECB_BIS drawn separately
IMF_ECB_BIS <- readPNG("IMF,BIS,ECB Gold reserve.png", native = TRUE)
# Final map with IMF_ECB_BIS image
Final_map <- map2 +
inset_element(p = IMF_ECB_BIS,
left = 0.0075,
bottom = 0.12,
right = 0.15,
top = 0.29)
Final_map
Data Reference
World Gold Council , Goldhub section, Central bank holdings (3 May, 2023).
https://www.gold.org/goldhub/data/gold-reserves-by-country courtesy of the International Monetary Fund’s International Financial Statistics.
The following plot fixes the main issues in the original.
Final_map
World Map showcasing Gold Reserves of 124 Countries
# p.s - Zoom in the graph to full screen for clear representation!