The Economist Style Chart

An Application with Data from World Bank

R Codes for Replicating

# Load some R packages: 

library(tidyverse)
library(magrittr)

# Collect data from World Bank: 
library(WDI)
data <- WDI(country = "VN", 
            indicator = c("NE.IMP.GNFS.CD", "TM.VAL.MRCH.CD.WT", "TM.VAL.MRCH.WL.CD"), 
            start = 2005, end = 2015)


# Rename for columns and convert to long form: 

data %<>% rename(IMP = NE.IMP.GNFS.CD, 
                 MRW = TM.VAL.MRCH.CD.WT, 
                 MAC = TM.VAL.MRCH.WL.CD)



# Make plot: 

library(ggthemes)
library(extrafont)
my_font <- "OfficinaSansITC"



data %>%  
  select(year, IMP, MRW, MAC) %>% 
  gather(Item, b, -year) %>% 
  mutate(b = round(b / 1000000000)) %>% 
  ggplot(aes(x = year, y = b, fill = Item)) + 
  geom_area(stat = "identity") + 
  scale_fill_economist(name = "Product Code") + 
  theme_economist() + 
  labs(x = NULL, y = NULL, 
       title = "Vietnam's Imports of Goods and Services: 2005 - 2015", 
       subtitle = "Unit in billion dollar and numbers adjusted for inflation rate and price of 2015.", 
       caption = "Data Source: The World Bank") + 
  scale_x_continuous(breaks = seq(2005, 2015, 1), limits = c(2005, 2015.2), expand = c(0, 0)) + 
  scale_y_continuous(limits = c(0, 550), expand = c(0, 10), breaks = seq(0, 550, 100)) + 
  theme(plot.margin = unit(c(1, 1.2, 1, 1), "cm")) + 
  theme(plot.title = element_text(family = my_font, size = 26, color = "gray20")) + 
  theme(plot.subtitle = element_text(family = my_font, size = 18, color = "gray40")) + 
  theme(plot.caption = element_text(family = my_font, size = 12, color = "gray40")) + 
  theme(axis.text = element_text(family = my_font, size = 14, color = "gray30")) + 
  theme(legend.text = element_text(family = my_font, size = 12, color = "grey30")) + 
  theme(legend.title = element_text(family = my_font, size = 16, color = "grey30")) 


grid.rect(x = 0.01, y = 0.93, hjust = 1, vjust = 0, gp = gpar(fill = "#e5001c", lwd = 1)) 
LS0tDQp0aXRsZTogIlJlcGxpY2F0ZSBhIFRoZSBFY29ub21pc3QgU3R5bGUgR3JhcGggKEFyZWEgQ2hhcnQpIg0KYXV0aG9yOiAiTmd1eWVuIENoaSBEdW5nIg0Kc3VidGl0bGU6ICJEYWlseSBHcmFwaCBTZXJpZXMiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgIyBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBoaWdobGlnaHQ6IHplbmJ1cm4NCiAgICB0aGVtZTogZmxhdGx5DQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6IHllcw0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQotLS0NCg0KYGBge3Igc2V0dXAsaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIGZpZy5yZXRpbmE9MikNCmBgYA0KDQojIFRoZSBFY29ub21pc3QgU3R5bGUgQ2hhcnQNCg0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcXERlc2t0b3BcXHBpY1xcZ3VpZGUuanBnKQ0KDQojIEFuIEFwcGxpY2F0aW9uIHdpdGggRGF0YSBmcm9tIFdvcmxkIEJhbmsNCg0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcXERlc2t0b3BcXHBpY1xcZWNvbjEuanBnKQ0KDQojIFIgQ29kZXMgZm9yIFJlcGxpY2F0aW5nIA0KDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KDQojIExvYWQgc29tZSBSIHBhY2thZ2VzOiANCg0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KG1hZ3JpdHRyKQ0KDQojIENvbGxlY3QgZGF0YSBmcm9tIFdvcmxkIEJhbms6IA0KbGlicmFyeShXREkpDQpkYXRhIDwtIFdESShjb3VudHJ5ID0gIlZOIiwgDQogICAgICAgICAgICBpbmRpY2F0b3IgPSBjKCJORS5JTVAuR05GUy5DRCIsICJUTS5WQUwuTVJDSC5DRC5XVCIsICJUTS5WQUwuTVJDSC5XTC5DRCIpLCANCiAgICAgICAgICAgIHN0YXJ0ID0gMjAwNSwgZW5kID0gMjAxNSkNCg0KDQojIFJlbmFtZSBmb3IgY29sdW1ucyBhbmQgY29udmVydCB0byBsb25nIGZvcm06IA0KDQpkYXRhICU8PiUgcmVuYW1lKElNUCA9IE5FLklNUC5HTkZTLkNELCANCiAgICAgICAgICAgICAgICAgTVJXID0gVE0uVkFMLk1SQ0guQ0QuV1QsIA0KICAgICAgICAgICAgICAgICBNQUMgPSBUTS5WQUwuTVJDSC5XTC5DRCkNCg0KDQoNCiMgTWFrZSBwbG90OiANCg0KbGlicmFyeShnZ3RoZW1lcykNCmxpYnJhcnkoZXh0cmFmb250KQ0KbXlfZm9udCA8LSAiT2ZmaWNpbmFTYW5zSVRDIg0KDQoNCg0KZGF0YSAlPiUgIA0KICBzZWxlY3QoeWVhciwgSU1QLCBNUlcsIE1BQykgJT4lIA0KICBnYXRoZXIoSXRlbSwgYiwgLXllYXIpICU+JSANCiAgbXV0YXRlKGIgPSByb3VuZChiIC8gMTAwMDAwMDAwMCkpICU+JSANCiAgZ2dwbG90KGFlcyh4ID0geWVhciwgeSA9IGIsIGZpbGwgPSBJdGVtKSkgKyANCiAgZ2VvbV9hcmVhKHN0YXQgPSAiaWRlbnRpdHkiKSArIA0KICBzY2FsZV9maWxsX2Vjb25vbWlzdChuYW1lID0gIlByb2R1Y3QgQ29kZSIpICsgDQogIHRoZW1lX2Vjb25vbWlzdCgpICsgDQogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMLCANCiAgICAgICB0aXRsZSA9ICJWaWV0bmFtJ3MgSW1wb3J0cyBvZiBHb29kcyBhbmQgU2VydmljZXM6IDIwMDUgLSAyMDE1IiwgDQogICAgICAgc3VidGl0bGUgPSAiVW5pdCBpbiBiaWxsaW9uIGRvbGxhciBhbmQgbnVtYmVycyBhZGp1c3RlZCBmb3IgaW5mbGF0aW9uIHJhdGUgYW5kIHByaWNlIG9mIDIwMTUuIiwgDQogICAgICAgY2FwdGlvbiA9ICJEYXRhIFNvdXJjZTogVGhlIFdvcmxkIEJhbmsiKSArIA0KICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDIwMDUsIDIwMTUsIDEpLCBsaW1pdHMgPSBjKDIwMDUsIDIwMTUuMiksIGV4cGFuZCA9IGMoMCwgMCkpICsgDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIDU1MCksIGV4cGFuZCA9IGMoMCwgMTApLCBicmVha3MgPSBzZXEoMCwgNTUwLCAxMDApKSArIA0KICB0aGVtZShwbG90Lm1hcmdpbiA9IHVuaXQoYygxLCAxLjIsIDEsIDEpLCAiY20iKSkgKyANCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMjYsIGNvbG9yID0gImdyYXkyMCIpKSArIA0KICB0aGVtZShwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxOCwgY29sb3IgPSAiZ3JheTQwIikpICsgDQogIHRoZW1lKHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTIsIGNvbG9yID0gImdyYXk0MCIpKSArIA0KICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDE0LCBjb2xvciA9ICJncmF5MzAiKSkgKyANCiAgdGhlbWUobGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDEyLCBjb2xvciA9ICJncmV5MzAiKSkgKyANCiAgdGhlbWUobGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxNiwgY29sb3IgPSAiZ3JleTMwIikpIA0KDQoNCmdyaWQucmVjdCh4ID0gMC4wMSwgeSA9IDAuOTMsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLCBncCA9IGdwYXIoZmlsbCA9ICIjZTUwMDFjIiwgbHdkID0gMSkpIA0KYGBgDQoNCg==