NEWS
tbepreport 1.0.0
- Fix
plot_score() and plot_category() sunburst titles rendering
slightly left of center - plotly's title x position defaulted to
xref = "container" (the whole widget box) rather than "paper" (the
plot's own drawing area), now set explicitly
plot_trend() gains a facets argument (one or more of "Overall",
"wq", "sed", "fw", "hab", default all five) to show a subset of
facets, and a text argument (one of "labels" (the default),
"legend", or "none") controlling how series are identified: direct
labels at each line's right-most value, a conventional ggplot legend, or
neither. The right-margin/x-axis padding reserved for labels shrinks
automatically when text != "labels". text = "legend" is useful for
combining multiple panels with patchwork and collecting one shared
legend, and always lists "Score" first rather than falling in
alphabetical order with the rest. "labels" is preferred over
"legend" when more than one or two facets are shown
- Add a "Trends and Sensitivity" vignette (
vignettes/trends.qmd)
comparing report card results across the four default bay segments and
showing how a few scoring decisions (TBNI's rescale window, threshold
smoothing, category weights) change the results
anlz_fw_tbni() now converts the TBNI 0-100 score to an outcome using its
own grade breakpoints (32, 46) instead of a plain linear rescale over the
full 0-100 range, and gains a from argument (default c(32, 46)) so
this can be reverted (e.g. from = c(0, 100)) or otherwise adjusted
without editing the function
util_outcome() continuous type now clamps output to c(0, 1), so a
from range narrower than the data (e.g. TBNI's 32-46 window) pins
values outside it to 0/1 instead of extrapolating
anlz_wq_thresh(), anlz_wq_load(), and anlz_hab_seagrass_coverage()
gain smooth/pct arguments for a logistic (rather than hard cutoff)
threshold outcome; util_outcome()'s threshold steepness is now a
tunable pct of the threshold (default 0.1) rather than a hardcoded
10%
- Breaking:
smooth now defaults to "logistic" for
util_outcome(type = "threshold") and for anlz_wq_thresh(),
anlz_wq_load(), and anlz_hab_seagrass_coverage(), so these
threshold-based outcomes are smooth logistic transitions by default
instead of a hard 0/1 cutoff. Pass smooth = "none" to restore the
previous hard-cutoff behavior
- Add
plot_trend(), a new faceted ggplot2 trend plot: an "Overall" facet
(bay segment score with one line per category) followed by one facet per
category (that category's score with one line per indicator), each
score drawn as a bold dark line with its components as thinner colored
lines, labeled directly rather than via a shared legend. Adds ggplot2
and ggrepel as new package dependencies
plot_trend() gains a yr_range argument (c(min, max)) to restrict
the plotted years, defaulting to NULL (all available years)
- Breaking:
anlz_wq_fib() now scores FIB using exceed_rate
(tbeptools::anlz_fibmatrix()'s continuous, one-sided 90% upper
confidence estimate of the true exceedance rate) instead of the A-E
letter grade (cat), giving a continuous outcome (1 - exceed_rate)
rather than one of 5 fixed values. Requires a tbeptools version with
the exceed_rate column (not yet on CRAN/the published GitHub branch
as of this change)
- Breaking:
anlz_sed_peltel() now scores sediment contaminants
directly from the continuous PEL/TEL average (ave), log-transformed
and rescaled between the A/B and D/F grade breakpoints, instead of from
the A-F letter grade (grd, still returned for reference but no longer
used to compute outcome)
- Breaking:
anlz_sed_tbbi() now scores the Benthic Index from the
median of station-level TBBI scores, rescaled continuously over TBBI's
73/87 grade breakpoints, instead of from the official Poor/Fair/Good bay
segment grade (which is based on the proportion of stations in each
condition category, not a single continuous statistic - see
?anlz_sed_tbbi for how the two can disagree in edge cases). Output
column TBBICat is replaced with TBBI (the median score)
- Breaking:
anlz_wq_tidalcreeks() now scores each creek from a
count-weighted average across the same ordinal scale
(monitor/caution/investigate/prioritize counts from
tbeptools::anlz_tdlcrk()'s 10-year window) its official
Prioritize/Investigate/Caution/Monitor condition category also comes
from, instead of that category itself (which uses a compound rule with
count-based exceptions - see ?anlz_wq_tidalcreeks for how the two can
disagree in edge cases)
- All indicators previously scored from a discrete grade/category now use
a continuous score derived from the same underlying data (FIB, sediment
PEL/TEL, Benthic Index, tidal creeks); no indicator currently uses
util_outcome(type = "category"), though it remains available
util_outcome()'s smooth argument for type = "threshold" now takes
one of "logistic", "ramp", or "none". "ramp" gives an outcome of
1 once a value reaches the "good" side of the threshold - not just 0.5
there like "logistic" - decaying exponentially toward 0 the further it
falls on the "bad" side, using the same pct-of-threshold steepness
rule
- Breaking:
anlz_hab_seagrass_coverage()'s smooth default changes
from TRUE (logistic) to "ramp", so meeting or exceeding a segment's
acreage target is now full credit (outcome of 1) rather than only 0.5
exactly at the target