Top Seven Trade Partners of Vietnam by Export Volume

R codes for Collecting Data and Visualization
# https://cran.r-project.org/web/packages/comtradr/vignettes/comtradr-vignette.html
# https://atlas.media.mit.edu/en/profile/country/vnm/
rm(list = ls())
library(tidyverse)
library(comtradr)
library(extrafont)
my_font <- "Roboto Condensed"
# Function for collecting data:
get_exportData <- function(Start) {
df <- ct_search(reporters = "Viet Nam", partners = "All", trade_direction = "exports", start_date = Start, end_date = Start + 4)
return(df %>% select(year, trade_flow, partner, trade_value_usd))
}
# Used this function:
year_span <- c(1998, 1998 + 5, 1998 + 2*5, 1998 + 3*5)
lapply(year_span, get_exportData) -> data_list
# Clean and prepare data for visualization:
do.call("rbind", data_list) -> df_export
df_export %>%
filter(partner != "World", year == 2017) %>%
top_n(n = 7, wt = trade_value_usd) %>%
pull(partner) -> top_10
df_export %>%
filter(partner %in% top_10) -> df_top10
df_top10 %>%
group_by(year) %>%
summarise_each(funs(sum), trade_value_usd) %>%
ungroup() %>%
mutate(total = trade_value_usd, trade_value_usd = NULL) -> m
right_join(df_top10, m, by = "year") %>%
mutate(Percent = trade_value_usd / total) -> df_gdp_percent
# Make graph:
x_label <- c("2000", rep("", 4), "2005", rep("", 4), "2010", rep("", 4), "2015", "", "2017")
df_gdp_percent %>%
mutate(partner = case_when(str_detect(partner, "Hong Kong") ~ "China, Hong Kong",
str_detect(partner, "USA") ~ "United States",
str_detect(partner, "Korea") ~ "Korea", TRUE ~ partner)) %>%
ggplot(aes(year, Percent, fill = partner)) +
geom_area(colour = "black", size = 0.1, alpha = 1) +
scale_fill_manual(values = c('#e41a1c','#377eb8','#4daf4a','#984ea3','#ff7f00','#ffff33','#a65628'), name = "") +
scale_y_continuous(labels = scales::percent) +
scale_x_continuous(breaks = seq(2000, 2017, 1), labels = x_label, expand = c(0, 0)) +
theme(panel.grid = element_blank()) +
theme(axis.ticks = element_blank()) +
theme(panel.background = element_rect(fill = "white")) +
labs(title = "Top Seven Trade Partners of Vietnam by Export Volume from 2000 to 2017",
subtitle = "In 2017 Vietnam exported $220B, making it the 21st largest exporter in the world. During the last five years\nthe exports of Vietnam have increased at an annualized rate of 13.5%, from $116B in 2012 to $220B in 2017.",
caption = "Data Source: United Nations Comtrade Database",
x = NULL, y = NULL) +
theme(plot.title = element_text(family = my_font, size = 19, color = "gray10")) +
theme(plot.subtitle = element_text(family = my_font, size = 13, colour = "gray30")) +
theme(plot.caption = element_text(family = my_font, size = 13, colour = "gray50")) +
theme(axis.text = element_text(family = my_font, size = 14)) +
theme(legend.text = element_text(family = my_font, size = 12)) +
theme(plot.margin = unit(c(1.2, 1.2, 1.2, 1.2), "cm")) +
theme(plot.background = element_rect(fill = "#f5f5f2", color = NA)) +
theme(panel.background = element_rect(fill = "#f5f5f2", color = NA)) +
theme(legend.background = element_rect(fill = "#f5f5f2", color = NA))
LS0tDQp0aXRsZTogIlRvcCBTZXZlbiBUcmFkZSBQYXJ0bmVycyBvZiBWaWV0bmFtIGJ5IEV4cG9ydCBWb2x1bWUiDQphdXRob3I6ICJOZ3V5ZW4gQ2hpIER1bmciDQpzdWJ0aXRsZTogIlIgZm9yIFBsZWFzdXJlIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgICMgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgdGhlbWU6IGZsYXRseQ0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCmBgYHtyIHNldHVwLGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBmaWcucmV0aW5hPTIpDQpgYGANCg0KIyAgVG9wIFNldmVuIFRyYWRlIFBhcnRuZXJzIG9mIFZpZXRuYW0gYnkgRXhwb3J0IFZvbHVtZQ0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcXERlc2t0b3BcXHBpY1xccDEuanBnKQ0KDQojIFIgY29kZXMgZm9yIENvbGxlY3RpbmcgRGF0YSBhbmQgVmlzdWFsaXphdGlvbg0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCiMgaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL2NvbXRyYWRyL3ZpZ25ldHRlcy9jb210cmFkci12aWduZXR0ZS5odG1sDQojIGh0dHBzOi8vYXRsYXMubWVkaWEubWl0LmVkdS9lbi9wcm9maWxlL2NvdW50cnkvdm5tLw0KDQpybShsaXN0ID0gbHMoKSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShjb210cmFkcikNCmxpYnJhcnkoZXh0cmFmb250KQ0KbXlfZm9udCA8LSAiUm9ib3RvIENvbmRlbnNlZCINCg0KDQojIEZ1bmN0aW9uIGZvciBjb2xsZWN0aW5nIGRhdGE6IA0KDQpnZXRfZXhwb3J0RGF0YSA8LSBmdW5jdGlvbihTdGFydCkgew0KICBkZiA8LSBjdF9zZWFyY2gocmVwb3J0ZXJzID0gIlZpZXQgTmFtIiwgcGFydG5lcnMgPSAiQWxsIiwgdHJhZGVfZGlyZWN0aW9uID0gImV4cG9ydHMiLCBzdGFydF9kYXRlID0gU3RhcnQsIGVuZF9kYXRlID0gU3RhcnQgKyA0KQ0KICByZXR1cm4oZGYgJT4lIHNlbGVjdCh5ZWFyLCB0cmFkZV9mbG93LCBwYXJ0bmVyLCB0cmFkZV92YWx1ZV91c2QpKQ0KfQ0KDQojIFVzZWQgdGhpcyBmdW5jdGlvbjogDQp5ZWFyX3NwYW4gPC0gYygxOTk4LCAxOTk4ICsgNSwgMTk5OCArIDIqNSwgMTk5OCArIDMqNSkNCmxhcHBseSh5ZWFyX3NwYW4sIGdldF9leHBvcnREYXRhKSAtPiBkYXRhX2xpc3QNCg0KIyBDbGVhbiBhbmQgcHJlcGFyZSBkYXRhIGZvciB2aXN1YWxpemF0aW9uOiANCg0KZG8uY2FsbCgicmJpbmQiLCBkYXRhX2xpc3QpIC0+IGRmX2V4cG9ydA0KDQpkZl9leHBvcnQgJT4lIA0KICBmaWx0ZXIocGFydG5lciAhPSAiV29ybGQiLCB5ZWFyID09IDIwMTcpICU+JSANCiAgdG9wX24obiA9IDcsIHd0ID0gdHJhZGVfdmFsdWVfdXNkKSAlPiUgDQogIHB1bGwocGFydG5lcikgLT4gdG9wXzEwDQoNCg0KZGZfZXhwb3J0ICU+JSANCiAgZmlsdGVyKHBhcnRuZXIgJWluJSB0b3BfMTApIC0+IGRmX3RvcDEwDQoNCmRmX3RvcDEwICU+JSANCiAgZ3JvdXBfYnkoeWVhcikgJT4lIA0KICBzdW1tYXJpc2VfZWFjaChmdW5zKHN1bSksIHRyYWRlX3ZhbHVlX3VzZCkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBtdXRhdGUodG90YWwgPSB0cmFkZV92YWx1ZV91c2QsIHRyYWRlX3ZhbHVlX3VzZCA9IE5VTEwpIC0+IG0NCg0KcmlnaHRfam9pbihkZl90b3AxMCwgbSwgYnkgPSAieWVhciIpICU+JSANCiAgbXV0YXRlKFBlcmNlbnQgPSB0cmFkZV92YWx1ZV91c2QgLyB0b3RhbCkgLT4gZGZfZ2RwX3BlcmNlbnQNCg0KDQoNCiMgTWFrZSBncmFwaDogDQoNCnhfbGFiZWwgPC0gYygiMjAwMCIsIHJlcCgiIiwgNCksICIyMDA1IiwgcmVwKCIiLCA0KSwgIjIwMTAiLCByZXAoIiIsIDQpLCAiMjAxNSIsICIiLCAiMjAxNyIpDQoNCmRmX2dkcF9wZXJjZW50ICU+JSANCiAgbXV0YXRlKHBhcnRuZXIgPSBjYXNlX3doZW4oc3RyX2RldGVjdChwYXJ0bmVyLCAiSG9uZyBLb25nIikgfiAiQ2hpbmEsIEhvbmcgS29uZyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJfZGV0ZWN0KHBhcnRuZXIsICJVU0EiKSB+ICJVbml0ZWQgU3RhdGVzIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cl9kZXRlY3QocGFydG5lciwgIktvcmVhIikgfiAiS29yZWEiLCBUUlVFIH4gcGFydG5lcikpICU+JSANCiAgZ2dwbG90KGFlcyh5ZWFyLCBQZXJjZW50LCBmaWxsID0gcGFydG5lcikpICsNCiAgZ2VvbV9hcmVhKGNvbG91ciA9ICJibGFjayIsIHNpemUgPSAwLjEsIGFscGhhID0gMSkgKyANCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygnI2U0MWExYycsJyMzNzdlYjgnLCcjNGRhZjRhJywnIzk4NGVhMycsJyNmZjdmMDAnLCcjZmZmZjMzJywnI2E2NTYyOCcpLCBuYW1lID0gIiIpICsgDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsgDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMjAwMCwgMjAxNywgMSksIGxhYmVscyA9IHhfbGFiZWwsIGV4cGFuZCA9IGMoMCwgMCkpICsgDQogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHRoZW1lKGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHRoZW1lKHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIpKSArIA0KICBsYWJzKHRpdGxlID0gIlRvcCBTZXZlbiBUcmFkZSBQYXJ0bmVycyBvZiBWaWV0bmFtIGJ5IEV4cG9ydCBWb2x1bWUgZnJvbSAyMDAwIHRvIDIwMTciLCANCiAgICAgICBzdWJ0aXRsZSA9ICJJbiAyMDE3IFZpZXRuYW0gZXhwb3J0ZWQgJDIyMEIsIG1ha2luZyBpdCB0aGUgMjFzdCBsYXJnZXN0IGV4cG9ydGVyIGluIHRoZSB3b3JsZC4gRHVyaW5nIHRoZSBsYXN0IGZpdmUgeWVhcnNcbnRoZSBleHBvcnRzIG9mIFZpZXRuYW0gaGF2ZSBpbmNyZWFzZWQgYXQgYW4gYW5udWFsaXplZCByYXRlIG9mIDEzLjUlLCBmcm9tICQxMTZCIGluIDIwMTIgdG8gJDIyMEIgaW4gMjAxNy4iLCANCiAgICAgICBjYXB0aW9uID0gIkRhdGEgU291cmNlOiBVbml0ZWQgTmF0aW9ucyBDb210cmFkZSBEYXRhYmFzZSIsIA0KICAgICAgIHggPSBOVUxMLCB5ID0gTlVMTCkgKyANCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTksIGNvbG9yID0gImdyYXkxMCIpKSArIA0KICB0aGVtZShwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxMywgY29sb3VyID0gImdyYXkzMCIpKSArIA0KICB0aGVtZShwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDEzLCBjb2xvdXIgPSAiZ3JheTUwIikpICsgDQogIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTQpKSArIA0KICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTIpKSArIA0KICB0aGVtZShwbG90Lm1hcmdpbiA9IHVuaXQoYygxLjIsIDEuMiwgMS4yLCAxLjIpLCAiY20iKSkgKyANCiAgdGhlbWUocGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2Y1ZjVmMiIsIGNvbG9yID0gTkEpKSArIA0KICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAiI2Y1ZjVmMiIsIGNvbG9yID0gTkEpKSArIA0KICB0aGVtZShsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIiNmNWY1ZjIiLCBjb2xvciA9IE5BKSkNCiAgDQpgYGANCg0K