library(CSLSchem)
library(dplyr)
library(extrafont)
library(ggplot2)
library(reshape2)
library(kableExtra)
library(NISTunits)
library(patchwork)
library(stringr)

text_size  <- 12

mass_fluxes <- calculate_solute_balance()

# Nitrogen 
TN_fluxes   <- mass_fluxes %>% 
               filter(.data$parameter == "NITROGEN TOTAL")
NOx_fluxes  <- mass_fluxes %>% 
               filter(.data$parameter == "NITROGEN NO3+NO2 DISS (AS N)")
NHx_fluxes  <- mass_fluxes %>% 
               filter(.data$parameter == "NITROGEN NH3-N DISS")

N_fluxes    <- TN_fluxes %>%
               full_join(NOx_fluxes, by = c("lake", "site_type")) %>%
               full_join(NHx_fluxes, by = c("lake", "site_type"))
N_fluxes$mass_kg.z <- N_fluxes$mass_kg

N_fluxes    <- N_fluxes %>%
               mutate(mass_kg = .data$mass_kg.x + .data$mass_kg.y + .data$mass_kg.z,
                      parameter = "NITROGEN TOTAL") %>%
               select(.data$lake, .data$parameter, .data$site_type, .data$mass_kg)

mass_fluxes <- mass_fluxes %>%
               filter(!.data$parameter %in% c("NITROGEN TOTAL",
                                             "NITROGEN NO3+NO2 DISS (AS N)",
                                             "NITROGEN NH3-N DISS"))
mass_fluxes <- bind_rows(mass_fluxes, N_fluxes)

# Names 
labels <- data.frame(parameter = c("CALCIUM TOTAL RECOVERABLE",
                                    "MAGNESIUM TOTAL RECOVERABLE",
                                    "POTASSIUM TOTAL RECOVERABLE",
                                    "SODIUM TOTAL RECOVERABLE",
                                    "CHLORIDE",
                                    "SULFATE TOTAL",
                                    "NITROGEN TOTAL",
                                    "CONDUCTIVITY, UMHOS/CM @ 25C",
                                    "PH LAB"),
                     name = c("Calcium (kg)", 
                              "Magnesium (kg)", 
                              "Potassium (kg)",
                              "Sodium (kg)",
                              "Chloride (kg)",
                              "Sulfate (kg)",
                              "Nitrogen (kg)",
                              "Conductivity (mhos/cm/m3)",
                              "Hydrogen (eq)"))
mass_fluxes <- left_join(mass_fluxes, labels, by = "parameter")
mass_fluxes$name <- factor(mass_fluxes$name, levels = labels$name)

plot_solutes <- function(mass_fluxes, 
                         lake, 
                         text_size, 
                         color_vals = c("#1F78B4", "#33A02C", "#B2DF8A",
                                        "#FB9A99", "#E31A1C")) {
  plot_df <- mass_fluxes %>% filter(.data$lake == !!lake)
  plot_obj <- ggplot(plot_df) +
              geom_col(aes(x = .data$site_type,
                           y = .data$mass_kg,
                           fill = .data$site_type)) +
              facet_wrap(~name, scales = "free") +
              labs(x = "", y = "Solute Mass") +
              scale_y_continuous(labels = scales::scientific) +
              scale_fill_manual(name = "",
                                 values = color_vals) +
              theme_bw() +
              theme(text = element_text(family = "Segoe UI Semilight",
                                        size = text_size),
                    panel.grid.major = element_blank(),
                    panel.grid.minor = element_blank(),
                    legend.position = "top")

  return(plot_obj)
}

format_table <- function(mass_fluxes, lake) {
  table_df <- mass_fluxes %>% 
              filter(.data$lake == !!lake) %>%
              group_by(.data$parameter) %>%
              mutate(pcnt = round(100*.data$mass_kg/
                            (.data$mass_kg[.data$site_type == "P"] + 
                               .data$mass_kg[.data$site_type == "GWin"]),1)) %>%
              ungroup() %>%
              select(.data$site_type, .data$parameter, .data$pcnt)
  table_df <- dcast(table_df, parameter~site_type, value.var = "pcnt")
  return(table_df)
}
plot_solutes(filter(mass_fluxes, site_type != "Up"), "Pleasant", text_size)
plot_solutes(filter(mass_fluxes, site_type != "Up"), "Long", text_size)
plot_solutes(filter(mass_fluxes, site_type != "Up"), "Plainfield", text_size)


format_table(filter(mass_fluxes, site_type != "Up"), "Pleasant")
format_table(filter(mass_fluxes, site_type != "Up"), "Long")
format_table(filter(mass_fluxes, site_type != "Up"), "Plainfield")


WDNR-Water-Use/CSLSchem documentation built on July 3, 2020, 10:51 a.m.