Calibration- and timeseries plots, depth-profiles and the like
plotc
plots intensities of a hyperSpec
object over another
dimension such as concentration, time, or a spatial coordinate.
plotc(
object,
model = spc ~ c,
groups = NULL,
func = NULL,
func.args = list(),
...
)
the hyperSpec
object
the lattice model specifying the plot
grouping variable, e.g. .wavelength
if intensities of
more than one wavelength should be plotted
function to compute a summary value from the spectra to be plotted instead of single intensities
further arguments to func
further arguments to lattice::xyplot()
.
If func
is not NULL
, the summary characteristic is calculated
first by applying func
with the respective arguments (in
func.args
) to each of the spectra. If func
returns more than
one value (for each spectrum), the different values end up as different
wavelengths.
If the wavelength is not used in the model specification nor in
groups
, nor for specifying subsets
, and neither is
func
given, then only the first wavelength's intensities are plotted
and a warning is issued.
The special column names .rownames
and .wavelength
may be used.
The actual plotting is done by lattice::xyplot()
.
## example 1: calibration of fluorescence
plotc(flu) ## gives a warning
#> Warning: Intensity at first wavelengh only is used.
plotc(flu, func = mean)
plotc(flu, func = range, groups = .wavelength)
plotc(flu[, , 450], ylab = expression(I["450 nm"] / a.u.))
calibration <- lm(spc ~ c, data = flu[, , 450]$.)
summary(calibration)
#>
#> Call:
#> lm(formula = spc ~ c, data = flu[, , 450]$.)
#>
#> Residuals:
#> 1 2 3 4 5 6
#> 2.1918 -4.6846 2.1696 1.6005 -1.9306 0.6533
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -8.666 2.876 -3.013 0.0394 *
#> c 2268.482 14.769 153.596 1.08e-08 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
#> Residual standard error: 3.089 on 4 degrees of freedom
#> Multiple R-squared: 0.9998, Adjusted R-squared: 0.9998
#> F-statistic: 2.359e+04 on 1 and 4 DF, p-value: 1.078e-08
#>
plotc(flu[, , 450], type = c("p", "r"))
conc <- list(c = seq(from = 0.04, to = 0.31, by = 0.01))
ci <- predict(calibration, newdata = conc, interval = "confidence", level = 0.999)
panel.ci <- function(x, y, ...,
conc, ci.lwr, ci.upr, ci.col = "#606060") {
panel.xyplot(x, y, ...)
panel.lmline(x, y, ...)
panel.lines(conc, ci.lwr, col = ci.col)
panel.lines(conc, ci.upr, col = ci.col)
}
plotc(flu[, , 450],
panel = panel.ci,
conc = conc$c, ci.lwr = ci[, 2], ci.upr = ci[, 3]
)
## example 2: time-trace of laser emission modes
cols <- c("black", "blue", "#008000", "red")
wl <- i2wl(laser, c(13, 17, 21, 23))
plot_spc(laser, axis.args = list(x = list(at = seq(404.5, 405.8, .1))))
for (i in seq_along(wl)) {
abline(v = wl[i], col = cols[i], lwd = 2)
}
plotc(laser[, , wl], spc ~ t,
groups = .wavelength, type = "b",
col = cols
)