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")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.