Click the Original, Code and Reconstruction tabs to read about the issues and how they were fixed.
Objective
The objective of the original data visualization is to depict the amount of money(USD) that the global countries had spent on their Military in 2017. Also, the visualization tries to outlay the seriousness among these countries about their global security, informed via comparing the annual Military budgets. The target audience must be the general public and global budget enthusiasts around the world specifically interested in the defense sector.
The visualisation chosen had the following three main issues:
The title of the visualization is deceiving itself, as it says “Spending on War” giving out a wrong message, maybe to seek people’s attention with a catchy title. The data gives out the annual military expenditure of a country for 2017, but the audience may take it as the total money that the countries have spent on war where its not necessary that all the countries are involved in the war. Many countries like India, Japan, Australia, and many others, spend in the military to enhance global security and to strengthen their capacity for future counter-attacks.
Area and Size as Quantity - The pie chart used, contains pieces that depict the size as world percentage, while the structure of the pie chart might be appealing to the audience but the pieces are not convenient to make a comparison between any two countries visually, due to the absence of proper scaling method.
Visual Bombardment - Introduction of many categories with the help of color scaling the pieces proposes a challenge for the audience to understand the data. For China and India, it’s hard to guess the % Spending as National GDP slab. Also, the flags layered in the background adds no value in providing visual information.
Reference
The following code was used to fix the issues identified in the original.
library(dplyr)
library(ggplot2)
library(readr)
Milexp <- read_csv("MILEXP.csv")
head(Milexp)
## # A tibble: 6 x 6
## Country `Share_of Govt_~ Share_of_GDP Worldwide_spend~ `Annual_Spendin~
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 USA 9.4 3.31 37.6 647.
## 2 Other ~ NA NA 16.2 279
## 3 China 5.89 1.9 13.3 228.
## 4 Saudi ~ 30.7 10.2 4.09 70.4
## 5 Russia 12.1 4.23 3.87 66.5
## 6 India 9.18 2.51 3.75 64.6
## # ... with 1 more variable: Share_of_GDP_1 <chr>
Spend <- Milexp %>% slice(1:17)
str(Spend)
## tibble [17 x 6] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Country : chr [1:17] "USA" "Other Countries" "China" "Saudi Arabia" ...
## $ Share_of Govt_spending : num [1:17] 9.4 NA 5.89 30.7 12.13 ...
## $ Share_of_GDP : num [1:17] 3.31 NA 1.9 10.22 4.23 ...
## $ Worldwide_spending_ : num [1:17] 37.57 16.21 13.27 4.09 3.87 ...
## $ Annual_Spending(Billion USD): num [1:17] 646.8 279 228.5 70.4 66.5 ...
## $ Share_of_GDP_1 : chr [1:17] "3-6%" NA "1 - 2%" ">10%" ...
## - attr(*, "spec")=
## .. cols(
## .. Country = col_character(),
## .. `Share_of Govt_spending` = col_double(),
## .. Share_of_GDP = col_double(),
## .. Worldwide_spending_ = col_double(),
## .. `Annual_Spending(Billion USD)` = col_double(),
## .. Share_of_GDP_1 = col_character()
## .. )
Spend$Country <- as.factor(Spend$Country)
Spend$Share_of_GDP_1 <- as.factor(Spend$Share_of_GDP_1)
Spend <- data.frame(Spend)
Spend <- Spend[order(Spend$Annual_Spending.Billion.USD.,decreasing = TRUE),]
plot <-ggplot(data=Spend, aes(x=Annual_Spending.Billion.USD. , y=reorder(Country,Annual_Spending.Billion.USD.), label= Annual_Spending.Billion.USD.,fill= Share_of_GDP_1))+ geom_bar(stat="identity",position="dodge",width =1 , color = "black")+
labs(title = "MILITARY EXPENDITURE OF COUNTRIES IN 2017",
y = "COUNTRIES",
x = "EXPENDITURE($ BILLIONS)", fill = "Military Spending as %
of National GDP") +
theme_minimal() +
geom_text(hjust = -0.1, size = 3)+xlim(c(0,700))
Data Reference
The following plot fixes the main issues in the original.