Plotting Expression Profiles
When using NMF for clustering in particular, one looks for strong associations between the basis and a priori known groups of samples. Plotting the profiles may highlight such patterns.
profplot(x, ...)
S3 (default)
`profplot`(x, y, scale = c("none", "max", "c1"), match.names = TRUE, legend = TRUE,
confint = TRUE, Colv, labels, annotation, ..., add = FALSE)
x is the
results from multiple NMF runs.y is the results from multiple NMF runs.'none' or NA, then no scaling is applied and the "raw" data is plotted.
If TRUE or 'max' then each row of both matrices
are normalised with their respective maximum values.
If 'c1', then each column of both matrix is scaled into proportions (i.e. to sum up to one).
Default is 'none'.y
should be subset and/or re-ordered to match the profile names in x
(i.e. the rownames). This is attempted only when both x and y
have names.x of
legend, that specifies the position of the legend.x are ordered before
plotting. It is used only when y is missing. It can be: x,
that is used to order the columns by x[, order(x[abs(Colv),])].
Decreasing order is specified with a negative index. x[, Colv] x[, order(Colv)] and as argument annotation if this latter is
missing or not NA. order method. The columns are by x[, order(Colv)] x). These are used for labelling the x-axis.x). If not missing, a coloured raw is plotted under the x-axis and
annotates each sample accordingly. If argument Colv is a factor, then
it is used to annotate the plot, unless annotation=NA.matplot or matpoints.The function can also be used to compare the profiles from two NMF models or mixture coefficient matrices. In this case, it draws a scatter plot of the paired profiles.
# create a random target matrix
v <- rmatrix(50, 10)
# fit a single NMF model
res <- nmf(v, 3)
profplot(res)
# ordering according to first profile
profplot(res, Colv=1) # increasing
profplot(res, Colv=-1) # decreasing
# fit a multi-run NMF model
res2 <- nmf(v, 3, nrun=3)
## # NOTE - CRAN check detected: limiting maximum number of cores [2/4]
## # NOTE - CRAN check detected: limiting maximum number of cores [2/4]
profplot(res2)
# draw a profile correlation plot: this show how the basis components are
# returned in an unpredictable order
profplot(res, res2)
# looking at all the correlations allow to order the components in a "common" order
profcor(res, res2)
## [,1] [,2] [,3]
## [1,] 0.9999041 -0.3570973 -0.6357179
## [2,] -0.6441023 -0.4674412 0.9988413
## [3,] -0.3814908 0.9986018 -0.4605362
profcor