stat_wb_contribution {ggspectra} | R Documentation |
Integrate ranges under spectral curve.
Description
stat_wb_contribution
computes means under a curve. It first integrates the
area under a spectral curve and also the mean expressed per nanaometre of
wavelength for each waveband in the input. Sets suitable default aesthetics
for "rect", "hline", "vline", "text" and "label" geoms displaying "contributions"
per waveband to the total of the spectral integral.
Usage
stat_wb_contribution(
mapping = NULL,
data = NULL,
geom = "text",
w.band = NULL,
integral.fun = integrate_xy,
label.mult = 1,
chroma.type = "CMF",
label.fmt = "%1.2f",
ypos.mult = 1.07,
ypos.fixed = NULL,
position = "identity",
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE,
...
)
Arguments
mapping |
The aesthetic mapping, usually constructed with
|
data |
A layer specific dataset - only needed if you want to override the plot defaults. |
geom |
The geometric object to use display the data |
w.band |
a waveband object or a list of waveband objects or numeric vector of at least length two. |
integral.fun |
function on $x$ and $y$. |
label.mult |
numeric Scaling factor applied to y-integral values before conversion into character strings. |
chroma.type |
character one of "CMF" (color matching function) or "CC"
(color coordinates) or a |
label.fmt |
character string giving a format definition for converting
y-integral values into character strings by means of function
|
ypos.mult |
numeric Multiplier constant used to scale returned
|
ypos.fixed |
numeric If not |
position |
The position adjustment to use for overlapping points on this layer |
na.rm |
a logical value indicating whether NA values should be stripped before the computation proceeds. |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
... |
other arguments passed on to |
Value
A data frame with one row for each waveband object in the argument
to w.band
. Wavebeand outside the range of the spectral data are
trimmed or discarded.
Computed variables
What it is named integral below is the result of appying integral.fun
to the data, with default integrate_xy
.
- y.label
yint multiplied by
label.mult
and formatted according tolabel.fmt
- x
w.band-midpoint
- xmin
w.band minimum
- xmax
w.band maximum
- ymin
data$y minimum
- ymax
data$y maximum
- yint
data$y integral for w.band / data$y integral for whole range of data$x
- xmean
yint divided by wl_expanse(w.band)
- y
ypos.fixed or top of data, adjusted by
ypos.mult
- wb.color
color of the w.band
- wb.name
label of w.band
Default aesthetics
Set by the statistic and available to geoms.
- label
..y.label..
- x
..x..
- xmin
..xmin..
- xmax
..xmax..
- ymin
..y.. - (..ymax.. - ..ymin..) * 0.03
- ymax
..y.. + (..ymax.. - ..ymin..) * 0.03
- yintercept
..ymean..
- fill
..wb.color..
Required aesthetics
Required by the statistic and need to be set with aes()
.
- x
numeric, wavelength in nanometres
- y
numeric, a spectral quantity
See Also
Other stats functions:
stat_color()
,
stat_find_qtys()
,
stat_find_wls()
,
stat_label_peaks()
,
stat_peaks()
,
stat_spikes()
,
stat_wb_box()
,
stat_wb_column()
,
stat_wb_hbar()
,
stat_wb_irrad()
,
stat_wb_label()
,
stat_wb_mean()
,
stat_wb_relative()
,
stat_wb_sirrad()
,
stat_wb_total()
,
stat_wl_strip()
,
stat_wl_summary()
Examples
library(photobiologyWavebands)
# ggplot() methods for spectral objects set a default mapping for x and y.
# Using defaults
ggplot(sun.spct) +
geom_line() +
stat_wb_box(w.band = VIS()) +
stat_wb_contribution(w.band = VIS()) +
scale_fill_identity() + scale_color_identity()
# Setting position and angle of the text
ggplot(sun.spct) +
geom_line() +
stat_wb_box(w.band = VIS_bands()) +
stat_wb_contribution(w.band = VIS_bands(), angle = 90, size = 2.5) +
scale_fill_identity() + scale_color_identity()
# Showing percentages, i.e., using a different format for numbers
ggplot(sun.spct) +
geom_line() +
stat_wb_box(w.band = VIS_bands()) +
stat_wb_contribution(w.band = VIS_bands(), size = 2.5,
label.mult = 100, label.fmt = "%3.0f%%") +
scale_fill_identity() + scale_color_identity()
# Including the name of the waveband, i.e., changing the mapping for label
ggplot(sun.spct, range = c(NA, 410)) +
geom_line() +
stat_wb_box(w.band = UV_bands(), color = "white") +
stat_wb_contribution(w.band = UV_bands(), size = 2.5,
label.mult = 100, label.fmt = "%3.0f%%",
mapping = aes(label = after_stat(paste(wb.name, y.label)))) +
scale_fill_identity() + scale_color_identity()