#' Plot raman spectra
#'
#' Plot raman spectra
#'
#' @param data matrix or hyperSpec class object
#' @param group a vector of characters or factors describing categories
#' @param legendlocation location of legend. can be anything from "bottomright",
#' "bottom", "bottomleft", "left", "topleft", "top", "topright", "right" or "center".
#' @param xlab x-axis label
#' @param ylab y-axis label
#' @param ... extra arguments passing to plotspc or matplot
#'
#' @examples
#' data(raman)
#' plotRaman(raman)
#' plotRaman(raman, col = "black") # all black
#' plotRaman(raman, cex.lab = 1.5) # bigger axis label
#' plotRaman(raman, col = cm.colors(47)) # change color pallette
#'
#' # plot by group
#' cultivar <- getText(rownames(raman), 2)
#' plotRaman(raman, group = cultivar)
#'
#' @importFrom hyperSpec plotspc
#' @export
plotRaman <- function(data, group = NULL, legendlocation = "topright",
xlab = "Raman shift (1/cm)", ylab = "Counts", ...){
# check if group information is provided
has_g <- !is.null(group)
if (has_g){
# turn group into factor if it isn't already
if (!is.factor(group)) group <- as.factor(group)
ngroup <- length(levels(group))
}
# if data is data.frame turn it to matrix
if (is.data.frame(data)) data <- as.matrix(data)
if (class(data) %in% "hyperSpec"){
if (has_g){
plotspc(hyperSpec, col = group, title.args = list(xlab = xlab, y = lab), ...)
legend(legendlocation, col = 1:ngroup, lwd = 2, levels(group))
} else plotspc(hyperSpec, title.args = list(xlab = xlab, y = lab), ...)
} else if (class(data) %in% "matrix") {
if (has_g){
matplot(colnames(data), t(data), type = "l", lty = 1, xlab = xlab, ylab = ylab, col = group)
legend("topright", col = 1:ngroup, lwd = 1, legend = levels(group), ...)
} else {
matplot(colnames(data), t(data), type = "l", lty = 1, xlab = xlab, ylab = ylab, ...)
}
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.