wrap_it <- function(x, len) { sapply(x, function(y) paste(strwrap(y, len), collapse = "\n"), USE.NAMES = FALSE) } wrap_labels <- function(x, len) { if (is.list(x)) { lapply(x, wrap_it, len) } else { wrap_it(x, len) } } comprss <- function(tx) { tx[is.na(tx)] <- 0 div <- findInterval(tx, c(1, 1e3, 1e6, 1e9, 1e12)) div[div == 0] <- 1 labels <- paste( "$", round(tx / 10^(3 * (div - 1)), 2), c("", "K", "Mn", "Bn", "Tn")[div] ) return(labels) } comprss_long <- function(tx) { tx[is.na(tx)] <- 0 div <- findInterval(tx, c(1, 1e3, 1e6, 1e9, 1e12)) div[div == 0] <- 1 labels <- paste( round(tx / 10^(3 * (div - 1)), 1), c("", thousand, million, billion, trillion)[div] ) return(labels) } perc <- function(x, format = "f", ...) { x <- ifelse(x * 100 >= 10, paste0(" ", formatC(100 * x, format = format, digits = 1, ...), "%"), paste0(formatC(100 * x, format = format, digits = 2, ...), "%") ) return(x) } shortened_company_names <- function(company_labels, length) { for (i in 1:length(company_labels)) { if (str_length(company_labels[[i]]) > length) { new_name <- strtrim(company_labels[[i]], length) company_labels[[i]] <- paste0(new_name, "...") } else if (str_length(company_labels[[i]]) < length) { for (j in 1:((length + 3) - str_length(company_labels[[i]]))) { company_labels[[i]] <- paste0(" ", company_labels[[i]]) } } } company_labels } set_initial_variables <- function() { EQCombin <<- NA CBCombin <<- NA EQCompProdSnapshot <<- NA CBCompProdSnapshot <<- NA EQportmap <<- NA CBportmap <<- NA eq_market <<- NA cb_market <<- NA has_equity <<- FALSE has_debt <<- FALSE HasCarbonBudget <<- FALSE RiskToPlot <<- NA PlotChart <<- TRUE chart_type <<- "" tech_to_plot <<- "" sector_to_plot <<- "" BV.asset_type <<- "" HasRenCapCB <<- F HasRenCapEQ <<- F HasCoalCapCB <<- F HasCoalCapEQ <<- F HasPower <<- FALSE HasAuto <<- FALSE HasOG <<- FALSE HasCoal <<- FALSE HasPowerCB <<- FALSE HasAutoCB <<- FALSE HasOGCB <<- FALSE HasCoalCB <<- FALSE HasPowerEQ <<- FALSE HasAutoEQ <<- FALSE HasOGEQ <<- FALSE HasCoalEQ <<- FALSE SovBondCov <<- NA } define_peers <- function() { if (twodii_internal) { if (file.exists(paste0(results_path, "/Equity_results_portfolio.rda"))) { eq_peers <<- read_rds(paste0(results_path, "/Equity_results_portfolio.rda")) %>% filter(investor_name == meta_investor_name) } else { warning("No Equity Peers File available. Setting inc_meta_portfolio to true MAY solve this. Alternatively there is no equity in any portfolio.") } if (file.exists(paste0(results_path, "/Bonds_results_portfolio.rda"))) { cb_peers <<- read_rds(paste0(results_path, "/Bonds_results_portfolio.rda")) %>% filter(investor_name == meta_investor_name) } else { warning("No bonds peers file available. Setting inc_meta_portfolio to true MAY solve this. Alternatively there are no bonds in any portfolio.") } } else { if (project_name == "web_tool") { eq_peers <<- NA cb_peers <<- NA } else { eq_peers <<- read_rds(paste0(project_location_ext, "/", project_name, "/40_Results/Equity_results_portfolio.rda")) %>% filter(investor_name == meta_investor_name) cb_peers <<- read_rds(paste0(project_location_ext, "/", project_name, "/40_Results/Bonds_results_portfolio.rda")) %>% filter(investor_name == meta_investor_name) } } } define_benchmarks <- function() { if (twodii_internal) { eq_market <<- read_rds(paste0(portcheck_v2_path, "/10_Projects/INDEX_2019/40_Results/Equity_results_portfolio.rda")) %>% filter(portfolio_name == eq_market_ref) cb_market <<- read_rds(paste0(portcheck_v2_path, "/10_Projects/INDEX_2019/40_Results/Bonds_results_portfolio.rda")) %>% filter(portfolio_name == cb_market_ref) } else { # Set per project eq_market <<- read_rds(paste0(data_location_ext, "/Fake_Index/Equity_results_portfolio.rda")) cb_market <<- read_rds(paste0(data_location_ext, "/Fake_Index/Bonds_results_portfolio.rda")) } if (!start_year %in% eq_market$year) { stop(paste0("Check that start years align. EQ Market Start year = ", min(eq_market$year), ". Report start year = ", start_year)) } if (!start_year %in% cb_market$year) { stop(paste0("Check that start years align. CB Market Start year = ", min(cb_market$year), ". Report start year = ", start_year)) } } results_call <- function() { # Filtering Market should already happen here. subgroup_overview <<- portfolio_overview[portfolio_overview$investor_name == investor_name_select & portfolio_overview$portfolio_name == portfolio_name_select & portfolio_overview$valid_input == TRUE, ] define_benchmarks() define_peers() # RenewableAdditions <<- readRDS(paste0(analysis_inputs_path, "/RenewablesAdditionsData.rda")) # CoalRetirements <<- readRDS(paste0(analysis_inputs_path, "/CoalRetirementsData.rda")) # CarbonData <<- readRDS(paste0(analysis_inputs_path, "/CarbonCapexUpstream.rda")) if (has_equity) { EQCompProdSnapshot <<- read_rds(paste0(results_path, "/", investor_name_select, "/Equity_results_company.rda")) EQCompProdSnapshot <<- EQCompProdSnapshot[EQCompProdSnapshot$portfolio_name == portfolio_name_select, ] if (has_map) { if (file.exists(paste0(results_path, "/", investor_name_select, "/Equity_results_map.rda"))) { EQportmap <- readRDS(paste0(results_path, "/", investor_name_select, "/Equity_results_map.rda")) EQportmap <- EQportmap %>% filter(portfolio_name == portfolio_name_select) } } if (data_check(EQportmap)) { EQportmap$scenario_geography <- ifelse(EQportmap$ald_sector == "Power", "GlobalAggregate", "Global") } EQportmap <<- EQportmap EQTechData <<- read_rds(paste0(analysis_inputs_path, "/masterdata_ownership_datastore_technology_type_view.rda")) EQOilShareData <<- EQTechData %>% select(id, ald_sector, technology, technology_type, year, ald_production, ald_production_unit) %>% filter( year %in% seq(start_year, start_year + 5, 1), ald_sector == "Oil&Gas" ) %>% mutate(technology = if_else(technology == "Oil and Condensate", "Oil", technology)) # EQOilShareData <<- readRDS(paste0(analysis_inputs_path, "oil_and_gas_resource_type_rollup_ownership.rda")) # EQOilShareData <<- readRDS(paste0(Location, "ReferenceData/oil_and_gas_resource_type_rollup_ownership.rda")) } if (has_debt == TRUE) { CBCompProdSnapshot <<- readRDS(paste0(results_path, "/", investor_name_select, "/Bonds_results_company.rda")) CBCompProdSnapshot <<- CBCompProdSnapshot[CBCompProdSnapshot$portfolio_name == portfolio_name_select, ] if (has_map) { if (file.exists(paste0(results_path, "/", investor_name_select, "/Bonds_results_map.rda"))) { CBportmap <<- readRDS(paste0(results_path, "/", investor_name_select, "/Bonds_results_map.rda")) CBportmap <<- CBportmap %>% filter(portfolio_name == portfolio_name_select) } if (data_check(CBportmap)) { CBportmap$scenario_geography <- ifelse(CBportmap$ald_sector == "Power", "GlobalAggregate", "Global") } CBportmap <<- CBportmap } CBTechData <<- read_rds(paste0(analysis_inputs_path, "/masterdata_debt_datastore_technology_type_view.rda")) CBOilShareData <<- CBTechData %>% select(id, ald_sector, technology, technology_type, year, ald_production, ald_production_unit) %>% filter( year %in% seq(start_year, start_year + 5, 1), ald_sector == "Oil&Gas" ) %>% mutate(technology = if_else(technology == "Oil and Condensate", "Oil", technology)) } if (has_sb) { SB.Summary <<- read.csv(paste0(PROC.INPUT.PATH, "SovereignBondSummary.csv"), strip.white = T, stringsAsFactors = F) } if (inc_sda_approach) { if (data_check(EQCombin)) { max_market <- max(eq_market$year, na.rm = T) max_year_data <- max(EQCombin$year, na.rm = T) if (max_year_data == max_market) { EQCombin <- sda_portfolio_target(eq_market, EQCombin, start_year = start_year, target_year = max_year_data ) } } if (data_check(CBCombin)) { max_market <- max(cb_market$year, na.rm = T) max_year_data <- max(CBCombin$year, na.rm = T) if (max_year_data == max_market) { CBCombin <- sda_portfolio_target(cb_market, CBCombin, start_year = start_year, target_year = max_year_data ) } } } } filter_by_parameters <- function(df, dfType, byscenario = TRUE, scenario.irrelevant = FALSE, by_equity_market = TRUE, ActorSectorOnly = FALSE, BV.asset_type = "") { # This Df type should allow us to clear a few things up if (data_check(df) == FALSE) { print("No Results") PlotChart <<- FALSE } else { PlotChart <<- TRUE if ("asset_type" %in% colnames(df) & BV.asset_type != "") { df <- df %>% filter(asset_type %in% BV.asset_type) if (data_check(df) == FALSE) { print("BV.asset_type Filter removed All Data") } } if (tech_to_plot != "" & "technology" %in% colnames(df)) { if (GraphType %in% c("CurrentTechnologyExposure", "FutureTechnologyExposure") & sector_to_plot %in% c("Oil&Gas", "Coal")) { df <- df %>% filter(technology %in% c("Oil", "Gas", "Coal")) if (data_check(df) == FALSE) { print("Techology Filter removed All Data") } } else { df <- df %>% filter(technology == tech_to_plot) } if (data_check(df) == FALSE) { print("Techology Filter removed All Data") } } if (RiskToPlot != "" & "RiskType" %in% colnames(df)) { df <- df %>% filter(RiskType == RiskToPlot) if (data_check(df) == FALSE) { print("Risk Filter removed All Data") } } # if (EquityMarketSelection != "" & "equity_market" %in% colnames(df) & by_equity_market == TRUE & data_check(df) == TRUE){df <- df %>% filter(equity_market == EquityMarketSelection) if (EquityMarketSelection != "" & "equity_market" %in% colnames(df) & by_equity_market == TRUE & data_check(df) == TRUE) { df <- df %>% filter(equity_market == EquityMarketSelection) if (data_check(df) == FALSE) { print("Equity Market Filter removed All Data") } } if (!AccountingPrinciple %in% c("", "Mixed") & "allocation" %in% colnames(df) & data_check(df) == TRUE) { # AccountingPrinciple %in% df$allocation & df <- df %>% filter(allocation == AccountingPrinciple) if (data_check(df) == FALSE) { print("Accounting Principle Filter removed All Data") } } if (AccountingPrinciple == "Mixed" & "allocation" %in% colnames(df) & data_check(df) == TRUE) { if (dfType == "EQ") { df <- df %>% filter(allocation == "ownership_weight") } else if (dfType == "CB") { df <- df %>% filter(allocation == "portfolio_weight") } if (data_check(df) == FALSE) { print("Accounting Principle Filter removed All Data") } } if (ScenarioGeographyChoose != "" & "scenario_geography" %in% colnames(df) & data_check(df) == TRUE) { if (ScenarioGeographyChoose == "GlobalAggregate") { df1 <- df %>% filter(ald_sector == "Power", scenario_geography == "GlobalAggregate") if (!data_check(df1)) { df1 <- df %>% filter(ald_sector == "Power", scenario_geography == "Global") } df2 <- df %>% filter(ald_sector != "Power", scenario_geography == "Global") df <- rbind(df1, df2) } else { df <- df %>% filter(scenario_geography == ScenarioGeographyChoose) } if (data_check(df) == FALSE) { print("scenario_geography Filter removed All Data") } } if (!sector_to_plot %in% c("", "All") & data_check(df) == TRUE) { if (GraphType %in% c("CurrentTechnologyExposure", "FutureTechnologyExposure") & sector_to_plot %in% c("Oil&Gas", "Coal")) { df <- df %>% filter(ald_sector %in% c("Oil&Gas", "Coal")) } else { df <- df %>% filter(ald_sector == sector_to_plot) } if (ActorSectorOnly == TRUE & !sector_to_plot %in% c("", "All") & data_check(df) == TRUE) { df <- df %>% filter(financial_sector == sector_to_plot) } if (data_check(df) == FALSE) { print("ald_sector Filter removed All Data") } } # if (AccountingPrinciple != "" & "allocation" %in% colnames(df) & AccountingPrinciple %in% df$allocation & data_check(df) == TRUE){df <- df %>% filter(allocation == AccountingPrinciple) # if (data_check(df) == FALSE){print("Accounting Principle Filter removed All Data")}} if (byscenario == TRUE & Scenariochoose != "" & "scenario" %in% colnames(df) & Scenariochoose %in% df$scenario & data_check(df) == TRUE) { df <- df %>% filter(scenario == Scenariochoose) if (data_check(df) == FALSE) { print("scenario Filter removed All Data") } } if (byscenario == TRUE & scenario.irrelevant == TRUE & "scenario" %in% colnames(df) & data_check(df) == TRUE) { # df$scenario <- NULL df <- df[df$scenario == unique(df$scenario)[1], ] df$scenario <- "NA" if (data_check(df) == FALSE) { print("scenario Filter removed All Data") } } if (PeerGroupSelection != "" & "investor_name" %in% colnames(df) & PeerGroupSelection %in% df$investor_name & data_check(df) == TRUE) { df <- df %>% filter(investor_name == PeerGroupSelection) if (data_check(df) == FALSE) { print("Peer Group Filter removed All Data") } } if (GraphType %in% c("FutureTechnologyExposure", "Map")) { if ("year" %in% colnames(df)) { df <- df %>% filter(year == start_year + 5) } } else if (GraphType %in% c("CurrentTechnologyExposure")) { if ("year" %in% colnames(df)) { df <- df %>% filter(year == start_year) } } if (GraphType %in% "CompanyInformation") { if (sector_to_plot %in% c("Oil&Gas", "CoalMining")) { if ("year" %in% colnames(df)) { df <- df %>% filter(year %in% c(start_year, start_year + 5)) } } else { if ("year" %in% colnames(df)) { df <- df %>% filter(year == start_year + 5) } } } if (GraphType %in% c("PeerComparison")) { if (PeerGroupSelection != "" & "portfolio_name" %in% colnames(df) & "PeerGroup" %in% colnames(df) & data_check(df) == TRUE) { df <- df %>% filter(portfolio_name != "MetaPort") if (data_check(df) == FALSE) { print("Peer Group Sub-Filter removed All Data") } } } else { if (PeerGroupSelection != "" & "portfolio_name" %in% colnames(df) & "PeerGroup" %in% colnames(df) & data_check(df) == TRUE) { df <- df %>% filter(portfolio_name == "MetaPort") if (data_check(df) == FALSE) { print("Peer Group Sub-Filter removed All Data") } } } if (data_check(df) == FALSE) { PlotChart <<- FALSE } } return(df) } # finalize and adjust for future & current exposure create_test_list <- function() { # ID.COLS <- c("PortName","investor_name_select","Type") # removed Type as this is not existing ID.COLS <- c("investor_name", "portfolio_name") ID.COLS.LONG <- c("investor_name", "portfolio_name", "year", "allocation", "ald_sector", "technology", "scenario_geography") # test_list <- NA ald_sectors <- c("Automotive", "Coal", "OilGas", "Power") if (file.exists(paste0(results_path, "/", investor_name_select, "/Equity_results_portfolio.rda"))) { EQCombin <<- read_rds(paste0(results_path, "/", investor_name_select, "/Equity_results_portfolio.rda")) EQCombin <<- EQCombin %>% filter(portfolio_name == portfolio_name_select) # EQCombin } if (file.exists(paste0(results_path, "/", investor_name_select, "/Bonds_results_portfolio.rda"))) { CBCombin <<- read_rds(paste0(results_path, "/", investor_name_select, "/Bonds_results_portfolio.rda")) CBCombin <<- CBCombin %>% filter(portfolio_name == portfolio_name_select) } if (data_check(EQCombin) == T) { # if (sector_to_plot %in% c("Shipping")) Equity <- filter_by_parameters(EQCombin, "EQ", ActorSectorOnly = T) %>% select(investor_name, portfolio_name, year, scenario, allocation, ald_sector, technology, scenario_geography, equity_market, plan_tech_prod) %>% group_by(investor_name, portfolio_name, scenario_geography, allocation, equity_market, year, ald_sector, technology) %>% summarise(Production = sum(plan_tech_prod, na.rm = T)) EquityTech <- Equity %>% ungroup() %>% select(investor_name, portfolio_name, technology, Production) %>% group_by(investor_name, portfolio_name, technology) %>% summarise(ald_sectorProd = sum(Production, na.rm = T)) Equity <- Equity %>% ungroup() %>% select(investor_name, portfolio_name, ald_sector, Production) %>% group_by(investor_name, portfolio_name, ald_sector) %>% summarise(ald_sectorProd = sum(Production, na.rm = T)) if (nrow(Equity) > 0) { Equity$ald_sector <- ifelse(Equity$ald_sector == "Oil&Gas", "OilGas", Equity$ald_sector) Equity$Indicator <- ifelse(Equity$ald_sectorProd > 0, TRUE, FALSE) Equity$ald_sectorProd <- NULL Equity$ald_sector <- paste0(Equity$ald_sector, ".EQ") Equity <- Equity %>% spread(value = Indicator, key = ald_sector) Equity <<- as.data.frame(Equity) HasCoalCapEQ <<- "CoalCap" %in% EquityTech$technology HasRenCapEQ <<- "RenewableCap" %in% EquityTech$technology has_equity <<- TRUE } else { has_equity <<- FALSE } } if (all(data_check(CBCombin) == T, chart_type %in% c("CB", "") | GraphType == "PercentageOfPortfolioAssessed")) { Debt <- filter_by_parameters(CBCombin, "CB", by_equity_market = F, ActorSectorOnly = T) %>% select(investor_name, portfolio_name, year, scenario, allocation, ald_sector, technology, scenario_geography, equity_market, plan_tech_prod) %>% # filter(year == start_year) %>% group_by(investor_name, portfolio_name, scenario_geography, allocation, equity_market, year, ald_sector, technology) %>% summarise(Production = sum(plan_tech_prod, na.rm = T)) DebtTech <- Debt %>% ungroup() %>% select(investor_name, portfolio_name, technology, Production) %>% group_by(investor_name, portfolio_name, technology) %>% summarise(ald_sectorProd = sum(Production, na.rm = T)) Debt <- Debt %>% ungroup() %>% select(investor_name, portfolio_name, ald_sector, Production) %>% group_by(investor_name, portfolio_name, ald_sector) %>% summarise(ald_sectorProd = sum(Production, na.rm = T)) Debt$ald_sector <- ifelse(Debt$ald_sector == "Oil&Gas", "OilGas", Debt$ald_sector) if (nrow(Debt) > 0) { Debt$Indicator <- ifelse(Debt$ald_sectorProd > 0, TRUE, FALSE) Debt$ald_sectorProd <- NULL Debt$ald_sector <- paste0(Debt$ald_sector, ".CB") Debt <- Debt %>% spread(value = Indicator, key = ald_sector) Debt <<- as.data.frame(Debt) HasCoalCapCB <<- "CoalCap" %in% DebtTech$technology HasRenCapCB <<- "RenewableCap" %in% DebtTech$technology # Debt$Indicator <<- ifelse(Debt$ > 0,1,0) has_debt <<- TRUE } else { has_debt <<- FALSE } } # missingcols <- rbind(paste0(ald_sectors,".EQ"),paste0(ald_sectors,".CB")) if (has_debt == TRUE & has_equity == TRUE) { test_list <- base::merge(Equity, Debt, by = ID.COLS) test_list[is.na(test_list)] <- FALSE colnames(test_list) <- gsub("\\.x", ".EQ", colnames(test_list)) colnames(test_list) <- gsub("\\.y", ".CB", colnames(test_list)) } else if (has_debt == FALSE & has_equity == TRUE) { test_list <- Equity # test_list$has_debt <- FALSE } else if (has_debt == TRUE & has_equity == FALSE) { test_list <- Debt # test_list$has_equity <- FALSE } else { test_list <- NA } eqcols <- paste0(sector_list, ".EQ") cbcols <- paste0(sector_list, ".CB") missingeqcols <- setdiff(eqcols, colnames(test_list)) missingcbcols <- setdiff(cbcols, colnames(test_list)) test_list[missingeqcols] <- FALSE test_list[missingcbcols] <- FALSE if (is.data.frame(test_list)) { test_list <- test_list %>% filter(portfolio_name == portfolio_name_select) } return(test_list) } define_test_variables <- function(test_list) { PortSummary <<- test_list[1, ] # TestType <<- test_list[1,"Type"] portfolio_name_selectLong <<- test_list[1, "portfolio_name_select"] investor_name_selectLong <<- test_list[1, "investor_name_select"] investor_name_select <<- gsub(" ", "", test_list[1, "investor_name_select"]) portfolio_name_select <<- gsub("[[:punct:]]", "", test_list[1, "portfolio_name"]) # portfolio_name_select <<- gsub(" ", "", test_list[1,"PortName"]) # KH: Adjusted this as i assume it wasn?t planned to overwrite portfolio_name_select portfolio_name_select <<- gsub(" ", "", portfolio_name_select) has_equity <<- test_list[1, "has_equity"] has_debt <<- test_list[1, "has_debt"] } graph_values <- function() { textfont <<- "Calibri" windowsFonts(Calibri = windowsFont(textfont)) # orangeish RenewablesColour <<- "#feedde" HydroColour <<- "#fdbe85" NuclearColour <<- "#fd8d3c" GasCapColour <<- "#e6550d" CoalCapColour <<- "#a63603" # purpleish ElectricColour <<- "#efedf5" HybridColour <<- "#bcbddc" ICEColour <<- "#756bb1" # goldish GasProdColour <<- "#D9DDD4" # "#F5F5F5" #D9DDD4 OilProdColour <<- "#BEBCAE" # "#BEA07B" #BEBCAE CoalProdColour <<- "#8B7E66" # "#8C510A" #8B7E66 # blueish FreightColor <<- "#6ba7e3" PassengerColor <<- "#d6e7f7" # GColor <<- "#D73027" FColor <<- "#FC8D59" EColor <<- "#FEE08B" DColor <<- "#FFFFBF" CColor <<- "#D9EF8B" Bcolor <<- "#91CF60" AColor <<- "#1A9850" # map MAXRenewablesCap <<- "#a75105" MAXHydroCap <<- "#9b4b03" MAXNuclearCap <<- "#6b2e01" MAXGasCap <<- "#260e02" MAXCoalCap <<- "#290e01" MAXElectric <<- "#6b5aa3" MAXHybrid <<- "#464987" MAXICE <<- "#3d3667" MAXGas <<- "#737f65" MAXOil <<- "#595647" MAXCoal <<- "#423b30" MINRenewablesCap <<- "#fde0c5" MINHydroCap <<- "#fdcb9e" MINNuclearCap <<- "#feb998" MINGasCap <<- "#f5834b" MINCoalCap <<- "#d84604" MINElectric <<- "#e0ddec" MINHybrid <<- "#bcbddc" MINICE <<- "#a49dcc" MINGas <<- "#D9DDD4" MINOil <<- "#d5d3ca" MINCoal <<- "#b9af9e" # sector energy <<- "#8B7E66" pow <<- "#a63603" trans <<- "#756bb1" othr <<- "#9793c6" notrelevant <<- "grey" shipping <<- "#0F1e82" # material <<- "#e46c00" # # trajectory area_6 <<- "#e07b73" area_4_6 <<- "#fde291" area_2_4 <<- "#FFFFCC" area_2 <<- "#c3d69b" area_1 <<- "#9cab7c" eq_port <<- "#1056ff" peer_group <<- "black" eq_line <<- "#a63603" # same as CoalCapColor cb_line <<- "#756bb1" # same as ICEColour bv_line <<- "#265B9B" # side-by-side techshare Port <<- "#265B9B" Benchmark <<- "#D9D9D9" # moodys HighRisk <<- area_6 MedRisk <<- area_4_6 LowRisk <<- area_2_4 # physical risk pal_stacked_riskWS <<- c("#D73027", area_6, area_2, area_2_4) # water stress charts pal_stacked_risks <<- c(area_6, area_2_4, area_2) # flood and wildfire charts # text size textsize <<- 8.5 textcolor <<- "#3D3D3C" AxisColour <<- "#3D3D3C" YourportColour <<- "#265b9b" # "#2e4b6e" #"#17224D" IndexColour <<- "grey85" Tar2DColourBar <<- "#b3de69" Tar2DColour <<- "#a1c75e" goodexpColour <<- "#1F891F" badexpColour <<- "#ed1c24" # "#fb8072" ReqCapColour <<- "grey55" CurrCapColour <<- "grey75" technology_order <<- c( "Gas", "Oil", "Coal", "RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap", "Electric", "Hybrid", "ICE", "Freight", "Passenger", "A", "B", "C", "D", "E", "F", "G" ) sector_order_short <<- c("FossilFuels", "Power", "Automotive") technology_order_short <<- c( "Gas", "Oil", "Coal", "RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap", "Electric", "Hybrid", "ICE" ) goodtechs <<- c("RenewablesCap", "HydroCap", "NuclearCap", "Electric", "Hybrid") badtechs <<- c("GasCap", "CoalCap", "ICE", "Gas", "Oil", "Coal") ColourPalette <<- data.frame( ald_sector = c( "Fossil Fuels", "Fossil Fuels", "Fossil Fuels", "Power", "Power", "Power", "Power", "Power", "Automotive", "Automotive", "Automotive", "Aviation", "Aviation", "Shipping", "Shipping", "Shipping", "Shipping", "Shipping", "Shipping", "Shipping" ), technology = technology_order, Colours = c( GasProdColour, OilProdColour, CoalProdColour, RenewablesColour, HydroColour, NuclearColour, GasCapColour, CoalCapColour, ElectricColour, HybridColour, ICEColour, FreightColor, PassengerColor, AColor, Bcolor, CColor, DColor, EColor, FColor, GColor ) ) ColourPalette$technology <- factor(ColourPalette$technology, levels = technology_order) ColourPalette <- arrange(ColourPalette, technology) linesize <<- 1 ppi <<- 600 } graph_name <- function(plotnumber, ParameterFile, explicit_filename = "") { namelist <- ParameterFile[, !names(ParameterFile) %in% c("portfolio_name_select", "investor_name_select")] namelist[is.na(namelist)] <- "" namelist <- lapply(1:length(namelist), function(x) paste0(toupper(substr(as.character(namelist[[x]]), 1, 3)), "_")) namelist <- namelist[1:6] namelist <- c(namelist, start_year) graphname <- do.call(paste0, namelist) graphname <- paste0(graphname, ".png") if (plotnumber == "00") { graphname <- gsub(".png", "", graphname) } else if (plotnumber != "99") { graphname <- paste0(report_path, plotnumber, "_", explicit_filename, graphname) } else { graphname <- paste0(GRAPH.PATH, graphname) } return(graphname) } # FIXME: There is another green_brown() in the repo create_interactive_report and # they are not identical. Which one should win? green_brown <- function(Tech) { GreenTechs <- c("Electric", "Hybrid", "RenewablesCap", "HydroCap", "NuclearCap") stopifnot(length(Tech) == 1L) if (Tech %in% GreenTechs) { TechIs <- "green" } else { TechIs <- "brown" } return(TechIs) } set_ald_sector <- function(Tech) { ald_sector <- NA ald_sector <- ifelse(grepl("Cap", Tech), "Power", ald_sector) ald_sector <- ifelse(Tech %in% c("Electric", "ICE", "Hybrid", "FuelCell"), "Automotive", ald_sector) ald_sector <- ifelse(Tech %in% c("Oil", "Gas"), "Oil&Gas", ald_sector) ald_sector <- ifelse(Tech == "Coal", "Coal", ald_sector) ald_sector } translate_labels <- function(Language) { Translations <- read_excel(paste0("data/TranslationFileUTF8.xlsx")) Translations <- Translations %>% select(TextLabel, all_of(Language)) %>% as.data.frame() for (t in 1:nrow(Translations)) { assign(x = Translations[t, "TextLabel"], value = Translations[t, Language], envir = .GlobalEnv) } } ReportFigures <- function(explicit_filenames = F) { explicit_filename <- "" # Introduction if (!explicit_filenames == F) { explicit_filename <- "_scope_of_analysis_" } ScopeOfAnalysis("01", explicit_filename = explicit_filename) # if (!explicit_filenames == F) { explicit_filename <- "_climate_relevant_sectors_" } PercentageOfPortfolioAssessed("02", explicit_filename = explicit_filename) # ScenarioGeographyChoose <- "Global" if (!explicit_filenames == F) { explicit_filename <- "_current_exposure_bonds_" } CarstenMetricChart("03", "CB", explicit_filename = explicit_filename) # if (!explicit_filenames == F) { explicit_filename <- "_current_expousre_equity_" } CarstenMetricChart("04", "EQ", explicit_filename = explicit_filename) # ScenarioGeographyChoose <- "GlobalAggregate" if (!explicit_filenames == F) { explicit_filename <- "_future_tech_mix_bonds_" } TechnologyExposure("05", "CB", "All", start_year + 5, explicit_filename = explicit_filename) # if (has_debt) { # 5 year Trajectory if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_coal_bonds_" } FiveYearGrowthTrend("07", "CB", "CoalCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_renewables_bonds_" } FiveYearGrowthTrend("08", "CB", "RenewablesCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_coal_bonds_" } FiveYearGrowthTrend("09", "CB", "GasCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_hydro_bonds_" } FiveYearGrowthTrend("10", "CB", "HydroCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_fossil_oil_bonds_" } FiveYearGrowthTrend("11", "CB", "Oil", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_fossil_gas_bonds_" } FiveYearGrowthTrend("12", "CB", "Gas", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_fossil_coal_bonds_" } FiveYearGrowthTrend("13", "CB", "Coal", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_auto_ice_bonds_" } FiveYearGrowthTrend("14", "CB", "ICE", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_auto_electric_bonds_" } FiveYearGrowthTrend("15", "CB", "Electric", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_auto_hybrid_bonds_" } FiveYearGrowthTrend("16", "CB", "Hybrid", LegendOn = F, explicit_filename = explicit_filename) } if (!explicit_filenames == F) { explicit_filename <- "_future_tech_mix_equity_" } TechnologyExposure("06", "EQ", "All", start_year + 5, explicit_filename = explicit_filename) # if (has_equity) { # 5 year Trajectory if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_coal_equity_" } FiveYearGrowthTrend("17", "EQ", "CoalCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_renewables_equity_" } FiveYearGrowthTrend("18", "EQ", "RenewablesCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_hydro_equity_" } FiveYearGrowthTrend("19", "EQ", "GasCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_power_hydro_equity_" } FiveYearGrowthTrend("20", "EQ", "HydroCap", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_fossil_oil_equity_" } FiveYearGrowthTrend("21", "EQ", "Oil", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_fossil_gas_equity_" } FiveYearGrowthTrend("22", "EQ", "Gas", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_fossil_coal_equity_" } FiveYearGrowthTrend("23", "EQ", "Coal", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_auto_ice_equity_" } FiveYearGrowthTrend("24", "EQ", "ICE", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_auto_electric_equity_" } FiveYearGrowthTrend("25", "EQ", "Electric", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_alignment_auto_hybrid_equity_" } FiveYearGrowthTrend("26", "EQ", "Hybrid", LegendOn = F, explicit_filename = explicit_filename) } if (IncOtherSectors == T) { if (!explicit_filenames == F) { explicit_filename <- "_emissions_cement_" } CO2IntensityTrend("30", "Cement", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_emissions_steel_" } CO2IntensityTrend("31", "Steel", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_emissions_aviation_" } CO2IntensityTrend("32", "Aviation", LegendOn = F, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_emissions_shipping_" } ShippingChart("33", "All", start_year + 5, explicit_filename = explicit_filename) # All } if (has_map) { if (!explicit_filenames == F) { explicit_filename <- "_map_coal_bonds_" } MapChart("49", "CB", "Coal", start_year + 5, explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_map_coal_equity_" } MapChart("50", "EQ", "Coal", start_year + 5, explicit_filename = explicit_filename) } if (has_debt) { if (!explicit_filenames == F) { explicit_filename <- "_companies_power_bonds_" } CompanyInformation("40", no_companies, "CB", "Power", explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_companies_auto_bonds_" } CompanyInformation("41", no_companies, "CB", "Automotive", explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_companies_oil_built_out_bonds_" } OilGasBuildOut("42", no_companies, "CB", explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_companies_oil_share_bonds_" } OilShare("43", no_companies, "CB", explicit_filename = explicit_filename) # if (IncCoalRetirement){ # CoalRetirementChart("62",no_companies,"CB") # RenewableAdditionsChart("64",no_companies,"CB") # } } if (has_equity) { if (IncPeersChart) { PeerComparison(81, chart_type = "EQ") } if (!explicit_filenames == F) { explicit_filename <- "_companies_power_equity_" } CompanyInformation("44", no_companies, "EQ", "Power", explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_companies_auto_equity_" } CompanyInformation("45", no_companies, "EQ", "Automotive", explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_companies_oil_built_out_equity_" } OilGasBuildOut("46", no_companies, "EQ", explicit_filename = explicit_filename) if (!explicit_filenames == F) { explicit_filename <- "_companies_oil_share_equity_" } OilShare("47", no_companies, "EQ", explicit_filename = explicit_filename) # CarbonBudget("48", no_companies, "EQ") # if (IncCoalRetirement){ # CoalRetirementChart("63",no_companies,"EQ") # RenewableAdditionsChart("65",no_companies,"EQ") # } } } ############## ### Charts ### ############## PercentageOfPortfolioAssessed <- function(plotnumber, explicit_filename = "") { over <- SectorDataAnalysis() over <- over[over$financial_sector != "Not Included", ] # over$financial_sector <- factor(over$financial_sector, levels = c("Fossil Fuels","Power", "Automotive", # "Cement & Steel","Aviation & Shipping"), ordered=TRUE) over <- as.data.frame(over) if (data_check(over)) { over$financial_sector <- if_else(over$financial_sector == "Cement&Steel", "Cement & Steel", over$financial_sector) over <- over %>% filter(!is.na(financial_sector)) ## "steelblue" color below should be changed to whatever our Portfolio color is over1 <- subset(over, portfolio_name == portfolio_name_select & asset_type %in% c("Equity", "Bonds")) over1 <- over1 %>% group_by(investor_name, portfolio_name, asset_type, financial_sector) %>% summarise(ValueUSD = sum(valid_value_usd)) over1$asset_type <- gsub("Bonds", BondReference, over1$asset_type) over1$asset_type <- gsub("Equity", "Equity", over1$asset_type) over1$asset_type <- factor(over1$asset_type, levels = c("Equity", BondReference)) # if(BondReference == "Corporate bond") { over1$asset_type <- dplyr::recode(over1$asset_type, "Bond" = wrap_labels(BondsTitle, 10), Equity = EquityTitle) # # } else { # over1$asset_type <- dplyr::recode(over1$asset_type, "Other Title" = " ", Equity = EquityTitle) # # } over1$financial_sector <- factor(over1$financial_sector, levels = c( "Aviation & Shipping", "Cement & Steel", "Automotive", "Power", "Fossil Fuels" ), ordered = TRUE) over1$financial_sector <- dplyr::recode(over1$financial_sector, "Fossil Fuels" = wrap_labels(S_FossilFuels, 15), "Power" = wrap_labels(S_Power, 15), "Automotive" = wrap_labels(S_Automotive, 15), # "Cement & Steel" = wrap_labels(S_CementSteel, 15), "Aviation & Shipping" = wrap_labels(S_AviationShipping, 15) ) # over_horizontal_perc <- over1 %>% group_by(asset_type) %>% mutate(percfinancial_sector = ValueUSD / sum(ValueUSD)) # ymax<-max(aggregate(over1["ValueUSD"],by=over1["asset_type"],FUN=sum)$ValueUSD) ## version horizontal percentage plot <- ggplot(over_horizontal_perc, aes(x = asset_type, y = percfinancial_sector, fill = financial_sector)) + geom_bar(position = "stack", stat = "identity", width = 0.9) + coord_flip() + scale_fill_manual(name = "", values = c(shipping, pow, trans, material, energy), drop = FALSE) + # # scale_x_discrete(name="Asset Type",drop=F, labels=c(BondsTitle, EquityTitle)) + # scale_y_continuous(name = SectorShare, labels = percent, expand = c(0, 0)) + guides(fill = guide_legend(nrow = 2, reverse = TRUE)) + theme_barcharts() + theme( plot.title = element_text(), legend.position = "bottom", legend.direction = "horizontal", legend.text = element_text(size = textsize), legend.spacing.y = unit(-22, "pt"), legend.box.margin = unit(c(-5, 40, -10, 10), "pt"), axis.line.x = element_blank(), axis.line.y = element_line(size = 0.5), axis.text.x = element_text(colour = textcolor, size = 11), axis.text.y = element_text(colour = textcolor, size = 11), axis.title.x = element_text(size = 11, margin = margin(3, 0, 0, 0, "pt")), axis.title.y = element_blank(), panel.grid.major.x = element_line(colour = "#989898", size = 0.2), plot.margin = unit(c(-2, 20, 10, 2), "pt") ) + ggtitle("\n") } else { label <- Therearenoclimaterelevantequityorbondholdingsintheportfolios # plot <- no_chart(label) } ggsave(plot, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", height = 2.3, width = 4.5, dpi = ppi) # linewidth_in*.9 } TechnologyExposure <- function(plotnumber, chart_type, sector_to_plot, plot_year, explicit_filename = "") { # PlotYr Combin <- data.frame() if (chart_type == "EQ" & has_equity == TRUE) { Peers <- filter_by_parameters(eq_peers, "EQ") Market <- filter_by_parameters(eq_market, "EQ") Combin <- filter_by_parameters(EQCombin, "EQ") } else if (chart_type == "CB" & has_debt == TRUE) { Peers <- filter_by_parameters(cb_peers, "CB", by_equity_market = FALSE) Market <- filter_by_parameters(cb_market, "CB", by_equity_market = FALSE) Combin <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE) } if (data_check(Combin) == TRUE) { PlotChart <- TRUE } else { PlotChart <- FALSE } if (PlotChart == TRUE) { # print("format and bind data") # Remove all portfolios other than Market, Average Peers$Type <- "Peers" Peers <- unique(Peers) Peers <- Peers %>% ungroup() %>% filter(technology != "OilCap" & year == plot_year) %>% # year == PlotYr & select("portfolio_name", "ald_sector", "technology", "Type", "plan_alloc_wt_tech_prod") %>% # "Type rename(WtProduction = plan_alloc_wt_tech_prod) Peers <- Peers %>% complete( ald_sector = c("Oil&Gas", "Coal", "Power", "Automotive"), technology = c(technology_order), fill = list(WtProduction = 0, Type = "Peers") ) Peer_A <- subset(Peers, ald_sector == "Automotive" & technology %in% c("ICE", "Electric", "Hybrid")) Peer_P <- subset(Peers, ald_sector == "Power" & technology %in% c("RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap")) Peer_F <- subset(Peers, (ald_sector == "Coal" & technology %in% c("Coal")) | (ald_sector == "Oil&Gas" & technology %in% c("Oil", "Gas"))) Peers <- bind_rows(Peer_F, Peer_A, Peer_P) if (plot_year == start_year + 5) { TARGET <- Combin %>% ungroup() %>% filter(technology != "OilCap" & year == plot_year) %>% select("portfolio_name", "ald_sector", "technology", "scen_alloc_wt_tech_prod") %>% # "Type" rename(WtProduction = scen_alloc_wt_tech_prod) TARGET$Type <- "Target" TARGET <- TARGET %>% complete( ald_sector = c("Oil&Gas", "Coal", "Power", "Automotive"), technology = c(technology_order), fill = list(WtProduction = 0, Type = "Target") ) TARGET_A <- subset(TARGET, ald_sector == "Automotive" & technology %in% c("ICE", "Electric", "Hybrid")) TARGET_P <- subset(TARGET, ald_sector == "Power" & technology %in% c("RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap")) TARGET_F <- subset(TARGET, (ald_sector == "Coal" & technology %in% c("Coal")) | (ald_sector == "Oil&Gas" & technology %in% c("Oil", "Gas"))) TARGET <- bind_rows(TARGET_F, TARGET_A, TARGET_P) } Combin$Type <- "Portfolio" Production <- Combin %>% ungroup() %>% filter(technology != "OilCap" & year == plot_year) %>% # year == PlotYr & select("portfolio_name", "ald_sector", "technology", "plan_alloc_wt_tech_prod", "Type") %>% # "Type rename(WtProduction = plan_alloc_wt_tech_prod) Market$Type <- "Benchmark" Market <- Market %>% ungroup() %>% filter(technology != "OilCap" & year == plot_year) %>% # year == PlotYr & Type =="Portfolio") %>% select("portfolio_name", "ald_sector", "technology", "scen_alloc_wt_tech_prod", "Type") %>% # "Type" rename(WtProduction = scen_alloc_wt_tech_prod) Market <- Market %>% complete( ald_sector = c("Oil&Gas", "Coal", "Power", "Automotive"), technology = c(technology_order), fill = list(WtProduction = 0, Type = "Benchmark") ) Market_A <- subset(Market, ald_sector == "Automotive" & technology %in% c("ICE", "Electric", "Hybrid")) Market_P <- subset(Market, ald_sector == "Power" & technology %in% c("RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap")) Market_F <- subset(Market, (ald_sector == "Coal" & technology %in% c("Coal")) | (ald_sector == "Oil&Gas" & technology %in% c("Oil", "Gas"))) Market <- bind_rows(Market_F, Market_A, Market_P) # Filter and select # print("Filter and select data") if (plot_year == start_year + 5) { Production <- bind_rows(Production, Peers, TARGET, Market) } else if (plot_year == start_year) { Production <- bind_rows(Production, Peers, Market) } Production$ald_sector <- factor(Production$ald_sector, levels = c("Oil&Gas", "Coal", "Power", "Automotive")) levels(Production$ald_sector)[levels(Production$ald_sector) == "Coal"] <- "Fossil Fuels" levels(Production$ald_sector)[levels(Production$ald_sector) == "Oil&Gas"] <- "Fossil Fuels" Production$ald_sector <- factor(Production$ald_sector, levels = c("Fossil Fuels", "Power", "Automotive")) # Aggregate and rename CarstenMetric_Port ID.COLS <- c("ald_sector", "technology", "Type") Production <- Production %>% gather(key = Metric, value = Value, "WtProduction") Production <- aggregate(Production["Value"], by = Production[c(ID.COLS)], FUN = sum) # Created an average for the peers (or even just use fill!) # Transfer coal to gigajoule for tech share charts only!!! Production$Value[Production$technology == "Coal"] <- Production$Value[Production$technology == "Coal"] * 29307600 / 365.25 / 1e6 # , Production$Type != "Market" if (sector_to_plot != "All") { technologyorder <- technology_order colours <- as.vector(ColourPalette[["Colours"]]) names(colours) <- technologyorder # labels <- gsub("Cap","",technologyorder) labels <- dplyr::recode(technologyorder, Gas = T_GasProd, Oil = T_OilProd, Coal = T_CoalProd, # RenewablesCap = T_Renewables, HydroCap = T_HydroCap, NuclearCap = T_NuclearCap, GasCap = T_GasCap, CoalCap = T_CoalCap, # Electric = x_Electric, Hybrid = x_Hybrid, ICE = x_ICE, "Freight Passenger" = FreightPassenger ) names(labels) <- technologyorder } else if (sector_to_plot == "All") { technologyorder <- technology_order_short colours <- as.vector(ColourPalette[["Colours"]])[1:11] names(colours) <- technologyorder # labels <- gsub("Cap","",technologyorder) labels <- dplyr::recode(technologyorder, Gas = T_GasProd, Oil = T_OilProd, Coal = wrap_labels(paste0(T_CoalProd, " "), 10), # RenewablesCap = wrap_labels(T_Renewables, 10), HydroCap = wrap_labels(T_HydroCap, 15), NuclearCap = wrap_labels(T_NuclearCap, 15), GasCap = wrap_labels(T_GasCap, 15), CoalCap = wrap_labels(T_CoalCap, 15), # Electric = wrap_labels(x_Electric, 10), Hybrid = wrap_labels(x_Hybrid, 10), ICE = wrap_labels(x_ICE, 10), "Freight Passenger" = FreightPassenger ) names(labels) <- technologyorder } Production$technology <- factor(Production$technology, levels = technologyorder) Production$ald_sector <- factor(Production$ald_sector, levels = c("Fossil Fuels", "Power", "Automotive", "Aviation", "Shipping")) Production$Type <- wrap_labels(Production$Type, 20) if (plot_year == start_year + 5) { Production$Type <- factor(Production$Type, levels = c("Portfolio", "Peers", "Target", "Benchmark")) xlabels <- c( Portf, wrap_labels(x_Peers, 10), ifelse(Language %in% c("FR", "ES"), paste(Portf, "\n", AlignedFEM), paste(Aligned, "\n", Portf)), # ifelse(Language %in% c("FR", "ES"), paste(AlignMarket, "\n", AlignedMAS), paste(Aligned, "\n", AlignMarket)) ) # } else if (plot_year == start_year) { Production$Type <- factor(Production$Type, levels = c("Portfolio", "Peers", "Benchmark")) xlabels <- c(Portf, wrap_labels(x_Peers, 9), ifelse(Language %in% c("FR", "ES"), paste(AlignMarket, "\n", Aligned), paste(Aligned, "\n", AlignMarket))) # } titles <- c("Fossil Fuel Production", "Power Capacity", "Automotive Production", "Aviation Production", "Shipping Production") names(titles) <- c("Fossil Fuels", "Power", "Automotive", "Aviation", "Shipping") Production <- subset(Production, select = c("Type", "ald_sector", "technology", "Value")) plottheme <- stacked_bar_chart(Production, colours, labels) + ylab(ShareofSectorProduction) + scale_x_discrete(labels = xlabels) + guides(fill = guide_legend( keywidth = 0.1, keyheight = 0.1, default.unit = "inch" )) + theme( plot.title = element_text(hjust = 0.5, colour = textcolor, size = 11, margin = unit(c(0, 0, 1, 0), "lines")), legend.position = "bottom", legend.box.margin = margin(-15, 0, 0, 0, unit = "pt"), legend.title = element_blank(), legend.text = element_text(size = 6.5), # , margin = margin(l = -0.5, r = -.5, unit = "pt") axis.text.x = element_text(size = 6.5), axis.text.y = element_text(size = 6.5) ) if (sector_to_plot %in% c("Automotive", "Power", "Fossil Fuels", "Aviation", "Shipping")) { # print("plotting") dat <- subset(Production, ald_sector == sector_to_plot) cmd <- plottheme %+% dat + xlab("") # print(p1) # if (sector_to_plot == "Fossil Fuels"){ # sector_to_plot <- "FossilFuels" # } n <- 4 } else if (sector_to_plot %in% c("All", "")) { dat <- subset(Production, ald_sector == "Automotive") if (nrow(subset(dat, Type == "Portfolio")) > 0) { p1 <- plottheme %+% dat + ggtitle(AutomotiveProduction) # } else { dat <- rbind(dat, c( "Type" = "Portfolio", "ald_sector" = "Automotive", "technology" = "ICE", "Value" = 0 )) dat$Value <- as.numeric(dat$Value) p1 <- plottheme %+% dat + ggtitle(AutomotiveProduction) + # geom_text( data = subset(dat, Type == "Portfolio"), aes(Type, y = .5, angle = 90, label = NoAutomotiveProduction), size = 2.5 ) # } dat <- subset(Production, ald_sector == "Fossil Fuels") if (nrow(subset(dat, Type == "Portfolio")) > 0) { p2 <- plottheme %+% dat + ggtitle(FossilFuelsProduction) # } else { dat <- rbind(dat, c( "Type" = "Portfolio", "ald_sector" = "Fossil Fuels", "technology" = "OilProd", "Value" = 0 )) dat$Value <- as.numeric(dat$Value) p2 <- plottheme %+% dat + ggtitle(FossilFuelsProduction) + # geom_text( data = subset(dat, Type == "Portfolio"), aes(Type, y = 0.5, angle = 90, label = NoFossilFuelsProduction), size = 2.5 ) # } dat <- subset(Production, ald_sector == "Power") if (nrow(subset(dat, Type == "Portfolio")) > 0) { p3 <- plottheme %+% dat + ggtitle(C_Power) # } else { dat <- rbind(dat, c( "Type" = "Portfolio", "ald_sector" = "Power", "technology" = "CoalCap", "Value" = 0 )) dat$Value <- as.numeric(dat$Value) p3 <- plottheme %+% dat + ggtitle(C_Power) + # geom_text( data = subset(dat, Type == "Portfolio"), aes(Type, y = .5, angle = 90, label = NoC_Power), size = 2.5 ) # } # print("plotting") n <- 8 cmd <- arrangeGrob(p2, p3, p1, nrow = 1 ) # p3+theme(axis.text.y = element_blank(), axis.title.y = element_blank()), # p1+theme(axis.text.y = element_blank(), axis.title.y = element_blank()), nrow=1) # p3+theme(axis.text.y = element_text(color="white"), axis.title.y = element_text(color="white")), # p1+theme(axis.text.y = element_text(color="white"), axis.title.y = element_text(color="white")), nrow=1) dev.off() } } else { Label <- YourPortfoliohasnoproductioninthissectorfortheselectedscenario_geographyandMarket # cmd <- no_chart(Label) n <- 4 } ggsave(graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), # bg = "transparent", plot = cmd, height = 3, width = n, dpi = ppi ) } FiveYearGrowthTrend <- function(plotnumber, chart_type, tech_to_plot, LegendOn = FALSE, explicit_filename = "") { tech_to_plot <<- tech_to_plot GoodBad <- green_brown(tech_to_plot) if (GraphType %in% c("", "Report")) { LegendOn <- FALSE } else { LegendOn <- TRUE } filternames <- c("Listed Market", "Bond Universe", "ListedEquity", "MetaPort", meta_investor_name) PortNames <- portfolio_name_select ### Equity PRODUCTION if (chart_type == "EQ") { ALD_Market <- filter_by_parameters(eq_market, "EQ", byscenario = TRUE) %>% distinct() ALD <- filter_by_parameters(EQCombin, "EQ", byscenario = FALSE) %>% filter(ald_sector != "Other") if (data_check(ALD) == TRUE) { ALD$asset_type <- "Equity" ALD_Market <- ALD_Market %>% filter(portfolio_name == eq_market_ref) if (sum(ALD$plan_alloc_wt_tech_prod) > 0) { PlotChart <- TRUE } else { PlotChart <- FALSE } } } if (chart_type == "CB") { # ScenarioGeographyChoose <- "Global" ALD_Market <- filter_by_parameters(cb_market, "CB", byscenario = TRUE, by_equity_market = FALSE) # ScenarioGeographyChoose <- "GlobalAggregate" ALD <- filter_by_parameters(CBCombin, "CB", byscenario = FALSE, by_equity_market = FALSE) if (data_check(ALD) == TRUE) { ALD$asset_type <- "Bonds" if (sum(ALD$plan_alloc_wt_tech_prod, na.rm = T) > 0) { PlotChart <- TRUE } else { PlotChart <- FALSE } } } if (PlotChart == TRUE) { ALD$plan_alloc_wt_tech_prod <- ifelse(ALD$technology == "Oil", ALD$plan_alloc_wt_tech_prod * (1 / 6.12), ALD$plan_alloc_wt_tech_prod) ALD$plan_alloc_wt_tech_prod <- ifelse(ALD$technology == "Gas", ALD$plan_alloc_wt_tech_prod * (1 / 0.0372), ALD$plan_alloc_wt_tech_prod) ALD$scen_alloc_wt_tech_prod <- ifelse(ALD$technology == "Oil", ALD$scen_alloc_wt_tech_prod * (1 / 6.12), ALD$scen_alloc_wt_tech_prod) ALD$scen_alloc_wt_tech_prod <- ifelse(ALD$technology == "Gas", ALD$scen_alloc_wt_tech_prod * (1 / 0.0372), ALD$scen_alloc_wt_tech_prod) if (data_check(ALD_Market)) { ALD_Market$investor_name <- "Market" ALD_Market$plan_alloc_wt_tech_prod <- ifelse(ALD_Market$technology == "Oil", ALD_Market$plan_alloc_wt_tech_prod * (1 / 6.12), ALD_Market$plan_alloc_wt_tech_prod) ALD_Market$plan_alloc_wt_tech_prod <- ifelse(ALD_Market$technology == "Gas", ALD_Market$plan_alloc_wt_tech_prod * (1 / 0.0372), ALD_Market$plan_alloc_wt_tech_prod) } TotalProduction <- sum(ALD$plan_tech_prod, na.rm = T) ALD <- bind_rows(ALD, ALD_Market) ALD <- subset(ALD, year >= start_year & year <= start_year + 5) ALD <- ALD[ALD$technology == tech_to_plot, ] table(ALD$asset_type, useNA = "always") ### Separate into CurrentPlans and scenario, get into same column headers ALD <- subset(ALD, select = c(investor_name, portfolio_name, ald_sector, year, technology, scenario, plan_alloc_wt_tech_prod, scen_alloc_wt_tech_prod)) ALD.cp <- ALD %>% select(investor_name, portfolio_name, ald_sector, scenario, year, technology, plan_alloc_wt_tech_prod) %>% # Tech.Type, distinct() %>% rename(Production = plan_alloc_wt_tech_prod) %>% filter( year %in% seq(start_year, start_year + 5), scenario == Scenariochoose ) %>% mutate(Line.Type = "CurrentPlan") ALD.sc <- ALD %>% select(investor_name, portfolio_name, scenario, ald_sector, year, technology, scen_alloc_wt_tech_prod) %>% # Tech.Type, rename(Production = scen_alloc_wt_tech_prod) %>% filter( portfolio_name == portfolio_name_select, year %in% seq(start_year, start_year + 5), scenario %in% iea_scenario_list ) %>% mutate(Line.Type = "scenario") ### Rename the scenarios from Green to Red - so the names are then independent ### Set the number of scenarios that are available ALD.sc$scenario <- ifelse(ALD.sc$scenario == "NPS", "NPSRTS", as.character(ALD.sc$scenario)) # New policy scenarios ALD.sc$scenario <- ifelse(ALD.sc$scenario %in% c("450S", "SDS"), "SDS", as.character(ALD.sc$scenario)) # New policy scenarios ALD.sc$scenario <- ifelse(ALD.sc$scenario == "CPSProxy", "CPS", as.character(ALD.sc$scenario)) no.scenarios <- 0 if (n_distinct(ALD.sc$scenario) == 3) { no.scenarios <- 3 # ALD.sc$scenario <- ifelse(ALD.sc$scenario == "SDS","Scen2",as.character(ALD.sc$scenario)) # 450S # ALD.sc$scenario <- ifelse(ALD.sc$scenario == "NPSRTS","Scen3",as.character(ALD.sc$scenario)) # New policy scenarios # ALD.sc$scenario <- ifelse(ALD.sc$scenario == "CPS","Scen4",as.character(ALD.sc$scenario)) # Current policy scenarios } if (n_distinct(ALD.sc$scenario) == 4) { no.scenarios <- 4 # ALD.sc$scenario <- ifelse(ALD.sc$scenario == "B2DS","Scen1",as.character(ALD.sc$scenario)) # Below 2 degrees # ALD.sc$scenario <- ifelse(ALD.sc$scenario == "SDS","Scen2",as.character(ALD.sc$scenario)) # 450S # ALD.sc$scenario <- ifelse(ALD.sc$scenario == "NPSRTS","Scen3",as.character(ALD.sc$scenario)) # New policy scenarios # ALD.sc$scenario <- ifelse(ALD.sc$scenario == "CPS","Scen4",as.character(ALD.sc$scenario)) # Current policy scenarios } ALD.sc$scenario <- ifelse(ALD.sc$scenario == "B2DS", "Scen1", as.character(ALD.sc$scenario)) # Below 2 degrees ALD.sc$scenario <- ifelse(ALD.sc$scenario == "SDS", "Scen2", as.character(ALD.sc$scenario)) # 450S ALD.sc$scenario <- ifelse(ALD.sc$scenario == "NPSRTS", "Scen3", as.character(ALD.sc$scenario)) # New policy scenarios ALD.sc$scenario <- ifelse(ALD.sc$scenario == "CPS", "Scen4", as.character(ALD.sc$scenario)) # Current policy scenarios ### Remove additional scenarios ALD.sc <- as.data.frame(ALD.sc) ALD.sc <- ALD.sc[grepl("Scen", ALD.sc[, "scenario"]), ] ### Calculate GROWTH ALD2 <- bind_rows(ALD.cp, ALD.sc) ### Normalisation of market to Portfolio ALD.cp <- ALD2 %>% filter(Line.Type == "CurrentPlan") var <- ifelse(ALD.cp[which(ALD.cp$portfolio_name == PortNames & ALD.cp$year == start_year & ALD.cp$technology == tech_to_plot), ]$Production == 0, 0, ALD.cp[which(ALD.cp$investor_name == "Market" & ALD.cp$year == start_year & ALD.cp$technology == tech_to_plot), ]$Production / ALD.cp[which(ALD.cp$portfolio_name == PortNames & ALD.cp$year == start_year & ALD.cp$technology == tech_to_plot), ]$Production ) # var <- 1 # ALD.cp[which(ALD.cp$investor_name_select=="Market" & ALD.cp$technology ==tech_to_plot),]$Production<- ifelse(var ==0,0,ALD.cp[which(ALD.cp$investor_name_select=="Market" & ALD.cp$technology ==tech_to_plot),]$Production/var) if (data_check(ALD_Market)) { if (var == 0) { ALD.cp[which(ALD.cp$investor_name == "Market" & ALD.cp$technology == tech_to_plot), ]$Production <- 0 } else { ALD.cp[which(ALD.cp$investor_name == "Market" & ALD.cp$technology == tech_to_plot), ]$Production <- ALD.cp[which(ALD.cp$investor_name == "Market" & ALD.cp$technology == tech_to_plot), ]$Production / var } } if (sum(ALD.cp[which(ALD.cp$investor_name == "Market" & ALD.cp$technology == tech_to_plot), ]$Production) == 0) { ALD.cp <- ALD.cp[ALD.cp$investor_name != "Market", ] } ALD.sc <- ALD2 %>% filter(Line.Type == "scenario") ALD2 <- bind_rows(ALD.cp, ALD.sc) ylims <- ALD2 %>% filter(investor_name != "Market" | Line.Type != "scenario") %>% summarise(min = min(Production), max = max(Production)) ### Units unitscaleval <- max(ylims$max, ALD.cp$Production) unitscalefactor <- 1 green.unit <- c( "Electric" = Vehicles, "RenewablesCap" = "MW", "NuclearCap" = "MW", "HydroCap" = "MW", "Hybrid" = Vehicles ) brown.unit <- c( "CoalCap" = "MW", "GasCap" = "MW", "OilCap" = "MW", "Oil" = "bbl", "Gas" = "m3", "ICE" = Vehicles, "Coal" = "t" ) if (unitscaleval < 1e-3) { unitscalefactor <- 1e-3 green.unit <- c( "Electric" = paste0("1/1000 x ", Vehicles), "RenewablesCap" = "W", "NuclearCap" = "W", "HydroCap" = "W", "Hybrid" = paste0("1/1000 x ", Vehicles) ) brown.unit <- c( "CoalCap" = "W", "GasCap" = "W", "OilCap" = "W", "Oil" = paste0("1/1000 x ", "bbl"), "Gas" = "L", "ICE" = paste0("1/1000 x ", Vehicles), "Coal" = "g" ) } if (unitscaleval > 1e3) { unitscalefactor <- 1e3 green.unit <- c( "Electric" = paste0(thousand, " ", Vehicles), "RenewablesCap" = "GW", "NuclearCap" = "GW", "HydroCap" = "GW", "Hybrid" = paste0(thousand, " ", Vehicles) ) brown.unit <- c( "CoalCap" = "GW", "GasCap" = "GW", "OilCap" = "GW", "Oil" = "Mbbl", "Gas" = paste0(thousand, " m3"), "ICE" = paste0(thousand, " ", Vehicles), "Coal" = paste0(thousand, " t") ) } if (unitscaleval > 1e6) { unitscalefactor <- 1e6 green.unit <- c( "Electric" = paste0(million, " ", Vehicles), "RenewablesCap" = "TW", "NuclearCap" = "TW", "HydroCap" = "TW", "Hybrid" = paste0(million, " ", Vehicles) ) brown.unit <- c( "CoalCap" = "TW", "GasCap" = "TW", "OilCap" = "TW", "Oil" = "MMbbl", "Gas" = paste0(million, " m3"), "ICE" = paste0(million, " ", Vehicles), "Coal" = paste0(million, " t") ) } if (unitscaleval > 1e9) { unitscalefactor <- 1e9 green.unit <- c( "Electric" = paste0(billion, " ", Vehicles), "RenewablesCap" = "PW", "NuclearCap" = "PW", "HydroCap" = "PW", "Hybrid" = paste0(billion, " ", Vehicles) ) brown.unit <- c( "CoalCap" = "PW", "GasCap" = "PW", "Oil" = "Gbbl", "Gas" = paste0(billion, " m3"), "ICE" = paste0(billion, " ", Vehicles), "Coal" = paste0(billion, " t") ) } ALD2$Production <- ALD2$Production / unitscalefactor ylims <- ALD2 %>% filter(investor_name != "Market" | Line.Type != "scenario") %>% summarise(min = min(Production), max = max(Production)) ### GET SCENARIOS INTO RIBBON FORMAT ALD.sc <- ALD2 %>% filter(Line.Type == "scenario") ALD.cp <- ALD2 %>% filter(Line.Type == "CurrentPlan") ALD.sc.wide <- ALD.sc %>% ungroup() %>% select(investor_name, portfolio_name, scenario, ald_sector, technology, Line.Type, year, Production) %>% # Tech.Type, spread(key = scenario, value = Production) if (no.scenarios == 3) { ALD.sc.wide <- ALD.sc.wide %>% arrange(investor_name, portfolio_name, ald_sector, technology, Line.Type, year) %>% # Tech.Type, group_by(investor_name, portfolio_name, ald_sector, technology, Line.Type) %>% # Tech.Type, mutate(Green = ifelse(last(Scen2) > last(Scen3), 1, 0)) if ("Scen4" %in% colnames(ALD.sc.wide)) { ALD.sc.wide <- ALD.sc.wide %>% mutate( Line2 = ifelse(Green == 1, Scen4, Scen2), Line3 = Scen3, Line4 = ifelse(Green == 1, Scen2, Scen4) ) } if ("Scen1" %in% colnames(ALD.sc.wide) & green_brown(tech_to_plot) == "brown") { ALD.sc.wide <- ALD.sc.wide %>% mutate( Line1 = ifelse(Green == 1, Scen3, Scen1), Line2 = Scen2, Line3 = ifelse(Green == 1, Scen1, Scen3) ) } else if ("Scen1" %in% colnames(ALD.sc.wide) & green_brown(tech_to_plot) == "green") { ALD.sc.wide <- ALD.sc.wide %>% mutate( Line2 = Scen3, Line3 = Scen2, Line4 = Scen1 ) } } else if (no.scenarios == 4) { ALD.sc.wide <- ALD.sc.wide %>% arrange(investor_name, portfolio_name, ald_sector, technology, Line.Type, year) %>% # Tech.Type, group_by(investor_name, portfolio_name, ald_sector, technology, Line.Type) %>% # Tech.Type, mutate(Green = ifelse(last(Scen2) > last(Scen4), 1, 0)) if (green_brown(tech_to_plot) == "brown") { if (all(ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen3 < ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen4)) { ALD.sc.wide$Scen3 <- ALD.sc.wide$Scen3 ALD.sc.wide$Scen4 <- ALD.sc.wide$Scen4 } else if (all(ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen3 > ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen4)) { temp <- ALD.sc.wide$Scen3 ALD.sc.wide$Scen3 <- ALD.sc.wide$Scen4 ALD.sc.wide$Scen4 <- temp } } else if (green_brown(tech_to_plot) == "green") { if (all(ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen3 > ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen4)) { ALD.sc.wide$Scen3 <- ALD.sc.wide$Scen3 ALD.sc.wide$Scen4 <- ALD.sc.wide$Scen4 } else if (all(ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen3 < ALD.sc.wide[which(ALD.sc.wide$year != 2018), ]$Scen4)) { temp <- ALD.sc.wide$Scen3 ALD.sc.wide$Scen3 <- ALD.sc.wide$Scen4 ALD.sc.wide$Scen4 <- temp } } ALD.sc.wide <- ALD.sc.wide %>% mutate( Line1 = ifelse(Green == 1, Scen4, Scen1), Line2 = ifelse(Green == 1, Scen3, Scen2), Line3 = ifelse(Green == 1, Scen2, Scen3), Line4 = ifelse(Green == 1, Scen1, Scen4) ) } ### IDENTIFY LIMITS of the Y axis ymin <- min(ylims$min) ymax <- max(ylims$max) round.digits <- 1 if ((ymax - ymin) < 0.01) { unit <- 0.001 round.digits <- 3 } else if ((ymax - ymin) >= 0.01 & (ymax - ymin) < 0.1) { unit <- .01 round.digits <- 2 } else if ((ymax - ymin) >= 0.1 & (ymax - ymin) < 1) { unit <- .1 } else if ((ymax - ymin) >= 1 & (ymax - ymin) < 10) { unit <- 1 } else if ((ymax - ymin) >= 10 & (ymax - ymin) < 150) { unit <- 10 } else if ((ymax - ymin) >= 150 & (ymax - ymin) < 1000) { unit <- 100 } else if ((ymax - ymin) >= 1000 & (ymax - ymin) < 10000) { unit <- 1000 } else if ((ymax - ymin) >= 10000 & (ymax - ymin) < 100000) { unit <- 10000 } MAX.Y <- ceiling(ymax / unit) * unit MIN.Y <- floor(ymin / unit) * unit NEXT.LINE <- paste0("Line", as.numeric(max(gsub("Line", "", colnames(ALD.sc.wide)[grep("Line", colnames(ALD.sc.wide))]))) + 1) ALD.sc.wide[, NEXT.LINE] <- MAX.Y ALD.sc.tall <- ALD.sc.wide %>% select(-grep("Scen", colnames(ALD.sc.wide))) %>% gather(key = "Target", value = "Value", -investor_name, -portfolio_name, -ald_sector, -technology, -Green, -Line.Type, -year) ALD.sc.tall <- ALD.sc.tall %>% group_by(investor_name, portfolio_name, ald_sector, technology, Line.Type, Green, year) %>% # Tech.Type mutate( lower = dplyr::lag(Value), lower = ifelse(is.na(lower), MIN.Y, lower) ) ALD.sc.tall <- as.data.frame(ALD.sc.tall) ALD.cp <- as.data.frame(ALD.cp) # if (no.scenarios == 4){ # WITH 1.75° green.fill <- c( "Line5" = area_1, "Line4" = area_2, "Line3" = area_2_4, "Line2" = area_4_6, "Line1" = area_6 ) brown.fill <- c( "Line5" = area_6, "Line4" = area_4_6, "Line3" = area_2_4, "Line2" = area_2, "Line1" = area_1 ) green.labels <- c( "Line5" = "1D", "Line4" = "2D", "Line3" = "2D-4D", "Line2" = "4D-6D", "Line1" = "6D" ) brown.labels <- c( "Line5" = "6D", "Line4" = "4D-6D", "Line3" = "2D-4D", "Line2" = "2D", "Line1" = "1D" ) outputplot <- ggplot(data = subset(ALD.sc.tall, technology == tech_to_plot & ALD.sc.tall$portfolio_name == PortNames)) + geom_ribbon(aes(ymin = lower, ymax = Value, x = year, fill = Target), alpha = 0.75) + scale_fill_manual(labels = eval(parse(text = paste(GoodBad, ".labels", sep = ""))), values = eval(parse(text = paste(GoodBad, ".fill", sep = "")))) + scale_x_continuous(name = Year, expand = c(0, 0), limits = c(start_year, start_year + 5.6)) + scale_y_continuous( name = paste0(WeightedProduction, " (", eval(parse(text = paste(GoodBad, ".unit", sep = "")))[tech_to_plot], ")"), expand = c(0, 0), breaks = round(seq(round(MIN.Y, digits = round.digits), round(MAX.Y, digits = round.digits), length.out = 5), digits = round.digits) ) + theme_246() + theme(legend.position = "none") + coord_cartesian(ylim = c(round(MIN.Y, digits = round.digits), round(MAX.Y, digits = round.digits))) if (chart_type == "CB") { outputplot <- outputplot + geom_line( data = subset(ALD.cp, technology == tech_to_plot & portfolio_name == portfolio_name_select), aes(x = year, y = Production), color = cb_line, size = .75 ) + geom_line( data = subset(ALD.cp, technology == tech_to_plot & investor_name == "Market"), aes(x = year, y = Production), color = cb_line, size = .75, linetype = "dashed" ) } if (chart_type == "EQ") { outputplot <- outputplot + geom_line( data = subset(ALD.cp, technology == tech_to_plot & portfolio_name == portfolio_name_select), aes(x = year, y = Production), color = eq_line, size = .75 ) + geom_line( data = subset(ALD.cp, technology == tech_to_plot & investor_name == "Market"), aes(x = year, y = Production), color = eq_line, size = .75, linetype = "dashed" ) } if (chart_type == "BV") { outputplot <- outputplot + geom_line( data = subset(ALD.cp, technology == tech_to_plot & portfolio_name == portfolio_name_select), aes(x = year, y = Production), color = bv_line, size = .75 ) + geom_line( data = subset(ALD.cp, technology == tech_to_plot & investor_name == "Market"), aes(x = year, y = Production), color = bv_line, size = .75, linetype = "dashed" ) } if (LegendOn == TRUE) { rect_246 <- gList( # <1?C rectGrob( x = 0.09, y = 0.4, width = 0.12, height = 0.3, gp = gpar(col = NA, fill = area_1) ), # 1-2?C rectGrob( x = 0.21, y = 0.4, width = 0.12, height = 0.3, gp = gpar(col = NA, fill = area_2) ), # 2-4?C rectGrob( x = 0.33, y = 0.4, width = 0.12, height = 0.3, gp = gpar(col = NA, fill = area_2_4) ), # 4-6?C rectGrob( x = 0.45, y = 0.4, width = 0.12, height = 0.3, gp = gpar(col = NA, fill = area_4_6) ), # >6?C rectGrob( x = 0.57, y = 0.4, width = 0.12, height = 0.3, gp = gpar(col = NA, fill = area_6) ) ) arrows_246 <- gList( linesGrob( x = unit(0.15, "npc"), y = unit(c(0.25, 0.71), "npc"), gp = gpar(fill = textcolor), arrow = arrow(length = unit(0.15, "cm"), ends = "last", type = "closed") ), linesGrob( x = unit(0.27, "npc"), y = unit(c(0.25, 0.71), "npc"), gp = gpar(fill = textcolor), arrow = arrow(length = unit(0.15, "cm"), ends = "last", type = "closed") ), linesGrob( x = unit(0.39, "npc"), y = unit(c(0.25, 0.71), "npc"), gp = gpar(fill = textcolor), arrow = arrow(length = unit(0.15, "cm"), ends = "last", type = "closed") ), linesGrob( x = unit(0.51, "npc"), y = unit(c(0.25, 0.71), "npc"), gp = gpar(fill = textcolor), arrow = arrow(length = unit(0.15, "cm"), ends = "last", type = "closed") ) ) if (chart_type == "CB") { linecolour <- cb_line Line_labels <- c(paste0(BondReference, " portfolio"), paste0(BondReference, " market")) } else { linecolour <- eq_line Line_labels <- c("Equity portfolio", "Listed equity market") } portfolio_lines <- gList( linesGrob( x = unit(c(0.65, 0.735), "npc"), y = unit(0.68, "npc"), gp = gpar(col = linecolour, lty = 1, lwd = 3) ), linesGrob( x = unit(c(0.65, 0.735), "npc"), y = unit(0.32, "npc"), gp = gpar(col = linecolour, lty = 2, lwd = 3) ) ) ### Legend labels # Labels scenario_labels <- c("1.75C scenario", "2C scenario", "4C scenario", "6C scenario") Legend_labels <- c("<1.75C", "<2C", "1.75 - 2C", "2 - 4C", "4 - 6C", "6C") # Positions scenario_labels_position <- c(0.15, 0.27, 0.39, 0.51) Legend_labels_position <- c(0.09, 0.21, 0.33, 0.45, 0.57) Line_labels_position <- c(0.68, 0.32) # Label scenario and 2-4-6 label_text_246 <- gList( textGrob(scenario_labels, x = scenario_labels_position, y = 0.88, just = "center", gp = gpar(fontsize = 5.8, col = textcolor) ), textGrob(Legend_labels[c(1, 3:6)], x = Legend_labels_position, y = 0.4, just = "center", gp = gpar(fontsize = 7, col = textcolor) ), textGrob(scenario_labels[2:4], x = scenario_labels_position[2:4], y = 0.8, just = "center", gp = gpar(fontsize = 5.8, col = textcolor) ), textGrob(Legend_labels[c(2, 4:6)], x = Legend_labels_position[2:5], y = 0.4, just = "center", gp = gpar(fontsize = 7, col = textcolor) ) ) # Label line label_text_lines <- gList( textGrob(Line_labels, x = 0.745, y = Line_labels_position, just = "left", gp = gpar(fontsize = 7, col = textcolor) ) ) if (no.scenarios == 3) { footer_246 <- grobTree( rectGrob(gp = gpar(fill = "white", lwd = 0, col = "white")), rect_246[2:5], arrows_246[2:4], label_text_246[3:4], portfolio_lines[1:2], label_text_lines[1] ) # outputplot <- arrangeGrob(outputplot, footer_246, heights = unit(c(0.85, 0.15), c('npc', 'npc'))) # outputplot <- arrangeGrob(outputplot, footer_246, heights = unit(c(0.85, 0.15), c("npc", "npc"))) # } else if (no.scenarios == 4) { footer_1246 <- grobTree( rectGrob(gp = gpar(fill = "white", lwd = 0, col = "white")), rect_246, arrows_246, label_text_246[1:2], portfolio_lines[1:2], label_text_lines[1] ) # outputplot <- arrangeGrob(outputplot, footer_1246, heights = unit(c(0.85, 0.15), c('npc', 'npc'))) # outputplot <- arrangeGrob(outputplot, footer_1246, heights = unit(c(0.85, 0.15), c("npc", "npc"))) # } } } else { Label <- YourportfoliohasnoproductionfortheselectedTechnologyScenarioGeographyandMarket outputplot <- no_chart(Label) } ggsave(outputplot, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", height = 3.6, width = 4.6, dpi = ppi * 2) # ,bg="white" tech_to_plot <<- "" BV.asset_type <<- "" } CO2IntensityTrend <- function(plotnumber, sector_to_plot, LegendOn = TRUE, explicit_filename = "") { PlotChart <- FALSE Data <- NA Data_debt <- NA sector_to_plot <<- sector_to_plot if (GraphType == "Report") { LegendOn <- FALSE } else { LegendOn <- TRUE } if (has_equity == TRUE) { Data <- filter_by_parameters(EQCombin, "EQ", byscenario = F) if (data_check(Data) == TRUE) { Data$Type <- "equity" } else { print("no EQ") } } if (has_debt == TRUE) { Data_debt <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE, byscenario = F) if (data_check(Data_debt) == TRUE) { Data_debt$Type <- BondReference } else { print("no CB") } } if (data_check(Data) == TRUE & data_check(Data_debt) == TRUE) { Data <- subset(Data, select = colnames(Data_debt)) Data <- rbind(Data, Data_debt) Data <- subset(Data, year >= start_year & year <= start_year + 5) } else if (data_check(Data) == FALSE & data_check(Data_debt) == TRUE) { Data <- Data_debt } else if (data_check(Data) == TRUE & data_check(Data_debt) == FALSE) { Data <- Data } if (data_check(Data) == TRUE) { Data <- Data[!is.na(Data$plan_sec_emissions_factor), ] } if (data_check(Data) == TRUE) { Data <- Data[Data$ald_sector == sector_to_plot, ] if (data_check(Data) == TRUE) { PlotChart <- TRUE } else { PlotChart <- FALSE } } if (PlotChart == TRUE) { # print(PlotChart) if (sector_to_plot == "Aviation") { PlotData <- Data %>% ungroup() %>% select(portfolio_name, year, technology, plan_sec_emissions_factor, scen_sec_emissions_factor, Type) %>% group_by(portfolio_name, year, Type) %>% filter(year <= start_year + 5) %>% summarise( plan_emission_factor = mean(plan_sec_emissions_factor, na.rm = T) * 1000, scen_emission_factor = mean(scen_sec_emissions_factor, na.rm = T) * 1000 ) Ref.Data <- PlotData %>% ungroup() %>% filter(year == start_year) %>% rename(Ref.Scen.EF = scen_emission_factor) %>% select(Type, Ref.Scen.EF) PlotData <- PlotData %>% left_join(Ref.Data, by = "Type") PlotData <- PlotData %>% group_by(year, Type) %>% mutate(scen_emission_factor = scen_emission_factor * plan_emission_factor / Ref.Scen.EF) %>% select(-Ref.Scen.EF) } else { PlotData <- Data %>% ungroup() %>% select(portfolio_name, year, technology, plan_sec_emissions_factor, scen_sec_emissions_factor, Type) %>% group_by(portfolio_name, year, Type) %>% filter(year <= start_year + 5) %>% summarise( plan_emission_factor = mean(plan_sec_emissions_factor, na.rm = T), scen_emission_factor = mean(scen_sec_emissions_factor, na.rm = T) ) Ref.Data <- PlotData %>% ungroup() %>% filter(year == start_year) %>% rename(Ref.Scen.EF = scen_emission_factor) %>% select(Type, Ref.Scen.EF) PlotData <- PlotData %>% left_join(Ref.Data, by = "Type") PlotData <- PlotData %>% group_by(year, Type) %>% mutate(scen_emission_factor = scen_emission_factor * plan_emission_factor / Ref.Scen.EF) %>% select(-Ref.Scen.EF) } # print(nrow(PlotData)) OtherSectorUnits <- data.frame("ald_sector" = c("Cement", "Steel", "Aviation"), "Units" = c( paste0("t CO2 / t ", L_Cement), # paste0("t CO2 / t ", L_Steel), # paste0("CO2/", x_passenger, "km") )) # year_lab <- Year # "year" #GT["year"][[1]] ylabel <- paste0(EmissionsIntensity, OtherSectorUnits$Units[OtherSectorUnits$ald_sector == sector_to_plot], ")") # df <- PlotData colourdf <- data.frame("Colour" = c(eq_line, cb_line), "TargetCol" = c(area_2, area_2), "Type" = c("equity", BondReference)) df <- base::merge(df, colourdf, by = "Type") outputplot <- ggplot() + geom_line(data = df, aes(x = year, y = scen_emission_factor, colour = Type, group = Type), size = 1.5, linetype = 1, colour = area_2) + annotate(geom = "point", y = df$plan_emission_factor[df$year == start_year], x = df$year[df$year == start_year], size = 5, colour = unique(df$Colour), fill = unique(df$Colour), shape = 22) outputplot <- outputplot + # scale_fill_identity(name = "", guide = 'legend',labels = c("Exposure gap","Current capacity + planned additions")) + scale_colour_manual(name = "", guide = "legend", values = unique(df$Colour), labels = unique(df$Type)) + xlab(year_lab) + ylab(ylabel) + # Set axis labels # legend(values=legelabels)+ scale_x_continuous(breaks = seq(start_year, max(df$year), 1), expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) + expand_limits(x = c(start_year - 0.5, start_year + 5.5), y = c(.7 * min(df[, c("plan_emission_factor", "scen_emission_factor")], na.rm = TRUE), 1.3 * max(df[, c("scen_emission_factor")], na.rm = TRUE))) + theme_linecharts() #+ # theme(axis.line.x = element_line(colour = "red",size=0.5)) if (LegendOn == TRUE) { # Count number of sectors present nosectors <- length(unique(df$Type)) if (nosectors == 1) { chartsectors <- unique(df$Type) if (chartsectors == "equity") { boxcol <- eq_line } else if (chartsectors == "Corporate bond") { boxcol <- cb_line } } if (nosectors == 2) { y1 <- 0.8 y2 <- 0.5 y3 <- 0.2 } else { y3 <- 0.4 y2 <- 0.8 } boxdim <- c(0.03, 0.2) ### Target emissions intensity lines Emission_lines <- gList( linesGrob( x = unit(c(0.03, 0.13), "npc"), y = unit(y3, "npc"), gp = gpar(col = area_2, lty = 1, lwd = 3) ) ) ### Current Portfolio Emission Intensity if (nosectors == 2) { Emission_rectangle <- gList( rectGrob( x = 0.07, y = unit(y2, "npc"), width = boxdim[1], height = boxdim[2], gp = gpar(col = NA, fill = eq_line) ), rectGrob( x = 0.07, y = unit(y1, "npc"), width = boxdim[1], height = boxdim[2], gp = gpar(col = NA, fill = cb_line) ) ) } else { Emission_rectangle <- gList( rectGrob( x = 0.07, y = unit(y2, "npc"), width = boxdim[1], height = boxdim[2], gp = gpar(col = NA, fill = boxcol) ) ) } ### legend labels # labels if (nosectors == 2) { Emission_labels <- c( paste0("Current emissions intensity for your", tolower(BondReference), "portfolio"), "Current emissions intensity for your equity portfolio", "Target emissions intensity for the relevant portfolio" ) Emission_labels_position <- c(y1, y2, y3) } else { Emission_labels <- c( paste0("Current emissions intensity for your ", chartsectors, " portfolio"), "Target emissions intensity for the portfolio" ) Emission_labels_position <- c(y2, y3) } # positions # all labels together Emission_label_text <- textGrob(Emission_labels, x = 0.15, y = Emission_labels_position, just = "left", gp = gpar(fontsize = 8, col = textcolor, family = textfont) ) # all legend objects togeter # footer_Emission = grobTree(rectGrob(gp = gpar(fill = 'transparent', lwd = 0, colour = "white")), # Emission_lines, Emission_rectangle, Emission_label_text) # one footer too much footer_Emission <- grobTree(Emission_lines, Emission_rectangle, Emission_label_text) # outputplot <- arrangeGrob(footer_Emission, heights = unit(c(.15), c('npc'))) # legend with "a" - a ggplot object outputplot <- arrangeGrob(outputplot, footer_Emission, heights = unit(c(0.85, 0.15), c("npc", "npc"))) } } else { if (sector_to_plot == "Cement") { Label <- paste0(TheportfoliohasnocompaniesintheCementsector) # } else if (sector_to_plot == "Steel") { Label <- paste0(TheportfoliohasnocompaniesintheSteelsector) # } else if (sector_to_plot == "Aviation") { Label <- paste0(TheportfoliohasnocompaniesintheAviationsector) # } else { # (sector_to_plot == "Shipping") Label <- paste0(TheportfoliohasnocompaniesintheShippingsector) # } outputplot <- no_chart(Label) } ggsave(filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", outputplot, height = 3, width = 4, dpi = ppi) # ,bg="transparent" sector_to_plot <<- "" # return() } CompanyInformation <- function(plotnumber, companiestoprint, chart_type, sector_to_plot, explicit_filename = "") { sector_to_plot <<- sector_to_plot PlotChart <- F if (chart_type == "EQ" & has_equity == T) { market <- filter_by_parameters(eq_market, "EQ") combin <- filter_by_parameters(EQCombin, "EQ") CompProdSS <- filter_by_parameters(EQCompProdSnapshot, "EQ", ActorSectorOnly = T) } if (chart_type == "CB" & has_debt == T) { market <- filter_by_parameters(cb_market, "CB", by_equity_market = FALSE) combin <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE) CompProdSS <- filter_by_parameters(CBCompProdSnapshot, "CB", by_equity_market = FALSE, ActorSectorOnly = T) } if (data_check(CompProdSS) == T) { PlotChart <- T } if (PlotChart == TRUE) { if (!"Entity.Name" %in% colnames(CompProdSS) & chart_type == "CB") { CompProdSS$Entity.Name <- CompProdSS$id } if (!"Entity.Name" %in% colnames(CompProdSS) & chart_type == "EQ") { CompProdSS$Entity.Name <- CompProdSS$company_name } # Portfolio (Weighted by the AUM) Portfoliomix <- subset(combin, year == start_year + 5, select = c("technology", "plan_alloc_wt_tech_prod")) Portfoliomix <- unique(Portfoliomix) # KLAUS: Added this line to avoid duplicate lines! Portfoliomix$Classification <- "Portfolio" Portfoliomix$Name <- "Portfolio" Portfoliomix <- subset(Portfoliomix, select = c("Name", "Classification", "technology", "plan_alloc_wt_tech_prod")) Portfoliomix$plan_alloc_wt_tech_prod <- Portfoliomix$plan_alloc_wt_tech_prod colnames(Portfoliomix) <- c("Name", "Classification", "technology", "tech_share") # Add 2D Target (Global Market under 2D scenario) Targetmix <- subset(combin, year == start_year + 5, select = c("technology", "scen_alloc_wt_tech_prod")) # Scen.WtProduction needs to be adjusted to BenchmarkPortfolio (Trajectory vs Market approach) - will address this in FilterByParameters Targetmix <- unique(Targetmix) # KLAUS: Added this line to avoid duplicate lines! Targetmix$Classification <- "Portfolio" Targetmix$Name <- "Aligned Portfolio" Targetmix <- subset(Targetmix, select = c("Name", "Classification", "technology", "scen_alloc_wt_tech_prod")) Targetmix$scen_alloc_wt_tech_prod <- Targetmix$scen_alloc_wt_tech_prod colnames(Targetmix) <- c("Name", "Classification", "technology", "tech_share") # Add Benchmark / Global Market Marketmix <- NA if (data_check(market)) { Marketmix <- subset(market, year == start_year + 5, select = c("technology", "scen_alloc_wt_tech_prod")) Marketmix <- unique(Marketmix) Marketmix$Classification <- "Portfolio" Marketmix$Name <- "Aligned Market" Marketmix <- subset(Marketmix, select = c("Name", "Classification", "technology", "scen_alloc_wt_tech_prod")) Marketmix$scen_alloc_wt_tech_prod <- Marketmix$scen_alloc_wt_tech_prod colnames(Marketmix) <- c("Name", "Classification", "technology", "tech_share") } PortfolioData <- rbind(Marketmix, Targetmix, Portfoliomix) # PortfolioData <- rbind(Targetmix, Portfoliomix) # Percentage share of each technology for each company in the portfolio Companies <- subset(CompProdSS, year == start_year + 5, select = c("Entity.Name", "technology", "plan_tech_prod", "plan_sec_prod", "port_weight")) Companies <- Companies %>% filter(plan_sec_prod > 0) %>% select(-plan_sec_prod) Companies <- unique(Companies) Companies$tech_share <- Companies$plan_tech_prod Companies$Classification <- "Companies" # Companies$Name <- paste0(substr(Companies$Name, 1, 15),"...") Companies <- subset(Companies, select = c("Entity.Name", "Classification", "technology", "tech_share", "port_weight")) colnames(Companies) <- c("Name", "Classification", "technology", "tech_share", "PortWeight") Companies$Name <- as.character(Companies$Name) Companies$Name <- ifelse(is.na(Companies$Name), "No Name", Companies$Name) colors <- as.vector(ColourPalette$Colours[ColourPalette$ald_sector %in% sector_to_plot]) if (sector_to_plot == "Power") { techorder <- c("RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap") tech_labels <- c(T_Renewables, T_HydroCap, T_Nuclear, T_GasCap, T_CoalCap) # # colors <- as.vector(ColourPalette$Colours[ColourPalette$ald_sector %in% sector_to_plot]) } else if (sector_to_plot == "Automotive") { techorder <- c("Electric", "Hybrid", "ICE") tech_labels <- c(x_Electric, x_Hybrid, x_ICE) # } else if (sector_to_plot == "CoalMining") { techorder <- c("Coal") tech_labels <- c(T_CoalProd) # colors <- as.vector(ColourPalette$Colours[ColourPalette$technology %in% "Coal"]) } else if (sector_to_plot == "OilGas") { techorder <- c("Gas", "Oil") tech_labels <- c(T_GasProd, T_OilProd) # colors <- as.vector(ColourPalette$Colours[ColourPalette$technology %in% tech_labels]) } else if (sector_to_plot == "Shipping") { tech_labels <- c("GHG_A", "GHG_B", "GHG_C", "GHG_D", "GHG_E", "GHG_F", "GHG_G") # colors <- as.vector(ColourPalette$Colours[12:13]) } else if (sector_to_plot == "Steel") { tech_labels <- c(ElectricArc, BlastFurnace) # # colors <- as.vector(ColourPalette$Colours[14:20]) } PortfolioData <- filter(PortfolioData, technology %in% techorder) Companies <- Companies %>% filter(technology %in% techorder) %>% arrange(-PortWeight) Companies <- Companies %>% filter(Name %in% unique(Companies$Name)[1:min(companiestoprint, length(unique(Companies$Name)))]) dummy <- data.frame( c("Name", ""), c("Classification", NA), c("technology", NA), c("tech_share", 0) ) colnames(dummy) <- as.character(unlist(dummy[1, ])) dummy <- dummy[-1, ] dummy$tech_share <- as.numeric(dummy$tech_share) AllData <- rbind( PortfolioData, dummy, select(Companies, -PortWeight) ) AllData <- unique(AllData) AllData$Name <- factor(AllData$Name, levels = rev(unique(c(PortfolioData$Name, "", Companies$Name)))) AllData$Name <- dplyr::recode(AllData$Name, "Aligned Market" = AlignedMarket, # "Aligned Portfolio" = AlignedPortfolio, # Portfolio = Portf ) # AllData$technology <- factor(AllData$technology, levels = rev(techorder)) names(colors) <- techorder names(tech_labels) <- techorder Companies <- unique(select(Companies, Name, PortWeight, technology)) PortfolioData <- unique(select(PortfolioData, Name)) PortfolioData$Name <- dplyr::recode(PortfolioData$Name, "Aligned Market" = AlignedMarket, "Aligned Portfolio" = AlignedPortfolio, Portfolio = Portf ) bar_labels <- c(PortfolioData$Name, "", Companies$Name) # company_labels <- trim(Companies$Name) company_labels <- Companies$Name for (i in 1:length(company_labels)) { if (str_length(company_labels[i]) > 15) { new_name <- strtrim(company_labels[i], 15) company_labels[i] <- paste0(new_name, "...") } } bar_labels <- c(PortfolioData$Name, "", company_labels) Companies_PortWeight <- Companies %>% group_by(Name) %>% summarise(PortWeight = mean(PortWeight)) PortPlot <- stacked_bar_chart(AllData, colors, tech_labels) + geom_text( data = Companies_PortWeight, aes(x = Name, y = 1), label = perc(Companies_PortWeight$PortWeight), hjust = -1., color = textcolor, size = 10 * (5 / 14), family = textfont ) + geom_text( data = Companies, aes(x = "", y = 1), label = x_Weight, # hjust = -0.9, color = textcolor, size = 10 * (5 / 14), family = textfont ) + xlab("") + coord_flip() + theme( legend.position = "bottom", legend.title = element_blank(), legend.text = element_text(margin = margin(l = 0.15, r = 0.35, unit = "cm")), plot.margin = unit(c(1, 8, 0, 0), "lines") ) gt <- ggplot_gtable(ggplot_build(PortPlot)) gt$layout$clip[gt$layout$name == "panel"] <- "off" if (sector_to_plot == "Fossil Fuels") { sector_to_plot <- "FossilFuels" } bar_size <- 8 / 15 # height <- min(4+companiestoprint,n_distinct(AllData$Name))*bar_size + 2 if (sector_to_plot == "Fossil Fuels") { sector_to_plot <- "FossilFuels" } height <- max(2.6, length(unique(Companies$Name)) * .3) } else { if (sector_to_plot == "Automotive") { Label <- paste0(YourPortfoliohasnocompaniesintheAutomotivesector) # } else if (sector_to_plot == "CoalMining") { Label <- paste0(YourPortfoliohasnocompaniesintheCoalMiningsector) # } else if (sector_to_plot == "OliGas") { Label <- paste0(YourPortfoliohasnocompaniesintheOilGassector) # } else if (sector_to_plot == "Power") { Label <- paste0(YourPortfoliohasnocompaniesinthePowersector) # } else if (sector_to_plot == "Shipping") { Label <- paste0(YourPortfoliohasnocompaniesintheShippingsector) # } else if (sector_to_plot == "Steel") { Label <- paste0(YourPortfoliohasnocompaniesintheSteelsector) # } gt <- no_chart(Label) height <- 3 } ggsave(gt, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), # bg = "transparent", height = height, width = 10, dpi = ppi ) sector_to_plot <<- "" BV.asset_type <<- "" } OilShare <- function(plotnumber, companiestoprint, chart_type, explicit_filename = "") { tech_to_plot <<- "Oil" chart_type <<- chart_type OilData <- NA if (chart_type == "EQ") { comps <- filter_by_parameters(EQCompProdSnapshot, "EQ") %>% ungroup() # comps$id<-comps$bloomberg_id # comps$bloomberg_id <-NULL # comps$id <-as.integer(comps$id) if (data_check(comps)) { OilData <- EQOilShareData OilData <- OilData[OilData$id %in% comps$id, ] OilData <- OilData[OilData$technology == "Oil", ] OilData <- OilData[OilData$year == start_year + 5, ] OilData <- OilData %>% group_by(id, year) %>% mutate(SecOilProd = sum(ald_production)) %>% filter(SecOilProd > 0) %>% select(-SecOilProd) %>% ungroup() if (data_check(OilData)) { OilData$Type <- "equity" OilData$ID <- OilData$id OilData$bloomberg_id <- NULL } OilData <- left_join(comps %>% select(technology, company_name, id, port_weight), OilData, by = c("technology" = "technology", "id" = "id")) } } if (chart_type == "CB") { comps <- filter_by_parameters(CBCompProdSnapshot, "CB", by_equity_market = F) # comps$id <- comps$corp_bond_ticker if (data_check(comps)) { OilData <- CBOilShareData %>% ungroup() %>% filter( technology == "Oil", year == start_year + 5, id %in% comps$id ) OilData <- OilData %>% group_by(id, year) %>% mutate(SecOilProd = sum(ald_production)) %>% filter(SecOilProd > 0) %>% select(-SecOilProd) %>% ungroup() if (data_check(OilData)) { OilData <- OilData %>% mutate( Type = "corporate bond", ID = id, company_name = ID, company_lvl_production = ald_production ) OilData <- left_join(comps %>% select(technology, id, port_weight), OilData, by = c("technology" = "technology", "id" = "id")) } } } if (data_check(OilData)) { PlotChart <- TRUE } else { PlotChart <- FALSE } if (PlotChart) { OilCompanies <- subset(OilData, select = c("ald_production", "port_weight", "technology_type", "company_name")) OilCompanies1 <- OilCompanies %>% group_by(company_name, technology_type, port_weight) %>% summarise("Oilsum" = sum(ald_production)) %>% ungroup() OilCompanies2 <- OilCompanies1 %>% group_by(company_name) %>% summarise("Oiltotal" = sum(Oilsum)) OilCompanies <- left_join(OilCompanies1, OilCompanies2, by = c("company_name")) OilCompanies$OilShare <- (OilCompanies$Oilsum / OilCompanies$Oiltotal) OilCompanies$Classification <- "Companies" OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "Conventional Gas", "Other & Unknown", OilCompanies$technology_type) OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "Unconventional Gas", "Other & Unknown", OilCompanies$technology_type) OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "-", "Other & Unknown", OilCompanies$technology_type) OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "Oil Sands", OilSands, OilCompanies$technology_type) OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "Heavy Oil", HeavyOil, OilCompanies$technology_type) OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "Conventional Oil", ConventionalOil, OilCompanies$technology_type) OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "Unconventional Oil", UnconventionalOil, OilCompanies$technology_type) OilCompanies$technology_type <- ifelse(OilCompanies$technology_type == "Other & Unknown", OtherandUnknown, OilCompanies$technology_type) OilCompanies$technology_type <- as.factor(OilCompanies$technology_type) # levels(OilCompanies$technology_type)[levels(OilCompanies$technology_type)=="Conventional Gas"] <- "Other & Unknown" # levels(OilCompanies$technology_type)[levels(OilCompanies$technology_type)=="Unconventional Gas"] <- "Other & Unknown" # levels(OilCompanies$technology_type)[levels(OilCompanies$technology_type)=="-"] <- "Other & Unknown" # techorder <- c("Oil Sands","Heavy Oil","Conventional Oil","Unconventional Oil","Other & Unknown") techorder <- c(OilSands, HeavyOil, ConventionalOil, UnconventionalOil, OtherandUnknown) tech_labels <- techorder colors <- c("#72755e", "#8d9176", "#a5a792", "#bcbeae", "#d3d5ca") OilCompanies$technology_type <- factor(OilCompanies$technology_type, levels = techorder) OilCompanies <- OilCompanies %>% filter(technology_type %in% techorder) %>% arrange(-port_weight) # LIne to aggregate to portfolio level # aggregated all companies by oil type to get the portfolio oilshare # OilCompanies_P<-OilCompanies %>% # group_by(technology_type) %>% # summarise(OilShare=sum(OilShare)) %>% # ungroup()%>% # mutate(company_name="Portfolio", # Classification="Portfolio") # colnames(OilCompanies_P)[which(names(OilCompanies_P) == "technology_type")] <- "Oil.Type" OilCompanies <- OilCompanies %>% filter(company_name %in% unique(OilCompanies$company_name)[1:min(companiestoprint, length(unique(OilCompanies$company_name)))]) colnames(OilCompanies)[which(names(OilCompanies) == "technology_type")] <- "Oil.Type" OilCompanies <- subset(OilCompanies, select = c("Oil.Type", "company_name", "OilShare", "Classification", "port_weight")) dummy <- data.frame( c("Oil.Type", NA), c("company_name", ""), c("OilShare", 0), c("Classification", NA), c("port_weight", NA) ) colnames(dummy) <- as.character(unlist(dummy[1, ])) dummy <- dummy[-1, ] dummy$OilShare <- as.numeric(dummy$OilShare) OilCompany <- rbind(OilCompanies, dummy) OilCompany$Oil.Type <- factor(OilCompany$Oil.Type, levels = techorder) OilCompany$port_weight <- as.numeric(OilCompany$port_weight) OilCompany <- as.data.frame(OilCompany) # OilCompany$company_name <- factor(OilCompany$company_name, levels=(unique(c("",OilCompany$company_name)))) names(colors) <- techorder names(tech_labels) <- techorder # company_labels <- c(trimws(unique(OilCompanies[!is.na(OilCompanies$Oil.Type),]$company_name))," ","Portfolio") Oil <- na.omit(OilCompany[, c("company_name", "port_weight")]) OilCompany <- OilCompany %>% arrange(port_weight) company_labels <- trimws(unique(OilCompany[!is.na(OilCompany$Oil.Type), ]$company_name)) for (i in 1:length(company_labels)) { if (str_length(company_labels[i]) > 15) { new_name <- strtrim(company_labels[i], 15) company_labels[i] <- paste0(new_name, "...") } } bar_labels <- c(company_labels, " ") # company_labels# OilCompany <- OilCompany %>% filter(!is.na(port_weight)) PortPlot <- ggplot(data = OilCompany, aes(x = company_name, y = OilShare, fill = Oil.Type)) + geom_bar(position = "fill", stat = "identity") + scale_fill_manual(values = colors, labels = rev(paste(tech_labels, " ")), breaks = rev(techorder)) + scale_y_continuous(expand = c(0, 0), labels = percent) + scale_x_discrete(labels = bar_labels) + guides(fill = guide_legend(nrow = 1)) + theme_barcharts() + geom_text( data = OilCompany, aes(x = company_name, y = 1), label = perc(OilCompany$port_weight), hjust = -1, color = textcolor, size = 8 * (5 / 14), family = textfont ) + # geom_text(aes(x="",y=1), # label = x_Weight, # hjust = -0.5, color = textcolor, size=8*(5/14), # family = textfont)+ xlab("") + ylab("tech_share") + coord_flip() + theme( legend.position = "bottom", legend.title = element_blank(), plot.margin = unit(c(1, 6, 0, 0), "lines"), axis.line.x = element_line(colour = textcolor, size = 0.5) ) + guides(fill = guide_legend(ncol = 5, keywidth = 1)) gt <- ggplot_gtable(ggplot_build(PortPlot)) gt$layout$clip[gt$layout$name == "panel"] <- "off" bar_size <- 4 / 15 height <- min(1 + companiestoprint, n_distinct(OilCompanies$company_name)) * bar_size + .86 } else { if (chart_type == "EQ") { Type <- oil_equity } else if (chart_type == "CB") { Type <- oil_bond } # Label <- paste0(Nooilproductionbreakdowninyour, " ", Type, portfo) # gt <- no_chart(Label) #+ height <- 3 } ggsave(gt, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", height = height, width = 10, dpi = ppi) tech_to_plot <<- "" chart_type <<- "" BV.asset_type <<- "" } MapChart <- function(plotnumber, chart_type, tech_to_plot, plot_year, explicit_filename = "") { Power <- data.frame() tech_to_plot <<- tech_to_plot # ScenarioGeographyChoose <<- "Global" mapfilename <- "" if (chart_type == "EQ" & has_equity == TRUE) { Power <- filter_by_parameters(EQportmap, "EQ", byscenario = F) mapfilename <- paste0(results_path, "/", investor_name_select, "/", "Equiry_results_map.rda") } if (chart_type == "CB" & has_debt == TRUE) { Power <- filter_by_parameters(CBportmap, "CB", byscenario = F, by_equity_market = FALSE) mapfilename <- paste0(results_path, "/", investor_name_select, "/", "Bonds_results_map.rda") } if (data_check(Power)) { PlotChart <- TRUE } else { PlotChart <- FALSE } if (!file.exists(mapfilename)) { PlotChart <- FALSE } if (PlotChart == TRUE) { # tech_to_plot <- gsub("Cap","",tech_to_plot) Power <- as.data.frame(Power) # Power$technology<-gsub("RenewablesCap","Renewables",Power$technology) # Power$technology<-gsub("NuclearCap","Nuclear",Power$technology) # Power$technology<-gsub("HydroCap","Hydro",Power$technology) Power$technology <- as.factor(Power$technology) Power <- subset(Power, year == plot_year) Power <- Power %>% group_by(ald_location, technology) %>% summarise(Production = sum(plan_alloc_wt_tech_prod)) %>% ungroup() %>% filter(technology == tech_to_plot) %>% arrange(desc(Production)) Power <- as.data.frame(Power) UNIT <- c("MW", "MW", "MW", "MW", "MW", Vehicles, Vehicles, Vehicles, "m3", "bbl", MetricTons) # names(UNIT) <- c("RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap", "Electric", "Hybrid", "ICE", "Gas", "Oil", "Coal") if (sector_to_plot %in% c("Power")) { capprod <- Power_Unit } else { capprod <- xProduction } # # if (nrow(Power)>0){ tech_map <- joinCountryData2Map(Power, joinCode = "ISO2", nameJoinColumn = "ald_location") tech_map_poly <- fortify(tech_map) # extract polygons tech_map_poly <- base::merge(tech_map_poly, tech_map@data, by.x = "id", by.y = "ADMIN", all.x = T) tech_map_poly <- tech_map_poly %>% arrange(id, order) outputplot <- ggplot() + coord_map(xlim = c(-180, 180), ylim = c(-60, 75)) + geom_polygon(data = tech_map_poly, aes(long, lat, group = group, fill = Production ), size = 0.3) + scale_fill_gradient( name = paste0(capprod, " (", UNIT[tech_to_plot], ")"), # breaks=floor(seq(0,max(Power$Production),length.out = 3)), low = eval(parse(text = paste("MIN", tech_to_plot, sep = ""))), high = eval(parse(text = paste("MAX", tech_to_plot, sep = ""))), labels = comma ) + theme_bw() + xlab(NULL) + ylab(NULL) + guides(fill = guide_colorbar( keywidth = 0.7, keyheight = 0.7, reverse = F, title.position = "top" )) + theme( plot.background = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank(), axis.ticks = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank(), legend.position = "right", legend.title.align = 0.5, legend.direction = "vertical", legend.key.width = unit(1, "cm"), legend.key.height = unit(0.8, "cm") ) # # mapWorld <- borders("world", colour="#E7E7E7", fill="#1a0000", alpha = .5) # outputplot<- ggplot()+mapWorld+ # geom_point(aes(x=Power$Longitude, y=Power$Latitude, size=Power$Production), alpha = .9, color="#000033")+ # labs(size = "Production")+ # scale_size_continuous(breaks = round(unname(quantile(Power$Production)),digits = 0))+ # theme(axis.title.x=element_blank(), # axis.text.x=element_blank(), # axis.ticks.x=element_blank(), # axis.title.y=element_blank(), # axis.text.y=element_blank(), # axis.ticks.y=element_blank()) } else { Label <- YourportfoliohasnoproductionfortheselectedTechnologyScenarioGeographyandMarket # outputplot <- no_chart(Label) } ggsave(plot = outputplot, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", height = 5, width = 10, dpi = ppi) # linewidth_in*.9 tech_to_plot <<- "" BV.asset_type <<- "" } PeerComparison <- function(plotnumber, VariableToPlot = "plan_carsten", Grouping.Level = "portfolio_name", chart_type, BV.asset_type = "") { BV.asset_type <<- BV.asset_type # Title <- paste0("Percent of ", ifelse(chart_type=="CB",BondReference,"Equity")," Portfolio Value") browntechs <- data.frame("ald_sector" = c("Automotive", "Power", "Power", "OilGas", "OilGas", "CoalMining"), "technology" = c("ICE", "CoalCap", "GasCap", "Oil", "Gas", "Coal")) if (chart_type == "EQ") { Title <- PercentofEquityPortfolioValue # Batch <- filter_by_parameters(eq_peersSep, "EQ", scenario.irrelevant = T) combin <- filter_by_parameters(EQCombin, "EQ", scenario.irrelevant = T) } else if (chart_type == "CB") { Title <- PercentofCorporateBondsPortfolioValue # Batch <- filter_by_parameters(cb_peersSep, "CB", by_equity_market = FALSE, scenario.irrelevant = T) combin <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE, scenario.irrelevant = T) } else if (chart_type == "BV") { if (BV.asset_type == "BV_Equity") { Title <- PercentofEquityPortfolioValue # } else if (BV.asset_type == "BV_Bonds") { Title <- PercentofCorporateBondsPortfolioValue # } Batch <- filter_by_parameters(BVPeersSep, "BV", by_equity_market = FALSE, scenario.irrelevant = T, BV.asset_type = BV.asset_type) combin <- filter_by_parameters(BVCombin, "BV", by_equity_market = FALSE, scenario.irrelevant = T, BV.asset_type = BV.asset_type) } combin <- as.data.frame(combin) Batch <- as.data.frame(Batch) # Batch <- Batch %>% filter(investor_name != investor_name_select) MetricCol <- VariableToPlot df <- bind_rows(combin, Batch) df <- as.data.frame(df) df <- subset(df, year %in% c(start_year, 2018) & ald_sector %in% c("Oil&Gas", "Coal"), select = c("investor_name", "portfolio_name", "ald_sector", "technology", MetricCol)) df <- df[!is.na(df[, MetricCol]), ] if (investor_name_select %in% df$investor_name) { PlotChart <- TRUE } else { PlotChart <- FALSE } if (PlotChart == TRUE) { ID.COLS <- Grouping.Level BarColors <- energy Labels <- FossilFuelsSector # port.value <- sum(filter(df, portfolio_name == portfolio_name_select & investor_name == investor_name_select)[MetricCol]) portfolio_label <- paste0( ThisPortfolio, " ", # unique(round(100 * (port.value), 2)), "%" ) dfagg <- aggregate(eval(parse(text = MetricCol)) ~ eval(parse(text = ID.COLS)) + ald_sector, data = df, sum) colnames(dfagg) <- c("ID.COL", "ald_sector", "Metric") dfagg$Metric <- as.numeric(dfagg$Metric) dfagg <- as.data.frame(dfagg) dfagg <- dfagg %>% group_by(ID.COL) %>% summarise(Metricsum = sum(Metric)) x_length <- length(unique(dfagg$ID.COL)) xlabel <- "" yaxislabel <- paste0(wrap_labels(ExposureoftheportfoliotoFossilFuels, 30)) # if (range(dfagg$Metricsum)[1] >= 0 & range(dfagg$Metricsum)[2] >= 0) { lim <- c(0, range(dfagg$Metricsum)[2] + 0.005) } else if (range(dfagg$Metricsum)[1] < 0 & range(dfagg$Metricsum)[2] >= 0) { lim <- c(range(dfagg$Metricsum)[1] - 0.005, range(dfagg$Metricsum)[2] + 0.005) } else if (range(dfagg$Metricsum)[1] < 0 & range(dfagg$Metricsum)[2] < 0) { lim <- c(range(dfagg$Metricsum)[1] - 0.005, 0) } dfagg <- dfagg %>% arrange(-Metricsum) dfagg$ID.COL <- factor(dfagg$ID.COL, levels = dfagg$ID.COL[rev(order(dfagg$Metricsum))]) if (ID.COLS == "portfolio_name") { x_coord <- which(dfagg$ID.COL == investor_name_select) } if (ID.COLS == "portfolio_name") { x_coord <- which(dfagg$ID.COL == portfolio_name_select) } is_left <- x_coord / x_length < .50 is_first <- if_else(x_coord == 1, .005, 0) distribution_plot <- ggplot(dfagg) + geom_bar(aes(x = ID.COL, y = Metricsum), stat = "identity", width = 1 ) + annotate("text", x = x_coord, y = port.value, label = portfolio_label, hjust = ifelse(is_left, -.05, -0.05), # 1.05 vjust = -0.3, size = textsize * (5 / 14) ) + scale_fill_manual(values = BarColors, labels = Labels) + # , breaks=c(MetricC) # scale_y_continuous( limits = lim, expand = expand_scale(add = c(0, 0)), name = yaxislabel, labels = percent ) + scale_x_discrete(labels = NULL, expand = c(0, 0)) + coord_cartesian(ylim = c(0, lim[2]), clip = "off") + theme_distribution() + geom_hline(yintercept = 0, size = 1) + xlab(xlabel) + geom_vline(xintercept = x_coord, linetype = 2) + theme( legend.position = "none", plot.margin = unit(c(1, 0, 0, 0), "cm") ) # gt <- ggplot_gtable(ggplot_build(distribution_plot)) # gt$layout$clip[gt$layout$name == "panel"] <- "off" # grid.draw(gt) } else { if (sector_to_plot == "Power") { SectorToInsert <- PowerSector # } else if (sector_to_plot == "Fossil Fuels") { SectorToInsert <- FossilFuelsSector # } else { SectorToInsert <- " " } Label <- paste0(Yourportfoliocontainsnoholdingsinthe, " ", SectorToInsert, " ", sectorintheselectedMarket) # distribution_plot <- no_chart(Label) } ggsave(plot = distribution_plot, filename = graph_name(plotnumber, ParameterFile), bg = "white", height = 2.8, width = 10, dpi = ppi) BV.asset_type <<- "" } ShippingChart <- function(plotnumber, chart_type, plot_year, sector_to_plot = "Shipping", explicit_filename = "") { # print(chart_type) # print(sector_to_plot) # chart_type <-"All" Combin <- data.frame() if (GraphType == "Report") { LegendOn <- FALSE } else { LegendOn <- TRUE } if (chart_type == "EQ" & has_equity == TRUE) { Peers <- filter_by_parameters(eq_peers, "EQ") Market <- filter_by_parameters(eq_market, "EQ") Combin <- filter_by_parameters(EQCombin, "EQ") } else if (chart_type == "CB" & has_debt == TRUE) { Peers <- filter_by_parameters(cb_peers, "CB", by_equity_market = FALSE) Market <- filter_by_parameters(cb_market, "CB", by_equity_market = FALSE) Combin <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE) } else if (chart_type %in% c("All", "")) { sector_to_plot <<- "Shipping" Market_e <- filter_by_parameters(eq_market, "EQ") if (data_check(Market_e) == TRUE) { Market_e$Type <- "Equity Market" } Market_b <- filter_by_parameters(cb_market, "CB", by_equity_market = FALSE) if (data_check(Market_b) == TRUE) { Market_b$Type <- "Bond Market" } Combin_e <- filter_by_parameters(EQCombin, "EQ") if (data_check(Combin_e) == TRUE) { Combin_e$Type <- "Equity Portfolio" } Combin_b <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE) if (data_check(Combin_b) == TRUE) { Combin_b$Type <- "Bond Portfolio" } if (has_equity & has_debt) { Market <- bind_rows(Market_e, Market_b) } else if (has_debt & (has_equity == FALSE)) { Market <- Market_b } else if (has_equity & (has_debt == FALSE)) { Market <- Market_e } if (has_equity & has_debt) { Combin <- bind_rows(Combin_e, Combin_b) } else if (has_debt & (has_equity == FALSE)) { Combin <- Combin_b } else if (has_equity & (has_debt == FALSE)) { Combin <- Combin_e } } # print(unique(Combin$ald_sector)) if (data_check(Combin) == TRUE) { PlotChart <- TRUE } else { PlotChart <- FALSE } if (PlotChart == TRUE) { if (!chart_type %in% c("All", "")) { if (data_check(Peers)) { Peers$Type <- "Peers" } else { Type <- c() Type <- as.character(Type) Peers[, "Type"] <- Type } Peers <- unique(Peers) Peers <- Peers %>% ungroup() %>% filter(technology != "OilCap" & year == plot_year) %>% # year == PlotYr & select("portfolio_name", "ald_sector", "technology", "Type", "plan_alloc_wt_tech_prod") %>% # "Type rename(WtProduction = plan_alloc_wt_tech_prod) Peers <- Peers %>% complete( Type = c("Peers"), technology = c("A", "B", "C", "D", "E", "F", "G"), fill = list(WtProduction = 0, ald_sector = "Shipping") ) Combin$Type <- "Portfolio" if (data_check(Market)) { Market$Type <- "Market" } else { Type <- c() Type <- as.character(Type) Market[, "Type"] <- Type } } Combin <- Combin %>% ungroup() %>% filter(technology != "OilCap" & year == plot_year) %>% # year == PlotYr & select("portfolio_name", "ald_sector", "technology", "plan_alloc_wt_tech_prod", "Type") %>% # "Type rename(WtProduction = plan_alloc_wt_tech_prod) if (chart_type %in% c("All", "")) { Combin <- Combin %>% complete( Type = c("Equity Portfolio", "Bond Portfolio"), technology = c("A", "B", "C", "D", "E", "F", "G"), fill = list(WtProduction = 0, ald_sector = "Shipping") ) } if (chart_type %in% c("All", "") && (data_check(Market) == FALSE)) { Type <- c() Type <- as.character(Type) Market[, "Type"] <- Type } Market <- Market %>% ungroup() %>% filter(technology != "OilCap" & year == plot_year) %>% # year == PlotYr & Type =="Portfolio") %>% select("portfolio_name", "ald_sector", "technology", "plan_alloc_wt_tech_prod", "Type") %>% # "Type" rename(WtProduction = plan_alloc_wt_tech_prod) if (chart_type %in% c("All", "")) { Market <- Market %>% complete( Type = c("Equity Market", "Bond Market"), technology = c("A", "B", "C", "D", "E", "F", "G"), fill = list(WtProduction = 0, ald_sector = "Shipping") ) } else { Market <- Market %>% complete( Type = c("Market"), technology = c("A", "B", "C", "D", "E", "F", "G"), fill = list(WtProduction = 0, ald_sector = "Shipping") ) } if (!chart_type %in% c("All", "")) { Production <- bind_rows(Combin, Peers, Market) } else if (chart_type %in% c("All", "")) { Production <- bind_rows(Combin, Market) } # print(unique(Production$Type)) Production$ald_sector <- as.factor(Production$ald_sector) levels(Production$ald_sector)[levels(Production$ald_sector) == "Coal"] <- "Fossil Fuels" levels(Production$ald_sector)[levels(Production$ald_sector) == "Oil&Gas"] <- "Fossil Fuels" # Aggregate and rename CarstenMetric_Port ID.COLS <- c("ald_sector", "technology", "Type") Production <- Production %>% gather(key = Metric, value = Value, "WtProduction") Production <- aggregate(Production["Value"], by = Production[c(ID.COLS)], FUN = sum) colours <- as.vector(ColourPalette[["Colours"]]) names(colours) <- technology_order labels <- c( "Renewables", "Hydro", "Nuclear", "Gas", "Coal", "Electric", "Hybrid", "ICE", "Gas", "Oil", "Coal", "Freight", "Passenger", "A", "B", "C", "D", "E", "F", "G" ) names(labels) <- technology_order Production$technology <- factor(Production$technology, levels = technology_order) Production$ald_sector <- factor(Production$ald_sector, levels = c("Fossil Fuels", "Power", "Automotive", "Aviation", "Shipping")) # Production$Type <- wrap_labels(Production$Type, 20) if (!chart_type %in% c("All", "")) { Production$Type <- factor(Production$Type, levels = c("Portfolio", "Peers", "Market")) xlabels <- c(Portf, wrap_labels(x_Peers, 10), x_Benchmark) # } else if (chart_type %in% c("All", "")) { Production$Type <- factor(Production$Type, levels = c("Bond Portfolio", "Equity Portfolio", "Bond Market", "Equity Market")) xlabels <- c( paste0(wrap_labels(BondPortfolio, 10)), # paste0(wrap_labels(EquityPortfollio, 10)), # paste0(wrap_labels(BondMarket, 10)), # paste0(wrap_labels(EquityMarket, 10)) ) # } Production <- subset(Production, select = c("Type", "ald_sector", "technology", "Value")) shippingchart <- stacked_bar_chart(Production, colours, labels) + ylab(ShareofSectorProduction) + # scale_x_discrete(labels = xlabels, expand = c(0, 0)) + theme(plot.margin = unit(c(0.2, 0.2, 0.2, 0), "cm")) if (LegendOn == TRUE) { shippingchart <- shippingchart + theme( plot.title = element_text(hjust = 0.5, colour = textcolor, size = 11, margin = unit(c(0, 0, 1, 0), "lines")), legend.position = "bottom", legend.title = element_blank() ) } } else { Label <- Theportfoliohasnocompaniesintheshippingsector # shippingchart <- no_chart(Label) } ggsave(shippingchart, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", height = 3, width = 4, dpi = ppi) sector_to_plot <<- "" } steel_chart <- function(plotnumber) { if (chart_type == "EQ") { ProdSnapshot <- filter_by_parameters(EQCompProdSnapshot, "EQ") } if (chart_type == "CB") { ProdSnapshot <- filter_by_parameters(CBCompProdSnapshot, "CB", by_equity_market = FALSE) } ProdSnapshot <- subset(ProdSnapshot, year = start_year + 5) steel <- base::merge(ProdSnapshot, SteelData, by.x = "Name", by.y = "Company") # import steel data nosteel <- nrow(steel) if (nosteel > 0) { # categorize high c vs. low c # Classification<- ifelse() steel <- steel %>% group_by(Classification) %>% summarize(tot = sum(tech_share)) %>% ungroup() %>% mutate(per = tech_share / tot) plottheme <- ggplot( data = steel, aes_string(x = asset_type, y = per, fill = Classification), show.guide = TRUE ) + geom_bar(stat = "identity", position = "fill", width = .6) + # geom_hline(yintercept = c(.25,.50,.75), color="white")+ scale_fill_manual(values = colors, labels = legend_labels, breaks = names(legend_labels)) + scale_y_continuous(expand = c(0, 0), labels = percent) + guides(fill = guide_legend(nrow = 1)) + theme_barcharts() } else { Label <- YourPortfolioincludesnocompanieswithsteelproductionintheselectedscenario_geographyandMarket # outputplot <- no_chart(Label) } ggsave(filename = graph_name(plotnumber, ParameterFile), bg = "white", height = 3.6, width = 3.6, plot = outputplot, dpi = ppi) } SectorDataAnalysis <- function() { over <- subgroup_overview over <- subset(over, over$portfolio_name == portfolio_name_select & valid_input == 1) over$financial_sector <- ifelse(over$financial_sector %in% c("Coal", "Oil&Gas"), "Fossil Fuels", over$financial_sector) over$financial_sector <- ifelse(over$financial_sector %in% c("Aviation", "Shipping"), "Aviation & Shipping", over$financial_sector) over$financial_sector <- ifelse(over$financial_sector %in% c("Steel", "Cement", "Cement & Steel"), "Cement & Steel", over$financial_sector) over$financial_sector <- ifelse(over$financial_sector %in% c("Other"), "Not Included", over$financial_sector) return(over) } ScopeOfAnalysis <- function(plotnumber, explicit_filename = "") { over <- SectorDataAnalysis() Bond_translation <- if (BondReference == "Corporate bond") { paste0(wrap_labels(BondsTitle, 10)) # } else { wrap_labels(Corporate_Bond_1, 10) ## place for other category!!! } over$asset_type <- gsub("Funds", "Others", over$asset_type) # over$asset_type <- gsub("Bonds", Bond_translation, over$asset_type) # over$asset_type <- gsub("Equity", EquityTitle, over$asset_type) # over$asset_type <- gsub("Others", OthersTitle, over$asset_type) # over$Sector.All <- ifelse(over$financial_sector == "Not Included", "Sectors Not in Scope", "Scope of the Analysis") over <- over %>% ungroup() %>% select(Sector.All, asset_type, valid_value_usd) %>% group_by(Sector.All, asset_type) %>% summarise(valid_value_usd = sum(valid_value_usd)) if (data_check(over) == F) { over <- over %>% ungroup() %>% add_row(Sector.All = "Power", asset_type = Bond_translation, valid_value_usd = 0) } over <- over %>% complete( asset_type = c(Bond_translation, EquityTitle, OthersTitle), # Sector.All = c( "Sectors Not in Scope", # "Other Climate Sectors", "Scope of the Analysis" ), fill = list(valid_value_usd = 0) ) %>% unique() over <- as.data.frame(over) orderofchart <- c(Bond_translation, EquityTitle, OthersTitle) # over$asset_type <- factor(over$asset_type, levels = orderofchart) over$Sector.All <- factor(over$Sector.All, levels = c( "Sectors Not in Scope", # "Other Climate Sectors", "Scope of the Analysis" ), ordered = TRUE) tot <- over %>% group_by(asset_type) %>% summarise(s = sum(valid_value_usd)) # for NEW VERSION horizontal chart over_horizontal_chart <- over %>% filter(asset_type != OthersTitle) annotate.position <- over_horizontal_chart %>% group_by(asset_type) %>% summarize(sumValueUSD = sum(valid_value_usd)) %>% summarize(maxsumValueUSD = max(sumValueUSD)) annotate.label <- over_horizontal_chart %>% filter(Sector.All == "Scope of the Analysis") number_cifer <- nchar(round(annotate.position$maxsumValueUSD, digits = 0)) breaks_by <- function(number_cifer) { 10^(number_cifer - 1) } breaks_interval <- breaks_by(number_cifer) plot <- ggplot(over_horizontal_chart, aes(x = fct_rev(asset_type), y = valid_value_usd, fill = Sector.All)) + geom_bar(position = "stack", stat = "identity", width = 0.9) + coord_flip() + scale_fill_manual( name = "", labels = c( SectorsNotinScope, # OtherClimateRelevantSectors, SectorsinScenarioAnalysis ), values = c( "grey80", # "#deebf7", "#265b9b" ), drop = FALSE ) + # # scale_x_discrete(name="Asset Type", labels = x_labels) + scale_y_continuous( name = MarketValue, labels = comprss, expand = c(0, 0, 0, 0), breaks = seq(0, annotate.position$maxsumValueUSD, by = breaks_interval * 2) ) + # breaks = scales::pretty_breaks(n = 3)) + # # limits = c(0, annotate.position$maxsumValueUSD+0.3*annotate.position$maxsumValueUSD)) + # guides(fill = guide_legend(nrow = 1, byrow = TRUE, reverse = TRUE)) + theme_barcharts() + theme( plot.title = element_text(colour = "#265b9b", size = 11, hjust = 1), legend.position = "bottom", legend.text = element_text(size = textsize), legend.box.margin = unit(c(-15, 60, -10, 0), "pt"), legend.spacing.y = unit(0, "pt"), axis.line.x = element_blank(), axis.line.y = element_line(size = 0.5), axis.text.x = element_text(colour = textcolor, size = 11), axis.text.y = element_text(colour = textcolor, size = 11), axis.title.x = element_text(colour = textcolor, size = 11, margin = margin(5, 0, 0, 0, "pt"), hjust = 0.3), axis.title.y = element_blank(), panel.grid.major.x = element_line(colour = "#989898", size = 0.2), plot.margin = unit(c(5, 10, 10, 2), "pt") ) + annotate("text", x = annotate.label$asset_type, y = annotate.position$maxsumValueUSD + 0.35 * annotate.position$maxsumValueUSD, # label = wrap_labels(paste0(comma(round(annotate.label$valid_value_usd, digits = 0))), 10), label = comprss(annotate.label$valid_value_usd), family = textfont, colour = "#265b9b", hjust = 1 ) + ggtitle(Climaterelevantsectors) ggsave(plot, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", height = 2.2, width = 4.5, dpi = ppi) # linewidth_in*.9 } CarstenMetricChart <- function(plotnumber, chart_type, explicit_filename = "") { PortName_IN <- portfolio_name_select if (chart_type == "CB" & has_debt == TRUE) { market <- filter_by_parameters(cb_market, "CB", by_equity_market = FALSE) combin <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE) port <- bind_rows(combin, market) Type <- "Corporate bond" port$portfolio_name <- dplyr::case_when( port$portfolio_name == portfolio_name_select ~ "Portfolio", port$portfolio_name == cb_market_ref ~ cb_market_ref, TRUE ~ port$portfolio_name ) port$portfolio_name <- factor(port$portfolio_name, levels = c("Portfolio", cb_market_ref), ordered = TRUE) lab <- wrap_labels(cb_market_ref, 12) MarketRef <- cb_market_ref } else if (chart_type == "CB" & has_debt == FALSE) { PlotChart <- FALSE } if (chart_type == "EQ" & has_equity == TRUE) { # Set as CB to ensure that the PortWeight values are used market <- filter_by_parameters(eq_market, "CB", scenario.irrelevant = TRUE) port <- filter_by_parameters(EQCombin, "CB", scenario.irrelevant = TRUE) port <- bind_rows(port, market) Type <- "equity" port <- subset(port, portfolio_name %in% c(portfolio_name_select, eq_market_ref)) # "ListedEquity" port$portfolio_name <- dplyr::case_when( port$portfolio_name == portfolio_name_select ~ "Portfolio", port$portfolio_name == eq_market_ref ~ eq_market_ref, TRUE ~ port$portfolio_name ) port$portfolio_name <- factor(port$portfolio_name, levels = c("Portfolio", eq_market_ref), ordered = TRUE) lab <- wrap_labels(eq_market_ref, 10) MarketRef <- eq_market_ref } else if (chart_type == "EQ" & has_equity == FALSE) { PlotChart <- FALSE } if (PlotChart == TRUE) { # print("Plotting preparation") current.port <- subset(port, year == start_year & portfolio_name == "Portfolio") %>% mutate(Metric = plan_carsten) current.market <- subset(port, year == start_year & portfolio_name %in% c(eq_market_ref, cb_market_ref)) %>% mutate(Metric = plan_carsten) port <- bind_rows(current.port, current.market) %>% select(portfolio_name, ald_sector, technology, Metric) sector_list <- sector_list[sector_list != "Fossil Fuels"] tech_list <- tech_list[tech_list != "OilCap"] port <- port %>% complete( portfolio_name = c("Portfolio", MarketRef), technology = tech_list, fill = list(Metric = 0) ) port <- port %>% mutate( # portfolio_name = if_else(investor_name == investor_name_select, portfolio_name_select, MarketRef), ald_sector = set_ald_sector(technology) ) port$ald_sector2 <- paste0(port$ald_sector, " Production") # port$ald_sector2 <- ifelse(port$ald_sector == "Power", C_Power, port$ald_sector2) # port$ald_sector2 <- ifelse(port$ald_sector == "Automotive", S_Automotive, port$ald_sector2) # port$ald_sector2 <- ifelse(port$ald_sector == "Oil&Gas", P_OilandGas, port$ald_sector2) # port$ald_sector2 <- ifelse(port$ald_sector == "Coal", P_Coal, port$ald_sector2) # port$ald_sector2 <- factor(port$ald_sector2, levels = c(P_OilandGas, P_Coal, C_Power, S_Automotive)) # levels OK port <- subset(port, technology != "OilCap") tech.levels <- technology_order_short tech.labels <- c( P_Gas, P_Oil, P_Coal, # C_Renewables, C_Hydro, C_Nuclear, C_Gas, C_Coal, # T_Electric, T_Hybrid, T_ICE ) # if (max(port$Metric) <= 0.001) { perc.labels.digits <- 0.01 } else if (max(port$Metric) <= 0.01) { perc.labels.digits <- 0.1 } else { perc.labels.digits <- 1 } port$technology <- factor(port$technology, levels = tech.levels, ordered = TRUE) port$portfolio_name <- dplyr::recode(port$portfolio_name, "Portfolio" = Portf, MarketRef = lab ) port$portfolio_name <- factor(port$portfolio_name, levels = c(Portf, MarketRef), ordered = TRUE) tech.colors <- c(GasProdColour, OilProdColour, CoalProdColour, RenewablesColour, HydroColour, NuclearColour, GasCapColour, CoalCapColour, ElectricColour, HybridColour, ICEColour) tots <- port %>% group_by(portfolio_name, ald_sector2) %>% summarise(Metric = sum(Metric, na.rm = T)) outputplot <- ggplot(port, aes(x = portfolio_name, y = Metric, group = technology, fill = technology)) + geom_bar(stat = "identity", position = "stack") + # geom_text(data=tots, aes(x=PortName, y=Metric, label=percent(Metric))) + scale_x_discrete(name = "", labels = c(Portf, lab)) + # scale_y_continuous( name = paste0(wrap_labels(Weightbymarketvalueofissuersexposedtothetechnology, 50), "\n"), labels = percent_format(accuracy = perc.labels.digits), expand = c(0, 0), # limits = c(0, max(tots$Metric) + .01) ) + scale_fill_manual(name = tech.levels, labels = tech.labels, values = tech.colors) + guides(fill = guide_legend(ncol = 1)) + theme_cdi() + facet_wrap(~ald_sector2, nrow = 1, labeller = label_wrap_gen(width = 20)) + theme( legend.title = element_text(size = 14), legend.text = element_text(size = 11), axis.text.x = element_text(angle = 0, colour = textcolor, size = 11), axis.text.y = element_text(size = 11), axis.title.y = element_text(size = 13), strip.text = element_text(size = 13), # axis.ticks.y = element_line(colour=textcolor,size = 1), axis.line.x = element_line() ) } else { Label <- paste(Nodataintheportfolio) # outputplot <- no_chart(Label) } ggsave(outputplot, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), bg = "white", height = 4, width = 13, dpi = ppi * 0.8) BV.asset_type <<- "" } RenewableAdditionsChart <- function(plotnumber, companiestoprint, chart_type) { sector_to_plot <<- "Power" RenewableAdds <- NA RenewableAdditions <- readRDS(paste0(Location, "ReferenceData/RenewablesAdditionsData.rda")) RenewableAdditions$ald_sector <- "Power" # RenewableAdditions$scenario_geography <- ifelse(RenewableAdditions$ald_sector == "Power","Global",RenewableAdditions$scenario_geography) if (chart_type == "EQ") { RenewableAdditions <- filter_by_parameters(RenewableAdditions, "EQ") %>% filter(FI %in% c("Equity", "EQUITY")) CompProdSnapshot <- filter_by_parameters(EQCompProdSnapshot, "EQ", ActorSectorOnly = T) RenewableAdds <- RenewableAdditions[RenewableAdditions$ID %in% CompProdSnapshot$bloomberg_id, ] } if (chart_type == "CB") { RenewableAdditions <- filter_by_parameters(RenewableAdditions, "CB") %>% filter(FI %in% c("Bonds", "BONDS")) CompProdSnapshot <- filter_by_parameters(CBCompProdSnapshot, "CB", by_equity_market = F, ActorSectorOnly = T) RenewableAdds <- RenewableAdditions[RenewableAdditions$ID %in% CompProdSnapshot$corp_bond_ticker, ] } if (data_check(RenewableAdds) == T) { PlotChart <- TRUE } else { PlotChart <- FALSE } if (PlotChart == TRUE) { RenewablesBar <- RenewableAdds maxcompanies <- min(companiestoprint, nrow(RenewablesBar)) RenewablesBar <- RenewablesBar[order(RenewablesBar$plan_tech_prod, decreasing = T), ] # RenewablesBar$company_name <- factor(RenewablesBar$company_name, levels = RenewablesBar$company_name[order(RenewablesBar$Additions)]) RenewablesBar <- RenewablesBar[seq(1, maxcompanies), ] Yaxislabel <- paste0(Renewablecapacityadditions, " (", start_year, " - ", start_year + 5, ")") # stillreq <- " Remaining Required Additions" # not used? remainlabel <- x_Progress # progresslabel <- RemainingRequiredAdditions # Target <- "Progress" # not used? RenewablesBar <- RenewablesBar %>% select(company_name, Additions, RequiredAdditions) RenewablesBarLong <- melt(RenewablesBar, variable.name = "variable", value.name = "value", id.vars = c("company_name")) sumren <- RenewablesBarLong %>% group_by(company_name) %>% summarize(tot = sum(value)) RenewablesBarLong <- left_join(RenewablesBarLong, sumren, by = "company_name") %>% mutate(perc = value / tot) RenewablesBarLong$variable <- factor(RenewablesBarLong$variable, levels = c("RequiredAdditions", "Additions")) RenewablesBarLong <- RenewablesBarLong %>% filter(company_name %in% unique(RenewablesBarLong$company_name)[1:min(companiestoprint, length(unique(RenewablesBarLong$company_name)))]) comp <- subset(RenewablesBarLong, variable == "RequiredAdditions") company_labels <- trimws(unique(RenewablesBarLong$company_name)) for (i in 1:length(company_labels)) { if (str_length(company_labels[i]) > 15) { new_name <- strtrim(company_labels[i], 15) company_labels[i] <- paste0(new_name, "...") } } CompName <- RenewablesBarLong[order(RenewablesBarLong[which(RenewablesBarLong$variable == "Additions"), ]$perc, decreasing = T), ]$company_name RenewablesBarLong$company_name <- factor(RenewablesBarLong$company_name, levels = rev(CompName)) RenAddBar <- ggplot(RenewablesBarLong, aes(x = company_name, y = perc, fill = variable)) + geom_bar(stat = "identity", width = .8, position = "fill") + # geom_segment(aes(x=0, xend = 0 , y=0, yend = 1), size=1, colour = AxisColour, arrow = arrow(length = unit(0.4,"cm")))+ geom_hline(yintercept = 1, colour = area_2, linetype = "longdash", size = 1) + scale_fill_manual(values = c("RequiredAdditions" = badexpColour, "Additions" = YourportColour), labels = c("Additions" = remainlabel, "RequiredAdditions" = progresslabel)) + scale_y_continuous(limits = c(0, 1), expand = c(-0.1, 0.1), label = percent) + scale_x_discrete(expand = c(0, 0), label = company_labels) + theme_barcharts() + guides(fill = guide_legend(nrow = 1, reverse = TRUE)) + coord_flip() + theme( axis.title.x = element_text(colour = AxisColour, size = 11), axis.title.y = element_blank(), axis.text.y = element_text(size = 11), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), legend.position = "bottom", legend.direction = "horizontal", legend.text = element_text(size = 11, colour = AxisColour, margin = margin(l = 0.15, r = 0.35, unit = "cm")), legend.background = element_rect(fill = "transparent", colour = NA), legend.key.size = unit(0.4, "cm"), legend.title = element_blank(), legend.key = element_blank(), plot.margin = unit(c(.4, 1.5, 0, 0), "lines") ) + ylab(Yaxislabel) + geom_text( data = comp, aes(x = company_name, y = 0.88, hjust = 1), label = paste0(round(comp$value, digits = 0), " MW ", RemainingRequiredAdditions), color = textcolor, size = 3 ) # 2.53 # RenAddValues <- c(4.8, 8) bar_size <- 8 / 15 height <- min(1 + companiestoprint, n_distinct(RenewablesBarLong$company_name) / 2) * bar_size + .86 # plotwidth <- .1*NoCompanies +7.1 } else { Label <- YourPortfoliodoesnotincludeanycompanieswithrenewablepower # RenAddBar <- no_chart(Label) # plotwidth <- 7 height <- 3 } ggsave(filename = graph_name(plotnumber, ParameterFile), height = height, width = 10, plot = RenAddBar, dpi = ppi) sector_to_plot <<- "" } carboninoutdata <- function(chart_type) { ccap <- NA portfolio1 <- NA if (chart_type == "EQ") { EQCompProdSnapshot <- filter_by_parameters(EQCompProdSnapshot, "EQ") if (data_check(EQCompProdSnapshot) == TRUE) { CompProdSS <- EQCompProdSnapshot %>% ungroup() %>% filter(year == start_year + 5) %>% select(company_name, port_weight, id) %>% rename(Name = company_name) %>% unique() CompProdSS <- as.data.frame(CompProdSS) CompProdSS$id <- as.integer(CompProdSS$id) ccap <- CarbonData } else { PlotChart <- FALSE } } else if (chart_type == "CB") { CBCompProdSnapshot <- filter_by_parameters(CBCompProdSnapshot, "CB", by_equity_market = FALSE) if (data_check(CBCompProdSnapshot) == TRUE) { CompProdSS <- CBCompProdSnapshot %>% filter(year == start_year + 5) %>% select(port_weight, corp_bond_ticker) %>% rename(EQY_FUND_TICKER = corp_bond_ticker) %>% unique() } else { PlotChart <- FALSE } ccap <- CarbonData ccap$EQY_FUND_TICKER <- gsub(" [A-z ]*", "", as.character(ccap$EQY_FUND_TICKER)) } if (data_check(ccap) == TRUE) { ccap$InsideCarbonBudget <- ccap$TotalCarbonBudget - ccap$OutsideCarbonBudget ccap <- subset(ccap, select = c("id", "TotalCarbonBudget", "OutsideCarbonBudget", "InsideCarbonBudget")) colnames(ccap) <- c("id", "TotalCarbonBudget", "Outside Carbon Budget", "Inside Carbon Budget") ccap$Inside.Carbon.Budget <- ccap$`Inside Carbon Budget` / ccap$TotalCarbonBudget ccap$Outside.Carbon.Budget <- ccap$`Outside Carbon Budget` / ccap$TotalCarbonBudget portfolio <- left_join(CompProdSS, ccap, by = "id") %>% select(Name, port_weight, Inside.Carbon.Budget, Outside.Carbon.Budget) portfolio1 <- melt(portfolio, id.vars = c("Name", "port_weight"), variable.name = "CarbonBudget") portfolio1 <- subset(portfolio1, !is.na(value)) if (data_check(portfolio1) == TRUE) { HasCarbonBudget <<- TRUE } else { HasCarbonBudget <<- FALSE } } else { HasCarbonBudget <<- FALSE } return(portfolio1) } CarbonBudget <- function(plotnumber, companiestoprint, chart_type) { portfolio1 <- carboninoutdata(chart_type) if (HasCarbonBudget == TRUE) { carbonorder <- c("Inside Carbon Budget", "Outside Carbon Budget") portfolio1$CarbonBudget <- gsub("\\.", " ", portfolio1$CarbonBudget) colors <- c(OilProdColour, area_6) # AllData <- filter(AllData, technology %in% techorder) portfolio1$CarbonBudget <- factor(portfolio1$CarbonBudget, levels = carbonorder) portfolio1 <- portfolio1 %>% arrange(-port_weight) portfolio1 <- portfolio1 %>% filter(Name %in% unique(portfolio1$Name)[1:min(companiestoprint, length(unique(portfolio1$Name)))]) dummy <- data.frame( c("Name", ""), c("port_weight", NA), c("CarbonBudget", NA), c("value", 0) ) colnames(dummy) <- as.character(unlist(dummy[1, ])) dummy <- dummy[-1, ] dummy$value <- as.numeric(dummy$value) portfolio1 <- rbind(portfolio1, dummy) # portfolio1$Name <- factor(portfolio1$Name, levels=rev(unique(c("",portfolio1$Name)))) portfolio1$port_weight <- as.numeric(portfolio1$port_weight) portfolio1 <- portfolio1 %>% arrange(port_weight) company_labels <- trimws(unique(portfolio1[!is.na(portfolio1$CarbonBudget), ]$Name)) for (i in 1:length(company_labels)) { if (str_length(company_labels[i]) > 15) { new_name <- strtrim(company_labels[i], 15) company_labels[i] <- paste0(new_name, "...") } } portfolio1$CarbonBudget <- recode(portfolio1$CarbonBudget, "Outside Carbon Budget" = OutsideCarbonBudget, "Inside Carbon Budget" = InsideCarbonBudget ) portfolio1$CarbonBudget <- factor(portfolio1$CarbonBudget, levels = c(OutsideCarbonBudget, InsideCarbonBudget)) bar_labels <- c(company_labels, " ") portfolio1$port_weight <- as.numeric(portfolio1$port_weight) carb <- subset(portfolio1, !is.na(port_weight)) carbonorder <- recode(carbonorder, "Outside Carbon Budget" = OutsideCarbonBudget, "Inside Carbon Budget" = InsideCarbonBudget ) names(colors) <- carbonorder PortPlot <- ggplot( data = portfolio1, aes( x = reorder(Name, port_weight), y = value, fill = factor(CarbonBudget, levels = c(OutsideCarbonBudget, InsideCarbonBudget)) ), show.guide = TRUE ) + geom_bar(stat = "identity", position = "fill", width = .6) + # geom_hline(yintercept = c(.25,.50,.75), color="white")+ scale_fill_manual(values = colors, labels = paste(carbonorder, " "), breaks = (carbonorder)) + scale_y_continuous(expand = c(0, 0), labels = percent) + scale_x_discrete(labels = bar_labels) + guides(fill = guide_legend(nrow = 1)) + theme_barcharts() + geom_text( data = carb, aes(x = Name, y = 1), label = perc(carb$port_weight), hjust = -1, color = textcolor, size = textsize * (5 / 14) ) + geom_text(aes(x = "", y = 1), label = x_Weight, # hjust = -0.5, color = textcolor, size = 10 * (5 / 14), family = textfont ) + xlab("") + ylab("tech_share") + coord_flip() + theme( legend.position = "bottom", legend.title = element_blank(), plot.margin = unit(c(1, 6, 0, 0), "lines"), axis.line.x = element_line(colour = textcolor, size = 0.5) ) #+ # annotation_custom( # grob = textGrob(label = x_Weight, # gp=gpar(fontsize=8.5), # hjust = 0), # xmin = n_distinct(portfolio1$Name)+0.5, xmax = n_distinct(portfolio1$Name)+1, ymin = 1, ymax = 1.05) # # # gt <- PortPlot gt <- ggplot_gtable(ggplot_build(PortPlot)) gt$layout$clip[gt$layout$name == "panel"] <- "off" dev.off() # grid.draw(gt) bar_size <- 4 / 15 h <- min(1 + companiestoprint, n_distinct(portfolio1$Name)) * bar_size + .66 HasCarbonBudget <<- TRUE } else { Label <- NoCarbonBudgetDataisavailablefortheOilCompaniesinyourportfolio # # Label <- "No results are available for this combination of parameters" gt <- no_chart(Label) h <- 3 HasCarbonBudget <<- FALSE } ggsave(plot = gt, filename = graph_name(plotnumber, ParameterFile), bg = "white", height = h, width = 11, dpi = ppi) } OilGasBuildOut <- function(plotnumber, companiestoprint, chart_type, explicit_filename = "") { sector_to_plot <<- "Oil&Gas" # chart_type <<- chart_type if (chart_type == "CB") { comp <- filter_by_parameters(CBCompProdSnapshot, "CB", by_equity_market = F) if (data_check(comp) == TRUE) { comp <- subset(comp, portfolio_name == portfolio_name_select & ald_sector == "Oil&Gas") comp$company_name <- comp$id port <- filter_by_parameters(CBCombin, "CB", by_equity_market = F) port.targets <- port %>% filter(ald_sector == "Oil&Gas") %>% select(investor_name, portfolio_name, scenario, allocation, equity_market, scenario_geography, ald_sector, technology, scen_tech_prod, year) %>% arrange(year) %>% group_by(investor_name, portfolio_name, scenario, allocation, equity_market, scenario_geography, ald_sector, technology) %>% summarise( Port.Scen.Diff = last(scen_tech_prod) - first(scen_tech_prod), Port.Scen.Pct = Port.Scen.Diff / first(scen_tech_prod) ) %>% ungroup() %>% select(-scenario, -allocation, -equity_market, -scenario_geography, -ald_sector) } } if (chart_type == "EQ") { comp <- filter_by_parameters(EQCompProdSnapshot, "EQ") if (data_check(comp) == TRUE) { comp <- subset(comp, portfolio_name == portfolio_name_select & ald_sector == "Oil&Gas" & year %in% c(start_year, start_year + 5)) port <- filter_by_parameters(EQCombin, "EQ") port <- subset(port, year %in% c(start_year, start_year + 5)) port.targets <- port %>% filter(ald_sector == "Oil&Gas") %>% select( investor_name, portfolio_name, scenario, allocation, equity_market, scenario_geography, ald_sector, technology, scen_tech_prod, year ) %>% arrange(year) %>% group_by(investor_name, portfolio_name, scenario, allocation, equity_market, scenario_geography, ald_sector, technology) %>% summarise( Port.Scen.Diff = last(scen_tech_prod) - first(scen_tech_prod), Port.Scen.Pct = Port.Scen.Diff / first(scen_tech_prod) ) %>% ungroup() %>% select(-scenario, -allocation, -equity_market, -scenario_geography, -ald_sector) } } if (data_check(comp) == TRUE) { comp <- comp %>% filter(ald_sector == "Oil&Gas") %>% ungroup() %>% select(scenario, company_name, ald_sector, technology, plan_tech_prod, scen_tech_prod, year) %>% arrange(scenario, company_name, ald_sector, technology, year) %>% group_by(scenario, company_name, ald_sector, technology) %>% filter(plan_tech_prod > 0) %>% summarise(first(plan_tech_prod), last(plan_tech_prod), Plan.Diff = last(plan_tech_prod) - first(plan_tech_prod), Scen.Diff = last(scen_tech_prod) - first(scen_tech_prod), Plan.Pct = ifelse(Plan.Diff == 0, 0, (last(plan_tech_prod) - first(plan_tech_prod)) / first(plan_tech_prod)) ) } ## TODO: FIXME, THIS IS A HACK FOR THE SFC PROJECT comp <- comp %>% mutate(Plan.Pct = ifelse(company_name == "PETRPE", (2347 - 1250) / 1250, Plan.Pct)) if (data_check(filter(comp, company_name == "PETRPE"))) { tmp_row <- filter(comp, company_name == "PETRPE") tmp_row <- tmp_row %>% mutate(technology = "Gas", Plan.Pct = 0) comp <- rbind(comp, tmp_row) } ## TODO: END FIXME, THIS IS A HACK FOR THE SFC PROJECT if (data_check(comp) == TRUE) { comp <- left_join(comp, port.targets %>% ungroup() %>% as.data.frame(), by = "technology") comp$technology <- factor(comp$technology, levels = c("Gas", "Oil"), ordered = TRUE) comp$technology <- dplyr::recode(comp$technology, Gas = T_GasProd, Oil = T_OilProd) # comp <- comp %>% group_by(scenario, technology) %>% top_n(wt = `first(plan_tech_prod)`, n = companiestoprint) # Seperate out the infinite values if necessary comp_inf <- comp[is.infinite(comp$Plan.Pct), ] comp <- comp[is.finite(comp$Plan.Pct), ] MAX.VAL <- max(abs(comp$Plan.Pct), na.rm = TRUE) temp.max <- ceiling(MAX.VAL * 10) / 10 + 0.2 temp.diff <- ceiling(temp.max * 2) / 10 breaks <- seq(0, temp.max + temp.diff, temp.diff) breaks <- unlist(c(rev(-1 * breaks), breaks)) limits <- c(min(breaks), max(breaks)) comp$InfFlag <- 0 if (data_check(comp_inf) == TRUE) { comp_inf$Plan.Pct <- MAX.VAL * 1 comp_inf$InfFlag <- 1 comp <- rbind(comp, comp_inf) } comp$Ord.Var <- paste0(comp$company_name, comp$technology) comp <- comp %>% ungroup() %>% arrange(`first(plan_tech_prod)`) comp$Ord.Var <- factor(comp$Ord.Var, levels = comp$Ord.Var, ordered = TRUE) comp$Final.Name <- shortened_company_names(comp$company_name, 15) port.targets$technology <- dplyr::recode(port.targets$technology, Gas = T_GasProd, Oil = T_OilProd) # outputplot <- ggplot(comp, aes(x = Ord.Var, y = Plan.Pct, fill = technology)) + geom_bar(stat = "identity") + geom_hline( data = port.targets, aes( yintercept = Port.Scen.Pct, linetype = paste0(ChangeinPortfolioProductionSpecifiedby, " ", Scenariochoose, " ", Scenariofrom, " ", start_year, "- ", start_year + 5) ), # color = area_2, size = 1.5 ) + coord_flip() + scale_x_discrete(name = "", labels = setNames(comp$Final.Name, as.character(comp$Ord.Var))) + scale_y_continuous( name = paste0(ChangeinPlannedProductionfrom, " ", start_year, "- ", start_year + 5), # labels = percent_format(accuracy = 1), breaks = round(breaks, digits = 2), limits = limits ) + scale_color_manual(values = area_2) + scale_linetype_manual(name = "", values = c("solid")) + scale_fill_manual(name = "", values = c(OilProdColour, GasProdColour)) + # guide_legend(reverse = TRUE) facet_wrap(~technology, ncol = 1, scales = "free_y") + theme_cdi() + theme( legend.position = "bottom", legend.text = element_text(size = 11) ) + theme(axis.line = element_line()) + theme(axis.ticks.x = element_line()) # Adds the infinite label if (data_check(comp_inf) == TRUE) { outputplot <- outputplot + geom_text(data = comp[comp$InfFlag == 1, ], aes(x = Ord.Var, y = 0, label = "Future Production Only - Infinite Build Out", hjust = 0)) # annotate("text", x= 5, y=0, label = "Future Production Only - Infinite Build Out", hjust = 0) } bar_size <- 6 / 15 h <- min(1 + companiestoprint, n_distinct(comp$company_name)) * bar_size + 1.5 } else { Label <- Nocompanieswithexposuretoeitheroilorgasproductioninyourportfolio # outputplot <- no_chart(Label) h <- 3.25 } ggsave(outputplot, filename = graph_name(plotnumber, ParameterFile, explicit_filename = explicit_filename), height = h, width = 10, dpi = ppi ) sector_to_plot <<- "" chart_type <<- "" BV.asset_type <<- "" } CoalRetirementChart <- function(plotnumber, companiestoprint, chart_type) { PlotChart <- F chart_type <- chart_type sector_to_plot <<- "Power" PortCoalRetirements <- NA CoalRetirements$equity_market <- gsub("Market", "", CoalRetirements$equity_market) # CoalRetirements$scenario_geography <- ifelse(CoalRetirements$scenario_geography == "Global","GlobalAggregate",CoalRetirements$scenario_geography) CoalRetirements$ald_sector <- "Power" if (chart_type == "EQ" & has_equity) { CoalRet <- filter_by_parameters(CoalRetirements, "EQ") %>% filter(FI %in% c("Equity", "EQUITY")) if ("ALD.ID" %in% colnames(CoalRet)) { CoalRet <- CoalRet %>% rename(ID = ALD.ID) } PortProduction <- filter_by_parameters(EQCompProdSnapshot, "EQ") # %>% # filter(technology == "CoalCap") } else if (chart_type == "CB" & has_debt) { CoalRet <- filter_by_parameters(CoalRetirements, "CB", by_equity_market = F) %>% filter(FI %in% c("Bonds", "BONDS")) if ("ALD.ID" %in% colnames(CoalRet)) { CoalRet <- CoalRet %>% rename(ID = ALD.ID) } PortProduction <- filter_by_parameters(CBCompProdSnapshot, "CB", by_equity_market = F) } if (data_check(PortProduction)) { PortCoalRetirements <- PortProduction %>% filter(technology == "CoalCap") } if (data_check(PortCoalRetirements)) { if (chart_type == "EQ") { PortCoalRetirements <- CoalRet %>% filter(ID %in% PortProduction$bloomberg_id) } else if (chart_type == "CB") { PortCoalRetirements <- CoalRet %>% filter(ID %in% PortProduction$corp_bond_ticker) } } if (data_check(PortCoalRetirements)) { PlotChart <- T } if (PlotChart == T) { PortCoalRetirements <- as.data.frame(PortCoalRetirements) PortCoalRet <- PortCoalRetirements %>% select(company_name, ExcessiveAdditions, RequiredRetirements10yr, PctRetire) %>% mutate(Total = ExcessiveAdditions + RequiredRetirements10yr) PortCoalRet$company_nameShort <- shortened_company_names(PortCoalRet$company_name, 15) PortCoalRet <- PortCoalRet[order(PortCoalRet$Total, decreasing = T), ] PortCoalRet <- PortCoalRet[PortCoalRet$Total > 0, ] maxcompanies <- min(companiestoprint, nrow(PortCoalRet)) PortCoalRet <- PortCoalRet[seq(1, maxcompanies), ] PortCoalRet$company_name <- factor(PortCoalRet$company_name, levels = unique(PortCoalRet$company_name[order(PortCoalRet$Total)])) CoalRetmaxxAxis <- max(PortCoalRet$Total) PortCoalRet <- PortCoalRet[!is.na(PortCoalRet$ExcessiveAdditions), ] PlotChart <- data_check(PortCoalRet) } if (PlotChart == T) { PortCoalRet <- PortCoalRet %>% select(-Total, -PctRetire) PortCoalRetLong <- melt(PortCoalRet, variable.name = "variable", value.name = "value", id.vars = c("company_name", "company_nameShort")) RetUnit <- "MW" if (CoalRetmaxxAxis > 1000) { PortCoalRetLong$value <- PortCoalRetLong$value / 1000 CoalRetmaxxAxis <- ceiling(CoalRetmaxxAxis / 1000) RetUnit <- "GW" } CoalRetmaxxAxis <- round(CoalRetmaxxAxis, digits = 1) outputplot <- ggplot(PortCoalRetLong, aes(x = company_name, y = value, fill = variable)) + geom_bar(stat = "identity", width = .8, colour = NA) + scale_fill_manual( values = c("ExcessiveAdditions" = "#170203", "RequiredRetirements10yr" = "#ed1c24"), labels = c( paste0(AdditionalCapacityby, " ", start_year + 10), # paste0(RequiredRetirementsby, " ", start_year + 10) ), name = "year" ) + # scale_y_continuous( expand = c(0, 0), limits = c(0, CoalRetmaxxAxis * 1.05), breaks = seq(0, CoalRetmaxxAxis, CoalRetmaxxAxis * 0.1), minor_breaks = seq(0, CoalRetmaxxAxis, CoalRetmaxxAxis * 0.05) ) + scale_x_discrete(expand = c(0, 0), labels = rev(PortCoalRetLong$company_nameShort)) + xlab("") + ylab(paste0(Requiredcoalretirementspercompany, " (", RetUnit, ")")) + # # annotate(hjust = 0.8,"text", x = c(1:(length(CoalRetLabels$Name))) , y = CoalRetLabels$RetTot+(CoalRetmaxxAxis/CoalRetValues[3]) , label = paste(round(CoalRetirementChartPerc$PctRetire*100,0), "% of total", start_year, "capacity",sep = " "), colour = AxisColour,size = 3)+ theme( axis.title.x = element_text(colour = AxisColour, size = textsize), axis.title.y = element_blank(), axis.text.x = element_text(colour = AxisColour, size = textsize), axis.text.y = element_text(colour = AxisColour, size = textsize), axis.line.x = element_line(colour = AxisColour, size = 1), axis.ticks.x = element_blank(), axis.ticks.y = element_blank(), panel.grid.major.x = element_line(colour = "grey90", linetype = "solid"), panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), # panel.grid.minor.x = element_line(colour = "grey80", linetype = "dotted"), legend.position = "bottom", legend.direction = "horizontal", legend.text = element_text(size = textsize, colour = AxisColour, margin = margin(l = 0.15, r = 0.35, unit = "cm")), legend.background = element_rect(fill = "transparent", colour = NA), legend.key.size = unit(0.4, "cm"), legend.title = element_blank(), legend.key = element_blank(), panel.background = element_rect(fill = "transparent", colour = NA), plot.background = element_rect(fill = "transparent", colour = NA), plot.margin = unit(c(.4, 1.5, 0, 0), "lines") ) + coord_flip() + guides(guide_legend(nrow = 1)) bar_size <- 4 / 15 height <- (1 + maxcompanies) * bar_size + .66 } else { Label <- NoCoalcompaniesinyourportfolio # outputplot <- no_chart(Label) height <- 1 } ggsave(outputplot, filename = graph_name(plotnumber, ParameterFile), bg = "white", height = height, width = 10, dpi = ppi) sector_to_plot <- "" } CompareTechnologyExposure <- function(plotnumber, chart_type, sector_to_plot) { Combin <- data.frame() if (chart_type == "EQ" & has_equity == TRUE) { Market <- filter_by_parameters(eq_market, "EQ") Combin <- filter_by_parameters(EQCombin, "EQ") } else if (chart_type == "CB" & has_debt == TRUE) { Market <- filter_by_parameters(cb_market, "CB", by_equity_market = FALSE) Combin <- filter_by_parameters(CBCombin, "CB", by_equity_market = FALSE) } if (data_check(Combin) == TRUE) { PlotChart <- TRUE } else { PlotChart <- FALSE } if (PlotChart == TRUE) { ### Portfolio Data Structure Combin$Type <- "Portfolio" Combin <- Combin %>% ungroup() %>% filter(technology != "OilCap" & year == start_year + 5) %>% # year == PlotYr & select("portfolio_name", "ald_sector", "technology", "plan_alloc_wt_tech_prod", "Type") %>% rename(WtProduction = plan_alloc_wt_tech_prod) Combin <- Combin %>% complete( ald_sector = c("Oil&Gas", "Coal", "Power", "Automotive"), technology = c(technology_order), fill = list(WtProduction = 0, Type = "Portfolio") ) Combin_A <- subset(Combin, ald_sector == "Automotive" & technology %in% c("ICE", "Electric", "Hybrid")) Combin_P <- subset(Combin, ald_sector == "Power" & technology %in% c("RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap")) Combin_F <- subset(Combin, (ald_sector == "Coal" & technology %in% c("Coal")) | (ald_sector == "Oil&Gas" & technology %in% c("Oil", "Gas"))) Combin <- bind_rows(Combin_F, Combin_A, Combin_P) ### Market Data Structure Market$Type <- "Benchmark" Market <- Market %>% ungroup() %>% filter(technology != "OilCap" & year == start_year + 5) %>% # year == PlotYr & Type =="Portfolio") %>% select("portfolio_name", "ald_sector", "technology", "scen_alloc_wt_tech_prod", "Type") %>% # "Type" rename(WtProduction = scen_alloc_wt_tech_prod) Market <- Market %>% complete( ald_sector = c("Oil&Gas", "Coal", "Power", "Automotive"), technology = c(technology_order), fill = list(WtProduction = 0, Type = "Benchmark") ) Market_A <- subset(Market, ald_sector == "Automotive" & technology %in% c("ICE", "Electric", "Hybrid")) Market_P <- subset(Market, ald_sector == "Power" & technology %in% c("RenewablesCap", "HydroCap", "NuclearCap", "GasCap", "CoalCap")) Market_F <- subset(Market, (ald_sector == "Coal" & technology %in% c("Coal")) | (ald_sector == "Oil&Gas" & technology %in% c("Oil", "Gas"))) Market <- bind_rows(Market_F, Market_A, Market_P) ### Combine Market and Portfolios to the same Data Structure Production <- bind_rows(Combin, Market) Production$ald_sector <- factor(Production$ald_sector, levels = c("Oil&Gas", "Coal", "Power", "Automotive")) levels(Production$ald_sector)[levels(Production$ald_sector) == "Coal"] <- "Fossil Fuels" levels(Production$ald_sector)[levels(Production$ald_sector) == "Oil&Gas"] <- "Fossil Fuels" Production$ald_sector <- factor(Production$ald_sector, levels = c("Fossil Fuels", "Power", "Automotive")) # Aggregate and rename CarstenMetric_Port ID.COLS <- c("ald_sector", "technology", "Type") Production <- Production %>% gather(key = Metric, value = Value, "WtProduction") Production <- aggregate(Production["Value"], by = Production[c(ID.COLS)], FUN = sum) # Created an average for the peers (or even just use fill!) # Transfer coal to gigajoule for tech share charts only!!! Production$Value[Production$technology == "Coal"] <- Production$Value[Production$technology == "Coal"] * 29307600 / 365.25 / 1e6 # , Production$Type != "Market" if (sector_to_plot != "All") { technologyorder <- technology_order colours <- as.vector(ColourPalette[["Colours"]]) names(colours) <- technologyorder labels <- technologyorder names(labels) <- technologyorder } else if (sector_to_plot == "All") { technologyorder <- technology_order_short colours <- as.vector(ColourPalette[["Colours"]])[1:11] names(colours) <- technologyorder labels <- technologyorder names(labels) <- technologyorder } Production$technology <- factor(Production$technology, levels = technologyorder) Production$ald_sector <- factor(Production$ald_sector, levels = c("Fossil Fuels", "Power", "Automotive", "Aviation", "Shipping")) # Production$Type <- wrap_labels(Production$Type, 20) Production$Type <- factor(Production$Type, levels = c("Portfolio", "Benchmark")) xlabels <- c("Portfolio", "Aligned\nMarket") titles <- c("Fossil Fuel Production", "Power Capacity", "Automotive Production", "Aviation Production", "Shipping Production") names(titles) <- c("Fossil Fuels", "Power", "Automotive", "Aviation", "Shipping") Production <- subset(Production, select = c("Type", "ald_sector", "technology", "Value")) tot <- Production %>% group_by(Type, ald_sector) %>% summarise(Total = sum(Value)) Production <- left_join(Production, tot, by = c("Type", "ald_sector")) Production$per <- Production$Value / Production$Total levels(Production$ald_sector) <- c("Fossil Fuels Production", "Power Capacity", "Automotive Production", "Aviation", "Shipping") Production$ald_sector <- dplyr::recode(Production$ald_sector, "Fossil Fuels Production" = wrap_labels(FossilFuelsProduction, 30), "Power Capacity" = C_Power, # "Automotive Production" = AutomotiveProduction, Aviation = Aviation, Shipping = Shipping ) # # Production$technology<-gsub("Cap","",Production$technology) Production$technology <- dplyr::recode(Production$technology, Gas = T_GasProd, Oil = T_OilProd, Coal = T_CoalProd, # RenewablesCap = paste(T_Renewables_1, "\n", T_Renewables_2), HydroCap = T_HydroCap, NuclearCap = T_NuclearCap, GasCap = T_GasCap, CoalCap = T_CoalCap, # Electric = x_Electric, Hybrid = x_Hybrid, ICE = x_ICE, "Freight Passenger" = FreightPassenger ) # Production$lab <- ifelse(is.nan(Production$per), "-%", paste0(round(100 * Production$per), "%")) Production$per <- ifelse(is.nan(Production$per), 0, Production$per) cmd <- ggplot(Production) + geom_col(aes(x = technology, y = per, fill = Type), position = "dodge", width = 0.8) + geom_text(aes(x = technology, y = per, label = lab, group = Type), vjust = -0.25, position = position_dodge(0.8), color = "black", size = 2) + scale_y_continuous(expand = c(0, 0), labels = percent, limits = c(0, 1.1)) + ylab(paste(technologySharein, start_year + 5)) + # scale_fill_manual(values = c("Portfolio" = Port, "Benchmark" = Benchmark), labels = c(Portf, AlignedMarket)) + theme_barcharts() + theme( plot.title = element_text(hjust = 0.5, colour = textcolor, size = 11, margin = unit(c(0, 0, 1, 0), "lines")), axis.text.y = element_text(size = textsize - 1.5), axis.text.x = element_text(size = textsize - 1.5), legend.position = "bottom", legend.title = element_blank() ) + guides(fill = guide_legend(nrow = 1)) + facet_grid(. ~ ald_sector, scales = "free", space = "free") + theme( strip.background = element_rect(fill = "white"), strip.text = element_text(size = textsize) ) # wid = unique(Production$technology) } else { Label <- YourPortfoliohasnoproductioninthissectorfortheselectedscenario_geographyandMarket # cmd <- no_chart(Label) # wid <- 4 } ggsave( filename = graph_name(plotnumber, ParameterFile), # bg = "transparent", plot = cmd, height = 2.6, width = 7, dpi = ppi ) } ############## ### Themes ### ############## theme_barcharts <- function(base_size = textsize, base_family = "") { theme( axis.ticks = element_blank(), axis.text.x = element_text(colour = textcolor, size = textsize), axis.text.y = element_text(colour = textcolor, size = textsize), axis.title.x = element_blank(), axis.title.y = element_text(colour = textcolor, size = textsize), axis.line.x = element_line(colour = textcolor, size = 0.5), axis.line.y = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), # legend.position=c(0.5,0),#legend.position = "none", legend.position = "none", legend.direction = "horizontal", legend.text = element_text(size = textsize, colour = textcolor), legend.background = element_rect(fill = "transparent", colour = NA), legend.key.size = unit(0.4, "cm"), # legend.title=element_blank(), legend.title = element_text(colour = textcolor, size = textsize), legend.key = element_blank(), plot.background = element_rect(fill = "transparent", colour = NA), plot.margin = unit(c(1, 1, 0, 0), "lines"), plot.title = element_blank(), text = element_text(family = textfont, size = textsize) # plot.margin = unit(c(1,1, 5, 2), "lines") ) } theme_246 <- function() { theme_minimal(base_size = 11, base_family = textfont) + theme( panel.background = element_rect(fill = "white", color = "white"), panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), plot.background = element_blank(), plot.margin = unit(c(.5, .5, .5, .5), "cm"), axis.line.x = element_blank(), axis.line.y = element_blank(), axis.ticks.y = element_blank(), axis.text = element_text(size = 11.5, color = "#3D3D3C"), axis.title = element_text(size = 11, color = "#3D3D3C"), plot.title = element_text( size = 12, hjust = 0 ) ) } theme_linecharts <- function(base_size = textsize, base_family = "") { theme( axis.ticks = element_blank(), axis.text.x = element_text(colour = textcolor, size = textsize), axis.text.y = element_text(colour = textcolor, size = textsize), axis.title.x = element_text(colour = textcolor, size = textsize), axis.title.y = element_text(colour = textcolor, size = textsize), axis.line = element_line(colour = textcolor, size = 0.5), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), # panel.background = element_blank(), panel.background = element_rect(fill = "transparent", colour = NA), # legend.position=c(0.5,0),#legend.position = "none", legend.position = "none", legend.direction = "horizontal", legend.text = element_text(size = textsize, colour = textcolor), legend.background = element_rect(fill = "transparent", colour = NA), legend.key.size = unit(0.4, "cm"), # legend.title=element_blank(), legend.title = element_text(colour = textcolor, size = textsize), legend.key = element_blank(), plot.background = element_rect(fill = "transparent", colour = NA), plot.margin = unit(c(1, 1, 0, 0), "lines") # plot.margin = unit(c(1,1, 5, 2), "lines") ) } theme_cdi <- function() { theme_minimal(base_size = 11, base_family = textfont) + theme( panel.background = element_rect(fill = "white", color = "white"), panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), plot.background = element_blank(), axis.line.x = element_line(), axis.line.y = element_blank(), axis.ticks.y = element_line(), plot.title = element_text( family = textfont, face = "bold", size = 12, hjust = 0 ) ) } theme_distribution <- function(base_size = textsize, base_family = "") { theme( axis.ticks = element_blank(), axis.text.x = element_text(colour = textcolor, size = textsize), axis.text.y = element_text(colour = textcolor, size = textsize), axis.title.x = element_text(colour = textcolor, size = textsize), axis.title.y = element_text(colour = textcolor, size = textsize), # axis.line.x = element_line(colour = textcolor,size=1), axis.line.y = element_line(colour = textcolor, size = 1), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), legend.position = "bottom", legend.text = element_text(color = textcolor, size = textsize), legend.title = element_blank(), plot.margin = unit(c(0.6, 1.0, 2.5, 0), "lines"), plot.background = element_blank(), plot.title = element_blank(), text = element_text(family = textfont) ) } stacked_bar_chart <- function(dat, colors, legend_labels) { # "item", "family", "score", "value" colnames <- colnames(dat) plottheme <- ggplot(data = dat, show.guide = TRUE) + geom_bar(aes_string(x = colnames[1], y = colnames[4], fill = colnames[3]), stat = "identity", position = "fill", width = .6 ) + scale_fill_manual(values = colors, labels = legend_labels, breaks = names(legend_labels)) + scale_y_continuous(expand = c(0, 0), labels = percent) + guides(fill = guide_legend(nrow = 1)) + theme_barcharts() return(plottheme) } no_chart <- function(Label) { wrap_it <- function(x, len) { sapply(x, function(y) paste(strwrap(y, len), collapse = "\n"), USE.NAMES = FALSE) } wrap_labels <- function(x, len) { if (is.list(x)) { lapply(x, wrap_it, len) } else { wrap_it(x, len) } } outputplot <- ggplot() + annotate(geom = "text", x = 0, y = 0, label = wrap_labels(Label, 25), size = 5) + geom_blank() + theme( axis.title.x = element_blank(), axis.title.y = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank(), axis.line = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank(), panel.background = element_rect(fill = "transparent", colour = NA) ) return(outputplot) }