Original

Ukrainian Ports

Source: https://war.ukraine.ua/food-security/ (2023).

Objective

This Visualisation is used in the website war.ukraine.ua. This a website created by the Ukrainian government to provide information about the war in Ukraine. The website includes news articles, infographics, and videos about the war. The visualisation shows the amount of grain exported from Ukraine’s seaports in 2021. The infographic shows that the ports of Chornomorsk, Pivdennyi, Mykolaiv, Odesa, and Port of Olvia were the largest exporters of grain in Ukraine. The topic is for the general user and is kept very simple , however the simplicity takes away from the understanding. Here are some technical issues I can see with the visualisation:

The visualisation chosen had the following three main issues:

Reference

*Pantoliano, M. (2012) Data visualization principles: Lessons from Tufte, Moz. Available at: https://moz.com/blog/data-visualization-principles-lessons-from-tufte (Accessed: 20 July 2023).

Code

install.packages("ggplot2")
## package 'ggplot2' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\vidaey9\AppData\Local\Temp\6\RtmpCkLh8f\downloaded_packages
install.packages("RColorBrewer")
## package 'RColorBrewer' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\vidaey9\AppData\Local\Temp\6\RtmpCkLh8f\downloaded_packages
library(ggplot2)
library(RColorBrewer)

# Create a data frame
df <- data.frame(
  Port = c("Chornomorsk", "Pivdennyi", "Mykolaiv", "Odesa", "Other", "Port of Olvia"),
  Amount = c(14.6, 12.9, 9.7, 5.8, 3.59, 2.9)
)


p1<-ggplot(df, aes(x=reorder(Port, Amount), y=Amount, fill=Port)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  scale_fill_brewer(palette="Dark2") +
  geom_text(aes(label=Amount), position=position_dodge(width=0.9), hjust=-0.25) +
  xlab("Port") +
  ylab("Millions of Metric tonnes per year") +
  ggtitle("Yearly Shipping Quantities by Port") +
  theme_minimal() +
  theme(legend.position = "none",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.text.y = element_text(size=14))


p2<-ggplot(df, aes(x=reorder(Port, Amount), y=Amount)) +
  geom_segment(aes(x=Port, xend=Port, y=0, yend=Amount, color=Port), size=1.5) +
  geom_point(aes(color=Port), size=5, alpha=0.7) +
  scale_color_brewer(palette="Dark2") +
  coord_flip() +
  theme_minimal() +
  theme(legend.position = "none",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.text.y = element_text(size = 14)) +
  xlab("Port") +
  ylab("Millions of Metric tonnes per year") +
  ggtitle("Yearly Shipping Quantities by Port")

Data Reference

Reconstruction

The following plot fixes the main issues in the original.