Commit 4dcc2867 authored by Turner, Sean's avatar Turner, Sean
Browse files

plot improvements

parent 2d927a94
Loading
Loading
Loading
Loading
+158 −33
Original line number Diff line number Diff line
@@ -46,20 +46,125 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
    pull(EIA_ID) ->
    target_plants

  2001:2021L |>
  1990:2021L |>
    map_dfr(function(yr){
      
      if(yr %in% 1990:1991){
        suppressWarnings(
          read_xls(paste0(
            plt_dir, "/eia860a",
            yr, "/GENTYPE3Y", substr(yr, 3, 4), ".xls"
          )) |>  as_tibble() |>  
            filter(`Prime Mover` == "HC")  |>
            mutate(STATUS = if_else(is.na(`Status Code...9`),
                                          `Status Code...22`,
                                          `Status Code...9`)) |> 
            filter(STATUS %in% c("OP", "SB", "SD", "TS", "SD", "OT")) |> 
            select(EIA_ID = `Plant Code`,
                   nameplate_kW = `Nameplate Capacity...7`) |> 
            summarise(nameplate = 1e-3 * sum(nameplate_kW), .by = EIA_ID) -> 
            nameplate_all
        )
      }
      
      if(yr %in% 1992:1994){
        suppressWarnings(
          read_xls(paste0(
            plt_dir, "/eia860a",
            yr, "/TYPE3", substr(yr, 3, 4), ".xls"
          )) |>  as_tibble() |>  
            filter(PRIMEMOVER == "HC")  |>
            mutate(STATUS = if_else(is.na(STATUSCODE),
                                    PRSTATUSCD,
                                    STATUSCODE)) |> 
            filter(STATUS %in% c("OP", "SB", "SD", "TS", "SD", "OT")) |> 
            select(EIA_ID = PLNTCODE ,
                   nameplate_kW = NAMEPLATE) |> 
            summarise(nameplate = 1e-3 * sum(nameplate_kW), .by = EIA_ID) -> 
            nameplate_all
        )
      }
      
      if(yr %in% 1995:1996){
        suppressWarnings(
          read_xls(paste0(
            plt_dir, "/eia860a",
            yr, "/TYPE3Y", substr(yr, 3, 4), ".xls"
          )) |>  as_tibble() |>  
            filter(PRIMEMOVER %in% c("HY", "HC"))  |> 
            mutate(STATUS = if_else(is.na(STATUSCODE),
                                    PRSTATUSCD,
                                    STATUSCODE)) |> 
            filter(STATUS %in% c("OP", "SB", "SD", "TS", "SD", "OT")) |> 
            select(EIA_ID = PLNTCODE ,
                   nameplate_kW = NAMEPLATE) |> 
            summarise(nameplate = 1e-3 * sum(nameplate_kW), .by = EIA_ID) -> 
            nameplate_all
        )
      }
      
      if(yr == 1997){
        suppressWarnings(
          read_xls(paste0(
            plt_dir, "/eia860a",
            yr, "/GENERTOR.xls"
          )) |>  as_tibble() |>  
            filter(PRIMEMOVER %in% c("HY"))  |> 
            mutate(STATUS = if_else(is.na(STATUSCODE),
                                    PRSTATUSCD,
                                    STATUSCODE)) |>
            filter(STATUS %in% c("OP", "SB", "SD", "TS", "SD", "OT")) |> 
            select(EIA_ID = PLNTCODE ,
                   nameplate_kW = NAMEPLATE) |> 
            summarise(nameplate = 1e-3 * sum(nameplate_kW), .by = EIA_ID) -> 
            nameplate_all
        )
      }
      
      if(yr == 1998){
        suppressWarnings(
          read_xls(paste0(
            plt_dir, "/eia860a",
            yr, "/ExistingGenerators", yr, ".xls"
          ), sheet = paste0(yr, " Existing Generators")) |>  as_tibble() |>  
            filter(PRIMEMOVER == "HY",
                   EXISTING_STATUS %in% c("OP", "SB", "SD", "TS", "SD", "OT")) |> 
            select(EIA_ID = PLANT_CODE ,
                   nameplate_kW = EXISTING_NAMEPLATE) |> 
            summarise(nameplate = 1e-3 * sum(nameplate_kW), .by = EIA_ID) -> 
            nameplate_all
        )
      }
      
      if(yr %in% 1999:2000){
        suppressWarnings(
          read_xls(paste0(
            plt_dir, "/eia860a",
            yr, "/ExistingGenerators", yr, ".xls"
          ), sheet = "Existing Generators") |>  as_tibble() |>  
            filter(PRIMEMOVER == "HY",
                   EXISTING_STATUS %in% c("OP", "SB", "SD", "TS", "SD", "OT")) |> 
            select(EIA_ID = PLANT_CODE ,
                   nameplate_kW = EXISTING_NAMEPLATE) |> 
            summarise(nameplate = 1e-3 * sum(nameplate_kW), .by = EIA_ID) -> 
            nameplate_all
        )
      }
      
      if(yr %in% 2001:2003){
        
        suppressWarnings(
          read.dbf(paste0(
            plt_dir, "/eia860",
            yr, "/GENY", substr(yr,3,4), ".dbf"
          )) |>
            as_tibble() |>
          filter(PRIMEMOVER == "HY") |>
            filter(PRIMEMOVER == "HY",
                   STATUS %in% c("OP", "SB", "OA")) |>
            select(EIA_ID = PLNTCODE, nameplate = NAMEPLATE) |>
            summarise(nameplate = sum(nameplate), .by = EIA_ID) ->
            nameplate_all
        )
      }

      if(yr %in% 2004:2008){
@@ -69,7 +174,8 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
          yr, "/GenY", substr(yr, 3, 4), ".xls"
        )) |>
          as_tibble() |>
          filter(PRIMEMOVER == "HY") |>
          filter(PRIMEMOVER == "HY",
                 STATUS %in% c("OP", "SB", "OA")) |> 
          select(EIA_ID = PLNTCODE, nameplate = NAMEPLATE) |>
          summarise(nameplate = sum(nameplate), .by = EIA_ID) ->
          nameplate_all
@@ -84,7 +190,8 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
            yr, "/GeneratorY", substr(yr, 3, 4), ".xls"
          )) |>
            as_tibble() |>
            filter(PRIME_MOVER == "HY") |>
            filter(PRIME_MOVER == "HY",
                   STATUS %in% c("OP", "SB", "OA")) |>
            select(EIA_ID = PLANT_CODE , nameplate = NAMEPLATE) |>
            summarise(nameplate = sum(nameplate), .by = EIA_ID) ->
            nameplate_all
@@ -99,7 +206,8 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
            yr, "/GeneratorsY", yr, ".xls"
          )) |>
            as_tibble() |>
            filter(PRIME_MOVER == "HY") |>
            filter(PRIME_MOVER == "HY",
                   STATUS %in% c("OP", "SB", "OA")) |>
            select(EIA_ID = PLANT_CODE , nameplate = NAMEPLATE) |>
            summarise(nameplate = sum(nameplate), .by = EIA_ID) ->
            nameplate_all
@@ -114,7 +222,8 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
            yr, "/GeneratorY", yr, ".xlsx"
          ), skip = 1) |>
            as_tibble() |>
            filter(PRIME_MOVER == "HY") |>
            filter(PRIME_MOVER == "HY",
                   STATUS %in% c("OP", "SB", "OA")) |>
            select(EIA_ID = PLANT_CODE, nameplate = NAMEPLATE) |>
            summarise(nameplate = sum(nameplate), .by = EIA_ID) ->
            nameplate_all
@@ -129,7 +238,8 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
            yr, "/GeneratorY", yr, ".xlsx"
          ), skip = 1) |>
            as_tibble() |>
            filter(`Prime Mover` == "HY") |>
            filter(`Prime Mover` == "HY",
                   Status %in% c("OP", "SB", "OA")) |>
            select(EIA_ID = `Plant Code`, nameplate = `Nameplate Capacity (MW)`) |>
            summarise(nameplate = sum(nameplate), .by = EIA_ID) ->
            nameplate_all
@@ -143,7 +253,8 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
            yr, "/3_1_Generator_Y", yr, ".xlsx"
          ), skip = 1) |>
            as_tibble() |>
            filter(`Prime Mover` == "HY") |>
            filter(`Prime Mover` == "HY",
                   Status %in% c("OP", "SB", "OA")) |>
            select(EIA_ID = `Plant Code`, nameplate = `Nameplate Capacity (MW)`) |>
            summarise(nameplate = sum(nameplate), .by = EIA_ID) ->
            nameplate_all
@@ -155,11 +266,11 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
        left_join(nameplate_all, by = join_by(EIA_ID)) |>
        mutate(year = !!yr)
    }
    ) -> plant_nameplate_MW_2001_2021
    ) -> plant_nameplate_MW_1990_2021

  # reported plant capacity pre-2001 is available only via generation data files...
  # reported plant capacity pre-1990 is available only via generation data files...

  1970:2000L |>
  1970:1989L |>
    map_dfr(function(yr){

      suppressWarnings(
@@ -178,12 +289,12 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
          mutate(year = !!yr)
      )
    }) ->
    plant_nameplate_MW_1970_2000
    plant_nameplate_MW_1970_1989

  
  bind_rows(
    plant_nameplate_MW_1970_2000,
    plant_nameplate_MW_2001_2021
    plant_nameplate_MW_1970_1989,
    plant_nameplate_MW_1990_2021
  ) -> plant_nameplant_MW


@@ -192,12 +303,26 @@ get_EIA_annual_gen <- function(gnr_dir, plt_dir){
    split(~EIA_ID) |>
    map_dfr(function(x){
      
      x |> mutate(
      x |> 
        pivot_wider(names_from = "year", values_from = "nameplate") ->
        x_wide
    
      # deal with odd cases where Capacity decreases...
      # ...(due mainly to PS included in pre-1990 nameplate data)
      x_wide[["1986"]] - x_wide[["1990"]] -> jump_86_90
  
      x |> 
        mutate(nameplate = if_else(
          year %in% 1970:1986 & jump_86_90 > 0,
          nameplate - jump_86_90,
          nameplate
        )) |> 
        #interpolate missing years
        mutate(
          nameplate = if_else(year %in% 1987:2000 & nameplate == 0,
                              NA_real_, nameplate),
          nameplate = na.approx(nameplate,
                                na.rm = F))

    }) -> plant_nameplate_MW_interpolated


+369 −92

File changed.

Preview size limit exceeded, changes collapsed.

+21 −17
Original line number Diff line number Diff line
@@ -9,10 +9,10 @@ get_CF_trends <- function(annual_CFs){

  tribble(
    ~start_yr, ~end_yr, ~analysis,
    1970, 2021, "full period",
    #1970, 2021, "full period",
    1980, 2019, "flow period",
    1980, 2021, "flow period plus",
    2001, 2021, "923 period"
    1980, 2021, "flow period plus"
    #2001, 2021, "923 period"
  ) |>
    pmap_dfr(function(start_yr, end_yr, analysis){

@@ -232,11 +232,11 @@ get_modeled_trends <- function(flow_CF_models,
}


trend_vs_shift <- function(flow_CF_models, flow_cats){
trend_vs_shift <- function(flow_CF_models, CF_trends, flow_cats){

  #tar_load(flow_cats)
  #tar_load(flow_CF_models)
  tar_load(CF_trends)
  #tar_load(CF_trends)

  CF_trends |>
    filter(analysis == "flow period plus") |>
@@ -246,7 +246,7 @@ trend_vs_shift <- function(flow_CF_models, flow_cats){

  flow_cats |>
    filter(COMPLXID %in% dams_with_signif_neg_trend,
           explained_by_water <= 0.2) |>
           explained_by_water <= 0.4) |>
    pull(COMPLXID) -> dams_for_shift_analysis

  flow_CF_models |>
@@ -261,24 +261,28 @@ trend_vs_shift <- function(flow_CF_models, flow_cats){
    split(~COMPLXID) |>
    future_map_dfr(function(dam){

      dam |>
        ggplot(aes(year, residual)) +
        geom_line() +
        geom_hline(yintercept = 0)
      # dam |>
      #   ggplot(aes(year, residual)) +
      #   geom_line() +
      #   geom_hline(yintercept = 0)

      1985:2016 |>
      1990:2011 |>
        map_dfr(function(yr){

          dam[dam$year <= yr,]$residual > 0 -> pre_shift
          dam[dam$year > yr,]$residual < 0 -> post_shift
          #dam[dam$year <= yr,]$residual > 0 -> pre_shift
          #dam[dam$year > yr,]$residual < 0 -> post_shift
          
          dam[dam$year <= yr,]$residual |> mean(na.rm = T) -> pre_shift
          dam[dam$year > yr,]$residual |> mean(na.rm = T) -> post_shift

          tibble(
            pre = sum(pre_shift, na.rm = T)/length(pre_shift[!is.na(pre_shift)]),
            post = sum(post_shift, na.rm = T)/length(post_shift[!is.na(post_shift)]),
            #pre = sum(pre_shift, na.rm = T)/length(pre_shift[!is.na(pre_shift)]),
            #post = sum(post_shift, na.rm = T)/length(post_shift[!is.na(post_shift)]),
            diff_in_mean = post_shift - pre_shift,
            year = yr
          )
        }) |> mutate(x = pre + post) |>
        arrange(-x) ->
        }) |> #mutate(x = pre + post) |>
        arrange(diff_in_mean) ->
        shift_yrs_ranked

      shift_yr = shift_yrs_ranked[["year"]][1]

Rplots.pdf

0 → 100644
+3.58 KiB

File added.

No diff preview for this file type.

+6 −2
Original line number Diff line number Diff line
@@ -24,7 +24,9 @@ tar_option_set(
               "ggnewscale",# plot support
               "patchwork", # plot combining
               "viridis",   # color palettes
               "ggrepel"    # text on plot
               "shadowtext",# shadow text
               "ggrepel",   # text on plot
               "ggridges"   # density plots
               )
)

@@ -131,7 +133,9 @@ list(
  tar_target(
    trend_shift_analysis,
    trend_vs_shift(flow_CF_models = flow_CF_models,
                   flow_cats = flow_cats),
                   CF_trends = CF_trends,
                   flow_cats = flow_cats
                   ),
    format = "parquet"
  ),
  tar_target(
Loading