Click the Original, Code and Reconstruction tabs to read about the issues and how they were fixed.
Objective
On average, 70% of the surface of the Earth is covered by water, of which 2.8% is fresh water and 97.2% is salt water.Safe and readily available water is important for public health, whether it is used for drinking, domestic use, food production or recreational purposes.The original visualization shows the quality of drinking water across the world on the basis of EPI scores. A higher scores means safer water.
The targeted audience is General people who should be aware of the quality of water available in their country.
The visualization chosen had the following three main issues:
Visual bombardment- In the original graph the author has overwhelming data of multiple countries in a small space which lead to visual bombardment. Sometimes visual bombardment is good but in our case because of this audience is unable to fetch information about their respective countries easily.
Proximity- From original graph it can be observed that author has tried to join circle representing countries in a way that overall share of visualization comes as a droplet. But while doing this author failed to apply Proximity concept which emphasis by grouping related items together. For example: Spain has EPI score of 94.8 and it is left outside from the countries which have similar EPI scores. The cluster in the center of graph comprise of countries with good EPI scores. Spain should be the part of that cluster.
Symmetry- In the original visualization we see that there are circles with different radius demonstrating different countries with different EPI scores. In order to achieve overall droplet shape of visualization author missed on concept of Symmetry. All the circles with same radius should have been clustered at one place and so on.
Reference
The following code was used to fix the issues identified in the original.
rm(list = ls())
# Libraries used
library(readr)
library(ggplot2)
library(mapdata)
# Loading 180 countries
A<-read.csv('Book1.csv')
# Getting world( countries longitude and latitude data)
world <- map_data("world")
# Grouping countries on basis of water safety index
country_name_lowest<- c( "Indonesia","South Africa","Sudan","Vanuatu","Ghana","Botswana",
"Gambia","Namibia","Tanzania","India","Djibouti","Uganda","Ivory Coast","Rwanda",
"Mozambique","Zimbabwe","Papua New Guinea","Kiribati","Comoros","Pakistan",
"Republic of Congo","Solomon Islands","Haiti","Kenya","Benin","Mauritania",
"Democratic Republic of the Congo","Zambia","Senegal","Eswatini","Malawi","Angola",
"Sierra Leone","Ethiopia","Guinea","Liberia","Mali","Burkina Faso","Cameroon",
"Lesotho","Guinea-Bissau","Eritrea","Madagascar","Burundi","Togo","Nigeria",
"Niger")
country_name_top <- c("Austria","Finland","Greece","Iceland","Ireland","Malta","Netherlands","Norway",
"Switzerland","United Kingdom","Germany","Sweden","Italy","Luxembourg","Denmark","Spain",
"France","Israel","Belgium","Japan","Cyprus","Canada","USA","Singapore","Portugal","South Korea",
"Australia","Brunei Darussalam")
country_name_25_50<- c("Mexico","Algeria","Tunisia","Iran","Trinidad","Malaysia","Bahamas","Barbados","Turkmenistan",
"Jamaica","Kyrgyzstan","Turkey","Lebanon","Ecuador","Sri Lanka","Azerbaijan","Oman",
"Cuba","Iraq","Seychelles","Antigua","Brazil","Paraguay","Grenada","Maldives","Mongolia",
"Venezuela","Dominica","Peru","Tonga","Thailand","Nicaragua","Saint Lucia","Panama",
"Saint Vincent","El Salvador","Samoa","Belize","Bolivia","Egypt","Morocco","Suriname","Dominican Republic",
"Cape Verde","Philippines","Sao Tome and Principe","Cambodia","Micronesia","Fiji","Tajikistan",
"Bhutan","Honduras","Marshall Islands","Myanmar","Equatorial Guinea","Afghanistan","Gabon",
"Guatemala","Bangladesh","Timor-Leste","Laos","Nepal")
country_name_50_75<- c("New Zealand","Slovenia","Taiwan","Chile","Poland","Czech Republic","Slovakia",
"Mauritius","Croatia","Uruguay","Armenia","Belarus","Hungary","Serbia","Argentina","Estonia",
"China","North Macedonia","Bulgaria","Latvia","Lithuania","Bosnia and Herzegovina","Kuwait",
"Qatar","Montenegro","Kazakhstan","Russia","Romania","Costa Rica","Ukraine","Jordan",
"Uzbekistan","Georgia","United Arab Emirates","Saudi Arabia","Viet Nam","Moldova","Albania",
"Bahrain","Colombia")
# 4 Subsets that include all 180 countries according to water safety levels.
country_map <- subset(world, region == country_name_top)
country_map1<- subset(world, region == country_name_lowest)
country_map2<- subset(world, region == country_name_25_50)
country_map3<- subset(world, region == country_name_50_75)
# World Map
p1=ggplot() +
geom_polygon(data = world, aes(x = long, y = lat, group = group),
fill = "white", color = "black") +
geom_polygon(data = country_map, aes(x = long, y = lat, group = group, fill = "#225EA8"),
color = "black") +
geom_polygon(data = country_map1, aes(x = long, y = lat, group = group, fill = "#FFFFCC"),
color = "black") +
geom_polygon(data = country_map2, aes(x = long, y = lat, group = group, fill = "#A1DAB4"),
color = "black") +
geom_polygon(data = country_map3, aes(x = long, y = lat, group = group, fill = "#41B6C4"),
color = "black") +
scale_fill_manual(values = c("#225EA8" = "#225EA8","#41B6C4"="#41B6C4","#A1DAB4"="#A1DAB4","#FFFFCC"="#FFFFCC")
, guide = guide_legend(title = "Safety Levels",title.theme = element_text(color = "#6A0DAD")),label=c("Safest","50-75% Safe","25-50% Safe","Least Safe"),na.value = "red") +
coord_fixed(1.3) +
theme_void()+
labs(title = "The Quality of Drinking Water Across World",)+
theme(plot.title = element_text(size = 20, hjust = 0.5, color = "#6A0DAD"))
Data Reference
The following plot fixes the main issues in the original.