covariates.grob {BoutrosLab.plotting.general} | R Documentation |
Create one or more covariate bars
Description
Takes a list of covariate bar annotates and creates a grid graphical object for them
Usage
covariates.grob(
covariates,
ord,
side = 'right',
size = 1,
grid.row = NULL,
grid.col = NULL,
grid.border = NULL,
row.lines = NULL,
col.lines = NULL,
reorder.grid.index = FALSE,
x = 0.5,
y = 0.5
);
Arguments
covariates |
Any covariate annotate to add to the plot, as a fully formed list. |
ord |
A vector of integer indices indicating the order of the items in the covariate bars. |
side |
Intended position of the covariate bar when added as a legend. Allowed positions are “right” and “top”. |
size |
The size of each covariate bar in units of “lines”. |
grid.row |
A list of parameters to be passed to |
grid.col |
A list of parameters to be passed to |
grid.border |
A list of parameters to be passed to |
row.lines |
Vector of row indices where grid lines should be drawn. If NULL (default), all row lines are drawn. Ignored if |
col.lines |
Vector of column indices where grid lines should be drawn. If NULL (default), all column lines are drawn. Ignored if |
reorder.grid.index |
Boolean specifying whether grid line indices should be re-ordered according to the |
x |
x coordinate in npc coordinate system |
y |
y coordinate in npc coordinate system |
Value
A grid graphical object (grob) representing the covariate bar(s)
Notes
This code is an adaptation of the dendrogramGrob
function in the latticeExtra
package. It uses functions of the grid
package.
By default, the covariate bar grid is drawn via borders around individual rectangles using the parameters specified in the covariates
argument (col, lwd, etc.). If grid.row
, grid.col
, or grid.border
are specified by the user, additional grid lines are drawn over any existing ones using the parameters in these lists.
Author(s)
Lauren Chong
See Also
Examples
# The 'cairo' graphics is preferred but on M1 Macs this is not available
bitmap.type = getOption('bitmapType')
if (capabilities('cairo')) {
bitmap.type <- 'cairo';
}
# create temp data
set.seed(1234567890);
x <- outer(-5:5, -5:5, '*') + matrix(nrow = 11, ncol = 11, data = runif(11 * 11));
colnames(x) <- paste('col', 1:11, sep = '-');
rownames(x) <- paste('row', 1:11, sep = '-');
# set covariates
covariate.colours1 <- x[,1]
covariate.colours1[covariate.colours1 >= 0] <- default.colours(3)[1];
covariate.colours1[covariate.colours1 != default.colours(3)[1]] <- default.colours(3)[2];
covariate.colours2 <- x[,1]
covariate.colours2[covariate.colours2 >= 0] <- default.colours(3)[2];
covariate.colours2[covariate.colours2 != default.colours(3)[2]] <- default.colours(3)[3];
# create an object to draw the covariates from
covariates1 <- list(
rect = list(
col = 'black',
fill = covariate.colours1,
lwd = 1.5
),
rect = list(
col = 'black',
fill = covariate.colours2,
lwd = 1.5
)
);
# create a covariates grob using a simple incremental ordering and default behaviour
covariates.grob1 <- covariates.grob(
covariates = covariates1,
ord = c(1:ncol(x)),
side = 'right'
);
# create a dendrogram for x
cov.dendrogram <- BoutrosLab.plotting.general::create.dendrogram(
x = x,
clustering.method = 'average'
);
covariates2 <-list(
rect = list(
col = 'black',
fill = covariate.colours2,
lwd = 1.5
)
);
# create a covariates grob using the dendrogram ordering and double the default size
covariates.grob2 <- covariates.grob(
covariates = covariates2,
ord = order.dendrogram(cov.dendrogram),
side = 'top',
size = 2
);
# add a border of a different colour
covariates.grob3 <- covariates.grob(
covariates = covariates1,
ord = c(1:ncol(x)),
side = 'right',
grid.border = list(col = 'red', lwd = 1.5)
);
# create covariates with transparent rectangle borders
covariates3 <- list(
rect = list(
col = 'transparent',
fill = covariate.colours1,
lwd = 1.5
),
rect = list(
col = 'transparent',
fill = covariate.colours2,
lwd = 1.5
)
);
# add column grid lines and a border with default gpar settings
covariates.grob4 <- covariates.grob(
covariates = covariates3,
ord = c(1:nrow(x)),
side = 'top',
grid.col = list(col = 'black', lty = 3),
grid.border = list()
);
# draw a subset of row/column lines
covariates.grob5 <- covariates.grob(
covariates = covariates3,
ord = order.dendrogram(cov.dendrogram),
side = 'right',
grid.row = list(lineend = 'butt', lwd = 2),
row.lines = 6,
reorder.grid.index = FALSE, # note: this is already set by default
grid.col = list(lty = 2),
col.lines = c(0,1)
);