R Codes for Collecting Data and Ploting
#===================
# Data Preparing
#===================
# Load packages:
library(WHO)
library(tidyverse)
library(extrafont)
library(ggthemes)
library(grid)
# Government and total expenditure data:
expenditure_gov <- get_data("WHS7_108")
expenditure_total <- get_data("WHS7_105")
# Prepare data for ploting:
my_countries <- c("Viet Nam", "United States of America")
expenditure_gov %>%
filter(country %in% my_countries) %>%
select(country, year, gov_exp = value) -> gov_df
expenditure_total %>%
filter(country %in% my_countries) %>%
select(country, year, total_exp = value) -> total_df
medical_exp <- full_join(gov_df, total_df, by = c("country", "year")) %>%
mutate(gov_rate = gov_exp / total_exp)
#=========================
# Data Visualization
#=========================
# Colors and font selected:
my_colors <- c("#3E606F", "#8C3F4D")
my_font <- "Roboto Condensed"
my_label <- c("1995", rep("", 4), "00", rep("", 4), "05",
rep("", 4), "10", rep("", 3), "2014")
vn_rate_df %>%
mutate(pri_exp = total_exp - gov_exp) %>%
select(-country, -gov_rate, -total_exp) %>%
gather(a, b, -year) %>%
mutate(year = factor(year)) %>%
ggplot(aes(year, b, fill = a)) +
geom_col() +
theme_economist() +
scale_fill_economist(name = "", labels = c("Government", "Private")) +
theme(axis.ticks = element_blank()) +
scale_x_discrete(label = my_label) +
theme(axis.line.x = element_blank()) +
scale_y_continuous(expand = c(0, 0), limits = c(0, 450)) +
theme(axis.text = element_text(family = my_font, size = 12, face = "bold", color = "gray20")) +
labs(x = NULL, y = NULL,
title = "Vietnam's Composition of Expenditure on Health Care: 1995 - 2014",
subtitle = "Expenditure is calculated according to Purchasing Power Parity in 2010.",
caption = "Data Source: World Health Organization (WHO)") +
theme(plot.title = element_text(family = my_font, size = 20, colour = "grey10")) +
theme(plot.subtitle = element_text(family = my_font, size = 15, colour = "grey20")) +
theme(plot.caption = element_text(family = my_font, size = 12, colour = "grey30", face = "italic")) +
theme(legend.text = element_text(size = 12, color = "grey10", family = my_font)) +
theme(legend.position = c(0.15, 0.8)) +
theme(plot.margin = unit(c(1.2, 1.2, 1.2, 1.2), "cm"))
grid.rect(x = 0.015, y = 0.92, hjust = 1, vjust = 0, gp = gpar(fill = "#e5001c", lwd = 0))
vn_rate_df %>%
mutate(priv_rate = 1 - gov_rate) %>%
select(priv_rate, gov_rate, year) %>%
gather(a, b, -year) %>%
ggplot(aes(year, b, fill = a)) +
geom_area() +
theme_economist() +
scale_fill_economist(name = "", labels = c("Government", "Private")) +
scale_x_continuous(breaks = seq(1995, 2014, 1), labels = my_label, expand = c(0.01, 0)) +
scale_y_continuous(expand = c(0, 0), label = scales::percent) +
theme(axis.ticks = element_blank()) +
theme(axis.line.x = element_blank()) +
theme(axis.text = element_text(family = my_font, size = 12, face = "bold", color = "gray20")) +
labs(x = NULL, y = NULL,
title = "Share of Government Spending on Health Care in Vietnam: 1995 - 2014",
subtitle = "Expenditure is calculated according to Purchasing Power Parity in 2010.",
caption = "Data Source: World Health Organization (WHO)") +
theme(plot.title = element_text(family = my_font, size = 20, colour = "grey10")) +
theme(plot.subtitle = element_text(family = my_font, size = 15, colour = "grey20")) +
theme(plot.caption = element_text(family = my_font, size = 12, colour = "grey30", face = "italic")) +
theme(legend.text = element_text(size = 12, color = "grey10", family = my_font)) +
theme(plot.margin = unit(c(1.2, 1.2, 1.2, 1.2), "cm"))
grid.rect(x = 0.015, y = 0.92, hjust = 1, vjust = 0, gp = gpar(fill = "#e5001c", lwd = 0))
medical_exp %>%
ggplot(aes(year, gov_rate, color = country)) +
geom_line(size = 2) +
theme_economist() +
scale_color_economist(name = "", labels = c("United States", "Vietnam")) +
scale_x_continuous(breaks = seq(1995, 2014, 1), labels = my_label, expand = c(0.01, 0)) +
scale_y_continuous(label = scales::percent) +
theme(axis.text = element_text(family = my_font, size = 12, face = "bold", color = "gray20")) +
labs(x = NULL, y = NULL,
title = "Share of Government Spending on Health Care: Vietnam and United States",
subtitle = "Expenditure is calculated according to Purchasing Power Parity in 2010.",
caption = "Data Source: World Health Organization (WHO)") +
theme(plot.title = element_text(family = my_font, size = 20, colour = "grey10")) +
theme(plot.subtitle = element_text(family = my_font, size = 15, colour = "grey20")) +
theme(plot.caption = element_text(family = my_font, size = 12, colour = "grey30", face = "italic")) +
theme(legend.text = element_text(size = 12, color = "grey10", family = my_font)) +
theme(plot.margin = unit(c(1.2, 1.2, 1.2, 1.2), "cm"))
grid.rect(x = 0.015, y = 0.92, hjust = 1, vjust = 0, gp = gpar(fill = "#e5001c", lwd = 0))
LS0tDQp0aXRsZTogIlNoYXJlIG9mIEdvdmVybm1lbnQgU3BlbmRpbmcgb24gSGVhbHRoIENhcmU6IFZpZXRuYW0gYW5kIFVuaXRlZCBTdGF0ZXMiDQphdXRob3I6ICJOZ3V5ZW4gQ2hpIER1bmciDQpzdWJ0aXRsZTogIkRhaWx5IEdyYXBoIFNlcmllcyINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICAjIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogIHdvcmRfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCi0tLQ0KDQpgYGB7ciBzZXR1cCxpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgZmlnLnJldGluYT0yKQ0KYGBgDQoNCiMgR3JhcGhzDQoNCiFbXShDOlxcVXNlcnNcXFpib29rXFxEZXNrdG9wXFxwaWNcXGgxLmpwZykNCg0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcXERlc2t0b3BcXHBpY1xcaDIuanBnKQ0KIVtdKEM6XFxVc2Vyc1xcWmJvb2tcXERlc2t0b3BcXHBpY1xcaDMuanBnKQ0KDQojIFIgQ29kZXMgZm9yIENvbGxlY3RpbmcgRGF0YSBhbmQgUGxvdGluZw0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCg0KIz09PT09PT09PT09PT09PT09PT0NCiMgIERhdGEgUHJlcGFyaW5nDQojPT09PT09PT09PT09PT09PT09PQ0KDQojIExvYWQgcGFja2FnZXM6IA0KDQpsaWJyYXJ5KFdITykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShleHRyYWZvbnQpDQpsaWJyYXJ5KGdndGhlbWVzKQ0KbGlicmFyeShncmlkKQ0KDQojIEdvdmVybm1lbnQgYW5kIHRvdGFsIGV4cGVuZGl0dXJlIGRhdGE6IA0KDQpleHBlbmRpdHVyZV9nb3YgPC0gZ2V0X2RhdGEoIldIUzdfMTA4IikNCmV4cGVuZGl0dXJlX3RvdGFsIDwtIGdldF9kYXRhKCJXSFM3XzEwNSIpDQoNCiMgUHJlcGFyZSBkYXRhIGZvciBwbG90aW5nOiANCg0KbXlfY291bnRyaWVzIDwtIGMoIlZpZXQgTmFtIiwgIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYSIpDQoNCmV4cGVuZGl0dXJlX2dvdiAlPiUgDQogIGZpbHRlcihjb3VudHJ5ICVpbiUgbXlfY291bnRyaWVzKSAlPiUgDQogIHNlbGVjdChjb3VudHJ5LCB5ZWFyLCBnb3ZfZXhwID0gdmFsdWUpIC0+IGdvdl9kZg0KDQoNCmV4cGVuZGl0dXJlX3RvdGFsICU+JSANCiAgZmlsdGVyKGNvdW50cnkgJWluJSBteV9jb3VudHJpZXMpICU+JSANCiAgc2VsZWN0KGNvdW50cnksIHllYXIsIHRvdGFsX2V4cCA9IHZhbHVlKSAtPiB0b3RhbF9kZg0KDQoNCm1lZGljYWxfZXhwIDwtIGZ1bGxfam9pbihnb3ZfZGYsIHRvdGFsX2RmLCBieSA9IGMoImNvdW50cnkiLCAieWVhciIpKSAlPiUgDQogIG11dGF0ZShnb3ZfcmF0ZSA9IGdvdl9leHAgLyB0b3RhbF9leHApDQoNCiM9PT09PT09PT09PT09PT09PT09PT09PT09DQojICBEYXRhIFZpc3VhbGl6YXRpb24NCiM9PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgQ29sb3JzIGFuZCBmb250IHNlbGVjdGVkOiANCm15X2NvbG9ycyA8LSBjKCIjM0U2MDZGIiwgIiM4QzNGNEQiKQ0KbXlfZm9udCA8LSAiUm9ib3RvIENvbmRlbnNlZCINCm15X2xhYmVsIDwtIGMoIjE5OTUiLCByZXAoIiIsIDQpLCAiMDAiLCByZXAoIiIsIDQpLCAiMDUiLCANCiAgICAgICAgICAgICAgcmVwKCIiLCA0KSwgIjEwIiwgcmVwKCIiLCAzKSwgIjIwMTQiKQ0KDQoNCnZuX3JhdGVfZGYgJT4lIA0KICBtdXRhdGUocHJpX2V4cCA9IHRvdGFsX2V4cCAtIGdvdl9leHApICU+JSANCiAgc2VsZWN0KC1jb3VudHJ5LCAtZ292X3JhdGUsIC10b3RhbF9leHApICU+JSANCiAgZ2F0aGVyKGEsIGIsIC15ZWFyKSAlPiUgDQogIG11dGF0ZSh5ZWFyID0gZmFjdG9yKHllYXIpKSAlPiUgDQogIGdncGxvdChhZXMoeWVhciwgYiwgZmlsbCA9IGEpKSArIA0KICBnZW9tX2NvbCgpICsgDQogIHRoZW1lX2Vjb25vbWlzdCgpICsgDQogIHNjYWxlX2ZpbGxfZWNvbm9taXN0KG5hbWUgPSAiIiwgbGFiZWxzID0gYygiR292ZXJubWVudCIsICJQcml2YXRlIikpICsgDQogIHRoZW1lKGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHNjYWxlX3hfZGlzY3JldGUobGFiZWwgPSBteV9sYWJlbCkgKyANCiAgdGhlbWUoYXhpcy5saW5lLnggPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsIDApLCBsaW1pdHMgPSBjKDAsIDQ1MCkpICsgDQogIHRoZW1lKGF4aXMudGV4dCAgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDEyLCBmYWNlID0gImJvbGQiLCBjb2xvciA9ICJncmF5MjAiKSkgKyANCiAgbGFicyh4ID0gTlVMTCwgeSA9IE5VTEwsIA0KICAgICAgIHRpdGxlID0gIlZpZXRuYW0ncyBDb21wb3NpdGlvbiBvZiBFeHBlbmRpdHVyZSBvbiBIZWFsdGggQ2FyZTogMTk5NSAtIDIwMTQiLCANCiAgICAgICBzdWJ0aXRsZSA9ICJFeHBlbmRpdHVyZSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byBQdXJjaGFzaW5nIFBvd2VyIFBhcml0eSBpbiAyMDEwLiIsIA0KICAgICAgIGNhcHRpb24gPSAiRGF0YSBTb3VyY2U6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb24gKFdITykiKSArIA0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAyMCwgY29sb3VyID0gImdyZXkxMCIpKSArIA0KICB0aGVtZShwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxNSwgY29sb3VyID0gImdyZXkyMCIpKSArIA0KICB0aGVtZShwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gbXlfZm9udCwgc2l6ZSA9IDEyLCBjb2xvdXIgPSAiZ3JleTMwIiwgZmFjZSA9ICJpdGFsaWMiKSkgKyANCiAgdGhlbWUobGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBjb2xvciA9ICJncmV5MTAiLCBmYW1pbHkgPSBteV9mb250KSkgKyANCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gYygwLjE1LCAwLjgpKSArIA0KICB0aGVtZShwbG90Lm1hcmdpbiA9IHVuaXQoYygxLjIsIDEuMiwgMS4yLCAxLjIpLCAiY20iKSkNCg0KDQpncmlkLnJlY3QoeCA9IDAuMDE1LCB5ID0gMC45MiwgaGp1c3QgPSAxLCB2anVzdCA9IDAsIGdwID0gZ3BhcihmaWxsID0gIiNlNTAwMWMiLCBsd2QgPSAwKSkgDQoNCg0KDQp2bl9yYXRlX2RmICU+JSANCiAgbXV0YXRlKHByaXZfcmF0ZSA9IDEgLSBnb3ZfcmF0ZSkgJT4lIA0KICBzZWxlY3QocHJpdl9yYXRlLCBnb3ZfcmF0ZSwgeWVhcikgJT4lIA0KICBnYXRoZXIoYSwgYiwgLXllYXIpICU+JSANCiAgZ2dwbG90KGFlcyh5ZWFyLCBiLCBmaWxsID0gYSkpICsgDQogIGdlb21fYXJlYSgpICsgDQogIHRoZW1lX2Vjb25vbWlzdCgpICsgDQogIHNjYWxlX2ZpbGxfZWNvbm9taXN0KG5hbWUgPSAiIiwgbGFiZWxzID0gYygiR292ZXJubWVudCIsICJQcml2YXRlIikpICsgDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMTk5NSwgMjAxNCwgMSksIGxhYmVscyA9IG15X2xhYmVsLCBleHBhbmQgPSBjKDAuMDEsIDApKSArIA0KICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwKSwgbGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQpICsgDQogIHRoZW1lKGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCkpICsgDQogIHRoZW1lKGF4aXMubGluZS54ID0gZWxlbWVudF9ibGFuaygpKSArIA0KICB0aGVtZShheGlzLnRleHQgID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiwgY29sb3IgPSAiZ3JheTIwIikpICsgDQogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMLCANCiAgICAgICB0aXRsZSA9ICJTaGFyZSBvZiBHb3Zlcm5tZW50IFNwZW5kaW5nIG9uIEhlYWx0aCBDYXJlIGluIFZpZXRuYW06IDE5OTUgLSAyMDE0IiwgDQogICAgICAgc3VidGl0bGUgPSAiRXhwZW5kaXR1cmUgaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gUHVyY2hhc2luZyBQb3dlciBQYXJpdHkgaW4gMjAxMC4iLCANCiAgICAgICBjYXB0aW9uID0gIkRhdGEgU291cmNlOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uIChXSE8pIikgKyANCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMjAsIGNvbG91ciA9ICJncmV5MTAiKSkgKyANCiAgdGhlbWUocGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTUsIGNvbG91ciA9ICJncmV5MjAiKSkgKyANCiAgdGhlbWUocGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxMiwgY29sb3VyID0gImdyZXkzMCIsIGZhY2UgPSAiaXRhbGljIikpICsgDQogIHRoZW1lKGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiZ3JleTEwIiwgZmFtaWx5ID0gbXlfZm9udCkpICsgDQogIHRoZW1lKHBsb3QubWFyZ2luID0gdW5pdChjKDEuMiwgMS4yLCAxLjIsIDEuMiksICJjbSIpKQ0KICANCmdyaWQucmVjdCh4ID0gMC4wMTUsIHkgPSAwLjkyLCBoanVzdCA9IDEsIHZqdXN0ID0gMCwgZ3AgPSBncGFyKGZpbGwgPSAiI2U1MDAxYyIsIGx3ZCA9IDApKSAgDQogIA0KDQoNCm1lZGljYWxfZXhwICU+JSANCiAgZ2dwbG90KGFlcyh5ZWFyLCBnb3ZfcmF0ZSwgY29sb3IgPSBjb3VudHJ5KSkgKyANCiAgZ2VvbV9saW5lKHNpemUgPSAyKSArIA0KICB0aGVtZV9lY29ub21pc3QoKSArIA0KICBzY2FsZV9jb2xvcl9lY29ub21pc3QobmFtZSA9ICIiLCBsYWJlbHMgPSBjKCJVbml0ZWQgU3RhdGVzIiwgIlZpZXRuYW0iKSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDE5OTUsIDIwMTQsIDEpLCBsYWJlbHMgPSBteV9sYWJlbCwgZXhwYW5kID0gYygwLjAxLCAwKSkgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KSArIA0KICB0aGVtZShheGlzLnRleHQgID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiwgY29sb3IgPSAiZ3JheTIwIikpICsgDQogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMLCANCiAgICAgICB0aXRsZSA9ICJTaGFyZSBvZiBHb3Zlcm5tZW50IFNwZW5kaW5nIG9uIEhlYWx0aCBDYXJlOiBWaWV0bmFtIGFuZCBVbml0ZWQgU3RhdGVzIiwgDQogICAgICAgc3VidGl0bGUgPSAiRXhwZW5kaXR1cmUgaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gUHVyY2hhc2luZyBQb3dlciBQYXJpdHkgaW4gMjAxMC4iLCANCiAgICAgICBjYXB0aW9uID0gIkRhdGEgU291cmNlOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uIChXSE8pIikgKyANCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMjAsIGNvbG91ciA9ICJncmV5MTAiKSkgKyANCiAgdGhlbWUocGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSBteV9mb250LCBzaXplID0gMTUsIGNvbG91ciA9ICJncmV5MjAiKSkgKyANCiAgdGhlbWUocGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IG15X2ZvbnQsIHNpemUgPSAxMiwgY29sb3VyID0gImdyZXkzMCIsIGZhY2UgPSAiaXRhbGljIikpICsgDQogIHRoZW1lKGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgY29sb3IgPSAiZ3JleTEwIiwgZmFtaWx5ID0gbXlfZm9udCkpICsgDQogIHRoZW1lKHBsb3QubWFyZ2luID0gdW5pdChjKDEuMiwgMS4yLCAxLjIsIDEuMiksICJjbSIpKQ0KICANCg0KDQpncmlkLnJlY3QoeCA9IDAuMDE1LCB5ID0gMC45MiwgaGp1c3QgPSAxLCB2anVzdCA9IDAsIGdwID0gZ3BhcihmaWxsID0gIiNlNTAwMWMiLCBsd2QgPSAwKSkgDQoNCmBgYA0KDQo=