Xinxin Yang's avatar
Xinxin Yang committed
############################################################################
############################################################################
###                                                                      ###
###                              SECTION 1:                              ###
###                       SANKEY CHARTS AND TABLES                       ###
###                                                                      ###
############################################################################
############################################################################
Xinxin Yang's avatar
Xinxin Yang committed


Xinxin Yang's avatar
Xinxin Yang committed
#################################################################
##                            Setup                            ##
#################################################################
Xinxin Yang's avatar
Xinxin Yang committed

# set currently working directory
gdx.dir <- paste0(getwd(), "/inst/extdata/gdx")

# define gdx file name for reading
sanky_file1 <- "res_2_1230cap_after_2014_refdefaultA" # refdefautA
sanky_file2 <- "res_2_1230fta_import_bandefaultA" # bandefaultA

# loaded gdx files and saved in dataout
outdata.dir <- paste0(getwd(), "/inst/outdata")

prod_list = c("WHEA","MAIZ","BARL","RAPE","SUNF","PULS",
              "DDGS","SUGR","ACQU", "SOYC", "OCER","SOYA",
              "RAPO","POUM","RAPC","SUNC","BIOE","SOYO",
Xinxin Yang's avatar
Xinxin Yang committed
              "RICE", "PULS", "SUGA", "SUNO")
Xinxin Yang's avatar
Xinxin Yang committed


Xinxin Yang's avatar
Xinxin Yang committed
# load market balance
Xinxin Yang's avatar
Xinxin Yang committed
balance_detailed_Baseline <- convert_balance_detailed("EU",
                                                      prod_list,
                                                      sanky_file1,
                                                      folder = gdx.dir)
balance_detailed_Scenario <- convert_balance_detailed("EU",
                                                      prod_list,
                                                      sanky_file2,
                                                      folder = gdx.dir)
Xinxin Yang's avatar
Xinxin Yang committed


#################################################################
##                        Sankey charts                        ##
#################################################################
Xinxin Yang's avatar
Xinxin Yang committed
# biofuels = T
baseline_biofuels <- prelinks(balance_detailed = balance_detailed_Baseline, p_biofuels = T)
scenario_biofuels <- prelinks(balance_detailed = balance_detailed_Scenario, p_biofuels = T)
# biofuels = F
baseline <- prelinks(balance_detailed = balance_detailed_Baseline, p_biofuels = FALSE)
scenario <- prelinks(balance_detailed = balance_detailed_Scenario, p_biofuels = FALSE)

Xinxin Yang's avatar
Xinxin Yang committed
# get links and nodes for different selected market
Xinxin Yang's avatar
Xinxin Yang committed
# biofuels, baseline
Xinxin Yang's avatar
Xinxin Yang committed
biofuels_ln_baseline <- links_nodes(baseline_biofuels, scenario_biofuels, p_baseline =TRUE, fixedNodePosition = TRUE)
Xinxin Yang's avatar
Xinxin Yang committed
# biofuels, scenario
Xinxin Yang's avatar
Xinxin Yang committed
biofuels_ln <- links_nodes(baseline_biofuels, scenario_biofuels, p_baseline = FALSE,fixedNodePosition = TRUE)
Xinxin Yang's avatar
Xinxin Yang committed

Xinxin Yang's avatar
Xinxin Yang committed
# others, baseline
Xinxin Yang's avatar
Xinxin Yang committed
ln_baseline <- links_nodes(baseline, scenario, TRUE,fixedNodePosition = TRUE)
Xinxin Yang's avatar
Xinxin Yang committed
# others, scenario
Xinxin Yang's avatar
Xinxin Yang committed
ln <- links_nodes(baseline, scenario, FALSE,fixedNodePosition = TRUE)
Xinxin Yang's avatar
Xinxin Yang committed



Xinxin Yang's avatar
Xinxin Yang committed
# sankey plots
Xinxin Yang's avatar
Xinxin Yang committed

Xinxin Yang's avatar
Xinxin Yang committed
# one sankey diagram in one page
Xinxin Yang's avatar
Xinxin Yang committed
# biofuels, baseline,
Xinxin Yang's avatar
Xinxin Yang committed
plot_sankey(biofuels_ln_baseline,p_baseline = TRUE,png = FALSE,outdata.dir = outdata.dir)
Xinxin Yang's avatar
Xinxin Yang committed
# biofuels and scenario
Xinxin Yang's avatar
Xinxin Yang committed
plot_sankey(biofuels_ln,p_baseline = FALSE,png = FALSE,outdata.dir = outdata.dir)
Xinxin Yang's avatar
Xinxin Yang committed
# cereals, sugar .. and baseline
Xinxin Yang's avatar
Xinxin Yang committed
plot_sankey(ln_baseline,p_baseline =TRUE,png = FALSE,outdata.dir = outdata.dir)
Xinxin Yang's avatar
Xinxin Yang committed
# cereals, sugar .. and scenario
Xinxin Yang's avatar
Xinxin Yang committed
plot_sankey(ln, p_baseline = FALSE,png = FALSE,outdata.dir= outdata.dir)
Xinxin Yang's avatar
Xinxin Yang committed



Xinxin Yang's avatar
Xinxin Yang committed
# two sankey diagrams in one page
Xinxin Yang's avatar
Xinxin Yang committed
# combination two data frames
Xinxin Yang's avatar
Xinxin Yang committed
cake_oil_m <- combine_dfs(biofuels_ln_baseline, biofuels_ln)
Xinxin Yang's avatar
Xinxin Yang committed
plot_sankey(cake_oil_m,p_baseline = TRUE,png = FALSE,  outdata.dir= outdata.dir)
Xinxin Yang's avatar
Xinxin Yang committed

Xinxin Yang's avatar
Xinxin Yang committed
cereals <- combine_dfs(ln_baseline, ln)
Xinxin Yang's avatar
Xinxin Yang committed
plot_sankey(cereals,p_baseline = TRUE,png = TRUE, outdata.dir= outdata.dir)
Xinxin Yang's avatar
Xinxin Yang committed

Xinxin Yang's avatar
Xinxin Yang committed
##################################################################
##                            Tables                            ##
##################################################################
Xinxin Yang's avatar
Xinxin Yang committed
# make beautiful tables -----
Xinxin Yang's avatar
Xinxin Yang committed

Xinxin Yang's avatar
Xinxin Yang committed
# List of commodities for the market balances table
# oil cake market balance
# A list if long commodities name
Xinxin Yang's avatar
Xinxin Yang committed
oil_cake_market_list= c("Rape seed",
                        "Soya seed",
                        "Sunflower seed",
                        "Rape seed oil",
                        "Soya oil",
                        "Sunflower seed oil",
                        "Soya cake",
                        "Sunflowe seed cake",
                        "Rape seed cake",
                        "Destilled dried grains from bio-ethanol processing",
                        "Pulses",
                        "Bio ethanol")
Xinxin Yang's avatar
Xinxin Yang committed
# or A List of commodities' key
oil_cake_key_list  = c("RAPE","SUNF","SOYA","PULS","RAPO","SUNO","SOYO", "RAPC", "SUNC","SOYC","BIOE","DDGS")
Xinxin Yang's avatar
Xinxin Yang committed


Xinxin Yang's avatar
Xinxin Yang committed
# basline: load balance market.
b_oil_cake <- filter_market_balance(balance_detailed_Baseline, oil_cake_market_list)
Xinxin Yang's avatar
Xinxin Yang committed
b_oil_cake <- filter_market_balance(balance_detailed_Baseline, oil_cake_key_list)
Xinxin Yang's avatar
Xinxin Yang committed

Xinxin Yang's avatar
Xinxin Yang committed
# Scenario: load balance market.
s_oil_cake <- filter_market_balance(balance_detailed_Scenario, oil_cake_market_list)
Xinxin Yang's avatar
Xinxin Yang committed
s_oil_cake <- filter_market_balance(balance_detailed_Scenario, oil_cake_key_list)
Xinxin Yang's avatar
Xinxin Yang committed

# calculate the absolute and percentage changes between baseline and scenario.
Xinxin Yang's avatar
Xinxin Yang committed
oil_cake <- cal_percentage_change(b_oil_cake,s_oil_cake)
Xinxin Yang's avatar
Xinxin Yang committed

# make a nice table
Xinxin Yang's avatar
Xinxin Yang committed
oil_cake_tb <-  nicetable(oil_cake,"baseline for oil and cake markets") %>%
Xinxin Yang's avatar
Xinxin Yang committed
  tab_footnote(
    locations = cells_stub(rows = c(2)),
    footnote = md("Destilled dried grains from bio-ethanol processing")
  )%>%
  gtsave(
Xinxin Yang's avatar
Xinxin Yang committed
    "oil_cake_tb.html", inline_css = FALSE,
Xinxin Yang's avatar
Xinxin Yang committed
    path = outdata.dir)

Xinxin Yang's avatar
Xinxin Yang committed
webshot(paste0(outdata.dir,"/oil_cake_tb.html"),paste0(outdata.dir,"/png/","oil_cake_tb.png"),
        vwidth = 1100)

# cereals, meate.. balance market ----
cereals_list <- c("Barley",
                  "Grain maize",
                  "Other cereals",
                  "Wheat",
                  "Poultry meat",
                  "Rice milled",
                  "Sugar","Fish and other acquatic products")

# basline: load balance market.
b_cereals <- filter_market_balance(balance_detailed_Baseline, cereals_list)

# Scenario: load balance market.
s_cereals <- filter_market_balance(balance_detailed_Scenario, cereals_list)

# calculate the absolute and percentage changes between baseline and scenario.
cereals <- cal_percentage_change(b_cereals,s_cereals)


cereals_tb <- nicetable(cereals,"baseline for cereals, sugar, and meat markets") %>%
Xinxin Yang's avatar
Xinxin Yang committed
  gtsave(
Xinxin Yang's avatar
Xinxin Yang committed
    "cereals_tb.html", inline_css = FALSE,
Xinxin Yang's avatar
Xinxin Yang committed
    path = outdata.dir)

Xinxin Yang's avatar
Xinxin Yang committed

webshot(paste0(outdata.dir,"/cereals_tb.html"),paste0(outdata.dir,"/png/","cereals_tb.png"),
Xinxin Yang's avatar
Xinxin Yang committed
        vwidth = 1100)