diff --git a/DESCRIPTION b/DESCRIPTION index 161a392128192e7aff22bfcb396de5baa47ddf56..7face2c7d4c23c8f7f6b0dd397d0905a6b772865 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -29,7 +29,6 @@ Imports: dplyr, tidyr, ggplot2, - rlang, ggpmisc, leaflet, scales, diff --git a/NAMESPACE b/NAMESPACE index 3504323c3e95ec8329b9c51f115b6032663a110e..fc88b73c2cbd748723bb81a929fe1b27851f2d74 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -58,7 +58,6 @@ importFrom(openxlsx,createWorkbook) importFrom(openxlsx,saveWorkbook) importFrom(openxlsx,writeData) importFrom(purrr,reduce) -importFrom(rlang,`:=`) importFrom(scales,comma) importFrom(shinyAce,aceEditor) importFrom(shinyAce,updateAceEditor) diff --git a/R/frequency_analysis.R b/R/frequency_analysis.R index e50230eab3551812a595d8ef1ed06244ca50cc5b..2e62495327fce8ea22df615fe5d776e0927e2493 100644 --- a/R/frequency_analysis.R +++ b/R/frequency_analysis.R @@ -1,6 +1,6 @@ #' Create a table of monthly frequency analysis #' -#' @param gwl_data groundwater level data from \code{readNWISgwl} +#' @param gw_level_dv groundwater level data from \code{readNWISgwl} #' @param date_col name of date column. #' @param value_col name of value column. #' @param approved_col name of column to get provisional/approved status. @@ -22,35 +22,35 @@ #' # site <- "263819081585801" #' p_code_dv <- "62610" #' statCd <- "00001" -#' # gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -#' gwl_data <- L2701_example_data$Daily -#' monthly_frequency <- monthly_frequency_table(gwl_data, +#' # gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +#' gw_level_dv <- L2701_example_data$Daily +#' monthly_frequency <- monthly_frequency_table(gw_level_dv, #' date_col = "Date", #' value_col = "X_62610_00001", #' approved_col = "X_62610_00001_cd") #' -monthly_frequency_table <- function(gwl_data, date_col, value_col, approved_col) { +monthly_frequency_table <- function(gw_level_dv, date_col, value_col, approved_col) { year <- lev_dt <- month <- week <- sl_lev_va <- ".dplyr" - if(!all(c(date_col, value_col, approved_col) %in% names(gwl_data))) { - stop("not all required columns found in gwl_data") + if(!all(c(date_col, value_col, approved_col) %in% names(gw_level_dv))) { + stop("not all required columns found in gw_level_dv") } - gwl_data <- gwl_data %>% + gw_level_dv <- gw_level_dv %>% filter(grepl("A", !!sym(approved_col))) %>% mutate(year = year(!!sym(date_col)), month = month(!!sym(date_col)), week = week(!!sym(date_col))) - annual_stats <- gwl_data %>% + annual_stats <- gw_level_dv %>% group_by(year, month) %>% summarize(median = median(!!sym(value_col))) %>% group_by(month) %>% summarize(minMed = min(median, na.rm = TRUE), maxMed = max(median, na.rm = TRUE)) - monthly_stats <- gwl_data %>% + monthly_stats <- gw_level_dv %>% group_by(month) %>% summarize(p5 = quantile(!!sym(value_col), probs=0.05, na.rm=TRUE), p10 = quantile(!!sym(value_col), probs=0.1, na.rm=TRUE), @@ -68,7 +68,7 @@ monthly_frequency_table <- function(gwl_data, date_col, value_col, approved_col) #' Plot monthly frequency analysis #' -#' @param gwl_data groundwater level data from \code{readNWISgwl} +#' @param gw_level_dv groundwater level data from \code{readNWISgwl} #' @param date_col name of date column. #' @param value_col name of value column. #' @param approved_col name of column to get provisional/approved status. @@ -96,14 +96,15 @@ monthly_frequency_table <- function(gwl_data, date_col, value_col, approved_col) #' # site <- "263819081585801" #' p_code_dv <- "62610" #' statCd <- "00001" -#' # gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -#' gwl_data <- L2701_example_data$Daily -#' monthly_frequency <- monthly_frequency_plot(gwl_data, +#' # gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +#' gw_level_dv <- L2701_example_data$Daily +#' monthly_frequency <- monthly_frequency_plot(gw_level_dv, #' date_col = "Date", #' value_col = "X_62610_00001", #' approved_col = "X_62610_00001_cd", #' plot_title = "L2701 Groundwater Level") -monthly_frequency_plot <- function(gwl_data, +#' monthly_frequency +monthly_frequency_plot <- function(gw_level_dv, date_col, value_col, approved_col, @@ -120,7 +121,7 @@ monthly_frequency_plot <- function(gwl_data, date <- Sys.Date() # Calculate the percentiles - site_statistics <- monthly_frequency_table(gwl_data, + site_statistics <- monthly_frequency_table(gw_level_dv, date_col = date_col, value_col = value_col, approved_col = approved_col) @@ -136,7 +137,7 @@ monthly_frequency_plot <- function(gwl_data, } # The last year of groundwater level measurements will plot - gwl_data <- filter(gwl_data, + gw_level_dv <- filter(gw_level_dv, !!sym(date_col) >= plot_start, !!sym(date_col) <= plot_end) @@ -177,7 +178,7 @@ monthly_frequency_plot <- function(gwl_data, select(plot_month_med, p50, group) %>% rename(x = plot_month_med, y = p50) - points_plot <- gwl_data %>% + points_plot <- gw_level_dv %>% mutate(group = "Data point") %>% select(!!date_col, !!value_col, group) %>% rename(x = !!date_col, y = !!value_col) %>% @@ -242,7 +243,7 @@ monthly_frequency_plot <- function(gwl_data, #' #' The weekly frequency analysis is based on daily values #' -#' @param gwl_data daily groundwater level data +#' @param gw_level_dv daily groundwater level data #' from readNWISdv #' @param date_col name of date column. #' @param value_col name of value column. @@ -262,34 +263,34 @@ monthly_frequency_plot <- function(gwl_data, #' # site <- "263819081585801" #' p_code_dv <- "62610" #' statCd <- "00001" -#' # gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -#' gwl_data <- L2701_example_data$Daily -#' weekly_frequency <- weekly_frequency_table(gwl_data, +#' # gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +#' gw_level_dv <- L2701_example_data$Daily +#' weekly_frequency <- weekly_frequency_table(gw_level_dv, #' date_col = "Date", #' value_col = "X_62610_00001", #' approved_col = "X_62610_00001_cd") -weekly_frequency_table <- function(gwl_data, date_col, value_col, approved_col) { +weekly_frequency_table <- function(gw_level_dv, date_col, value_col, approved_col) { Date <- gw_level <- ".dplyr" - if(!all(c(date_col, value_col, approved_col) %in% names(gwl_data))) { - stop("not all columns found in gwl_data") + if(!all(c(date_col, value_col, approved_col) %in% names(gw_level_dv))) { + stop("not all columns found in gw_level_dv") } - gwl_data <- gwl_data %>% + gw_level_dv <- gw_level_dv %>% filter(grepl("A", !!sym(approved_col))) %>% mutate(year = year(!!sym(date_col)), week = week(!!sym(date_col))) - annual_stats <- gwl_data %>% + annual_stats <- gw_level_dv %>% group_by(year, week) %>% summarize(median = median(!!sym(value_col))) %>% group_by(week) %>% summarize(minMed = min(median, na.rm = TRUE), maxMed = max(median, na.rm = TRUE)) - weekly_stats <- gwl_data %>% + weekly_stats <- gw_level_dv %>% group_by(week) %>% summarize(p5 = quantile(!!sym(value_col), probs=0.05, na.rm=TRUE), p10 = quantile(!!sym(value_col), probs=0.1, na.rm=TRUE), @@ -310,7 +311,7 @@ weekly_frequency_table <- function(gwl_data, date_col, value_col, approved_col) #' #' The weekly frequency analysis is based on daily data #' -#' @param gwl_data daily groundwater level data +#' @param gw_level_dv daily groundwater level data #' from readNWISdv #' @param date_col name of date column. #' @param value_col name of value column. @@ -338,14 +339,14 @@ weekly_frequency_table <- function(gwl_data, date_col, value_col, approved_col) #' # site <- "263819081585801" #' p_code_dv <- "62610" #' statCd <- "00001" -#' # gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -#' gwl_data <- L2701_example_data$Daily -#' weekly_frequency_plot(gwl_data, +#' # gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +#' gw_level_dv <- L2701_example_data$Daily +#' weekly_frequency_plot(gw_level_dv, #' date_col = "Date", #' value_col = "X_62610_00001", #' approved_col = "X_62610_00001_cd") #' -weekly_frequency_plot <- function(gwl_data, date_col, value_col, approved_col, +weekly_frequency_plot <- function(gw_level_dv, date_col, value_col, approved_col, plot_range = c("Past year", "Calendar year"), plot_title = "", @@ -360,7 +361,7 @@ weekly_frequency_plot <- function(gwl_data, date_col, value_col, approved_col, date <- Sys.Date() # Calculate the percentiles - site_statistics <- weekly_frequency_table(gwl_data, date_col, + site_statistics <- weekly_frequency_table(gw_level_dv, date_col, value_col, approved_col) # Find the bounds of the plot @@ -374,7 +375,7 @@ weekly_frequency_plot <- function(gwl_data, date_col, value_col, approved_col, } # The last year of groundwater level measurements will plot - gw_level_plot <- gwl_data %>% + gw_level_plot <- gw_level_dv %>% filter(!!sym(date_col) >= plot_start) # Add the first day of the week to the site_statistics table for plotting @@ -498,7 +499,7 @@ weekly_frequency_plot <- function(gwl_data, date_col, value_col, approved_col, #' Plot the last two years of daily data #' -#' @param gwl_data daily groundwater level data +#' @param gw_level_dv daily groundwater level data #' from readNWISdv #' @param date_col name of date column. #' @param value_col name of value column. @@ -526,9 +527,9 @@ weekly_frequency_plot <- function(gwl_data, date_col, value_col, approved_col, #' # site <- "263819081585801" #' p_code_dv <- "62610" #' statCd <- "00001" -#' # gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -#' gwl_data <- L2701_example_data$Daily -#' daily_gwl_2yr_plot(gwl_data, +#' # gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +#' gw_level_dv <- L2701_example_data$Daily +#' daily_gwl_2yr_plot(gw_level_dv, #' date_col = "Date", #' value_col = "X_62610_00001", #' approved_col = "X_62610_00001_cd", @@ -536,7 +537,7 @@ weekly_frequency_plot <- function(gwl_data, date_col, value_col, approved_col, #' month_breaks = TRUE, #' historical_stat = "median") #' -daily_gwl_2yr_plot <- function(gwl_data, +daily_gwl_2yr_plot <- function(gw_level_dv, date_col, value_col, approved_col, @@ -548,8 +549,8 @@ daily_gwl_2yr_plot <- function(gwl_data, Date <- gw_level_cd <- J <- gw_level <- name <- group <- value <- gw_level_cd <- middle <- ".dplyr" - if(!all(c(date_col, value_col, approved_col) %in% names(gwl_data))) { - stop("Not all required columns found in gwl_data") + if(!all(c(date_col, value_col, approved_col) %in% names(gw_level_dv))) { + stop("Not all required columns found in gw_level_dv") } historical_stat <- match.arg(historical_stat) @@ -558,10 +559,10 @@ daily_gwl_2yr_plot <- function(gwl_data, # Calculate the historical max/min/median for each day - gwl_data <- gwl_data %>% + gw_level_dv <- gw_level_dv %>% mutate(J = as.numeric(as.character(!!sym(date_col), format = "%j"))) - historical_stats <- gwl_data %>% + historical_stats <- gw_level_dv %>% filter(grepl("A", !!sym(approved_col))) %>% group_by(J) %>% summarize(max = max(!!sym(value_col), na.rm = TRUE), @@ -570,7 +571,7 @@ daily_gwl_2yr_plot <- function(gwl_data, # Pull the last two years of data & join with the historical data - most_recent <- max(gwl_data[, date_col], na.rm = TRUE) + most_recent <- max(gw_level_dv[, date_col], na.rm = TRUE) plot_start_year <- as.numeric(as.character(most_recent, format = "%Y")) - 2 plot_start <- as.Date(paste0(plot_start_year, "-01-01")) @@ -580,7 +581,7 @@ daily_gwl_2yr_plot <- function(gwl_data, buffer_j <- as.numeric(as.character(buffer_dates, "%j")) buffer <- setNames(data.frame(buffer_dates, buffer_j), c(date_col, "J")) - plot_data <- gwl_data %>% + plot_data <- gw_level_dv %>% filter(!!sym(date_col) >= plot_start, !!sym(date_col) <= most_recent) %>% bind_rows(buffer) %>% @@ -658,7 +659,7 @@ daily_gwl_2yr_plot <- function(gwl_data, #' Give the historical max, mean, minimum, and number of available points #' for each day of the year #' -#' @param gwl_data daily groundwater level data +#' @param gw_level_dv daily groundwater level data #' from readNWISdv #' @param date_col the heading of the date column. #' @param value_col name of value column. @@ -684,15 +685,15 @@ daily_gwl_2yr_plot <- function(gwl_data, #' approved_col = "X_62610_00001_cd") #' -daily_frequency_table <- function(gwl_data, date_col, value_col, approved_col) { +daily_frequency_table <- function(gw_level_dv, date_col, value_col, approved_col) { DOY <- ".dplyr" - if(!all(c(date_col, value_col, approved_col) %in% names(gwl_data))) { + if(!all(c(date_col, value_col, approved_col) %in% names(gw_level_dv))) { stop("Not all columns found in gw_level_dv") } - historical_stats <- gwl_data %>% + historical_stats <- gw_level_dv %>% filter(grepl("A", !!sym(approved_col))) %>% mutate(DOY = as.numeric(as.character(!!sym(date_col), "%j"))) %>% group_by(DOY) %>% @@ -706,7 +707,7 @@ daily_frequency_table <- function(gwl_data, date_col, value_col, approved_col) { #' Summary table of daily data #' -#' @param gwl_data daily groundwater level data +#' @param gw_level_dv daily groundwater level data #' from readNWISdv #' @param date_col the heading of the date column. #' @param value_col name of value column. @@ -732,26 +733,26 @@ daily_frequency_table <- function(gwl_data, date_col, value_col, approved_col) { #' approved_col = "X_62610_00001_cd") #' -daily_gwl_summary <- function(gwl_data, date_col, value_col, approved_col) { +daily_gwl_summary <- function(gw_level_dv, date_col, value_col, approved_col) { gw_level <- gw_level_cd <- ".dplyr" - if(!all(c(date_col, value_col, approved_col) %in% names(gwl_data))) { - stop("Not all columns found in gwl_data") + if(!all(c(date_col, value_col, approved_col) %in% names(gw_level_dv))) { + stop("Not all columns found in gw_level_dv") } - gwl_data <- gwl_data %>% + gw_level_dv <- gw_level_dv %>% rename(gw_level = !!sym(value_col), gw_level_cd = !!sym(approved_col)) %>% filter(grepl("A", gw_level_cd)) - begin_date <- min(gwl_data[,date_col], na.rm = TRUE) - end_date <- max(gwl_data[,date_col], na.rm = TRUE) - days <- nrow(gwl_data) + begin_date <- min(gw_level_dv[,date_col], na.rm = TRUE) + end_date <- max(gw_level_dv[,date_col], na.rm = TRUE) + days <- nrow(gw_level_dv) percent_complete <- round(days/length(seq.Date(begin_date, end_date, by = "day")) * 100, 0) - lowest_level <- min(gwl_data$gw_level, na.rm = TRUE) - highest_level <- max(gwl_data$gw_level, na.rm = TRUE) - quant <- quantile(gwl_data$gw_level, + lowest_level <- min(gw_level_dv$gw_level, na.rm = TRUE) + highest_level <- max(gw_level_dv$gw_level, na.rm = TRUE) + quant <- quantile(gw_level_dv$gw_level, probs = c(0.05, 0.1, 0.25, 0.5, 0.75, 0.90, 0.95), na.rm = TRUE) dv_summary <- data.frame( diff --git a/R/get_data.R b/R/get_data.R index db9939761ca02a325287286033da37d414789472..22c667b21f019f6fd0d20dc88a2843d1ce0984e8 100644 --- a/R/get_data.R +++ b/R/get_data.R @@ -104,6 +104,7 @@ site_summary <- function(siteID, markdown = FALSE){ site_no <- station_nm <- lat_va <- long_va <- nat_aqfr_cd <- ".dplyr" site_tp_cd <- state_cd <- county_cd <- huc_cd <- aqfr_cd <- land_net_ds <- well_depth_va <- alt_va <- alt_datum_cd <- ".dplyr" + long_name <- Aqfr_Name_prpr <- ".dplyr" site_info <- readNWISsite(siteID) @@ -114,6 +115,10 @@ site_summary <- function(siteID, markdown = FALSE){ end_of_line <- ifelse(markdown, "<br/>", "\n") + nat_aqfrs <- nat_aqfr_state %>% + select(nat_aqfr_cd, nat_aq = long_name) %>% + distinct() + site_info_cleaned <- site_info %>% select(site_no, station_nm, lat_va, long_va, site_tp_cd, @@ -122,13 +127,14 @@ site_summary <- function(siteID, markdown = FALSE){ land_net_ds, well_depth_va, alt_va, alt_datum_cd) %>% + left_join(nat_aqfrs, by = "nat_aqfr_cd") %>% + left_join(rename(local_aqfr, + local_aq = Aqfr_Name_prpr), by = "aqfr_cd") %>% mutate(state = stateCdLookup(state_cd, outputType = "fullName"), county = countyCdLookup(state = state_cd, county = county_cd, outputType = "fullName"), - nat_aq = nat_aqfr_state$long_name[nat_aqfr_state$nat_aqfr_cd == nat_aqfr_cd], - local_aq = local_aqfr$Aqfr_Name_prpr[local_aqfr$aqfr_cd == aqfr_cd], lat_deg = substr(lat_va, start = 1, stop = 2), lat_min = substr(lat_va, start = 3, stop = 4), lat_sec = substr(lat_va, start = 5, stop = 6), diff --git a/R/gwl_single_sites.R b/R/gwl_single_sites.R index f0a39a7e03b55e44201b5c5eb11670ff03230ef9..dc08c33f9690601d658f50f98d932a4f4c78e1dd 100644 --- a/R/gwl_single_sites.R +++ b/R/gwl_single_sites.R @@ -60,9 +60,14 @@ gwl_plot_periodic <- function(gwl_data, plot_title = "", #' @rdname gwl_periodic #' @export -#' @importFrom rlang `:=` -#' @param gw_level_dv daily value groundwater levels. Must include columns -#' @param p_code_dv daily parameter code. Default is "62610". +#' @param gw_level_dv daily value groundwater levels. Must include columns specified in date_col, value_col, and approved_col. +#' @param y_label character for y-axis label. Consider using \code{\link[dataRetrieval]{readNWISpCode}} for USGS parameter_nm. +#' @param date_col Vector of date column names. It is assumed if there are 2 values, +#' that the first is associated with gwl_data and the second is gw_level_dv +#' @param value_col Vector of value column names. It is assumed if there are 2 values, +#' that the first is associated with gwl_data and the second is gw_level_dv. +#' @param approved_col Vector of approval column names. It is assumed if there are 2 values, +#' that the first is associated with gwl_data and the second is gw_level_dv. #' @param add_trend logical. Uses \code{kendell_test_5_20_years}. #' @examples #' # site <- "263819081585801" @@ -71,114 +76,167 @@ gwl_plot_periodic <- function(gwl_data, plot_title = "", #' # gw_level_dv <- dataRetrieval::readNWISdv(site, parameterCd, statCd = statCd) #' # Using package example data: #' gw_level_dv <- L2701_example_data$Daily +#' gwl_data <- L2701_example_data$Discrete #' plot_title <- attr(gwl_data, "siteInfo")[["station_nm"]] -#' gwl_plot_all(gw_level_dv, gwl_data, plot_title, p_code_dv = parameterCd) #' -#' gwl_plot_all(gw_level_dv, gwl_data, plot_title, add_trend = TRUE, -#' p_code_dv = parameterCd) +#' y_label <- dataRetrieval::readNWISpCode(parameterCd)$parameter_nm +#' +#' date_col = "Date" +#' value_col = "X_62610_00001" +#' approved_col = "X_62610_00001_cd" +#' +#' gwl_plot_all(gw_level_dv, +#' NULL, +#' date_col = date_col, +#' value_col = value_col, +#' approved_col = approved_col, +#' plot_title) +#' +#' date_col = c("Date", "lev_dt") +#' value_col = c("X_62610_00001", "sl_lev_va") +#' approved_col = c("X_62610_00001_cd", "lev_age_cd") +#' +#' gwl_plot_all(gw_level_dv, +#' gwl_data, +#' date_col = date_col, +#' value_col = value_col, +#' approved_col = approved_col, +#' plot_title, +#' add_trend = TRUE) +#' +#' gwl_plot_all(NULL, +#' gwl_data, +#' date_col = "lev_dt", +#' value_col = "sl_lev_va", +#' approved_col = "lev_age_cd", +#' plot_title) #' -#' gwl_plot_all(NULL, gwl_data, plot_title, p_code_dv = parameterCd) gwl_plot_all <- function(gw_level_dv, gwl_data, + date_col, value_col, approved_col, + y_label = "GWL", plot_title = "", - date_col = "lev_dt", - value_col = "sl_lev_va", - approved_col = "lev_age_cd", - p_code_dv = "62610", add_trend = FALSE){ - if(!all(c(date_col, value_col, approved_col) %in% names(gwl_data))){ - stop("data frame gwl_data doesn't include all mandatory columns") - } - - x1 <- x2 <- y1 <- y2 <- trend <- year <- ".dplyr" + x1 <- x2 <- y1 <- y2 <- trend <- year <- Value <- Approve <- ".dplyr" Date <- is_na_after <- is_na_before <- is_point <- ".dplyr" - datum <- unique(gwl_data$sl_datum_cd) - y_label <- dataRetrieval::readNWISpCode(p_code_dv)$parameter_nm - linetype = c('solid', 'dashed') - - gwl_data$year <- as.numeric(format(gwl_data[[date_col]], "%Y")) + - as.numeric(as.character(gwl_data[[date_col]], "%j"))/365 + includes_gwl <- !is.null(gwl_data) || !all(is.na(gwl_data)) + includes_dv <- !is.null(gw_level_dv) || !all(is.na(gw_level_dv)) + includes_both <- includes_gwl & includes_dv - if(!all(is.null(gw_level_dv))){ + if(includes_gwl){ + + if(includes_both){ + date_col_per <- date_col[2] + value_col_per <- value_col[2] + approved_col_per <- approved_col[2] + + } else { + date_col_per <- date_col[1] + value_col_per <- value_col[1] + approved_col_per <- approved_col[1] + + on_top <- zero_on_top(gwl_data[[value_col_per]]) + } - if(!all(c("Date") %in% names(gw_level_dv))){ - stop("data frame gw_level_dv doesn't include all mandatory columns") + if(!all(c(date_col_per, value_col_per, approved_col_per) %in% names(gwl_data))){ + stop("gwl_data data frame doesn't include all specified columns") } - complete_df <- data.frame(Date = seq.Date(from = min(gw_level_dv$Date, na.rm = TRUE), - to = max(gw_level_dv$Date, na.rm = TRUE), - by = "day")) + gwl_data$year <- as.numeric(format(gwl_data[[date_col_per]], "%Y")) + + as.numeric(as.character(gwl_data[[date_col_per]], "%j"))/365 - val_cols <- grep(p_code_dv, names(gw_level_dv)) - remark_col <- grep("_cd", names(gw_level_dv)) - remark_col <- remark_col[remark_col %in% val_cols] + } + + if(includes_dv){ + + date_col_dv <- date_col[1] + value_col_dv <- value_col[1] + approved_dv <- approved_col[1] - val_cols <- val_cols[!val_cols %in% remark_col] - val_cols <- names(gw_level_dv)[val_cols] - remark_col <- names(gw_level_dv)[remark_col] + if(!all(c(date_col_dv, value_col_dv, approved_dv) %in% names(gw_level_dv))){ + stop("gw_level_dv data frame doesn't include all specified columns") + } - on_top <- zero_on_top(c(gw_level_dv[[val_cols]], - gwl_data[[value_col]])) + if(!includes_both){ + on_top <- zero_on_top(gw_level_dv[[value_col_dv]]) + } + } + + linetype = c('solid', 'dashed') + + if(includes_both){ + + on_top <- zero_on_top(c(gw_level_dv[[value_col_dv]], + gwl_data[[value_col_per]])) + } + + if(includes_dv){ + complete_df <- data.frame(Date = seq.Date(from = min(gw_level_dv[[date_col_dv]], na.rm = TRUE), + to = max(gw_level_dv[[date_col_dv]], na.rm = TRUE), + by = "day")) gw_complete <- complete_df %>% - left_join(select(gw_level_dv, Date, !!val_cols, !!remark_col), by = "Date") %>% + left_join(select(gw_level_dv, Date = !!date_col_dv, + Value = !!value_col_dv, + Approve = !!approved_dv), + by = "Date") %>% mutate(year = as.numeric(format(Date, "%Y")) + as.numeric(as.character(Date, "%j"))/365, - is_na_before = is.na(lag(!!sym(val_cols))), - is_na_after = is.na(lead(!!sym(val_cols))), - is_point = is_na_after & is_na_before & !is.na(!!sym(val_cols)), - is_complete = !is.na(!!sym(val_cols)) & !is_na_after & !is_na_before, - !!remark_col := ifelse(grepl(pattern = "A", - x = !!sym(remark_col)), "A", "P")) + is_na_before = is.na(lag(Value)), + is_na_after = is.na(lead(Value)), + is_point = is_na_after & is_na_before & !is.na(Value), + is_complete = !is.na(Value) & !is_na_after & !is_na_before, + Approve = ifelse(grepl(pattern = "A", + x = Approve), "A", "P")) - gw_complete[is.na(gw_complete[[val_cols]]), remark_col] <- "A" + gw_complete[is.na(gw_complete$Value), "Approve"] <- "A" plot_out <- ggplot() + geom_path(data = gw_complete, - aes_string(x = "year", color = remark_col, - y = val_cols)) + aes(x = year, color = Approve, y = Value)) if(sum(gw_complete$is_point) > 0){ plot_out <- plot_out + geom_point(data = filter(gw_complete, is_point), - aes_string(x = "year", color = remark_col, - y = val_cols), size = 0.2) + aes(x = year, color = Approve, y = Value), size = 0.2) } plot_out <- plot_out + - scale_color_manual("Daily Data", + scale_color_manual(ifelse(includes_both,"Daily Data", "EXPLANATION\nDaily Data"), values = c("A" = "blue", "P" = "red"), labels = c("A" = "Approved", "P" = "Provisional")) } else { plot_out <- ggplot() - on_top <- zero_on_top(gwl_data[[value_col]]) - + } + if(includes_gwl){ + plot_out <- plot_out + + geom_point(data = gwl_data, + aes_string(x = "year", + y = value_col_per, + fill = approved_col_per), + size = 1.5, shape = 21, color = "transparent") + + scale_fill_manual("EXPLANATION\nWater-Level\nMeasurement", + values = c("A" = "navy", "P" = "red"), + labels = c("A" = "Approved", + "P" = "Provisional")) + } + plot_out <- plot_out + - geom_point(data = gwl_data, - aes_string(x = "year", - y = value_col, - fill = approved_col), - size = 1.5, shape = 21, color = "transparent") + hasp_framework("Years", y_label, plot_title, - zero_on_top = on_top, include_y_scale = TRUE) + - theme(aspect.ratio = NULL) + - scale_fill_manual("EXPLANATION\nWater-Level\nMeasurement", - values = c("A" = "navy", "P" = "red"), - labels = c("A" = "Approved", - "P" = "Provisional")) + + zero_on_top = on_top, include_y_scale = TRUE) + scale_x_continuous(sec.axis = dup_axis(labels = NULL, name = NULL)) - if(add_trend){ + if(add_trend & includes_dv){ gw_monthly <- monthly_mean(gw_level_dv, - date_col = "Date", - value_col = val_cols) + date_col = date_col_dv, + value_col = value_col_dv) seg_df <- create_segs(gw_monthly, date_col = "mid_date", diff --git a/README.Rmd b/README.Rmd index d5e0e0f94de155e378db3b520abb9207cd9b98d1..ecb9b15cf015db179ca149cd6f4a5f0c802a16e4 100644 --- a/README.Rmd +++ b/README.Rmd @@ -41,7 +41,6 @@ site <- "263819081585801" #Periodic data: gwl_data <- dataRetrieval::readNWISgwl(site) - # Daily data: parameterCd <- "62610" statCd <- "00001" @@ -67,14 +66,24 @@ qw_data <- L2701_example_data$QW ``` ```{r graphs, echo=TRUE, eval=TRUE} + +y_axis_label <- dataRetrieval::readNWISpCode("62610")$parameter_nm + monthly_frequency_plot(dv, date_col = "Date", value_col = "X_62610_00001", approved_col = "X_62610_00001_cd", plot_title = "L2701_example_data", - y_axis_label = "GGroundwater level above NGVD 1929, feet") -gwl_plot_periodic(gwl_data, "L2701_example_data") -gwl_plot_all(dv, gwl_data, "L2701_example_data") + y_axis_label = y_axis_label) + +gwl_plot_all(dv, gwl_data, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = "L2701_example_data", + add_trend = TRUE) + Sc_Cl_plot(qw_data, "L2701_example_data") trend_plot(qw_data, plot_title = "L2701_example_data") ``` diff --git a/README.md b/README.md index 0a2e90a66fe562737c091c77f0ce51af9623ed31..b47c009f936f0f3e5576f8f5efd036c755ec18d3 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ site <- "263819081585801" #Periodic data: gwl_data <- dataRetrieval::readNWISgwl(site) - # Daily data: parameterCd <- "62610" statCd <- "00001" @@ -36,39 +35,44 @@ qw_data <- dataRetrieval::readNWISqw(site, ``` ``` r + +y_axis_label <- dataRetrieval::readNWISpCode("62610")$parameter_nm + monthly_frequency_plot(dv, date_col = "Date", value_col = "X_62610_00001", approved_col = "X_62610_00001_cd", plot_title = "L2701_example_data", - y_axis_label = "GGroundwater level above NGVD 1929, feet") + y_axis_label = y_axis_label) ``` <!-- --> ``` r -gwl_plot_periodic(gwl_data, "L2701_example_data") + +gwl_plot_all(dv, gwl_data, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = "L2701_example_data", + add_trend = TRUE) ``` <!-- --> ``` r -gwl_plot_all(dv, gwl_data, "L2701_example_data") -``` -<!-- --> - -``` r Sc_Cl_plot(qw_data, "L2701_example_data") ``` -<!-- --> +<!-- --> ``` r trend_plot(qw_data, plot_title = "L2701_example_data") ``` -<!-- --> +<!-- --> ### Composite workflows: diff --git a/inst/single_site/get_data.R b/inst/single_site/get_data.R index bf7004f588223c9663e007b0d30f217cc2ab3e6b..39e204d292ce3e519d66c51ce90404481f124362 100644 --- a/inst/single_site/get_data.R +++ b/inst/single_site/get_data.R @@ -1,6 +1,5 @@ rawData_data <- reactiveValues(daily_data = NULL, - example_data = FALSE, - daily_data = NULL, + example_data = FALSE, gwl_data = NULL, qw_data = NULL, p_code_dv = "62610", @@ -14,6 +13,7 @@ observeEvent(input$example_data,{ rawData_data$daily_data <- HASP::L2701_example_data$Daily rawData_data$gwl_data <- HASP::L2701_example_data$Discrete rawData_data$qw_data <- HASP::L2701_example_data$QW + rawData_data$p_code_dv <- "62610" rawData_data$stat_cd <- "00001" rawData_data$p_code_qw <- c("00095","90095","00940","99220") @@ -60,22 +60,16 @@ observeEvent(input$get_data_qw, { }) -observeEvent(input$get_data_ground, { +observeEvent(input$get_data_dv, { + rawData_data$example_data <- FALSE site_id <- input$siteID parameter_cd <- input$pcode stat_cd <- input$statcd - rawData_data$available_data <- data_available(site_id) - site_info <- site_summary(site_id) - - if(!any(grepl("GW", site_info$site_tp_cd))){ - showNotification("The site is not identified as a groundwater site.", - type = "error") - } - + pcodes_dv <- dataRetrieval::whatNWISdata(siteNumber = site_id, service = "dv") %>% filter(!is.na(parm_cd)) %>% pull(parm_cd) @@ -89,6 +83,11 @@ observeEvent(input$get_data_ground, { pull(parm_cd) rawData_data$p_code_qw <- pcodes_qw + + if(!any(grepl("GW", site_info$site_tp_cd))){ + showNotification("The site is not identified as a groundwater site.", + type = "error") + } shinyAce::updateAceEditor(session, editorId = "get_data_code", @@ -96,13 +95,35 @@ observeEvent(input$get_data_ground, { showNotification("Loading Daily Groundwater Data", duration = NULL, id = "load") - + rawData_data$daily_data <- dataRetrieval::readNWISdv(site_id, pcodes_dv, statCd = stat_cd) - + removeNotification(id = "load") + +}) + +observeEvent(input$get_data_ground, { + rawData_data$example_data <- FALSE + + site_id <- input$siteID + parameter_cd <- input$pcode + stat_cd <- input$statcd + + rawData_data$available_data <- data_available(site_id) + + site_info <- site_summary(site_id) + + if(!any(grepl("GW", site_info$site_tp_cd))){ + showNotification("The site is not identified as a groundwater site.", + type = "error") + } + + shinyAce::updateAceEditor(session, + editorId = "get_data_code", + value = setup() ) showNotification("Loading Discrete Groundwater Data", duration = NULL, id = "load2") @@ -139,7 +160,7 @@ p_code_qw <- reactive({ }) observe({ - updateCheckboxGroupInput(session, "pcode_plot", + updateRadioButtons(session, "pcode_plot", choices = p_code_qw(), selected = p_code_qw()) }) diff --git a/inst/single_site/gwl_plot.R b/inst/single_site/gwl_plot.R index 9a08544c9fe249d1f74ff38d6052d96372eea01b..4bd781aacf07c58f3b257d8a75af3024b2f0e7a8 100644 --- a/inst/single_site/gwl_plot.R +++ b/inst/single_site/gwl_plot.R @@ -1,19 +1,68 @@ +col_stuff <- reactive({ + p_code_dv <- input$pcode + val_col_per <- input$gwl_vals + + dv_data <- dvData() + gwl_data <- gwlData() + + includes_gwl <- !is.null(gwl_data) + includes_dv <- !is.null(dv_data) + includes_both <- includes_gwl & includes_dv + + y_label <- dataRetrieval::readNWISpCode(input$pcode)$parameter_nm + + if(includes_both){ + date_col = c("Date", "lev_dt") + value_col = c(paste("X", input$pcode, input$statcd, sep = "_"), + input$gwl_vals) + approved_col = c(paste("X", input$pcode, input$statcd, "cd", sep = "_"), + "lev_age_cd") + + } else if(includes_dv){ + date_col = "Date" + value_col = paste("X", input$pcode, input$statcd, sep = "_") + approved_col = paste("X", input$pcode, input$statcd, "cd", sep = "_") + } else if(includes_gwl){ + date_col = "lev_dt" + value_col = input$gwl_vals + approved_col = "lev_age_cd" + if("sl_datum_cd" %in% names(gwl_data)){ + datum <- unique(gwl_data$sl_datum_cd) + y_label <- sprintf("Elevation above %s, feet", datum) + } else { + y_label <- "Elevation" + } + + } + + return(list(date_col = date_col, + value_col = value_col, + approved_col = approved_col, + y_label = y_label)) +}) + gwl_plot <- reactive({ validate( need(!is.null(rawData_data$daily_data), "Please select a data set") ) - p_code_dv <- input$pcode - val_col <- input$gwl_vals - plot_title <- paste(attr(dvData(), "siteInfo")[["station_nm"]], - attr(dvData(), "siteInfo")[["site_no"]], sep = "\n") + dv_data <- dvData() + gwl_data <- gwlData() - gwl_plot <- gwl_plot_all(dvData(), p_code_dv = p_code_dv, + columns <- col_stuff() + + plot_title <- paste(attr(dv_data, "siteInfo")[["station_nm"]], + attr(dv_data, "siteInfo")[["site_no"]], sep = "\n") + + gwl_plot <- gwl_plot_all(dv_data, + gwl_data, + date_col = columns$date_col, + value_col = columns$value_col, + approved_col = columns$approved_col, plot_title = plot_title, - value_col = val_col, - gwlData(), add_trend = TRUE) - + y_label = columns$y_label, + add_trend = TRUE) return(gwl_plot) @@ -50,23 +99,32 @@ gwl_table <- reactive({ }) gwl_plot_out <- reactive({ - p_code_dv <- input$pcode - stat_cd <- input$statcd + - val_col <- input$gwl_vals + columns <- col_stuff() - sum_col <- paste("X", p_code_dv, stat_cd, sep = "_") + val_col <- columns$value_col + date_col <- columns$date_col + approved_col <- columns$approved_col + y_label <- columns$y_label + code_out <- paste0(setup(),' -val_col <- "', val_col,'" -gwl_plot <- gwl_plot_all(gw_level_dv, gwl_data, - p_code_dv = p_code_dv, - val_col = val_col, +val_col <- c("', paste(val_col, collapse = '", "'),'") +date_col <- c("', paste(date_col, collapse = '", "'),'") +approved_col <- c("', paste(approved_col, collapse = '", "'),'") +y_label <- "', y_label,'" +gwl_plot <- gwl_plot_all(gw_level_dv, + gwl_data, + date_col = date_cols, + value_col = val_cols, + approved_col = approved_col, + y_label = y_label, plot_title = plot_title, add_trend = TRUE) gwl_plot gwl_summary_table <- site_data_summary(gw_level_dv, - sum_col = "', sum_col,'") + sum_col = "', val_col[1],'") # To save plot: # Fiddle with height and width (in inches) for best results: @@ -81,17 +139,24 @@ gwl_summary_table <- site_data_summary(gw_level_dv, week_plot <- reactive({ validate( - need(!is.null(rawData_data$daily_data), "Please select a data set") + need(!is.null(rawData_data$daily_data), "Please select a daily data set") ) p_code_dv <- input$pcode stat_cd <- input$statcd - plot_title <- paste(attr(dvData(), "siteInfo")[["station_nm"]], - attr(dvData(), "siteInfo")[["site_no"]], sep = "\n") - week_plot <- weekly_frequency_plot(dvData(), plot_title = plot_title, - p_code_dv = p_code_dv, - statCd = stat_cd) + dv_data <- dvData() + + value_col <- paste("X", p_code_dv, stat_cd, sep = "_") + approv_col <- paste0(value_col, "_cd") + + plot_title <- paste(attr(dv_data, "siteInfo")[["station_nm"]], + attr(dv_data, "siteInfo")[["site_no"]], sep = "\n") + week_plot <- weekly_frequency_plot(dv_data, + date_col = "Date", + value_col = value_col, + approved_col = approv_col, + plot_title = plot_title) return(week_plot) @@ -100,16 +165,18 @@ week_plot <- reactive({ week_table_df <- reactive({ validate( - need(!is.null(rawData_data$daily_data), "Please select a data set") + need(!is.null(rawData_data$daily_data), "Please select a daily data set") ) p_code_dv <- input$pcode stat_cd <- input$statcd - + value_col <- paste("X", p_code_dv, stat_cd, sep = "_") + approv_col <- paste0(value_col, "_cd") + week_tab <- weekly_frequency_table(dvData(), - p_code_dv = p_code_dv, - statCd = stat_cd, - date_col = "Date") %>% + date_col = "Date", + value_col = value_col, + approved_col = approv_col) %>% select("Week" = week, "Lowest<br>median" = minMed, "10th" = p10, @@ -159,16 +226,20 @@ week_table <- weekly_frequency_table(gw_level_dv, year2_plot <- reactive({ validate( - need(!is.null(rawData_data$daily_data), "Please select a data set") + need(!is.null(rawData_data$daily_data), "Please select a daily data set") ) p_code_dv <- input$pcode stat_cd <- input$statcd + value_col <- paste("X", p_code_dv, stat_cd, sep = "_") + approv_col <- paste0(value_col, "_cd") + plot_title <- paste(attr(dvData(), "siteInfo")[["station_nm"]], attr(dvData(), "siteInfo")[["site_no"]], sep = "\n") year2_graph <- daily_gwl_2yr_plot(dvData(), - p_code_dv = p_code_dv, - statCd = stat_cd, + date_col = "Date", + value_col = value_col, + approved_col = approv_col, plot_title = plot_title, historical_stat = "mean", month_breaks = TRUE) @@ -185,10 +256,12 @@ year2_table_df <- reactive({ ) p_code_dv <- input$pcode stat_cd <- input$statcd - - daily_tab <- daily_frequency_table(dvData(), - p_code_dv = p_code_dv, - statCd = stat_cd) %>% + value_col <- paste("X", p_code_dv, stat_cd, sep = "_") + approv_col <- paste0(value_col, "_cd") + daily_tab <- daily_frequency_table(dvData(), + date_col = "Date", + value_col = value_col, + approved_col = approv_col) %>% rename("DOY" = DOY, "Maximum" = max, "Mean" = mean, @@ -209,8 +282,6 @@ year2_table <- reactive({ }) - - year2_plot_out <- reactive({ code_out <- paste0(setup(),' @@ -236,14 +307,20 @@ daily_frequencies <- daily_frequency_table(gw_level_dv, month_plot <- reactive({ validate( - need(!is.null(rawData_data$gwl_data), "Please select a data set") + need(!is.null(rawData_data$daily_data), "Please select a data set") ) - val_col <- input$gwl_vals + p_code_dv <- input$pcode + stat_cd <- input$statcd + value_col <- paste("X", p_code_dv, stat_cd, sep = "_") + approv_col <- paste0(value_col, "_cd") + plot_title <- paste(attr(dvData(), "siteInfo")[["station_nm"]], attr(dvData(), "siteInfo")[["site_no"]], sep = "\n") - month_plot <- monthly_frequency_plot(gwlData(), - value_col = val_col, + month_plot <- monthly_frequency_plot(dvData(), + date_col = "Date", + value_col = value_col, + approved_col = approv_col, plot_title = plot_title) @@ -253,11 +330,17 @@ month_plot <- reactive({ month_table_df <- reactive({ validate( - need(!is.null(rawData_data$gwl_data), "Please select a data set") + need(!is.null(rawData_data$daily_data), "Please select a data set") ) - val_col <- input$gwl_vals - month_tab <- monthly_frequency_table(gwlData(), - value_col = val_col) %>% + p_code_dv <- input$pcode + stat_cd <- input$statcd + value_col <- paste("X", p_code_dv, stat_cd, sep = "_") + approv_col <- paste0(value_col, "_cd") + + month_tab <- monthly_frequency_table(dvData(), + date_col = "Date", + value_col = value_col, + approved_col = approv_col) %>% select(month, minMed, p25, p50, p75, maxMed, nYears) %>% mutate(month = month.abb[month]) %>% rename("Month" = month, diff --git a/inst/single_site/ui.R b/inst/single_site/ui.R index 8904461c7ad0704f583585bef12e4bd62bb4c446..bb86708a65b88fff514d4a0662ea73cfd2bb5d4c 100644 --- a/inst/single_site/ui.R +++ b/inst/single_site/ui.R @@ -30,6 +30,7 @@ sidebar <- dashboardSidebar( label = "Daily pcode"), textInput("statcd", value = "00001", label = "Daily stat code") ), + actionButton("get_data_dv", label = "Get Daily Data"), menuItem("Periodic Options", icon = icon("th"), tabName = "periodicDat", radioButtons("gwl_vals", choices = c("sl_lev_va", "lev_va"), @@ -37,11 +38,10 @@ sidebar <- dashboardSidebar( label = "Data Column") ), - actionButton("get_data_ground", label = "Get Groundwater Data"), + actionButton("get_data_ground", label = "Get Periodic Data"), menuItem("QW Options", icon = icon("th"), tabName = "wDat", - checkboxGroupInput("pcode_plot", label = "QW pcodes", - choices = c("00095","90095","00940","99220"), - selected = c("00095","90095")) + radioButtons("pcode_plot", label = "QW pcodes", + choices = c("00095","90095","00940","99220")) ), actionButton("get_data_qw", label = "Get QW Data"), menuItem("Source code", icon = icon("file-code-o"), diff --git a/man/daily_frequency_table.Rd b/man/daily_frequency_table.Rd index 9b00942609ba0254dd0febaa5c8f404b8355d4d6..c41fe5150d3aed397961a4019c8226a0f49faf87 100644 --- a/man/daily_frequency_table.Rd +++ b/man/daily_frequency_table.Rd @@ -4,10 +4,10 @@ \alias{daily_frequency_table} \title{Daily frequency table} \usage{ -daily_frequency_table(gwl_data, date_col, value_col, approved_col) +daily_frequency_table(gw_level_dv, date_col, value_col, approved_col) } \arguments{ -\item{gwl_data}{daily groundwater level data +\item{gw_level_dv}{daily groundwater level data from readNWISdv} \item{date_col}{the heading of the date column.} diff --git a/man/daily_gwl_2yr_plot.Rd b/man/daily_gwl_2yr_plot.Rd index 8b50a751fcfbe7c2a1a5e6270954ab80a84740bc..5f668f2c6c7f9114bced12a6b2651492dd33b1d7 100644 --- a/man/daily_gwl_2yr_plot.Rd +++ b/man/daily_gwl_2yr_plot.Rd @@ -5,7 +5,7 @@ \title{Plot the last two years of daily data} \usage{ daily_gwl_2yr_plot( - gwl_data, + gw_level_dv, date_col, value_col, approved_col, @@ -16,7 +16,7 @@ daily_gwl_2yr_plot( ) } \arguments{ -\item{gwl_data}{daily groundwater level data +\item{gw_level_dv}{daily groundwater level data from readNWISdv} \item{date_col}{name of date column.} @@ -47,9 +47,9 @@ Plot the last two years of daily data # site <- "263819081585801" p_code_dv <- "62610" statCd <- "00001" -# gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -gwl_data <- L2701_example_data$Daily -daily_gwl_2yr_plot(gwl_data, +# gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +gw_level_dv <- L2701_example_data$Daily +daily_gwl_2yr_plot(gw_level_dv, date_col = "Date", value_col = "X_62610_00001", approved_col = "X_62610_00001_cd", diff --git a/man/daily_gwl_summary.Rd b/man/daily_gwl_summary.Rd index 6095acdcdc499f14c2cc55636336f723127a4fff..733f2c4a5f6f108c40c8346463d1f50a330f0261 100644 --- a/man/daily_gwl_summary.Rd +++ b/man/daily_gwl_summary.Rd @@ -4,10 +4,10 @@ \alias{daily_gwl_summary} \title{Summary table of daily data} \usage{ -daily_gwl_summary(gwl_data, date_col, value_col, approved_col) +daily_gwl_summary(gw_level_dv, date_col, value_col, approved_col) } \arguments{ -\item{gwl_data}{daily groundwater level data +\item{gw_level_dv}{daily groundwater level data from readNWISdv} \item{date_col}{the heading of the date column.} diff --git a/man/figures/example-1.png b/man/figures/example-1.png index a9b27291e935b8702be1c67284f9bf08017dd641..7a5edaf908c6be6e6cdbc49236c31c62cdf1a3bf 100644 Binary files a/man/figures/example-1.png and b/man/figures/example-1.png differ diff --git a/man/figures/example-2.png b/man/figures/example-2.png index 5c76e51c3312d4479df9409c2c6c4beff1ab04a4..2aea7127479ae952f662a0ee5c5525be12c10e3e 100644 Binary files a/man/figures/example-2.png and b/man/figures/example-2.png differ diff --git a/man/figures/graphs-1.png b/man/figures/graphs-1.png index fd3167ee88883b7a53153eb42de1e99a87ba1f30..37e2031459fb43f772fa6f92a2a687e888c3ef19 100644 Binary files a/man/figures/graphs-1.png and b/man/figures/graphs-1.png differ diff --git a/man/figures/graphs-2.png b/man/figures/graphs-2.png index 0fdf3f306551e46dbc7ba0f8dbc4c67d82251a4f..5b1a778b5f4c61674e87639442e95ae017a85e90 100644 Binary files a/man/figures/graphs-2.png and b/man/figures/graphs-2.png differ diff --git a/man/figures/graphs-3.png b/man/figures/graphs-3.png index 5752a7ad19cf3f133e83f99838d2c87c32bc2d5c..759e5cb76a0bf0849ef9f3fcd4024c1465e6c4f5 100644 Binary files a/man/figures/graphs-3.png and b/man/figures/graphs-3.png differ diff --git a/man/figures/graphs-4.png b/man/figures/graphs-4.png index dbbb1625c2691ba3b55c89c20d17c3d1c1d02311..853d7cafcddd2dbe94cb440ba33a481d8f8b2d59 100644 Binary files a/man/figures/graphs-4.png and b/man/figures/graphs-4.png differ diff --git a/man/gwl_periodic.Rd b/man/gwl_periodic.Rd index fd77c66198e01890c9cb916c58200574040019c6..9d6a70065e2c8a0f81b5d1c8a6268e77f07cc647 100644 --- a/man/gwl_periodic.Rd +++ b/man/gwl_periodic.Rd @@ -16,11 +16,11 @@ gwl_plot_periodic( gwl_plot_all( gw_level_dv, gwl_data, + date_col, + value_col, + approved_col, + y_label = "GWL", plot_title = "", - date_col = "lev_dt", - value_col = "sl_lev_va", - approved_col = "lev_age_cd", - p_code_dv = "62610", add_trend = FALSE ) } @@ -29,16 +29,18 @@ gwl_plot_all( \item{plot_title}{character} -\item{date_col}{name of date column. Default is "lev_dt".} +\item{date_col}{Vector of date column names. It is assumed if there are 2 values, +that the first is associated with gwl_data and the second is gw_level_dv} -\item{value_col}{name of value column. Default is "sl_lev_va".} +\item{value_col}{Vector of value column names. It is assumed if there are 2 values, +that the first is associated with gwl_data and the second is gw_level_dv.} -\item{approved_col}{name of column to get provisional/approved status. -Default is "lev_age_cd".} +\item{approved_col}{Vector of approval column names. It is assumed if there are 2 values, +that the first is associated with gwl_data and the second is gw_level_dv.} -\item{gw_level_dv}{daily value groundwater levels. Must include columns} +\item{gw_level_dv}{daily value groundwater levels. Must include columns specified in date_col, value_col, and approved_col.} -\item{p_code_dv}{daily parameter code. Default is "62610".} +\item{y_label}{character for y-axis label. Consider using \code{\link[dataRetrieval]{readNWISpCode}} for USGS parameter_nm.} \item{add_trend}{logical. Uses \code{kendell_test_5_20_years}.} } @@ -60,11 +62,39 @@ parameterCd <- "62610" # gw_level_dv <- dataRetrieval::readNWISdv(site, parameterCd, statCd = statCd) # Using package example data: gw_level_dv <- L2701_example_data$Daily +gwl_data <- L2701_example_data$Discrete plot_title <- attr(gwl_data, "siteInfo")[["station_nm"]] -gwl_plot_all(gw_level_dv, gwl_data, plot_title, p_code_dv = parameterCd) -gwl_plot_all(gw_level_dv, gwl_data, plot_title, add_trend = TRUE, - p_code_dv = parameterCd) +y_label <- dataRetrieval::readNWISpCode(parameterCd)$parameter_nm + +date_col = "Date" +value_col = "X_62610_00001" +approved_col = "X_62610_00001_cd" + +gwl_plot_all(gw_level_dv, + NULL, + date_col = date_col, + value_col = value_col, + approved_col = approved_col, + plot_title) + +date_col = c("Date", "lev_dt") +value_col = c("X_62610_00001", "sl_lev_va") +approved_col = c("X_62610_00001_cd", "lev_age_cd") + +gwl_plot_all(gw_level_dv, + gwl_data, + date_col = date_col, + value_col = value_col, + approved_col = approved_col, + plot_title, + add_trend = TRUE) + +gwl_plot_all(NULL, + gwl_data, + date_col = "lev_dt", + value_col = "sl_lev_va", + approved_col = "lev_age_cd", + plot_title) -gwl_plot_all(NULL, gwl_data, plot_title, p_code_dv = parameterCd) } diff --git a/man/monthly_frequency_plot.Rd b/man/monthly_frequency_plot.Rd index c167d66417c8672edfeb1f329f151dddc8322f6c..86a95a254c73b21127e9a3651b220327d595f52b 100644 --- a/man/monthly_frequency_plot.Rd +++ b/man/monthly_frequency_plot.Rd @@ -5,7 +5,7 @@ \title{Plot monthly frequency analysis} \usage{ monthly_frequency_plot( - gwl_data, + gw_level_dv, date_col, value_col, approved_col, @@ -15,7 +15,7 @@ monthly_frequency_plot( ) } \arguments{ -\item{gwl_data}{groundwater level data from \code{readNWISgwl}} +\item{gw_level_dv}{groundwater level data from \code{readNWISgwl}} \item{date_col}{name of date column.} @@ -44,11 +44,12 @@ Plot monthly frequency analysis # site <- "263819081585801" p_code_dv <- "62610" statCd <- "00001" -# gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -gwl_data <- L2701_example_data$Daily -monthly_frequency <- monthly_frequency_plot(gwl_data, +# gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +gw_level_dv <- L2701_example_data$Daily +monthly_frequency <- monthly_frequency_plot(gw_level_dv, date_col = "Date", value_col = "X_62610_00001", approved_col = "X_62610_00001_cd", plot_title = "L2701 Groundwater Level") +monthly_frequency } diff --git a/man/monthly_frequency_table.Rd b/man/monthly_frequency_table.Rd index e2137f6c74b1ff31cba223007b2e754b41c4b66a..6e4f34887dd2fc5999c6927070cce6c2c03f9122 100644 --- a/man/monthly_frequency_table.Rd +++ b/man/monthly_frequency_table.Rd @@ -4,10 +4,10 @@ \alias{monthly_frequency_table} \title{Create a table of monthly frequency analysis} \usage{ -monthly_frequency_table(gwl_data, date_col, value_col, approved_col) +monthly_frequency_table(gw_level_dv, date_col, value_col, approved_col) } \arguments{ -\item{gwl_data}{groundwater level data from \code{readNWISgwl}} +\item{gw_level_dv}{groundwater level data from \code{readNWISgwl}} \item{date_col}{name of date column.} @@ -29,9 +29,9 @@ Create a table of monthly frequency analysis # site <- "263819081585801" p_code_dv <- "62610" statCd <- "00001" -# gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -gwl_data <- L2701_example_data$Daily -monthly_frequency <- monthly_frequency_table(gwl_data, +# gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +gw_level_dv <- L2701_example_data$Daily +monthly_frequency <- monthly_frequency_table(gw_level_dv, date_col = "Date", value_col = "X_62610_00001", approved_col = "X_62610_00001_cd") diff --git a/man/weekly_frequency_plot.Rd b/man/weekly_frequency_plot.Rd index a376dfac2759f6b53d6676a4f42e915bc634c06b..f622f6745a9e24164928ea030e90c36ca0eb2f55 100644 --- a/man/weekly_frequency_plot.Rd +++ b/man/weekly_frequency_plot.Rd @@ -5,7 +5,7 @@ \title{Plot weekly frequency analysis} \usage{ weekly_frequency_plot( - gwl_data, + gw_level_dv, date_col, value_col, approved_col, @@ -15,7 +15,7 @@ weekly_frequency_plot( ) } \arguments{ -\item{gwl_data}{daily groundwater level data +\item{gw_level_dv}{daily groundwater level data from readNWISdv} \item{date_col}{name of date column.} @@ -44,9 +44,9 @@ The weekly frequency analysis is based on daily data # site <- "263819081585801" p_code_dv <- "62610" statCd <- "00001" -# gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -gwl_data <- L2701_example_data$Daily -weekly_frequency_plot(gwl_data, +# gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +gw_level_dv <- L2701_example_data$Daily +weekly_frequency_plot(gw_level_dv, date_col = "Date", value_col = "X_62610_00001", approved_col = "X_62610_00001_cd") diff --git a/man/weekly_frequency_table.Rd b/man/weekly_frequency_table.Rd index ccfb61dbea94e8b1d974ddec34dea80e7d1b128d..5faf3101478107d786d191ffe92d07611db311a4 100644 --- a/man/weekly_frequency_table.Rd +++ b/man/weekly_frequency_table.Rd @@ -4,10 +4,10 @@ \alias{weekly_frequency_table} \title{Create a table of weekly frequency analysis} \usage{ -weekly_frequency_table(gwl_data, date_col, value_col, approved_col) +weekly_frequency_table(gw_level_dv, date_col, value_col, approved_col) } \arguments{ -\item{gwl_data}{daily groundwater level data +\item{gw_level_dv}{daily groundwater level data from readNWISdv} \item{date_col}{name of date column.} @@ -27,9 +27,9 @@ The weekly frequency analysis is based on daily values # site <- "263819081585801" p_code_dv <- "62610" statCd <- "00001" -# gwl_data <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) -gwl_data <- L2701_example_data$Daily -weekly_frequency <- weekly_frequency_table(gwl_data, +# gw_level_dv <- dataRetrieval::readNWISdv(site, p_code_dv, statCd = statCd) +gw_level_dv <- L2701_example_data$Daily +weekly_frequency <- weekly_frequency_table(gw_level_dv, date_col = "Date", value_col = "X_62610_00001", approved_col = "X_62610_00001_cd") diff --git a/tests/testthat/test_visualize.R b/tests/testthat/test_visualize.R index b2b8e75d9cc463bbe2b42d4e50849951fc5d5161..ebd23a533688af58cf390066054dce104dd67f78 100644 --- a/tests/testthat/test_visualize.R +++ b/tests/testthat/test_visualize.R @@ -87,7 +87,13 @@ test_that("Periodic gwl plot", { plot_out <- gwl_plot_periodic(gwl_data, plot_title) dv <- L2701_example_data$Daily - plot2 <- gwl_plot_all(dv, gwl_data, "title") + plot2 <- gwl_plot_all(dv, gwl_data, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", + "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = "title") expect_true(all(c("lev_dt", "sl_lev_va", "lev_age_cd") %in% names(plot_out[["data"]]))) @@ -97,15 +103,26 @@ test_that("Periodic gwl plot", { "facet","plot_env", "labels") %in% names(plot2))) - plot_with_trend <- gwl_plot_all(dv, gwl_data, "title", add_trend = TRUE) + plot_with_trend <- gwl_plot_all(dv, gwl_data, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", + "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = "title", + add_trend = TRUE) plot_data_elements <- unlist(lapply(plot_with_trend$layers, function(x) {names(x$data)})) - expect_true(all(c("Date", "X_62610_00001", "year", + expect_true(all(c("Date", "Value", "year", "is_complete", "x1", "x2", "y1", "y2", "trend") %in% plot_data_elements)) - plot_with_gwl <- gwl_plot_all(NULL, gwl_data, "title", add_trend = FALSE) + plot_with_gwl <- gwl_plot_all(NULL, gwl_data, + date_col = "lev_dt", + value_col = "sl_lev_va", + approved_col = "lev_age_cd", + plot_title = "title", add_trend = FALSE) plot_elements <- unlist(lapply(plot_with_gwl$layers, function(x) {names(x$data)})) expect_true(all(c("lev_dt", "sl_lev_va", "year", "y") %in% plot_elements)) diff --git a/vignettes/Single_site_combo_data.Rmd b/vignettes/Single_site_combo_data.Rmd index aa2bb7891af3c7873c23ca83b2f2fa23908dbdb5..6c2a3443430bcdbcb061feb5fddff4a64093c5d2 100644 --- a/vignettes/Single_site_combo_data.Rmd +++ b/vignettes/Single_site_combo_data.Rmd @@ -122,7 +122,10 @@ monthly_frequency_plot(gw_level_dv, plot_range = "Past year", y_axis_label = "Groundwater level above NGVD 1929, feet") -monthly_frequency_table(gwl_data) +monthly_frequency_table(gw_level_dv, + date_col = "Date", + value_col = "X_62610_00001", + approved_col = "X_62610_00001_cd") ``` @@ -175,8 +178,10 @@ daily_gwl_2yr_plot(gw_level_dv, historical_stat = "median", y_axis_label = "Groundwater level above NGVD 1929, feet") -daily_gwl_summary(gw_level_dv, date_col = "Date", - value_col = "X_62610_00001", approved_col = "X_62610_00001_cd") +daily_gwl_summary(gw_level_dv, + date_col = "Date", + value_col = "X_62610_00001", + approved_col = "X_62610_00001_cd") ``` <table> @@ -255,7 +260,16 @@ kable(sitePeriodic, digits = 1) ### Period of Record - All Data Types ```{r dvPlotDisplay, eval=FALSE} -gwl_plot_all(gw_level_dv, gwl_data, plot_title) +y_label <- dataRetrieval::readNWISpCode("62610")$parameter_nm + +gwl_plot_all(gw_level_dv, + gwl_data, + y_label = y_label, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = plot_title) site_data_summary(gw_level_dv, "X_62610_00001") ``` @@ -264,7 +278,17 @@ site_data_summary(gw_level_dv, "X_62610_00001") <tr><td> ```{r dvPlot, echo=FALSE} -gwl_plot_all(gw_level_dv, gwl_data, plot_title) +y_label <- dataRetrieval::readNWISpCode("62610")$parameter_nm + +gwl_plot_all(gw_level_dv, + gwl_data, + y_label = y_label, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = plot_title) + ``` </td><td> diff --git a/vignettes/Single_site_water_level.Rmd b/vignettes/Single_site_water_level.Rmd index d23d4ffdc555cc21fc899043dc88fbbd8e6d694c..833c38b5d69a01b17110fe7190c41047a69e2800 100644 --- a/vignettes/Single_site_water_level.Rmd +++ b/vignettes/Single_site_water_level.Rmd @@ -221,10 +221,18 @@ kable(head(daily_table, 10)) ### Daily value trends ```{r trend_dv, eval=FALSE} - -gwl_plot_all(gw_level_dv, plot_title = site_title, - gwl_data, add_trend = TRUE, - p_code_dv = parameterCd) +y_label <- dataRetrieval::readNWISpCode("62610")$parameter_nm + +gwl_plot_all(gw_level_dv, + gwl_data, + y_label = y_label, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", + "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = site_title, + add_trend = TRUE) site_data_summary(gw_level_dv, "X_62610_00001") @@ -241,9 +249,18 @@ kendell_test_5_20_years(gw_monthly, <tr><td> ```{r gwlTrendplot, echo=FALSE} -gwl_plot_all(gw_level_dv, plot_title = site_title, - gwl_data, add_trend = TRUE, - p_code_dv = parameterCd) +y_label <- dataRetrieval::readNWISpCode("62610")$parameter_nm + + +gwl_plot_all(gw_level_dv, gwl_data, + y_label = y_label, + date_col = c("Date", "lev_dt"), + value_col = c("X_62610_00001", + "sl_lev_va"), + approved_col = c("X_62610_00001_cd", + "lev_age_cd"), + plot_title = site_title, + add_trend = TRUE) ``` @@ -284,7 +301,12 @@ kable(trend_result, digits = 1) ### Periodic values ```{r manual, eval=FALSE} -gwl_plot_all(NULL, gwl_data, plot_title = site_title) +gwl_plot_all(NULL, gwl_data, + y_label = y_label, + date_col = "lev_dt", + value_col = "sl_lev_va", + approved_col = "lev_age_cd", + plot_title = site_title) site_data_summary(gwl_data, "sl_lev_va") ``` @@ -293,7 +315,12 @@ site_data_summary(gwl_data, "sl_lev_va") <tr><td> ```{r manualPlot, echo=FALSE} -gwl_plot_all(NULL, gwl_data, plot_title = site_title) +gwl_plot_all(NULL, gwl_data, + y_label = y_label, + date_col = "lev_dt", + value_col = "sl_lev_va", + approved_col = "lev_age_cd", + plot_title = site_title) ```