Economist-Style Plot using R

Origin of the Economist plot can be found here. Using a very complicated approach, this plot was replicated by Le Hoang Van. In searching a more simpler method of plotting, this plot can be created by only using ggplot2 as follows:

R Codes for Data Cleaning and Visualization

# Data for ploting: 

dat <- read.csv(text = "Year,Russia,World
1996,0,423
1997,4,220
1998,1,221
1999,0,298
2000,0,322  
2001,8,530
2002,6,466
2003,17,459
2004,25,562
2005,27,664
2006,33,760
2007,53,893
2008,87,1038
2009,32,761
2010,62,949
2011,101,1109
2012,96,1130
2013,110,1317
2014,111,1535
2015,88,1738", header  = TRUE)


# Load some packages: 
# http://people.oregonstate.edu/~hanshumw/Specie%20I.D./Signage%20Backup/FONT%20Officina%20full/
# https://drawar.github.io/posts/dual-y-axis-ggplot2/


library(tidyverse)
myColors <- c("#68382C", "#00A4E6")
my_font <- "Ubuntu Condensed"

# Make a draft: 

ggplot() + 
  annotate("curve", 
           curvature = 0,
           x = 1995.8, 
           xend = 2015.5, 
           y = seq(50, 200, 50), 
           yend = seq(50, 200, 50),
           color = "gray70", size = 0.7) + 
  annotate("curve", 
           curvature = 0,
           x = 1995.8, 
           xend = 2015.5, 
           y = 0, 
           yend = 0,
           color = "gray30", size = 0.7) + 
  annotate("curve", 
           curvature = 0,
           x = c(1996, 2000, 2005, 2010, 2015), 
           xend = c(1996, 2000, 2005, 2010, 2015),
           y = 0, 
           yend = -5, color = "gray30", size = 0.7) + 
  annotate("text", 
           x = c(1996, 2000, 2005, 2010, 2015),
           y = 0, 
           label = c("1996", "2000", "05", "10", "15"), 
           family = my_font, 
           size = 5,
           color = "grey20", vjust = 2) + 
  geom_line(data = dat, aes(Year, Russia), color = myColors[1], size = 1.7) + 
  geom_line(data = dat, aes(Year, World / 10), color = myColors[2], size = 1.7) + 
  scale_y_continuous(limits = c(-15, 215)) + 
  scale_x_continuous(limits = c(1995.5, 2016.5), breaks = seq(1996, 2015, 1)) + 
  theme(panel.grid.major = element_blank()) + 
  theme(panel.grid.minor = element_blank()) + 
  annotate("text", x = 1995.5, y = seq(0, 200, 50), label = seq(0, 200, 50), 
           hjust = 0.7, color = myColors[1], size = 5.5, family = my_font) + 
  annotate("text", x = 2015.5, y = seq(0, 200, 50), label = seq(0, 2000, 500), 
           hjust = -0.2, color = myColors[2], size = 5.5, family = my_font) + 
  theme(axis.title = element_blank(), axis.text = element_blank()) + 
  theme(axis.ticks = element_blank()) + 
  theme(panel.background = element_rect(fill = "white")) + 
  theme(plot.background = element_rect(fill = "grey90")) + 
  annotate("text", x = 1995.5, y = 210, label = "Number in Russia", vjust = -1, 
           hjust = 0.15, size = 5, family = my_font, color = myColors[1], fontface = "bold") + 
  annotate("text", x = 2015.5, y = 210, label = "Rest of world", vjust = -1, 
           hjust = 0.6, size = 5, family = my_font, color = myColors[2], fontface = "bold") + 
  theme(plot.margin = unit(c(1.2, 0.7, 1, 0.7), "cm")) + 
  labs(title = "Off the rich list", 
       subtitle = "Russia billionaires", 
       caption = "Source: Russia’s billionaires\nD.Treisman, American Economic Review (2016)") + 
  theme(plot.title = element_text(family = my_font, size = 22, vjust = 4)) + 
  theme(plot.subtitle = element_text(family = my_font, size = 14, vjust = 6, color = "grey20")) + 
  theme(plot.caption = element_text(family = my_font, size = 12, vjust = -5, color = "grey30", hjust = 0)) 

library(grid)
grid.rect(x = 0.015, y = 0.93, hjust = 1, vjust = 0, gp = gpar(fill = "#e5001c", lwd = 0))  
grid.rect(x = 1, y = 1 - 0.005, hjust = 1, vjust = 0,  gp = gpar(fill = "#e5001c", lwd = 0))    
LS0tCnRpdGxlOiAiUGl0eSBSdXNzaWHigJlzIGJpbGxpb25haXJlcyIKYXV0aG9yOiAiTmd1eWVuIENoaSBEdW5nIgpzdWJ0aXRsZTogRGFpbHkgR3JhcGggU2VyaWVzCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICBoaWdobGlnaHQ6IHplbmJ1cm4KICAgIHRoZW1lOiBmbGF0bHkKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogeWVzCi0tLQoKYGBge3Igc2V0dXAsaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA2KQpgYGAKCiMgRWNvbm9taXN0LVN0eWxlIFBsb3QgdXNpbmcgUgoKT3JpZ2luIG9mIHRoZSBFY29ub21pc3QgcGxvdCBjYW4gYmUgZm91bmQgW2hlcmVdKGh0dHBzOi8vd3d3LmVjb25vbWlzdC5jb20vZ3JhcGhpYy1kZXRhaWwvMjAxNi8wNS8xOS9waXR5LXJ1c3NpYXMtYmlsbGlvbmFpcmVzKS4gVXNpbmcgYSB2ZXJ5IGNvbXBsaWNhdGVkIGFwcHJvYWNoLCB0aGlzIHBsb3Qgd2FzIHJlcGxpY2F0ZWQgYnkgW0xlIEhvYW5nIFZhbl0oaHR0cHM6Ly9kcmF3YXIuZ2l0aHViLmlvL3Bvc3RzL2R1YWwteS1heGlzLWdncGxvdDIvKS4gSW4gc2VhcmNoaW5nIGEgbW9yZSBzaW1wbGVyIG1ldGhvZCBvZiBwbG90dGluZywgdGhpcyBwbG90IGNhbiBiZSBjcmVhdGVkIGJ5IG9ubHkgdXNpbmcgZ2dwbG90MiBhcyBmb2xsb3dzOiAKICAKIVtdKC9ob21lL2toYW5oYW4vcnVzc2lhLnBuZykKCgojIFIgQ29kZXMgZm9yIERhdGEgQ2xlYW5pbmcgYW5kIFZpc3VhbGl6YXRpb24KCgoKYGBge3IsIGV2YWw9RkFMU0V9CiMgRGF0YSBmb3IgcGxvdGluZzogCgpkYXQgPC0gcmVhZC5jc3YodGV4dCA9ICJZZWFyLFJ1c3NpYSxXb3JsZAoxOTk2LDAsNDIzCjE5OTcsNCwyMjAKMTk5OCwxLDIyMQoxOTk5LDAsMjk4CjIwMDAsMCwzMjIgIAoyMDAxLDgsNTMwCjIwMDIsNiw0NjYKMjAwMywxNyw0NTkKMjAwNCwyNSw1NjIKMjAwNSwyNyw2NjQKMjAwNiwzMyw3NjAKMjAwNyw1Myw4OTMKMjAwOCw4NywxMDM4CjIwMDksMzIsNzYxCjIwMTAsNjIsOTQ5CjIwMTEsMTAxLDExMDkKMjAxMiw5NiwxMTMwCjIwMTMsMTEwLDEzMTcKMjAxNCwxMTEsMTUzNQoyMDE1LDg4LDE3MzgiLCBoZWFkZXIgID0gVFJVRSkKCgojIExvYWQgc29tZSBwYWNrYWdlczogCiMgaHR0cDovL3Blb3BsZS5vcmVnb25zdGF0ZS5lZHUvfmhhbnNodW13L1NwZWNpZSUyMEkuRC4vU2lnbmFnZSUyMEJhY2t1cC9GT05UJTIwT2ZmaWNpbmElMjBmdWxsLwojIGh0dHBzOi8vZHJhd2FyLmdpdGh1Yi5pby9wb3N0cy9kdWFsLXktYXhpcy1nZ3Bsb3QyLwoKCmxpYnJhcnkodGlkeXZlcnNlKQpteUNvbG9ycyA8LSBjKCIjNjgzODJDIiwgIiMwMEE0RTYiKQpteV9mb250IDwtICJVYnVudHUgQ29uZGVuc2VkIgoKIyBNYWtlIGEgZHJhZnQ6IAoKZ2dwbG90KCkgKyAKICBhbm5vdGF0ZSgiY3VydmUiLCAKICAgICAgICAgICBjdXJ2YXR1cmUgPSAwLAogICAgICAgICAgIHggPSAxOTk1LjgsIAogICAgICAgICAgIHhlbmQgPSAyMDE1LjUsIAogICAgICAgICAgIHkgPSBzZXEoNTAsIDIwMCwgNTApLCAKICAgICAgICAgICB5ZW5kID0gc2VxKDUwLCAyMDAsIDUwKSwKICAgICAgICAgICBjb2xvciA9ICJncmF5NzAiLCBzaXplID0gMC43KSArIAogIGFubm90YXRlKCJjdXJ2ZSIsIAogICAgICAgICAgIGN1cnZhdHVyZSA9IDAsCiAgICAgICAgICAgeCA9IDE5OTUuOCwgCiAgICAgICAgICAgeGVuZCA9IDIwMTUuNSwgCiAgICAgICAgICAgeSA9IDAsIAogICAgICAgICAgIHllbmQgPSAwLAogICAgICAgICAgIGNvbG9yID0gImdyYXkzMCIsIHNpemUgPSAwLjcpICsgCiAgYW5ub3RhdGUoImN1cnZlIiwgCiAgICAgICAgICAgY3VydmF0dXJlID0gMCwKICAgICAgICAgICB4ID0gYygxOTk2LCAyMDAwLCAyMDA1LCAyMDEwLCAyMDE1KSwgCiAgICAgICAgICAgeGVuZCA9IGMoMTk5NiwgMjAwMCwgMjAwNSwgMjAxMCwgMjAxNSksCiAgICAgICAgICAgeSA9IDAsIAogICAgICAgICAgIHllbmQgPSAtNSwgY29sb3IgPSAiZ3JheTMwIiwgc2l6ZSA9IDAuNykgKyAKICBhbm5vdGF0ZSgidGV4dCIsIAogICAgICAgICAgIHggPSBjKDE5OTYsIDIwMDAsIDIwMDUsIDIwMTAsIDIwMTUpLAogICAgICAgICAgIHkgPSAwLCAKICAgICAgICAgICBsYWJlbCA9IGMoIjE5OTYiLCAiMjAwMCIsICIwNSIsICIxMCIsICIxNSIpLCAKICAgICAgICAgICBmYW1pbHkgPSBteV9mb250LCAKICAgICAgICAgICBzaXplID0gNSwKICAgICAgICAgICBjb2xvciA9ICJncmV5MjAiLCB2anVzdCA9IDIpICsgCiAgZ2VvbV9saW5lKGRhdGEgPSBkYXQsIGFlcyhZZWFyLCBSdXNzaWEpLCBjb2xvciA9IG15Q29sb3JzWzFdLCBzaXplID0gMS43KSArIAogIGdlb21fbGluZShkYXRhID0gZGF0LCBhZXMoWWVhciwgV29ybGQgLyAxMCksIGNvbG9yID0gbXlDb2xvcnNbMl0sIHNpemUgPSAxLjcpICsgCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoLTE1LCAyMTUpKSArIAogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDE5OTUuNSwgMjAxNi41KSwgYnJlYWtzID0gc2VxKDE5OTYsIDIwMTUsIDEpKSArIAogIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCkpICsgCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkgKyAKICBhbm5vdGF0ZSgidGV4dCIsIHggPSAxOTk1LjUsIHkgPSBzZXEoMCwgMjAwLCA1MCksIGxhYmVsID0gc2VxKDAsIDIwMCwgNTApLCAKICAgICAgICAgICBoanVzdCA9IDAuNywgY29sb3IgPSBteUNvbG9yc1sxXSwgc2l6ZSA9IDUuNSwgZmFtaWx5ID0gbXlfZm9udCkgKyAKICBhbm5vdGF0ZSgidGV4dCIsIHggPSAyMDE1LjUsIHkgPSBzZXEoMCwgMjAwLCA1MCksIGxhYmVsID0gc2VxKDAsIDIwMDAsIDUwMCksIAogICAgICAgICAgIGhqdXN0ID0gLTAuMiwgY29sb3IgPSBteUNvbG9yc1syXSwgc2l6ZSA9IDUuNSwgZmFtaWx5ID0gbXlfZm9udCkgKyAKICB0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLCBheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCkpICsgCiAgdGhlbWUoYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSkgKyAKICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAid2hpdGUiKSkgKyAKICB0aGVtZShwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJncmV5OTAiKSkgKyAKICBhbm5vdGF0ZSgidGV4dCIsIHggPSAxOTk1LjUsIHkgPSAyMTAsIGxhYmVsID0gIk51bWJlciBpbiBSdXNzaWEiLCB2anVzdCA9IC0xLCAKICAgICAgICAgICBoanVzdCA9IDAuMTUsIHNpemUgPSA1LCBmYW1pbHkgPSBteV9mb250LCBjb2xvciA9IG15Q29sb3JzWzFdLCBmb250ZmFjZSA9ICJib2xkIikgKyAKICBhbm5vdGF0ZSgidGV4dCIsIHggPSAyMDE1LjUsIHkgPSAyMTAsIGxhYmVsID0gIlJlc3Qgb2Ygd29ybGQiLCB2anVzdCA9IC0xLCAKICAgICAgICAgICBoanVzdCA9IDAuNiwgc2l6ZSA9IDUsIGZhbWlseSA9IG15X2ZvbnQsIGNvbG9yID0gbXlDb2xvcnNbMl0sIGZvbnRmYWNlID0gImJvbGQiKSArIAogIHRoZW1lKHBsb3QubWFyZ2luID0gdW5pdChjKDEuMiwgMC43LCAxLCAwLjcpLCAiY20iKSkgKyAKICBsYWJzKHRpdGxlID0gIk9mZiB0aGUgcmljaCBsaXN0IiwgCiAgICAgICBzdWJ0aXRsZSA9ICJSdXNzaWEgYmlsbGlvbmFpcmVzIiwgCiAgICAgICBjYXB0aW9uID0gIlNvdXJjZTogUnVzc2lh4oCZcyBiaWxsaW9uYWlyZXNcbkQuVHJlaXNtYW4sIEFtZXJpY2FuIEVjb25vbWljIFJldmlldyAoMjAxNikiKSArIAogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDIyLCB2anVzdCA9IDQpKSArIAogIHRoZW1lKHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDE0LCB2anVzdCA9IDYsIGNvbG9yID0gImdyZXkyMCIpKSArIAogIHRoZW1lKHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTIsIHZqdXN0ID0gLTUsIGNvbG9yID0gImdyZXkzMCIsIGhqdXN0ID0gMCkpIAoKbGlicmFyeShncmlkKQpncmlkLnJlY3QoeCA9IDAuMDE1LCB5ID0gMC45MywgaGp1c3QgPSAxLCB2anVzdCA9IDAsIGdwID0gZ3BhcihmaWxsID0gIiNlNTAwMWMiLCBsd2QgPSAwKSkgIApncmlkLnJlY3QoeCA9IDEsIHkgPSAxIC0gMC4wMDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLCAgZ3AgPSBncGFyKGZpbGwgPSAiI2U1MDAxYyIsIGx3ZCA9IDApKSAgICAKCmBgYAoK