--- a +++ b/R/DIscBIO-generic-PCAplotSymbols.R @@ -0,0 +1,57 @@ +#' @title Plot PCA symbols +#' @description Generates a plot of grouped PCA components +#' @param object \code{DISCBIO} class object. +#' @param types If types=NULL then the names of the cells will be grouped +#' automatically. Default is NULL +#' @importFrom grDevices rainbow +#' @importFrom graphics legend +#' @return Plot of the Principal Components +#' +setGeneric("PCAplotSymbols", function(object, types = NULL) { + standardGeneric("PCAplotSymbols") +}) + +#' @export +#' @rdname PCAplotSymbols +setMethod( + "PCAplotSymbols", + signature = "DISCBIO", + definition = function(object, types = NULL) { + if (length(object@MBclusters) == 0) { + stop("run Exprmclust before PCAplotSymbols") + } + total <- object@MBclusters + types <- names(object@fdata) + types <- gsub("_[0-9]+", "", types) + coloc <- rainbow(length(unique(types))) + total <- object@MBclusters$pcareduceres + syms <- vector() + plot( + total[, 1], + total[, 2], + xlab = "PC1", + ylab = "PC2", + pch = 20, + cex = 0, + col = "grey", + las = 1 + ) + for (i in seq_len(length(unique(types)))) { + f <- types == sort(unique(types))[i] + syms <- append(syms, ((i - 1) %% 25) + 1) + points( + total[f, 1], + total[f, 2], + col = coloc[i], + pch = ((i - 1) %% 25) + 1, + cex = 1 + ) + } + legend( + "topright", + legend = sort(unique(types)), + col = coloc, + pch = syms + ) + } +)