library(knitr) knitr::opts_chunk$set( error = FALSE, tidy = FALSE, message = FALSE, warning = FALSE, fig.align = "center" ) suppressPackageStartupMessages(library(InteractiveComplexHeatmap))
In ComplexHeatmap, functions decorate_*()
(e.g. decorate_annotation()
) are used to add graphics after
the heatmaps are drawn. To also put the decoration graphics in heatmaps in
the Shiny app, user needs to wrap all the decoration code into a function and
send it with post_fun
argument to draw()
function. For example, the following
code generates a decorated heatmap:
library(ComplexHeatmap) m = matrix(rnorm(100), 10) ht = Heatmap(m, name = "foo") ht = draw(ht) decorate_heatmap_body("foo", { grid.text("some text", gp = gpar(fontsize = 30)) })
To export it as a Shiny app also with decorations, the code needs to be slightly adjusted to:
library(InteractiveComplexHeatmap) post_fun = function(ht_list) { decorate_heatmap_body("foo", { grid.text("some text", gp = gpar(fontsize = 30)) }) } ht = draw(ht, post_fun = post_fun) htShiny(ht)
post_fun
is a self-defined function and always needs one argument ht_list
.
Since post_fun
is applied after the heatmaps are drawn, ht_list
used in
post_fun
actually contains the clustering results (if they are applied). Thus,
you can do something like follows in post_fun
:
post_fun = function(ht_list) { decorate_heatmap_body("foo", { row_dend(ht_list) row_order(ht_list) ... }) }
Note the decorations will not be applied on the sub-heatmap, so you will not see the decoration graphics there.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.