install.packages('devtools')
Note that whenever the waterNETN
package is updated, you
can rerun this code to install the latest version.
library(devtools)
install_github("KateMMiller/waterNETN")
install_github("KateMMiller/climateNETN")
library(waterNETN)
library(climateNETN)
Note that R is not able to connect to files on Sharepoint or MS Teams
(b/c Teams also stores all files on Sharepoint). That means you need to
store data package files on your local machine or on a server (e.g. NETN
Z drive). The default option for importing data will add the data
package views (i.e., flatfiles) to an environment called VIEWS_WQ to
your Environment work space (i.e. Environment tab in top right panel).
If you would rather import each individual view into your R session,
specify with the new_env argument (e.g.,
importData(new_env = F)
).
Option 1. Import data via .csv files. The file path should be where csvs are on your machine or server.
importData(type = 'csv',
filepath = "C:/NETN/R_Dev/Water/data") # update filepath to your computer
Option 2. Import data via zip file of csvs. The filepath should be the location and name of the zip file.
importData(type = 'zip',
filepath = "C:/NETN/R_Dev/Water/data/NETN_Water_Data_Package_20240423.zip")
Option 3. Import data via data package database file on your computer
importData(type = 'dbfile',
filepath = "C:/NETN/R_Dev/Water/data/NETN_h3Ov4_DataPackage_202331115.accdb")
Option 4. Import data via data package database DSN (Data Source Name) on your computer. Note that this is the default setting. As long as you have a named DSN called “NETNWQ_DP” that links to the data package database, and that database links to the latest NETN WQ backend database, the code below will run. See Setting up DSN tab for how to set up DSN.
importData() # easiest
importData(type = 'DSN', odbc = "NETNWQ_DP") # equivalent to line above
You can export all of the csvs to a zip file with the day’s date stamped on the file name. This allows you to import the tables from the database, then export the csvs as one zip file.
importData() # easiest
exportData(filepath = "./data", zip = TRUE)
The functions in the waterNETN
package are designed to
work with the views, and are the best way to interact with the data to
query by park, site, site type, year, parameter, etc. However, if you
want to view the raw data, and you imported the data into the VIEWS_WQ
environment, you can access them with the code below:
# See list of the views
names(VIEWS_WQ)
# View one of the views
View(VIEWS_WQ$Chemistry_Data)
# Assign a view to a data frame named chem in R. Interact with chem the way you would work with any normal data frame in R.
chem <- VIEWS_WQ$Chemistry_Data
If you want to use the print_head()
function that shows
output in the markdown, run the code below. This makes the results print
cleaner in the markdown report. For your purposes, you can just run:
head(dataframe)
.
print_head <- function(df){
knitr::kable(df[1:6,]) |> #, table.attr = "style='width:60%;'") |>
kableExtra::kable_classic(full_width = F, font_size = 12,
bootstrap_options = c("condensed"))
}
The functions in waterNETN
have help documentation like
any R package. To view the help, you can go to the Packages tab and
click on waterNETN (see below). That will show you all the functions in
the package. Clicking on individual functions will take you to the help
documentation for that function.
You can also see the help of a function by running, for example:
?importData
If waterNETN
isn’t loaded yet, you’d run:
?waterNETN::importData
Each function’s help includes a Description, Usage (i.e. function arguments and their defaults), Argument options/definitions, and several examples showing how the function can be used.
This is where you come in! If you notice typos or can think of better descriptions, examples, error messages, etc., please send them my way! After we’re more comfortable with R packages and get versed on GitHub, you’ll be able to make those changes directly in the package. For now, you can just send me your suggestions and I’ll make the changes.
Finally, if you ever want to peak under the hood at the function, you can view it several ways.View code in the GitHub katemmiller/waterNETN repo. The functions are in the R folder.
Note that this function now lives in climateNETN package. Extracts gridded NOAA climate data for park centroids. After looking over Daymet, Prism and weather station data, I’ve settled on the NOAA gridded data to make comparisons because they use the same algorithm and scale to calculate historic averages and annual data. Historic averages are available for the 20th century (1901 - 2000), which I also like, and for the latest 30 year normal (1991 - 2020). The normals for NETN park centroids have been compiled and are a data source that exists when you install the waterNETN package (called NETN_clim_norms.rda). This means you don’t have to download or summarize the normals every time you want to use them, which speeds up plotting. You can download data as far back as 1951. However, I’ve also saved time by compiling all of the monthly data from Jan. 1895 - May 2024, and saved this as a dataset for the package called NETN_clim_annual.rda (see code chunk below on how to access this data set). That means you only need to download and compile data for months after May 2024. I have a webalert set for when a new month is posted, and will add that to the annual data as I have time. If I get behind, you can use the getClimNOAA() function to download the new months of data.
I’ve also updated all of the climate comparison plotting functions to work with the NOAA data. These functions will check for months not included in the NETN_clim_annual, and will download what’s available. The plotting functions use getClimNOAA() under the hood to perform this. You’re therefore unlikely to need to use the getClimNOAA() function yourself, unless you want to summarize/plot the data not using functions in waterNETN.
Currently the getClimNOAA()
function only works for 1
year at a time, which should be fine, because I’ve already compiled 1895
- May 2024 data. New data availability is usually delayed by about 2
weeks after a month ends. For example, on 6/16/2024, the data for May
2024 were posted as final. If you try to download data for a month
before it’s available, you’ll get an error telling you which months are
not available yet. You then just need to change your months
argument to include only the months that didn’t fail.
The more months you include in the function, the longer it will take, as each month and climate variable is a separate raster to download. Number of parks minimally impacts performance.
get weather data for January - May 2024 for all NETN.
This may take a minute or so to download. If you’re ultimately interested in plotting the data using one of the waterNETN package functions, don’t worry about downloading separately. Just run the function, and it will run this function under the hood for months not already compiled.
netn_jan_may <- climateNETN::getClimNOAA(months = 1:5)
print_head(netn_jan_may)
UnitCode | UnitName | long | lat | prcp | tmax | tmin | tavg | year | month |
---|---|---|---|---|---|---|---|---|---|
ACAD | Acadia National Park | -68.26019 | 44.37656 | 128.6201 | 0.8398438 | -6.320312 | -2.7402344 | 2024 | 1 |
BOHA | Boston Harbor Islands National Recreation Area | -71.02159 | 42.27097 | 203.5400 | 3.9902344 | -3.269531 | 0.3603516 | 2024 | 1 |
ROVA | Roosevelt-Vanderbilt National Historic Sites | -73.92672 | 41.76804 | 136.7100 | 3.2304688 | -4.599609 | -0.6904297 | 2024 | 1 |
MABI | Marsh-Billings-Rockefeller National Historical Park | -72.53824 | 43.63382 | 132.2002 | 0.1601562 | -7.700195 | -3.7695312 | 2024 | 1 |
MIMA | Minute Man National Historical Park | -71.29604 | 42.45340 | 178.2305 | 3.9003906 | -5.490234 | -0.7998047 | 2024 | 1 |
MORR | Morristown National Historical Park | -74.53749 | 40.76780 | 181.6797 | 4.5800781 | -3.309570 | 0.6396484 | 2024 | 1 |
Get weather data for May 2024 for ROVA
rova_may <- climateNETN::getClimNOAA(park = "ROVA", months = 5)
head(rova_may)
## UnitCode
## 1 ROVA
## UnitName
## 1 Roosevelt-Vanderbilt National Historic Sites
## long
## 1 -73.92672
## lat
## 1 41.76804
## prcp
## 1 85.50977
## tmax
## 1 23.55957
## tmin
## 1 12.00977
## tavg
## 1 17.79004
## year
## 1 2024
## month
## 1 5
Get weather data for all of 2023 in LNETN
lnetn_2023 <- climateNETN::getClimNOAA(park = "LNETN", year = 2023, months = 1:12)
print_head(lnetn_2023)
UnitCode | UnitName | long | lat | prcp | tmax | tmin | tavg | year | month |
---|---|---|---|---|---|---|---|---|---|
ROVA | Roosevelt-Vanderbilt National Historic Sites | -73.92672 | 41.76804 | 93.80957 | 6.440430 | -1.2197266 | 2.6103516 | 2023 | 1 |
MABI | Marsh-Billings-Rockefeller National Historical Park | -72.53824 | 43.63382 | 108.36035 | 2.370117 | -4.8896484 | -1.2597656 | 2023 | 1 |
MIMA | Minute Man National Historical Park | -71.29604 | 42.45340 | 149.94043 | 6.660156 | -1.7802734 | 2.4404297 | 2023 | 1 |
MORR | Morristown National Historical Park | -74.53749 | 40.76780 | 129.42969 | 8.209961 | 0.4199219 | 4.3203125 | 2023 | 1 |
SAGA | Saint-Gaudens National Historical Park | -72.37403 | 43.50047 | 103.87988 | 2.580078 | -4.3496094 | -0.8896484 | 2023 | 1 |
SAIR | Saugus Iron Works National Historic Site | -71.00776 | 42.46850 | 167.75000 | 6.339844 | -2.0000000 | 2.1699219 | 2023 | 1 |
View dataset containing 1895 - 2024 NOAA climate data
library(climateNETN)
data("NETN_clim_annual")
print_head(NETN_clim_annual)
UnitCode | UnitName | long | lat | ppt | tmax | tmin | tmean | year | month |
---|---|---|---|---|---|---|---|---|---|
ACAD | Acadia National Park | -68.26019 | 44.37656 | 150.50000 | -0.5898438 | -12.139648 | -6.370117 | 1895 | 1 |
BOHA | Boston Harbor Islands National Recreation Area | -71.02159 | 42.27097 | 96.19043 | 0.7099609 | -8.129883 | -3.709961 | 1895 | 1 |
ROVA | Roosevelt-Vanderbilt National Historic Sites | -73.92672 | 41.76804 | 92.76953 | -1.7099609 | -10.780273 | -6.250000 | 1895 | 1 |
MABI | Marsh-Billings-Rockefeller National Historical Park | -72.53824 | 43.63382 | 55.83984 | -2.6503906 | -16.750000 | -9.700195 | 1895 | 1 |
MIMA | Minute Man National Historical Park | -71.29604 | 42.45340 | 92.24023 | 0.1298828 | -10.809570 | -5.339844 | 1895 | 1 |
MORR | Morristown National Historical Park | -74.53749 | 40.76780 | 118.08984 | 0.2197266 | -9.500000 | -4.639648 | 1895 | 1 |
This function now lives in climateNETN. This function is no longer the primary function to get climate data, but instead climateNETN::getClimNOAA() is the main function..
Daymet data are 1km gridded daily climate data, similar to PRISM data, but with more daily data associated with each location and more efficient downloading process (extract data from lat/long points, rather than download nationwide raster files and extract manually). Daymet data go back to 1980. See https://daymet.ornl.gov/ for more information. Another benefit of Daymet over PRISM is the data can be used to calculate drought indices, like Standardized Precipitation-Evapotranspiration Index (SPEI). Note: I’ll eventually add SPEI metrics to the output of this function.
Daymet data are typically available for a calendar year a a few months into the next year.
In climateNETN, you can download Daymet data by park centroid and spanning years 1980 to 2023. See examples below. The larger the number of parks and years, the longer it can take.
The following code downloads Daymet data for MORR for the entire monitoring period.
morr<- climateNETN::getClimDaymet(site = "MORR", years = 2006:2023)
print_head(morr) # table of first 6 rows- this is a custom function I wrote to save on coding
The following code downloads Daymet data for MABI for 2023. Results are assigned to R session environment and not exported to data folder in the working directory.
# Daymet data for the MABI for 2023, but not exporting to disk.
mabi_dm <- getClimDaymet(park = "MABI", years = 2023)
print_head(mabi_dm)
This function now lives in the climateNETN package..
For each NETN monitoring site, I used the rnoaa
package
to find all weather stations within 20km radius of each site’s lat/long
coordinates. I then checked the period of record for each of these
sites. I selected the closest weather station with the longest period of
record that included 2023 and 2024. This assessment was done at the park
level, so the data for each site within a park is the same. The API used
to download weather station data is
data.rcc-acis.org. Unfortunately only
temperature data are available for ACAD’s McFarland Hill weather station
(AKA MARS). ACAD’s hourly precipitation data were downloaded separately
from the NADP website
http://nadp2.slh.wisc.edu/siteOps/ppt/.
These data only go back to 2008 and were aggregated to daily total
precipitation. This function is slower for ACAD as a result. Though note
that data are downloaded at the park level, then joined with
site-specific data. In other words, data are downloaded for a park x
combination of years once, then joined to site-level data. Weather
stations used and their distance from each site are included in the
output.
The following code downloads weather station data for ROVA in the past 10 years and writes to a csv.
rova_ws <- climateNETN::getClimWStat(park = "ROVA", years = 2013:2023, export = T,
filepath = "./data")
print_head(rova_ws)
The following code downloads weather station data for ACAD in 2023, but doesn’t export to disk.
acad_ws <- climateNETN::getClimWStat(park = "ACAD", years = 2023)
print_head(acad_ws)
This function now lives in climateNETN R
package.This function downloads weekly drought index at the county
level based on the U.S. Drought Monitor for each specified park. If
downloading for multiple parks and multiple weeks/years, function may be
slow. Returned data frame includes percent of county area in 5 levels of
drought, with D0 = Abnormally Dry, D1 = Moderate Drought, D2 = Severe
Drought, D3 = Extreme Drought, and D4 = Exceptional Drought. Also
returned is the Drought Severity and Coverage Index, which ranges from 0
to 500, and is a weighted sum of area within each of the drought
categories. A score of 500 indicates the entire area is in exceptional
drought (D4). Where multiple counties occur in a park, data can be
faceted by county if dom_county = FALSE
. To only plot
predominant county, specify dom_county = TRUE (default). Otherwise, only
park-level data are returned, as the results won’t vary by site within a
park. Note that Drought Monitor reports data such that, when drought a
level moves into a higher category (e.g. D1 = 10), the previous level
(e.g. D0) is listed as 100. The columns with pct (e.g. D0pct) correct
for that, so that D0 + … + D05 + None = 100.For more info on the data,
see <US
Drought Monitor
Get drought info for MABI and SAGA sites for first week of May
mabisaga <- climateNETN::getClimDrought(park = c("MABI", "SAGA"), week_start = "05/01/2024")
print_head(mabisaga)
MapDate | FIPS | County | State | None | D0 | D1 | D2 | D3 | D4 | ValidStart | ValidEnd | StatisticFormatID | UnitCode | DSCI | D0pct | D1pct | D2pct | D3pct | D4pct | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 20240507 | 50027 | Windsor County | VT | 100 | 0 | 0 | 0 | 0 | 0 | 2024-05-07 | 2024-05-13 | 1 | MABI | 0 | 0 | 0 | 0 | 0 | 0 |
2 | 20240430 | 50027 | Windsor County | VT | 100 | 0 | 0 | 0 | 0 | 0 | 2024-04-30 | 2024-05-06 | 1 | MABI | 0 | 0 | 0 | 0 | 0 | 0 |
3 | 20240507 | 33019 | Sullivan County | NH | 100 | 0 | 0 | 0 | 0 | 0 | 2024-05-07 | 2024-05-13 | 1 | SAGA | 0 | 0 | 0 | 0 | 0 | 0 |
4 | 20240430 | 33019 | Sullivan County | NH | 100 | 0 | 0 | 0 | 0 | 0 | 2024-04-30 | 2024-05-06 | 1 | SAGA | 0 | 0 | 0 | 0 | 0 | 0 |
NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Get drought info for both counties in MORR in 2023
morr <- climateNETN::getClimDrought(park = "MORR", years = 2023, dom_county = TRUE)
print_head(morr)
MapDate | FIPS | County | State | None | D0 | D1 | D2 | D3 | D4 | ValidStart | ValidEnd | StatisticFormatID | UnitCode | DSCI | D0pct | D1pct | D2pct | D3pct | D4pct |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
20231226 | 34027 | Morris County | NJ | 100.00 | 0.00 | 0 | 0 | 0 | 0 | 2023-12-26 | 2024-01-01 | 1 | MORR | 0 | 0.00 | 0 | 0 | 0 | 0 |
20231219 | 34027 | Morris County | NJ | 100.00 | 0.00 | 0 | 0 | 0 | 0 | 2023-12-19 | 2023-12-25 | 1 | MORR | 0 | 0.00 | 0 | 0 | 0 | 0 |
20231212 | 34027 | Morris County | NJ | 100.00 | 0.00 | 0 | 0 | 0 | 0 | 2023-12-12 | 2023-12-18 | 1 | MORR | 0 | 0.00 | 0 | 0 | 0 | 0 |
20231205 | 34027 | Morris County | NJ | 64.42 | 35.58 | 0 | 0 | 0 | 0 | 2023-12-05 | 2023-12-11 | 1 | MORR | 36 | 35.58 | 0 | 0 | 0 | 0 |
20231128 | 34027 | Morris County | NJ | 64.42 | 35.58 | 0 | 0 | 0 | 0 | 2023-11-28 | 2023-12-04 | 1 | MORR | 36 | 35.58 | 0 | 0 | 0 | 0 |
20231121 | 34027 | Morris County | NJ | 9.71 | 90.29 | 0 | 0 | 0 | 0 | 2023-11-21 | 2023-11-27 | 1 | MORR | 90 | 90.29 | 0 | 0 | 0 | 0 |
Query site-level data. This function combines columns in common between the Sites_Stream and Sites_Lake views. This is a good building block for other functions, but may be less helpful on its own. Though, one helpful use of this function is to get the site codes for a given park or site.
Get site info for ACAD lakes
ACAD_lakes <- getSites(park = "ACAD", site_type = "lake")
Get site info for the Pogue
pogue <- getSites(site = "MABIPA")
List site codes and their full site name for SARA
sara_sites <- getSites(park = "SARA") |> select(SiteCode, SiteName)
print_head(sara_sites)
SiteCode | SiteName | |
---|---|---|
1 | SARASA | Kroma Kill |
2 | SARASC | Upper Mill Creek |
3 | SARASD | Mill Creek Confluence |
NA | NA | NA |
NA.1 | NA | NA |
NA.2 | NA | NA |
Get site info for ACAD lakes
ACAD_str <- getSitesLake(park = "ACAD")
print_head(ACAD_str)
SiteCode | SiteName | UnitCode | SubUnitCode | HUC12 | ContribWshedArea_km2 | Inlet | Outlet | MaxDepth_m | TrophicType | LegislativeClass | FishMgtType | SiteDescription | Notes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACANTB | Aunt Bettys Pond | ACAD | NA | 10500021502 | 2.77 | unnamed | RICHARDSON BRK | 2.1 | EUTROPHIC | GPA | COLDWATER | Shallow, marshy pond with an area of 31.5 acres. Inlet: Aunt Betty Inlet. Outlet: Richardson Brook. | Pond is full of emergent vegetation by mid-summer. Deep hole is in NE corner, near outlet. Surrounded by ANP. Last surveyed by IFW in 1982. Closed to ice fishing. |
ACBOWL | The Bowl | ACAD | NA | 10500021501 | 0.21 | NA | OTTER CREEK | 9.0 | MESOTROPHIC | GPA | NONE | High elevation, mesotrophic pond located between Cahamplaine Mtn. and The Beehive. | Located off the Beehive Trail. Fish survey conducted in 1995 BY J.R. Burgess. Not monitored by NETN- sampled annually for acid depositon effects by ACAD staff. Once served as water supply for Satterlee estate. |
ACBRBK | Bear Brook Pond | ACAD | NA | 10500021501 | NA | BEAR BROOK | BEAR BROOK | 3.9 | MESOTROPHIC | GPA | NONE | Mesotrophic, unstratified pond with an area of 7.5 acres. Its inlet and outlet is Bear Brook. | Located on Park Loop Road near Jackson Lab. Site of ANP purple loosestrife monitoring/control plots. Active beaver in area. Fish survey in 1995 by J.R. Burgess. Also known as Beaver Dam Pond. |
ACBUBL | Bubble Pond | ACAD | NA | 10500021501 | 1.77 | unnamed | BUBBLE BROOK | 11.9 | MESOTROPHIC | GPA | COLDWATER | Oligotrophic, stratified lake with an area of 33 acres. Part of the public water supply. Inlet: unnamed stream on southern end. Outlet: Bubble Brook. | Surrounded by ANP. Connects with Bar Harbor water supply. Last surveyed by IFW in 1942. Closed to ice fishing. |
ACEAGL | Eagle Lake | ACAD | NA | 10500021501 | 5.60 | BUBBLE BROOK | DUCK BROOK | 33.5 | OLIGOTROPHIC | GPA | COLDWATER | Oligotrophic, stratified lake with an area of 465.8 acres. Part of the public water supply. Inlet: Bubble Brook. Outlet: Duck Brook. | LLS spawning area built in outlet in 55. 10 hp outboard limit. Last surveyed by IFW in 1990. Surrounded by ANP. |
ACECHO | Echo Lake | ACAD | NA | 10500021502 | 5.10 | LURVEY SPRG BRK | DENNING BROOK | 20.1 | OLIGOTROPHIC | GPA | COLDWATER | Oligotrophic, stratified lake with an area of 236.8 acres. Inlet: Lurvey Spring Brook. Outlet: Denning Brook. | Partial boundary w/ANP. Last surveyed by IFW in 1988. Outboard hp restrictions. Reclaimed in 1956. Guarded ANP swim beach on south end. |
Get all site info for the Pogue Pond
pogue <- getSitesLake(site = "MABIPA", output = 'verbose')
print_head(pogue)
GroupCode | GroupName | UnitCode | UnitName | SubUnitCode | SubUnitName | SiteCode | SiteName | SiteLatitude | SiteLongitude | Datum | XYAccuracy | HUC12 | ContribWshedArea_km2 | Inlet | Outlet | MaxDepth_m | TrophicType | LegislativeClass | FishMgtType | SiteDescription | Notes | IsPointCUI | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | NETN | Northeast Temperate Network | MABI | Marsh-Billings-Rockefeller National Historical Park | NA | NA | MABIPA | The Pogue | 43.63336 | -72.54263 | NAD83 | NA | 10801060206 | 0.57 | NA | Pogue Brk | 3.4 | MESOTROPHIC | A(1) | COLDWATER | The Pogue is a 14-acre pond at the headwaters of the Pogue Brook. Naturally a spring-fed boggy area, it was created in the 1880s with an earthen dam. Swimming, fishing, or wading is prohibited. | FALSE | |
NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Get site info for ACAD streams
ACAD_str <- getSitesStream(park = "ACAD")
print_head(ACAD_str)
SiteCode | UnitCode | SubUnitCode | USGS_StaNumb | ContribWshedArea_km2 | SiteDescription | Notes | LegislativeClass | FisheryType |
---|---|---|---|---|---|---|---|---|
ACABIN | ACAD | NA | 1022869 | 2.4802373 | The inlet flows north from Gilmore Meadow into Aunt Betty Pond. | Beavers often present both US & DS of carriage road. | AA | Warmwater |
ACBRKB | ACAD | NA | 1022825 | 3.7293399 | The stream flows north from the Breakneck Ponds and into the ocean (Hulls Cove). | Exact sampling point can vary depending on streamflow/water level. Hits baseflow in dry years. | AA | Coldwater |
ACBRWN | ACAD | NA | 1022866 | 1.1840292 | The stream flows northwest from Parkman Mountain into the ocean (Somes Sound). Measure east (US) of culvert under Sargent Drive. | Very close to municipal sand/salt storage facility. | AA | Coldwater |
ACCADS | ACAD | NA | 1022835 | 0.6223256 | On right bank approximately 500 feet upstream of the crossing of Canon Brook Trail (500 ft upstream from confluence with Otter Creek and 0.5 miles southeast of Cadillac summit) | High-elevation stream flows south on the east face of Cadillac mountain into Canon Brook- Otter Creek. Former site of USGS stream gage 01022835 (1999- 2006). | AA | Coldwater |
ACDKLI | ACAD | NA | 10228755 | 0.4818996 | The stream flows north from Duck Pond into Long Pond (MDI). | Can be near or at baseflow in dry years and difficult to measure streamflow. | AA | Coldwater |
ACDUCK | ACAD | NA | 1022827 | 9.6264998 | Sample site is located north of Rte. 233 crossing, approx. 200 ft. DS of culvert. | Duck Brook flows north from Eagle Lake into the ocean (Hulls Cove/Frenchman Bay). Established in 2009, replaces ACEGLO. | AA | Coldwater |
Get all site info for the Pogue Stream
poguestr <- getSitesStream(site = "MABISA", output = 'verbose')
print_head(poguestr)
GroupCode | GroupName | UnitCode | UnitName | SubUnitCode | SubUnitName | SiteCode | SiteName | SiteLatitude | SiteLongitude | Datum | XYAccuracy | USGS_StaNumb | ContribWshedArea_km2 | SiteDescription | Notes | LegislativeClass | FisheryType | IsPointCUI | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | NETN | Northeast Temperate Network | MABI | Marsh-Billings-Rockefeller National Historical Park | NA | NA | MABISA | Pogue Brook | 43.63493 | -72.52937 | NAD83 | NA | NA | 0.9945554 | Only stream within the park, the outlet of The Pogue. One stream-sampling site was selected to represent Pogue Brook. This site was chosen because it is the most downstream location within park boundaries. | A(1) | Coldwater | FALSE | |
NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.2 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.3 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
NA.4 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Query water data by park, site, site_type, year and month.
Get event info for Witch Hole Pond in ACAD in 2023
ACAD_lakes <- getEvents(site = "ACWHOL", years = 2023)
print_head(ACAD_lakes)
UnitCode | UnitName | SiteCode | SiteName | SiteType | SiteLatitude | SiteLongitude | EventDate | EventCode | year | month | doy | Project |
---|---|---|---|---|---|---|---|---|---|---|---|---|
ACAD | Acadia National Park | ACWHOL | Witch Hole Pond | Lake | 44.40001 | -68.24295 | 2023-05-17 | 4652 | 2023 | 5 | 136 | NETN_LS |
ACAD | Acadia National Park | ACWHOL | Witch Hole Pond | Lake | 44.40001 | -68.24295 | 2023-06-26 | 4698 | 2023 | 6 | 176 | NETN_LS |
ACAD | Acadia National Park | ACWHOL | Witch Hole Pond | Lake | 44.40001 | -68.24295 | 2023-07-26 | 4741 | 2023 | 7 | 206 | NETN_LS |
ACAD | Acadia National Park | ACWHOL | Witch Hole Pond | Lake | 44.40001 | -68.24295 | 2023-08-21 | 4782 | 2023 | 8 | 232 | NETN_LS |
ACAD | Acadia National Park | ACWHOL | Witch Hole Pond | Lake | 44.40001 | -68.24295 | 2023-09-18 | 4818 | 2023 | 9 | 260 | NETN_LS |
ACAD | Acadia National Park | ACWHOL | Witch Hole Pond | Lake | 44.40001 | -68.24295 | 2023-10-23 | 4894 | 2023 | 10 | 295 | NETN+ACID |
Get event info for all years in the Pogue
pogue <- getEvents(site = "MABIPA", years = 2006:2023)
print_head(pogue)
UnitCode | UnitName | SiteCode | SiteName | SiteType | SiteLatitude | SiteLongitude | EventDate | EventCode | year | month | doy | Project |
---|---|---|---|---|---|---|---|---|---|---|---|---|
MABI | Marsh-Billings-Rockefeller National Historical Park | MABIPA | The Pogue | Lake | 43.63336 | -72.54263 | 2006-06-13 | 1330 | 2006 | 6 | 163 | NETN_LS |
MABI | Marsh-Billings-Rockefeller National Historical Park | MABIPA | The Pogue | Lake | 43.63336 | -72.54263 | 2006-07-20 | 671 | 2006 | 7 | 200 | NETN_LS |
MABI | Marsh-Billings-Rockefeller National Historical Park | MABIPA | The Pogue | Lake | 43.63336 | -72.54263 | 2006-08-23 | 1331 | 2006 | 8 | 234 | NETN_LS |
MABI | Marsh-Billings-Rockefeller National Historical Park | MABIPA | The Pogue | Lake | 43.63336 | -72.54263 | 2006-09-13 | 1054 | 2006 | 9 | 255 | NETN_LS |
MABI | Marsh-Billings-Rockefeller National Historical Park | MABIPA | The Pogue | Lake | 43.63336 | -72.54263 | 2006-10-11 | 1055 | 2006 | 10 | 283 | NETN_LS |
MABI | Marsh-Billings-Rockefeller National Historical Park | MABIPA | The Pogue | Lake | 43.63336 | -72.54263 | 2007-05-08 | 1057 | 2007 | 5 | 127 | NETN_LS |
Get date of sampling each site in lower NETN in May, 2023
lnetn_evs <- getEvents(park = "LNETN", years = 2023, months = 5) |>
select(SiteCode, SiteName, EventDate)
print_head(lnetn_evs) #just printing first 6 rows
SiteCode | SiteName | EventDate |
---|---|---|
MABIPA | The Pogue | 2023-05-16 |
MABISA | Pogue Brook | 2023-05-16 |
MIMASA | Mill Brook | 2023-05-02 |
MIMASB | Elm Brook | 2023-05-02 |
MIMASC | Concord River | 2023-05-02 |
MORRSB | Primrose Brook Confluence | 2023-05-10 |
This function allows you to query the Chemistry_Data view by park, site, site type, year, month, parameter, and sample type. The returned data frame is long (i.e. stacked) to facilitate data summary and plotting. Note that sample depth is not a filter in getChemistry() as it is with the Sonde In Situ data.
Get N parameters for all sites and non-QAQC events in MIMA.
Note that QC_type = "ENV"
is the default for this
function, which returns only non-QAQC events. Note also the use of named
objects for the arguments. This allows you to set them at the top of a
script, rather than having to type them out repeatedly. You can then
change them in 1 place (i.e., update the year to 2024) and rerun the
code.
n_params <- c("NH3", "NH3_mgL", "NO2", "NO2_mgL", "NO2+NO3",
"NO2+NO3_mgL", "NO3", "NO3_ueqL", "TN", "TN_mgL")
period <- 2006:2023
mima_n <- getChemistry(park = "MIMA", years = period, parameter = n_params)
print_head(mima_n) # top 6 rows
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | datetime | QCtype | SampleType | SampleTime | SampleDepth_m | Parameter | Value | ValueFlag | ValueUnit | ValueDetectionCondition | censored | LabCode |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MIMASA | Mill Brook | MIMA | NA | 2006-08-21 | 766 | NETN_LS | 2006 | 8 | 232 | 2006-08-21 12:45:00 | ENV | G | 12:45:00 | 0.2 | TN_mgL | 0.560 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MIMASA | Mill Brook | MIMA | NA | 2006-08-21 | 766 | NETN_LS | 2006 | 8 | 232 | 2006-08-21 12:45:00 | ENV | G | 12:45:00 | 0.2 | NO2+NO3_mgL | 0.169 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MIMASA | Mill Brook | MIMA | NA | 2006-08-21 | 766 | NETN_LS | 2006 | 8 | 232 | 2006-08-21 12:45:00 | ENV | G | 12:45:00 | 0.2 | NH3_mgL | 0.030 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MIMASA | Mill Brook | MIMA | NA | 2006-08-21 | 766 | NETN_LS | 2006 | 8 | 232 | 2006-08-21 12:45:00 | ENV | G | 12:45:00 | 0.2 | NO2_mgL | 0.002 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MIMASA | Mill Brook | MIMA | NA | 2007-05-07 | 770 | NETN_LS | 2007 | 5 | 126 | 2007-05-07 12:31:00 | ENV | G | 12:31:00 | 0.2 | NO2+NO3_mgL | 0.338 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MIMASA | Mill Brook | MIMA | NA | 2007-05-07 | 770 | NETN_LS | 2007 | 5 | 126 | 2007-05-07 12:31:00 | ENV | G | 12:31:00 | 0.2 | NO2_mgL | 0.003 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
Get results for all surface samples, including QC samples, in Browns Brook in 2023 in ACAD
brbk <- getChemistry(site = "ACBRWN", QC_type = "all", param = "all",
years = 2023)
print_head(brbk)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | datetime | QCtype | SampleType | SampleTime | SampleDepth_m | Parameter | Value | ValueFlag | ValueUnit | ValueDetectionCondition | censored | LabCode |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACBRWN | Browns Brook | ACAD | NA | 2023-05-08 | 4669 | NETN_LS | 2023 | 5 | 127 | 2023-05-08 15:32:47 | ENV | G | 15:32:47 | 0.1 | TP_ugL | 1.500 | NA | ug/L | Detected and Quantified | FALSE | SWRL |
ACBRWN | Browns Brook | ACAD | NA | 2023-05-08 | 4669 | NETN_LS | 2023 | 5 | 127 | 2023-05-08 15:32:47 | ENV | G | 15:32:47 | 0.1 | ANC_ueqL | 57.600 | NA | ueq/L | Detected and Quantified | FALSE | SWRL |
ACBRWN | Browns Brook | ACAD | NA | 2023-05-08 | 4669 | NETN_LS | 2023 | 5 | 127 | 2023-05-08 15:32:47 | ENV | G | 15:32:47 | 0.1 | DOC_mgL | 0.900 | NA | mg/L | Detected and Quantified | FALSE | SWRL |
ACBRWN | Browns Brook | ACAD | NA | 2023-05-08 | 4669 | NETN_LS | 2023 | 5 | 127 | 2023-05-08 15:32:47 | ENV | G | 15:32:47 | 0.1 | pH_Lab | 6.660 | NA | pH std units | Detected and Quantified | FALSE | SWRL |
ACBRWN | Browns Brook | ACAD | NA | 2023-05-08 | 4669 | NETN_LS | 2023 | 5 | 127 | 2023-05-08 15:32:47 | ENV | G | 15:32:47 | 0.1 | TN_mgL | 0.038 | NA | mg/L | Detected and Quantified | FALSE | SWRL |
ACBRWN | Browns Brook | ACAD | NA | 2023-06-08 | 4710 | NETN_LS | 2023 | 6 | 158 | 2023-06-08 14:03:51 | ENV | G | 14:03:51 | 0.1 | pH_Lab | 6.540 | NA | pH std units | Detected and Quantified | FALSE | SWRL |
Get ANC for LNETN parks for all years during month of May. Note that by not specifying years, all years by default will be included in the output.
anc <- getChemistry(park = "LNETN", param = "ANC", months = 5)
print_head(anc)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | datetime | QCtype | SampleType | SampleTime | SampleDepth_m | Parameter | Value | ValueFlag | ValueUnit | ValueDetectionCondition | censored | LabCode |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MABISA | Pogue Brook | MABI | NA | 2007-05-08 | 676 | NETN_LS | 2007 | 5 | 127 | 2007-05-08 13:25:00 | ENV | G | 13:25:00 | 0.2 | ANC_ueqL | 1416.2 | NA | ueq/L | Detected and Quantified | FALSE | SECRL |
MABISA | Pogue Brook | MABI | NA | 2008-05-20 | 1107 | NETN_LS | 2008 | 5 | 140 | NA | ENV | G | NA | 0.2 | ANC_ueqL | 1435.0 | NA | ueq/L | Detected and Quantified | FALSE | SECRL |
MABISA | Pogue Brook | MABI | NA | 2009-05-07 | 1224 | NETN_LS | 2009 | 5 | 126 | NA | ENV | G | NA | 0.2 | ANC_ueqL | 1370.0 | NA | ueq/L | Detected and Quantified | FALSE | SECRL |
MABISA | Pogue Brook | MABI | NA | 2010-05-25 | 236 | NETN_LS | 2010 | 5 | 144 | NA | ENV | G | NA | 0.2 | ANC_ueqL | 1770.0 | NA | ueq/L | Detected and Quantified | FALSE | SECRL |
MABISA | Pogue Brook | MABI | NA | 2011-05-24 | 1747 | NETN_LS | 2011 | 5 | 143 | 2011-05-24 14:30:00 | ENV | G | 14:30:00 | 0.2 | ANC_ueqL | 1390.0 | NA | ueq/L | Detected and Quantified | FALSE | SECRL |
MABISA | Pogue Brook | MABI | NA | 2012-05-14 | 1977 | NETN_LS | 2012 | 5 | 134 | 2012-05-14 10:20:00 | ENV | G | 10:20:00 | 0.2 | ANC_ueqL | 1570.0 | NA | ueq/L | Detected and Quantified | FALSE | SECRL |
Get for ACAD lakes from 2021:2023 from all sample depths.
surf <- getChemistry(park = "ACAD", site_type = "lake", years = 2021:2023)
print_head(surf)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | datetime | QCtype | SampleType | SampleTime | SampleDepth_m | Parameter | Value | ValueFlag | ValueUnit | ValueDetectionCondition | censored | LabCode |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACANTB | Aunt Bettys Pond | ACAD | NA | 2021-05-24 | 4171 | NETN_LS | 2021 | 5 | 143 | 2021-05-24 10:26:22 | ENV | G | 10:26:22 | 0.2 | TP_ugL | 11.000 | NA | ug/L | Detected and Quantified | FALSE | SWRL |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2021-05-24 | 4171 | NETN_LS | 2021 | 5 | 143 | 2021-05-24 10:26:22 | ENV | G | 10:26:22 | 0.2 | TN_mgL | 0.372 | NA | mg/L | Detected and Quantified | FALSE | SWRL |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2021-05-24 | 4171 | NETN_LS | 2021 | 5 | 143 | 2021-05-24 10:26:22 | ENV | G | 10:26:22 | 0.2 | DOC_mgL | 5.100 | NA | mg/L | Detected and Quantified | FALSE | SWRL |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2021-05-24 | 4171 | NETN_LS | 2021 | 5 | 143 | 2021-05-24 10:26:22 | ENV | G | 10:26:22 | 0.2 | ChlA_ugL | 2.300 | NA | ug/L | Detected and Quantified | FALSE | SWRL |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2021-06-24 | 4197 | NETN_LS | 2021 | 6 | 174 | 2021-06-24 11:07:28 | ENV | G | 11:07:28 | 0.2 | DOC_mgL | 7.100 | NA | mg/L | Detected and Quantified | FALSE | SWRL |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2021-06-24 | 4197 | NETN_LS | 2021 | 6 | 174 | 2021-06-24 11:07:28 | ENV | G | 11:07:28 | 0.2 | TN_mgL | 0.462 | NA | mg/L | Detected and Quantified | FALSE | SWRL |
Get censored and non-censored NH3 data for LNETN all years. Note the Flag column indicates the measurement is censored by reporting the detection limit used.
cens <- getChemistry(park = "LNETN", param = "NH3", include_censored = TRUE)
print_head(cens)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | datetime | QCtype | SampleType | SampleTime | SampleDepth_m | Parameter | Value | ValueFlag | ValueUnit | ValueDetectionCondition | censored | LabCode |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MABIPA | The Pogue | MABI | NA | 2006-06-13 | 1330 | NETN_LS | 2006 | 6 | 163 | 2006-06-13 15:30:00 | ENV | G | 15:30:00 | 0.2 | NH3_mgL | 0.006 | E, <MRL 0.01 | mg/L | Detected and Quantified | FALSE | NWQL |
MABIPA | The Pogue | MABI | NA | 2006-08-23 | 1331 | NETN_LS | 2006 | 8 | 234 | 2006-08-23 10:45:00 | ENV | G | 10:45:00 | 0.2 | NH3_mgL | 0.068 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MABIPA | The Pogue | MABI | NA | 2007-06-07 | 1058 | NETN_LS | 2007 | 6 | 157 | 2007-06-07 14:30:00 | ENV | G | 14:30:00 | 0.2 | NH3_mgL | 0.053 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MABIPA | The Pogue | MABI | NA | 2007-08-14 | 1060 | NETN_LS | 2007 | 8 | 225 | 2007-08-14 14:20:00 | ENV | G | 14:20:00 | 0.2 | NH3_mgL | 0.099 | NA | mg/L | Detected and Quantified | FALSE | NWQL |
MABIPA | The Pogue | MABI | NA | 2008-06-17 | 1101 | NETN_LS | 2008 | 6 | 168 | NA | ENV | G | NA | 0.2 | NH3_mgL | NA | <MRL 0.08 | mg/L | Present Below Quantification Limit | FALSE | SECRL |
MABIPA | The Pogue | MABI | NA | 2008-08-22 | 1063 | NETN_LS | 2008 | 8 | 234 | NA | ENV | G | NA | 0.2 | NH3_mgL | NA | <MRL 0.08 | mg/L | Present Below Quantification Limit | FALSE | SECRL |
This function allows you to query the Discharge_Data view by park, site, site type, year, month, measurement method (e.g., flowtracker or pygmy), and measurement rating (e.g., E, G, F, P). Note that you can also return all columns or a reduced set of columns with the output argument. Default is output = ‘short’. This function is set up to work with site_type = ‘stream’, so you don’t have to specify that.
Get discharge data for all LNETN sites and years measured with flowtracker
ft <- getDischarge(park = "LNETN", method = "Pygmy")
print_head(ft)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | ReachType | FlowStatus | DischargeMethod | TotalArea_sqft | AvgVel_fs | VelocityFlag | Discharge_cfs | DischargeFlag | MeasurementRating | Comments |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MABISA | Pogue Brook | MABI | NA | 2006-05-16 | 669 | NETN_LS | 2006 | 5 | 135 | NA | NA | Pygmy | 1.98 | 1.06 | NA | 2.50 | NA | NA | NA |
MABISA | Pogue Brook | MABI | NA | 2006-06-13 | 670 | NETN_LS | 2006 | 6 | 163 | Riffle | Stable | Pygmy | 1.21 | 0.65 | NA | 0.95 | NA | NA | post 99 DO level was low, recalibrated and retook 0 and post 99 |
MABISA | Pogue Brook | MABI | NA | 2006-07-20 | 779 | NETN_LS | 2006 | 7 | 200 | Chute | Stable | Pygmy | 0.68 | 0.55 | NA | 0.35 | NA | NA | NA |
MABISA | Pogue Brook | MABI | NA | 2006-08-23 | 672 | NETN_LS | 2006 | 8 | 234 | Run | Stable | Pygmy | 0.31 | 0.45 | NA | 0.13 | NA | NA | no satellite signal |
MABISA | Pogue Brook | MABI | NA | 2006-09-13 | 673 | NETN_LS | 2006 | 9 | 255 | Chute | Stable | Pygmy | 0.29 | 0.35 | NA | 0.11 | NA | NA | NA |
MABISA | Pogue Brook | MABI | NA | 2006-10-11 | 674 | NETN_LS | 2006 | 10 | 283 | Run | Stable | Pygmy | 0.48 | 0.23 | NA | 0.11 | NA | NA | NA |
Get discharge data for all ACAD streams with measurement rating of Excellent or Good
acad <- getDischarge(park = "ACAD", rating = c("E", "G"))
str(acad) # structure of returned data
## 'data.frame': 162 obs. of 20 variables:
## $ SiteCode : chr "ACABIN" "ACABIN" "ACABIN" "ACABIN" ...
## $ SiteName : chr "Aunt Betty Pond Inlet" "Aunt Betty Pond Inlet" "Aunt Betty Pond Inlet" "Aunt Betty Pond Inlet" ...
## $ UnitCode : chr "ACAD" "ACAD" "ACAD" "ACAD" ...
## $ SubUnitCode : chr NA NA NA NA ...
## $ EventDate : POSIXct, format: ...
## $ EventCode : int 3541 3584 3775 4076 4130 4400 4485 4573 4961 3540 ...
## $ Project : chr "NETN_LS" "NETN_LS" "NETN_LS" "NETN_LS" ...
## $ year : num 2018 2018 2018 2020 2020 ...
## $ month : num 5 6 10 7 9 5 7 9 5 5 ...
## $ doy : num 126 157 282 196 253 138 186 243 134 121 ...
## $ ReachType : chr "Run" "Run" "Run" "Run" ...
## $ FlowStatus : chr "Stable" "Stable" "Stable" "Stable" ...
## $ DischargeMethod : chr "Flowtracker" "Flowtracker" "Flowtracker" "Flowtracker" ...
## $ TotalArea_sqft : num 20.21 13.03 18.2 10.19 6.51 ...
## $ AvgVel_fs : num 0.06 0.02 0.03 0.02 0 0.06 0.26 0.19 0.03 0.41 ...
## $ VelocityFlag : chr NA NA NA NA ...
## $ Discharge_cfs : num 1.21 0.21 0.56 0.18 0.01 0.76 0.46 1.23 0.22 1.81 ...
## $ DischargeFlag : chr NA NA NA NA ...
## $ MeasurementRating: chr "G" "G" "G" "G" ...
## $ Comments : chr "Completed 2pt readings, water level higher then 1.5\nKeep file with no operator initials " "QM was taken between two beaver dams. Flow level is bank full in this section because of the placement of the "| __truncated__ "Pool in some areas along the cross section " "Beaver dam downstream of site. Photos attached" ...
This function allows you to query the Light_Penetration_Data view by park, site, site type, year, and month. Again output = ‘short’ is the default. If specify output = ‘verbose’, you’ll get all possible columns. This is only set up to work with site_type = ‘lake’, so you don’t have to specify that.
Get light penetration for Weir Pond from 2013 - 2023 all months.
period <- 2013:2023
wefa <- getLightPen(park = "WEFA", years = period)
print_head(wefa) # top 6 rows
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | MeasurementTime | MeasurementDepth_m | LightDeck | LightUW | PenetrationRatio |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WEFAPA | Weir Pond | WEFA | NA | 2013-05-14 | 2227 | NETN_LS | 2013 | 5 | 133 | 13:24:59 | 0.10 | 567.56 | 561.930 | 0.99010 |
WEFAPA | Weir Pond | WEFA | NA | 2013-05-14 | 2227 | NETN_LS | 2013 | 5 | 133 | 13:25:28 | 0.25 | 564.55 | 454.740 | 0.80551 |
WEFAPA | Weir Pond | WEFA | NA | 2013-05-14 | 2227 | NETN_LS | 2013 | 5 | 133 | 13:26:08 | 0.50 | 572.55 | 353.580 | 0.61777 |
WEFAPA | Weir Pond | WEFA | NA | 2013-05-14 | 2227 | NETN_LS | 2013 | 5 | 133 | 13:26:59 | 0.75 | 698.19 | 306.090 | 0.43824 |
WEFAPA | Weir Pond | WEFA | NA | 2013-05-14 | 2227 | NETN_LS | 2013 | 5 | 133 | 13:27:48 | 1.00 | 1576.10 | 466.950 | 0.29163 |
WEFAPA | Weir Pond | WEFA | NA | 2013-05-14 | 2227 | NETN_LS | 2013 | 5 | 133 | 13:28:29 | 1.25 | 702.95 | 141.160 | 0.20073 |
Get light penetration for ACAD lakes in 2023 in July and August.
acad <- getLightPen(park = "ACAD", years = 2023, months = 7:8)
print_head(acad) # top 6 rows
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | MeasurementTime | MeasurementDepth_m | LightDeck | LightUW | PenetrationRatio |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACJORD | Jordan Pond | ACAD | NA | 2023-07-19 | 4736 | NETN_LS | 2023 | 7 | 199 | 11:37:03 | 0.1 | 654.66 | 635.000 | 0.969970 |
ACJORD | Jordan Pond | ACAD | NA | 2023-07-19 | 4736 | NETN_LS | 2023 | 7 | 199 | 11:37:59 | 0.5 | 694.73 | 434.830 | 0.625900 |
ACJORD | Jordan Pond | ACAD | NA | 2023-07-19 | 4736 | NETN_LS | 2023 | 7 | 199 | 11:38:45 | 1.0 | 760.40 | 410.100 | 0.539320 |
ACJORD | Jordan Pond | ACAD | NA | 2023-07-19 | 4736 | NETN_LS | 2023 | 7 | 199 | 11:52:46 | 10.0 | 1080.70 | 26.797 | 0.024795 |
ACJORD | Jordan Pond | ACAD | NA | 2023-07-19 | 4736 | NETN_LS | 2023 | 7 | 199 | 11:54:55 | 11.0 | 1117.10 | 21.420 | 0.019174 |
ACJORD | Jordan Pond | ACAD | NA | 2023-07-19 | 4736 | NETN_LS | 2023 | 7 | 199 | 11:58:58 | 12.0 | 1004.10 | 11.948 | 0.011899 |
Get Secchi depth the Pogue from 2021-2023, first observer only
mabi <- getSecchi(site = "MABIPA", years = 2021:2023, observer_type = "first")
print_head(mabi)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | Parameter | Value | SD_HitBottom | Observer |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MABIPA | The Pogue | MABI | NA | 2021-05-24 | 4178 | NETN_LS | 2021 | 5 | 143 | SecchiDepth_m | 2.80 | TRUE | 1 |
MABIPA | The Pogue | MABI | NA | 2021-06-22 | 4192 | NETN_LS | 2021 | 6 | 172 | SecchiDepth_m | 3.00 | TRUE | 1 |
MABIPA | The Pogue | MABI | NA | 2021-07-20 | 4239 | NETN_LS | 2021 | 7 | 200 | SecchiDepth_m | 2.90 | TRUE | 1 |
MABIPA | The Pogue | MABI | NA | 2021-08-25 | 4281 | NETN_LS | 2021 | 8 | 236 | SecchiDepth_m | 3.01 | TRUE | 1 |
MABIPA | The Pogue | MABI | NA | 2021-09-21 | 4315 | NETN_LS | 2021 | 9 | 263 | SecchiDepth_m | 3.05 | TRUE | 1 |
MABIPA | The Pogue | MABI | NA | 2021-10-22 | 4349 | NETN_LS | 2021 | 10 | 294 | SecchiDepth_m | 2.85 | TRUE | 1 |
Get Secchi for all ACAD lakes sampled in July for all observers
ACAD_lake <- getSecchi(park = 'ACAD', months = 7)
print_head(ACAD_lake)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | Project | year | month | doy | Parameter | Value | SD_HitBottom | Observer |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACANTB | Aunt Bettys Pond | ACAD | NA | 2006-07-13 | 38 | NETN_LS | 2006 | 7 | 193 | SecchiDepth_m | 1.95 | TRUE | 1 |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2009-07-23 | 1136 | NETN_LS | 2009 | 7 | 203 | SecchiDepth_m | 2.34 | TRUE | 1 |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2012-07-24 | 1389 | NETN_LS | 2012 | 7 | 205 | SecchiDepth_m | 2.44 | FALSE | 1 |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2015-07-30 | 2717 | NETN_LS | 2015 | 7 | 210 | SecchiDepth_m | 2.25 | TRUE | 1 |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2018-07-20 | 3617 | NETN_LS | 2018 | 7 | 200 | SecchiDepth_m | 2.05 | TRUE | 1 |
ACANTB | Aunt Bettys Pond | ACAD | NA | 2021-07-19 | 4231 | NETN_LS | 2021 | 7 | 199 | SecchiDepth_m | 1.60 | TRUE | 1 |
This function allows you to query Sonde in situ data by park, site, site type, years, months, parameter, QC type, surface vs. all, etc. Default returns all non-QAQC observations with data. The Sonde_InSitu_Data view is large and can take a few seconds to run for most parks, sites, years, parameters, etc. Surface only measurements, defined as as the medium of all samples within 2m of the surface, are the default.
Get Sonde data for all sites and parameters in MABI from 2021-2023 for non-QAQC samples
mabi <- getSondeInSitu(park = "MABI", years = 2021:2023)
print_head(mabi)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | SiteType | Project | year | month | doy | datetime | QCtype | SampleDepth_m | Parameter | Value | ValueFlag | FlagComments |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MABIPA | The Pogue | MABI | NA | 2021-05-24 | Lake | NETN_LS | 2021 | 5 | 143 | 2021-05-24 12:00:00 | ENV | 0.7445 | DO_mgL | 8.660 | NA | NA |
MABIPA | The Pogue | MABI | NA | 2021-05-24 | Lake | NETN_LS | 2021 | 5 | 143 | 2021-05-24 12:00:00 | ENV | 0.7445 | DOsat_pct | 97.200 | NA | NA |
MABIPA | The Pogue | MABI | NA | 2021-05-24 | Lake | NETN_LS | 2021 | 5 | 143 | 2021-05-24 12:00:00 | ENV | 0.7445 | SpCond_uScm | 186.400 | NA | NA |
MABIPA | The Pogue | MABI | NA | 2021-05-24 | Lake | NETN_LS | 2021 | 5 | 143 | 2021-05-24 12:00:00 | ENV | 0.7445 | Temp_C | 21.000 | NA | NA |
MABIPA | The Pogue | MABI | NA | 2021-05-24 | Lake | NETN_LS | 2021 | 5 | 143 | 2021-05-24 12:00:00 | ENV | 0.7445 | Temp_F | 69.800 | NA | NA |
MABIPA | The Pogue | MABI | NA | 2021-05-24 | Lake | NETN_LS | 2021 | 5 | 143 | 2021-05-24 12:00:00 | ENV | 0.7445 | Turbidity_FNU | 0.355 | NA | NA |
get data for all DO parameters in MIMA from 2006-2023 for non-QAQC samples
params <- c("DOsat_pct", "DOsatLoc_pct", "DO_mgL")
period <- 2006:2023
mima_do <- getSondeInSitu(park = "MIMA", years = period, parameter = params)
print_head(mima_do)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | SiteType | Project | year | month | doy | datetime | QCtype | SampleDepth_m | Parameter | Value | ValueFlag | FlagComments |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MIMASA | Mill Brook | MIMA | NA | 2006-05-15 | Stream | NETN_LS | 2006 | 5 | 134 | 2006-05-15 12:00:00 | ENV | 0.130 | DO_mgL | 7.35 | NA | NA |
MIMASA | Mill Brook | MIMA | NA | 2006-05-15 | Stream | NETN_LS | 2006 | 5 | 134 | 2006-05-15 12:00:00 | ENV | 0.130 | DOsat_pct | 64.90 | NA | NA |
MIMASA | Mill Brook | MIMA | NA | 2006-06-12 | Stream | NETN_LS | 2006 | 6 | 162 | 2006-06-12 12:00:00 | ENV | 0.491 | DO_mgL | 6.38 | NA | NA |
MIMASA | Mill Brook | MIMA | NA | 2006-06-12 | Stream | NETN_LS | 2006 | 6 | 162 | 2006-06-12 12:00:00 | ENV | 0.491 | DOsat_pct | 67.40 | NA | NA |
MIMASA | Mill Brook | MIMA | NA | 2006-07-17 | Stream | NETN_LS | 2006 | 7 | 197 | 2006-07-17 12:00:00 | ENV | 0.231 | DO_mgL | 5.62 | NA | NA |
MIMASA | Mill Brook | MIMA | NA | 2006-07-17 | Stream | NETN_LS | 2006 | 7 | 197 | 2006-07-17 12:00:00 | ENV | 0.231 | DOsat_pct | 64.00 | NA | NA |
Get Temp data for all sample depths in Jordan Pond in ACAD for non-QAQC samples
ACAD_lake <- getSondeInSitu(site = 'ACJORD', parameter = "Temp_C",
sample_depth = "all")
Get pH for lower NETN parks from May to Oct for QAQC and non-QAQC samples
lnetn_ph <- getSondeInSitu(park = "LNETN", param = "pH", months = 5:10,
QC_type = 'all')
Get stream observations for Pogue Stream all years
mabi <- getStreamObs(park = "MABI")
print_head(mabi)
SiteCode | UnitCode | SubUnitCode | EventDate | EventCode | year | month | doy | WaterClarity | WaterColor | WaterCondition | AlgaeSlimeExtent | AlgaeSlimeAmount | AlgaeSlimeColor | AlgaeFilExtent | AlgaeFilColor | AlgaeClumpsExtent | AlgaeClumpsColor | Algae_Notes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MABIPA | MABI | NA | 2013-05-06 | 2424 | 2013 | 5 | 125 | None | NA | |||||||||
MABIPA | MABI | NA | 2013-06-04 | 2423 | 2013 | 6 | 154 | None | NA | |||||||||
MABIPA | MABI | NA | 2013-07-09 | 2421 | 2013 | 7 | 189 | None | NA | |||||||||
MABISA | MABI | NA | 2013-05-06 | 2136 | 2013 | 5 | 125 | Clear | Colorless | None | None | None | None | NA | ||||
MABISA | MABI | NA | 2013-06-04 | 2135 | 2013 | 6 | 154 | Clear | Colorless | None | None | None | None | NA | ||||
MABISA | MABI | NA | 2013-07-09 | 2139 | 2013 | 7 | 189 | Clear | Colorless | None | None | Light coating | Greenish | None | Greenish | None | NA |
Get observations for all streams in ACAD May 2023
ACAD_streams <- getStreamObs(park = 'ACAD', years = 2023, months = 5)
print_head(ACAD_streams)
SiteCode | UnitCode | SubUnitCode | EventDate | EventCode | year | month | doy | WaterClarity | WaterColor | WaterCondition | AlgaeSlimeExtent | AlgaeSlimeAmount | AlgaeSlimeColor | AlgaeFilExtent | AlgaeFilColor | AlgaeClumpsExtent | AlgaeClumpsColor | Algae_Notes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACBRWN | ACAD | NA | 2023-05-08 | 4669 | 2023 | 5 | 127 | Clear | Colorless | None | None | N/A | N/A | None | N/A | None | N/A | None |
ACCADS | ACAD | NA | 2023-05-05 | 4666 | 2023 | 5 | 124 | Clear | Colorless | None | None | N/A | N/A | None | N/A | None | N/A | NA |
ACDKLI | ACAD | NA | 2023-05-04 | 4664 | 2023 | 5 | 123 | Clear | Colorless | Foamy | None | N/A | N/A | None | N/A | None | N/A | None |
ACDUCK | ACAD | NA | 2023-05-09 | 4670 | 2023 | 5 | 128 | Clear | Colorless | None | Occasional | Light Coating | Green | None | N/A | None | N/A | None |
ACHADB | ACAD | NA | 2023-05-05 | 4667 | 2023 | 5 | 124 | Clear | Colorless | None | None | N/A | N/A | None | N/A | None | N/A | None |
ACLKWO | ACAD | NA | 2023-05-03 | 4663 | 2023 | 5 | 122 | Clear | Colorless | None | None | N/A | N/A | None | N/A | None | N/A | None |
This function joins stage and water level data, and allows you to query by park, site, site_type, year, and month. Note that WL data start in 2013 in the view.
Get water level data for Bubble Pond.
bubl <- getWaterLevel(site = "ACBUBL", years = 2013:2023)
print_head(bubl)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | year | month | doy | DatumName | DatumType | DatumFunction | Active | TU.TD | StageMethod | DatumLatitude | DatumLongitude | DatumElevation_ft | DatumElevationFeet | GageReadingFeet | WaterLevel_Feet | WaterLevel_m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACBUBL | Bubble Pond | ACAD | NA | 2013-05-31 | 2128 | 2013 | 5 | 150 | SD1 | Drilled hole | Stage Measurement | TRUE | TD | Ruler | 44.34948 | -68.24053 | 333.39 | 333.39 | -0.49 | 332.90 | 101.4679 |
ACBUBL | Bubble Pond | ACAD | NA | 2013-06-24 | 2129 | 2013 | 6 | 174 | SD1 | Drilled hole | Stage Measurement | TRUE | TD | Ruler | 44.34948 | -68.24053 | 333.39 | 333.39 | -0.77 | 332.62 | 101.3826 |
ACBUBL | Bubble Pond | ACAD | NA | 2013-07-18 | 2130 | 2013 | 7 | 198 | SD1 | Drilled hole | Stage Measurement | TRUE | TD | Ruler | 44.34948 | -68.24053 | 333.39 | 333.39 | -0.96 | 332.43 | 101.3247 |
ACBUBL | Bubble Pond | ACAD | NA | 2013-08-28 | 2370 | 2013 | 8 | 239 | SD1 | Drilled hole | Stage Measurement | TRUE | TD | Ruler | 44.34948 | -68.24053 | 333.39 | 333.39 | -0.96 | 332.43 | 101.3247 |
ACBUBL | Bubble Pond | ACAD | NA | 2013-09-19 | 2389 | 2013 | 9 | 261 | SD1 | Drilled hole | Stage Measurement | TRUE | TD | Ruler | 44.34948 | -68.24053 | 333.39 | 333.39 | -0.78 | 332.61 | 101.3795 |
ACBUBL | Bubble Pond | ACAD | NA | 2013-10-24 | 2410 | 2013 | 10 | 296 | SD1 | Drilled hole | Stage Measurement | TRUE | TD | Ruler | 44.34948 | -68.24053 | 333.39 | 333.39 | -0.78 | 332.61 | 101.3795 |
Get water level data for Weir Pond in August.
weir <- getWaterLevel(site = "WEFAPA", months = 8)
print_head(weir)
SiteCode | SiteName | UnitCode | SubUnitCode | EventDate | EventCode | year | month | doy | DatumName | DatumType | DatumFunction | Active | TU.TD | StageMethod | DatumLatitude | DatumLongitude | DatumElevation_ft | DatumElevationFeet | GageReadingFeet | WaterLevel_Feet | WaterLevel_m |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WEFAPA | Weir Pond | WEFA | NA | 2013-08-28 | 2226 | 2013 | 8 | 239 | SD1 | Bolt | Stage Measurement | TRUE | TD | Ruler | 41.26022 | -73.45142 | 569 | 569 | -0.80 | 568.20 | 173.1874 |
WEFAPA | Weir Pond | WEFA | NA | 2014-08-12 | 2668 | 2014 | 8 | 223 | SD1 | Bolt | Stage Measurement | TRUE | TD | Ruler | 41.26022 | -73.45142 | 569 | 569 | -0.96 | 568.04 | 173.1386 |
WEFAPA | Weir Pond | WEFA | NA | 2015-08-20 | 2827 | 2015 | 8 | 231 | SD1 | Bolt | Stage Measurement | TRUE | TD | Ruler | 41.26022 | -73.45142 | 569 | 569 | -1.19 | 567.81 | 173.0685 |
WEFAPA | Weir Pond | WEFA | NA | 2016-08-25 | 3161 | 2016 | 8 | 237 | SD1 | Bolt | Stage Measurement | TRUE | TD | Ruler | 41.26022 | -73.45142 | 569 | 569 | -1.05 | 567.95 | 173.1112 |
WEFAPA | Weir Pond | WEFA | NA | 2017-08-24 | 3403 | 2017 | 8 | 235 | SD1 | Bolt | Stage Measurement | TRUE | TD | Ruler | 41.26022 | -73.45142 | 569 | 569 | -1.20 | 567.80 | 173.0654 |
WEFAPA | Weir Pond | WEFA | NA | 2018-08-14 | 3664 | 2018 | 8 | 225 | SD1 | Bolt | Stage Measurement | TRUE | TD | Ruler | 41.26022 | -73.45142 | 569 | 569 | -0.51 | 568.49 | 173.2758 |
This function produces a plot that summarizes the range of historic data compared with current measurements. The function can handle chemistry, Sonde in situ, Secchi depth, Light Penetration, and Discharge data, although it functions best with sonde and chemistry data. Historic measurements are displayed as the min-max values ever previously recorded (outermost band), upper and lower 95% distribution and middle 50% distribution (inner quartiles) of values previously recorded (inner bands). The line represents the median value.
Currently you can only specify one parameter at a time. Values that
exceed water quality thresholds (where they exist) are plotted as orange
and will show an orange point in the legend. Values within WQ thresholds
or for parameters without set thresholds are black. You can include
threshold lines (default), or remove them, where they make the y axis
range too big, via threshold = FALSE
. If multiple sites are
specified, they will be faceted.
You can now add gridlines to the plot via the gridlines argument, and Temp in F via “Temp_F” argument.
Plot pH in Jordan Pond for 2023 with gridlines on the y-axis
plotWaterBands(site = "ACJORD", year_curr = 2023, years_historic = 2006:2022,
parameter = "pH", legend_position = 'right', gridlines = 'grid_y')
Plot TN in Jordan Pond for 2023, including censored and gridlines on both x and y axes
plotWaterBands(site = "ACJORD", year_curr = 2023, years_historic = 2006:2022,
parameter = "TN_mgL", legend_position = 'right', include_censored = T, gridlines = "both")
Same as above, but drop threshold lines and add gridlines on x-axis
plotWaterBands(site = "ACJORD", year_curr = 2023, years_historic = 2006:2022,
parameter = "TN_mgL", legend_position = 'right', include_censored = T, threshold = F, gridlines = "grid_x")
Plot Temp in F in SARA sites in 2023 without gridlines (default)
plotWaterBands(park = "SARA", year_curr = 2023, years_historic = 2006:2022, parameter = "Temp_F",
legend_position = 'right')
This function produces points or loess smoothed lines of 2 variables, filtered on park, site, year, month, and 2 parameters. Works with lab chemistry, Sonde in situ, discharge, secchi depth, water level, and light penetration ratio. If multiple sites are specified, they will be plotted on the same figure, unless facet_site = T. Note that if you specify a site and parameter combination that doesn’t exist (e.g., a stream site and a parameter only collected in lakes), the function will return an error message instead of an empty plot. Censored values are not permitted in this function.
Plot Temp vs DO for ROVA all years on same figure
plotScatterPlot(park = "ROVA", parameters = c("DO_mgL", "Temp_C"),
palette = 'viridis', facet_site = F, legend_position = "bottom")
Plot Secchi depth vs. surface DOC in Eagle Lake, Jordon Pond, Echo Lake, and Witch Hole Pond
plotScatterPlot(site = c("ACEAGL", "ACJORD", "ACWHOL", "ACECHO"), parameters = c("SDepth_m", "DOC_mgL"),
span = 0.9, facet_site = F, legend_position = 'bottom', palette = c("red", "orange", "purple4", "blue"))
Same as above, but points only
plotScatterPlot(site = c("ACEAGL", "ACJORD", "ACWHOL", "ACECHO"), parameters = c("SDepth_m", "DOC_mgL"),
span = 0.9, facet_site = F, legend_position = 'bottom', layers = 'points')
Plot smoothed discharge vs. specific conductance for the Pogue Brook using span of 0.9, and green symbols.
plotScatterPlot(site = "MABISA", parameters = c("SpCond_uScm", "Discharge_cfs"), span = 0.9, palette = c("forestgreen"))
Plot smoothed discharge vs. specific conductance for SARA streams using span of 0.9.
plotScatterPlot(park = "SARA", parameters = c("SpCond_uScm", "Discharge_cfs"), span = 0.9, facet_site = F,
legend_position = 'bottom', palette = c("blue", "orange"))
Same as above, but faceted by site.
plotScatterPlot(park = "SARA", parameters = c("SpCond_uScm", "Discharge_cfs"), span = 0.9, facet_site = T)
Plot TN vs discharge in SARA streams
plotScatterPlot(park = "SARA", parameters = c("TN_mgL", "Discharge_cfs"), span = 0.9, facet_site = F)
This function produces a trend plot filtered on park, site, year, month, and parameter. It works with chemistry, Sonde in situ, Secchi depth, Light Penetration, and Discharge data. If multiple sites are specified, they will be plotted on the same figure. If multiple parameters are specified, they will be plotted on separate figures. If smooth = T, a loess smoothed line will connect through the data. If smooth = F and layers includes “lines”, then lines will connect the sample points, but will not connect across years, because of the break between October and May.
There are several arguments to customize plots.active
.
layers
argument.
smooth
.
threshold
. Upper limits are dashed. Lower limits are
dotted.
sample_depth
.
include_censored
.
palette
. Default is ‘viridis’, but
other options are magma (yellow, red, purple), plasma (brighter version
of magma), turbo (rainbow), or specify a vector of colors manually. See
the
intro
do viridis site for more info on built in color palettes.
legend_position
. If you don’t
want to show the legend, legend_position = 'none'
.
parameter = "Temp_F"
.
?plotTrend()
Plot non-smoothed surface pH for Eagle Lake for all years with gridlines on y-axis.
plotTrend(site = "ACEAGL", parameter = "pH", smooth = FALSE, gridlines = 'grid_y')
Plot smoothed surface pH for Eagle Lake for past 3 years using default span of 0.3 and by default not including the legend.
plotTrend(site = "ACEAGL", parameter = "pH", palette = 'dimgrey', years = 2021:2023)
Plot smoothed surface pH for Eagle Lake and Jordan Pond for all years, with turbo palette, and using span of 0.75.
plotTrend(site = c("ACEAGL", "ACJORD"), parameter = "pH", span = 0.75, palette = "turbo", legend_position = 'bottom')
Plot smoothed Secchi Depth in Jordan Pond for all years, including the legend, different color palette, and using span of 0.75.
plotTrend(site = "ACJORD", parameter = "SDepth_m", span = 0.75, palette = 'mako')
Plot unsmoothed SO4 in Witch Hole Pond for all years, including censored values.
plotTrend(site = "ACWHOL", parameter = "SO4_ueqL",
smooth = F, include_censored = TRUE, legend_position = 'bottom')
Plot unsmoothed line only for pH in Witch Hole Pond for all years.
plotTrend(site = "ACWHOL", parameter = "pH", layers = "lines",
smooth = F, legend_position = 'none')
Plot smoothed surface pH for active SARA streams over all years with 0.6 span and convert to plotly. Note that plotly figures don’t seem to display in the current version of RStudio (2024.04.2), but they do render when knit with R Markdown to an html file.
p <- plotTrend(park = "SARA", site = c("SARASA", "SARASC", "SARASD"),
site_type = "stream", parameter = "pH",
legend_position = "right", span = 0.6)
Plot smoothed surface Specific Conductance for all MIMA streams over all years with 0.6 span.
plotTrend(park = "MIMA", site_type = "stream",
parameter = "SpCond_uScm", legend_position = "right", span = 0.6, palette = c("blue", "orange", "green3"))
Plot non-smoothed surface of multiple Sonde parameters for all MIMA streams over all years with 0.6 span. Note that here I used Temp_F.
params <- c("Temp_F", "SpCond_uScm", "DOsat_pct", "pH")
plotTrend(park = "MIMA", site_type = "stream",
parameter = params, legend_position = "right", span = 0.6)
Plot smoothed surface Secchi Depth, Specific Conductance, pH, and DOC in Jordan Pond for all years, including the legend, different color palette, and using span of 0.75.
plotTrend(site = "ACJORD", parameter = c("SDepth_m", "SpCond_uScm", "pH", "DOC_mgL"),
span = 0.75, palette = 'mako')
Plot smoothed surface water depth in the Pogue for all years, including a different color palette, and using span of 0.75.
plotTrend(site = "MABIPA", parameter = "WaterLevel_Feet", span = 0.75,
palette = 'mako')
Plot smoothed TN, TP and SO4 in all MORR sites for all years, including the legend, different color palette, and using span of 0.6. Thresholds, where they exist, plot by default.
plotTrend(park = "MORR", parameter = c("TN_mgL", "TP_ugL", "SO4_ueqL"),
span = 0.6, legend_position = 'bottom', palette = 'plasma')
This function produces a heatmap in 1-m bins for ACAD and 0.25m bins for LNETN. You can filter on park, site, year, month, Sonde in situ parameter and either sample relative to the surface or relative to surface elevation. You can only specify one parameter at a time. If multiple sites or years are selected, plots will be faceted on those factors. Keep options limited for best plotting. Note also that you can either select ACAD or LNETN parks, because of the differences in binning.
The option to plot relative to surface elevation (eg depth_type = ‘elev’) corrects sample depth for elevation using water level data and datum elevation for that sampling event. The elevation-corrected option allows you to see how the water column is shifting over time, but currently only works for years >= 2013 in ACAD, as water levels prior to that are not in the current data package. Default setting is raw, where the raw sample depths are plotted instead of elevation.
Note that occasionally profiles skip a bin, which show up as white sections in the plots. Incomplete sampling in 2020 and 2021 also shows up as white sections. If you specify a lake x year x parameter combination that doesn’t exist (e.g., a year a lake isn’t sampled), the function will return an error message instead of an empty plot.
The width of the profiles take into account the number of days between sampling events. For the first and last months (typically May and October), the left/right side of the profiles are padded by 14 days. Otherwise, profile widths are centered on the sample day with the left side representing half the number of days between that visit and the previous visit and the right side representing half the number of days between that visit and the following visit. Black lines are the thermocline, as calculated by rLakeAnalyzer.
There are several arguments to customize plots.plot_thermocline = TRUE
(default). The thermocline is
calculated by rLakeAnalyzer, and is the depth/elevation at which the
largest change in temperature occurs in the sampled water column. If no
thermocline is detected, as defined by
rLakeAnalyzer::thermo.depth()
, nothing is plotted.
active
.
legend_position
. If you don’t
want to show the legend, legend_position = 'none'
.
parameter = "Temp_F"
.
RColorBrewer::display.brewer.all(type = 'div')
RColorBrewer::display.brewer.all(type = 'seq')
Plot temperature (in F) for Upper Hadlock for years 2013 - 2023 corrected by elevation with thermocline plotted as black lines, with gridlines on y.
plotLakeProfile(site = "ACUHAD", parameter = "Temp_F", depth_type = 'elev',
years = 2013:2023, gridlines = "grid_y")
Plot temp (in C) using raw sample depth (default) for all LNETN lakes sampled in 2023.
plotLakeProfile(park = "LNETN", parameter = "Temp_C", years = 2023, palette = "Spectral")
Plot temperature for Eagle Lake for years 2006 - 2023 with raw sample depth. Note that we can go back to 2006 because we’re using raw sample depth instead of elevation.
plotLakeProfile(site = "ACEAGL", parameter = "Temp_C", depth_type = 'raw',
years = 2006:2023)
Same plot as above, but with no plot title or thermocline.
plotLakeProfile(site = "ACEAGL", parameter = "Temp_C", depth_type = 'raw',
years = 2006:2023, plot_title = FALSE, plot_thermocline = F)
Plot temperature for all ACAD lakes sampled in 2023 and raw sample depth.
lakes23 <- c("ACBUBL", "ACEAGL", "ACECHO", "ACJORD", "ACLONG", "ACROUN",
"ACSEAL", "ACUBRK", "ACUHAD", "ACWHOL")
plotLakeProfile(park = "ACAD", site = lakes23, parameter = "Temp_C",
depth_type = 'raw', years = 2023)
Plot DO all ACAD lakes sampled in 2023 and raw sample depth, using reversed RdYlBu palette. Temperature thermocline is also included as black lines.
plotLakeProfile(park = "ACAD", site = lakes23,
parameter = "DOsat_pct", depth_type = 'raw', years = 2023,
palette = 'RdYlBu', color_rev = TRUE)
Plot specific conductance for Seal Cove Pond from 2013 to 2023 and sample elevation. Uses spectral palette by default and adds site name as title by default. Thermocline is also plotted as default.
plotLakeProfile(site = "ACSEAL", parameter = "SpCond_uScm",
depth_type = 'elev', years = 2013:2023)
Plot pH for Jordan Pond from 2013 to 2023 and sample elevation, using reversed spectral palette.
plotLakeProfile(site = "ACJORD", parameter = "pH",
depth_type = 'elev', years = 2013:2023,
color_rev = TRUE)
Plot pH for all ACAD lakes sampled in 2022 and 2023 and raw sample depth, using reversed RdYlBu palette.
plotLakeProfile(park = "ACAD", site = c("ACBUBL", "ACEAGL", "ACECHO", "ACJORD", "ACLONG", "ACSEAL",
"ACUHAD", "ACWHOL"),
parameter = "pH", depth_type = 'raw', years = 2022:2023,
palette = 'RdYlBu', color_rev = TRUE)
Combine plots for temp, DO, pH, and conductance in Bubble Pond for 2023
using the cowplot
package.
To minimize typing, I define the parameters I wanted at the beginning. This allows you to adjust the parameters once (i.e., change site), and run through the rest of the code without having to edit it. I also only included the plot title on the first figure, and turned it off for the rest.
The cowplot
package must be installed to use this code.
Install the package via install.packages('cowplot')
. There
are other packages to combine plots, including grid
and
gridExtra
, and the function ggarrage()
in
ggpubr
. I tend to start with cowplot, because it’s easy to
use and has a great help
page. If I really need to customize a plot (like custom spacing for
each plot), then I use grid/gridExtra
, which allows for
more customization, but is a bit harder to work with.
library(cowplot)
sitecode = "ACBUBL"
sitename = getSites(site = sitecode)$SiteName
year = 2023
mon = 5:10
depth = 'elev'
ptitle = F
tplot <- plotLakeProfile(site = sitecode, parameter = "Temp_C", depth_type = depth,
years = year, months = mon, plot_title = ptitle)
doplot <- plotLakeProfile(site = sitecode, parameter = "DOsat_pct", depth_type = depth,
years = year, months = mon, color_rev = T, plot_title = ptitle)
pHplot <- plotLakeProfile(site = sitecode, parameter = "pH", depth_type = depth,
years = year, months = mon, palette = "RdYlBu", color_rev = T,
plot_title = ptitle)
cnplot <- plotLakeProfile(site = sitecode, parameter = "SpCond_uScm", depth_type = depth,
years = year, months = mon, palette = 'RdBu',
plot_title = ptitle)
# Default settings
plot_grid(tplot, doplot, pHplot, cnplot)
Same plot as above, but customize plot widths, so DO and SpCond have more space for legend, and add title above the grid.
In this case, we’re creating the plot grid with relative widths for each plot. Then we’re combining the title and the plot grid in another grid, setting the title height to be much smaller than the plot grid.
Note that sitename and year are defined in code chunk above.
title <- ggdraw() + draw_label(paste0(sitename, " (", year, ")"), size = 11, fontface = 'bold',
x = 0.05, hjust = 0, vjust = 0)
pgrid <- plot_grid(tplot, doplot, pHplot, cnplot, rel_widths = c(0.9, 0.95, 0.85, 1)) # doesn't seem to be working
plot_grid(title, pgrid, ncol = 1, rel_heights = c(0.1, 1))
This function produces a plot with dual y-axes, one for precipitation and one for discharge. The x-axis is date. This function only works for one stream monitoring site at a time. Note that ggplot tends to have a lot of warnings that are hard to suppress, particularly for this plot, which has a daily value for precipitation and only monthly values for discharge. You’re always going to get a message about that by using this function. Function currently only plots years where discharge is collected. Discharge is plotted as points and not lines, because discharge can change a lot between sampling events.
Note that the climateNETN package must be
installed for this function to work, as it relies on downloading daily
precipitation data. To install run
devtools::install_github("KateMMiller/climateNETN")
Plot Discharge for Mill Brook in MIMA for past 3 years using default colors and gridlines on the y-axis and english units.
plotPrecipDischarge(site = c("MIMASA"), years = 2021:2023, gridlines = "grid_y", units = "eng")
Plot Discharge for Aunt Betty Inlet and Kebo Stream for 2022 using different colors. Note that this can be slow because has to download precip. data from NADP. LNETN parks download from a faster web service.
plotPrecipDischarge(site = c("ACABIN", "ACKEBO"), years = 2022, palette = c("cornflowerblue", "orange"))
Note that this function now lives in climateNETN package. This function produces a line or a rolling average filtered on park, year, month, and climate parameter. The default rolling average is 5-years, but you can specify a different window with the avg_window argument. If multiple parks are specified, they can either be plotted on the same figure or separate figures. If multiple parameters are specified, they will be plotted on separate figures. For multiple parks to plot on the same figure, use facet_site = FALSE. For multiple parameters on the same figure, facet_param = FALSE. Note that all months (1:12) are default. If you only want sample months, specify months = 5:10.
NEW: I updated the compiled climate data to cover 1895 up through June 2024, so you can plot historic trends beyond just the 2006-2024 monitoring period. You can also plot units in English.
Plot avg temp for LNETN from 1895:2024, without points and with 5-year rolling average and gridlines on y-axis, and in English units. Note that avg_window = 5 isn’t necessary, since it’s the default.
climateNETN::plotClimTrend(park = "LNETN", years = 1895:2024, layers = 'rollavg',
parameter = "tmean", palette = c("viridis"), facet_park = T,
legend_position = 'bottom', gridlines = "grid_y", units = "eng")
Plot monthly precip for MORR, ROVA and WEFA from 1895:2024, without points and with smoothed line and span 0.1.
climateNETN::plotClimTrend(park = c("MORR", "ROVA", "WEFA"), years = 1895:2024, layers = 'smooth',
parameter = "tmean", span = 0.1, palette = "turbo", legend_position = 'right')
Plot temp stats from 1895-2024 for ACAD on the same figure.
climateNETN::plotClimTrend(park = "ACAD", years = 1895:2024, parameter = c("tmin", "tmean", "tmax"), span = 0.1, layers = 'smooth', facet_param = F, legend_position = 'right', palette = "viridis")
Plot monthly temperature data in English units for MABI from 2006:2023 (all months is default), with points and a 4-year rolling average.
climateNETN::plotClimTrend(park = "MABI", years = 2006:2023, parameter = c("tmin", "tmean", "tmax"),
layers = c("points", "rollavg"),
facet_param = T, gridlines = "grid_y", units = 'eng', avg_window = 4)
Plot same monthly NOAA data for MABI from 2006:2023, with smoothed line and span 0.7, and using the Dark2 color palette.
climateNETN::plotClimTrend(park = "MABI", years = 2006:2023, parameter = "all", layers = 'smooth', span = 0.7, palette = "magma")
Plot monthly NOAA min, max and mean temperature for MABI and SARA from 2006:2024, with smoothed line, span 0.7, and parks on separate plots, but parameters on the same plots.
climateNETN::plotClimTrend(park = c("MABI", "SARA"), years = 2006:2023,
parameter = c("tmean", "tmax", "tmin"),
layers = 'smooth',
span = 0.7, facet_park = TRUE, facet_param = FALSE,
legend_position = "bottom")
Plot monthly NOAA min, max and mean temperature for MABI 2006:2024, with points and smoothed line, span 0.7 with parameters on the same plots.
climateNETN::plotClimTrend(park = "MABI", years = 2006:2023,
parameter = c("tmean", "tmax", "tmin"),
layers = c("points", "smooth"),
span = 0.7, facet_param = F, legend_position = 'bottom')
Note that this function now lives in climateNETN package. This function produces a trend plot filtered on park, year, month, and climate parameter and shows anomalies from chosen baseline (1901 - 2000 or 1991 - 2020) as red for above and blue for below average using gridded NOAA NClim data. If a year x month combination is specified that doesn’t occur yet in NETN_clim_annual dataset, it will be downloaded if available. New months are typically available within a few weeks of the month end. If multiple parks are specified, they can either be plotted on the same figure or separate figures. If multiple parameters are specified, they will be plotted on separate figures.You can also plot percent difference of precipitation, in addition to difference in raw units (i.e. mm).
Plot ACAD average temperature anomalies from 1895 to 2024 compared with 20th century normals with gridlines on y axis and English units.
climateNETN::plotClimAnom(park = "ACAD", years = 1895:2024, parameter = "tmean",
legend_position = 'right', gridlines = "grid_y", units = "eng")
Plot WEFA percent precipitation anomalies in 2023 compared with 20th century normals.
climateNETN::plotClimAnom(park = "WEFA", years = 2023, parameter = "ppt_pct", legend_position = 'right')
Plot MABI and SAGA average temperature anomalies from 2006 to 2024 compared with 20th century normals.
climateNETN::plotClimAnom(park = c("MABI", "SAGA"), years = 2006:2024, parameter = "tmean", legend_position = 'right')
Plot MABI and SAGA precip. anomalies from 2023 compared with 20th century normals.
climateNETN::plotClimAnom(park = c("MABI", "SAGA"), years = 2023, parameter = "ppt", legend_position = 'right')
Plot ACAD avg temp anomalies from last 20 years compared with 30-year normals.
climateNETN::plotClimAnom(park = c("ACAD"), years = 2004:2024, parameter = "tmean",
legend_position = 'bottom', normal = "norm1990")
Note that this function now lives in climateNETN package. This function compares either the 20th century normals (1901 - 2000), or the most recent 30-year normal (1991 - 2020) average monthly climate variables with user-specified years to provide an idea of how extreme or normal a given month in a year is.
This function has been overhauled to work with
NOAA gridded climate data for both the normals and the current data.
The same algorithms are used to generate historic and current data,
which minimizes the bias introduced by weather station vs. Daymet data
(Prism had similar issues). Using the NOAA dataset is slower to process,
so I went with park-level centroids to extract climate data instead of
extracting at the site level. I also compiled all of the NOAA data from
1895 through May 2024. I have a webalert that tells me when a new month
is available, so I can keep the compiled data up to date (see
data("NETN_clim_annual")
). However, if I get behind, this
function will download the missing months of data that are available
online.
You can now add gridlines to x, y, or both axes.
Plot mean monthly temp for MABI for 2019:2023 and all months with red-blue color palette and the 20th century normal with gridlines on y in english units.
climateNETN::plotClimComps(park = "MABI", years = 2019:2023, parameter = "tmean",
palette = c("red", "blue"), normal = "norm20cent",
gridlines = 'grid_y', units = "eng", legend_position = 'bottom')
Same as above, but with points and 30-year normal starting at 1991.
climateNETN::plotClimComps(park = "MABI", years = 2019:2023, parameter = "tmean",
palette = c("red", "blue"),
layers = c('points', 'lines'), normal = "norm1990", units = 'eng',
legend_position = 'bottom')
Plot max monthly temp for ROVA for 2023 and 2024, with orange-blue palette and 20th century norm (default) using scientific units.
climateNETN::plotClimComps(park = "ROVA", years = 2023:2024, parameter = "tmax",
palette = c("orange", "blue"), layers = 'lines', legend_position = 'bottom')
Plot total monthly precip for Jordan Pond for past 5 years using orange-blue color palette, compared with the 30-year norm starting at 1990.
climateNETN::plotClimComps(park = "ACAD", years = 2018:2023, parameter = 'ppt',
palette = c("orange","blue"), normal = "norm1990", legend_position = 'bottom')
Plot total monthly precip for ACAD for current year using red for 2023 and blue for 2024
climateNETN::plotClimComps(park = "ACAD", years = 2023:2024, parameter = 'ppt',
palette = c("red", "blue"), legend_position = 'bottom')
Plot total monthly max temp for ACAD for current year using red for current year color and 30-year normal.
climateNETN::plotClimComps(park = "ACAD", years = 2024, parameter = 'tmax',
palette = c("red"), normal = "norm1990", legend_position = 'bottom')
The code below would take a lot to program into waterNETN functions, so I’m instead showing you how you can create panels of multiple plots using the cowplot package.
Generate grid of all parameters in ACAD from past 5 years
Note that the code that names leg is extracting a legend from a copy of the figures to be plotted separately from the other figures. This allows you to control the sizing and alignment better. The NULLs also allow you to create white space between plots.
tmax <- climateNETN::plotClimComps(
park = "ACAD", years = 2019:2023, parameter = "tmax",
layers = 'lines', legend_position = 'none', palette = c("red", "blue"))
tmin <- climateNETN::plotClimComps(
park = "ACAD", years = 2019:2023, parameter = "tmin",
layers = 'lines', legend_position = 'none', palette = c("red", "blue"))
tmean <- climateNETN::plotClimComps(
park = "ACAD", years = 2019:2023, parameter = "tmean",
layers = 'lines', legend_position = 'none', palette = c("red", "blue"))
prec <- climateNETN::plotClimComps(
park = "ACAD", years = 2019:2023, parameter = 'ppt',
layers = 'lines', legend_position = 'none', palette = c("red", "blue"))
prec_leg <- climateNETN::plotClimComps(park = "ACAD", years = 2019:2023, parameter = 'tmax',
layers = 'lines', legend_position = 'right', palette = c("red", "blue")) +
theme(legend.box.margin = margin(0, 0, 0, 5),
legend.text = element_text(size = 9),
legend.title = element_text(size = 9))
leg <- cowplot::get_plot_component(
prec_leg,
'guide-box-right',
return_all = T
)
grid1 <- cowplot::plot_grid(tmean, tmax, NULL, tmin, prec, NULL,
nrow = 2, ncol = 3, rel_widths = c(1, 1, 0.05, 1, 1, 0.05))
grid2 <- cowplot::plot_grid(grid1, NULL, leg, ncol = 3, nrow = 1, rel_widths = c(1, 0.05, 0.3))
grid2
Generate grid of all parameters in ACAD for 2024, Jan through May.
Because waterNETN plotting functions return ggplot objects, we can tweak the plots so that temp plots all have the same y axis (so you can see that max is higher than min).
data("NETN_clim_annual") # compiled annual data
data("NETN_clim_norms") # compiled normals
head(NETN_clim_annual)
## UnitCode
## 1 ACAD
## 2 BOHA
## 3 ROVA
## 4 MABI
## 5 MIMA
## 6 MORR
## UnitName
## 1 Acadia National Park
## 2 Boston Harbor Islands National Recreation Area
## 3 Roosevelt-Vanderbilt National Historic Sites
## 4 Marsh-Billings-Rockefeller National Historical Park
## 5 Minute Man National Historical Park
## 6 Morristown National Historical Park
## long
## 1 -68.26019
## 2 -71.02159
## 3 -73.92672
## 4 -72.53824
## 5 -71.29604
## 6 -74.53749
## lat
## 1 44.37656
## 2 42.27097
## 3 41.76804
## 4 43.63382
## 5 42.45340
## 6 40.76780
## ppt
## 1 150.50000
## 2 96.19043
## 3 92.76953
## 4 55.83984
## 5 92.24023
## 6 118.08984
## tmax
## 1 -0.5898438
## 2 0.7099609
## 3 -1.7099609
## 4 -2.6503906
## 5 0.1298828
## 6 0.2197266
## tmin
## 1 -12.139648
## 2 -8.129883
## 3 -10.780273
## 4 -16.750000
## 5 -10.809570
## 6 -9.500000
## tmean
## 1 -6.370117
## 2 -3.709961
## 3 -6.250000
## 4 -9.700195
## 5 -5.339844
## 6 -4.639648
## year
## 1 1895
## 2 1895
## 3 1895
## 4 1895
## 5 1895
## 6 1895
## month
## 1 1
## 2 1
## 3 1
## 4 1
## 5 1
## 6 1
ymin <- round(min(NETN_clim_annual$tmin, NETN_clim_norms$tmin_norm_1901_2000,
NETN_clim_norms$tmin_norm_1991_2020), 0) - 1
ymax <- round(max(NETN_clim_annual$tmax, NETN_clim_norms$tmax_norm_1901_2000,
NETN_clim_norms$tmax_norm_1991_2020), 0) -1
tmax <- climateNETN::plotClimComps(park = "ACAD", years = 2024, parameter = "tmax", data_type = "wstn",
layers = 'lines', legend_position = 'none', palette = c("red", "blue"),
plot_title = F) +
ylim(ymin, ymax)
tmin <- climateNETN::plotClimComps(park = "ACAD", years = 2024, parameter = "tmin", data_type = "wstn",
layers = 'lines', legend_position = 'none', palette = c("red", "blue"),
plot_title = F) +
ylim(ymin, ymax)
tmean <- climateNETN::plotClimComps(park = "ACAD", years = 2024, parameter = "tmean", data_type = "wstn",
layers = 'lines', legend_position = 'none', palette = c("red", "blue"),
plot_title = F)+
ylim(ymin, ymax)
prec <- climateNETN::plotClimComps(park = "ACAD", years = 2024, parameter = 'ppt', data_type = "wstn",
layers = 'lines', legend_position = 'none', palette = c("red", "blue"),
plot_title = F)
prec_leg <- climateNETN::plotClimComps(park = "ACAD", years = 2024, parameter = 'tmax', data_type = "wstn",
layers = 'lines', legend_position = 'right',
palette = c("red", "blue")) +
theme(legend.box.margin = margin(0, 0, 0, 5),
legend.text = element_text(size = 9),
legend.title = element_text(size = 9))
leg <- cowplot::get_plot_component(
prec_leg,
'guide-box-right',
return_all = T
)
grid1 <- cowplot::plot_grid(tmean, tmax, NULL, tmin, prec, NULL,
nrow = 2, ncol = 3, rel_widths = c(1, 1, 0.05, 1, 1, 0.05))
grid2 <- cowplot::plot_grid(grid1, NULL, leg, ncol = 3, nrow = 1, rel_widths = c(1, 0.05, 0.3))
grid2
Note that this function now lives in climateNETN package. This function plots cumulative monthly precipitation for a given year compared to either the 19th century or 30-year normal. If multiple parks or years are specified, resulting plots will be faceted on those variables.You can add gridlines to the x, y or both axes.
Plot ACAD cumulative precipitation for 2020 through 2023 with gridlines on y axis and precip in inches.
climateNETN::plotClimCumPrecip(park = "ACAD", years = 2020:2023, legend_position = 'bottom',
gridlines = "grid_y", units = 'eng')
Plot ACAD cumulative precipitation for 2013 through 2023 for April - October only
climateNETN::plotClimCumPrecip(park = "ACAD", years = 2014:2024, legend_position = 'bottom')
Plot all but SAIR cumulative precipitation for 2023 with 4 columns
parks <- c("ACAD", "MABI", "MIMA", "MORR", "ROVA", "SAGA", "SARA", "WEFA")
climateNETN::plotClimCumPrecip(park = parks, years = 2023, legend_position = 'bottom', numcol = 4)
Plot cumulative precipitation for 2019 - 2023
climateNETN::plotClimCumPrecip(park = "ACAD", years = 2019:2023, legend_position = 'bottom', numcol = 5)
Note that this function now lives in climateNETN package. This function plots a given year compared against either the 19th century normal (1901 - 2000) or the 1991 - 2020 normal. Both normals and annual comparisons are derived from NOAA gridded climate data. You can either plot all temp variables, min/max temp, mean temp or precipitation. If multiple years are specified, resulting plots will facet on year. You can make your own palette by specifying colors, or by default use viridis. Currently can only plot one park at a time. Can also add gridlines to x, y or both axes.
Plot all temperature variables on 1 graph for MABI in 2024 with gridlines on y axis and english units.
climateNETN::plotClimRel(park = "MABI", years = 2024, parameter = "temp", units = "eng",
palette = c("#EEE55A", "#D56062", "#067BC2"), gridlines = 'grid_y')
Plot precip for SARA 2023 compared to 1990 - 2019 normals.
climateNETN::plotClimRel(park = "SARA", years = 2023, parameter = "ppt", palette = "grey", normal = "norm1990")
Plot precip for SARA 2023 and 2024 compared to 1990 - 2019 normals.
climateNETN::plotClimRel(park = "SARA", years = 2023:2024, parameter = "ppt",
palette = "grey", normal = "norm1990")
Plot precip for LNETN parks in 2023 without a legend and with 4 columns instead of 3.
climateNETN::plotClimRel(park = "LNETN", years = 2023, parameter = "ppt", palette = "grey", legend_position = 'none', numcol = 4)
Same as above, but with full park names as facet titles.
climateNETN::plotClimRel(park = "LNETN", years = 2023, parameter = "ppt", palette = "grey", legend_position = 'none', numcol = 4, title_type = "UnitName")
Note that this function now lives in
climateNETN package. This function plots weekly drought index at the
county level for each specified park or weather station nearest to a
specified park. Resulting plot shows the percent of county area in 5
levels of drought, with D0 = Abnormally Dry, D1 = Moderate Drought, D2 =
Severe Drought, D3 = Extreme Drought, and D4 = Exceptional Drought.
Drought designations come from the U.S. Drought Monitor. If multiple
parks are specified, results will be faceted with a separate plot for
each park. Where multiple counties occur in a park, data can be faceted
by county if dom_county = FALSE
. To only plot predominant
county, specify dom_county = TRUE
(default).
I tweaked the x-axis formatting a bit based on whether 1 year or many years are plotted. Let me know if you’d like further tweaks. You can also now add gridlines.
Plot drought info for ACAD in 2023 wiht gridlines on y axis
climateNETN::plotClimDrought(park = c("ACAD"), years = 2023, gridlines = "grid_y", legend_position = 'bottom')
Plot drought info for MABI and SAGA for 2020 to 2024 with gridlines on x axis.
climateNETN::plotClimDrought(park = c("MABI", "SAGA"), years = 2020:2024, gridlines = "grid_x", legend_position = 'bottom')
Plot drought info for both MORR counties for 2023
climateNETN::plotClimDrought(park = "MORR", years = 2023, dom_county = FALSE, legend_position = "bottom")
Plot drought info for both ACAD counties in 2020 for May through October
climateNETN::plotClimDrought(park = "ACAD", years = 2020, dom_county = FALSE, months = 5:10, legend_position = "bottom")
Plot drought info for MABI, SAGA, and SARA in 2023 with legend on bottom
climateNETN::plotClimDrought(park = c("MABI", "SAGA", "SARA"), years = 2023, legend_position = 'bottom')
Summarize number of samples collected per park, site, month, and parameter. Resulting data frame show number of samples collected for each month, and whether the value is real (month) or censored (month_cens).
Summarize all events for ACAD for all years and active sites
acad_ev <- sumEvents(park = "ACAD")
print_head(acad_ev)
UnitCode | SiteType | SiteName | param_type | Parameter | year_range | num_years | May | Jun | Jul | Aug | Sep | Oct | May_cens | Jun_cens | Jul_cens | Aug_cens | Sep_cens | Oct_cens |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | ANC_ueqL | 2006 – 2024 | 7 | 0 | 4 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | ChlA_ugL | 2006 – 2024 | 7 | 2 | 6 | 2 | 6 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | DOC_mgL | 2006 – 2024 | 7 | 2 | 4 | 2 | 4 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | TN_mgL | 2006 – 2024 | 7 | 2 | 6 | 2 | 6 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | TP_ugL | 2006 – 2024 | 7 | 2 | 6 | 2 | 6 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Light penetration | PenetrationRatio | 2006 – 2024 | 7 | 27 | 38 | 30 | 31 | 29 | 30 | 0 | 0 | 0 | 0 | 0 | 0 |
Summarize only lake events for ACAD for all years
acad_lk <- sumEvents(park = "ACAD", site_type = "lake")
print_head(acad_lk)
UnitCode | SiteType | SiteName | param_type | Parameter | year_range | num_years | May | Jun | Jul | Aug | Sep | Oct | May_cens | Jun_cens | Jul_cens | Aug_cens | Sep_cens | Oct_cens |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | ANC_ueqL | 2006 – 2024 | 7 | 0 | 4 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | ChlA_ugL | 2006 – 2024 | 7 | 2 | 6 | 2 | 6 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | DOC_mgL | 2006 – 2024 | 7 | 2 | 4 | 2 | 4 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | TN_mgL | 2006 – 2024 | 7 | 2 | 6 | 2 | 6 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Lab chemistry | TP_ugL | 2006 – 2024 | 7 | 2 | 6 | 2 | 6 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
ACAD | Lake | Aunt Bettys Pond | Light penetration | PenetrationRatio | 2006 – 2024 | 7 | 27 | 38 | 30 | 31 | 29 | 30 | 0 | 0 | 0 | 0 | 0 | 0 |
Summarize LNETN events only
lnetn <- sumEvents(park = "LNETN")
print_head(lnetn)
UnitCode | SiteType | SiteName | param_type | Parameter | year_range | num_years | May | Jun | Jul | Aug | Sep | Oct | May_cens | Jun_cens | Jul_cens | Aug_cens | Sep_cens | Oct_cens |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MABI | Lake | The Pogue | Lab chemistry | ANC_ueqL | 2006 – 2024 | 18 | 0 | 12 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
MABI | Lake | The Pogue | Lab chemistry | TN_mgL | 2006 – 2024 | 18 | 5 | 17 | 5 | 17 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
MABI | Lake | The Pogue | Lab chemistry | TP_ugL | 2006 – 2024 | 18 | 5 | 17 | 5 | 17 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
MABI | Lake | The Pogue | Light penetration | PenetrationRatio | 2006 – 2024 | 18 | 120 | 124 | 118 | 123 | 111 | 109 | 0 | 0 | 0 | 0 | 0 | 0 |
MABI | Lake | The Pogue | Sonde field meas. | DO_mgL | 2006 – 2024 | 18 | 16 | 17 | 16 | 17 | 16 | 18 | 0 | 0 | 0 | 0 | 0 | 0 |
MABI | Lake | The Pogue | Sonde field meas. | SpCond_uScm | 2006 – 2024 | 18 | 16 | 17 | 16 | 17 | 16 | 18 | 0 | 0 | 0 | 0 | 0 | 0 |