318 lines
63 KiB
HTML
318 lines
63 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<meta charset="utf-8">
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
|||
|
<title>Most probably asked questions</title>
|
|||
|
<style type="text/css">
|
|||
|
/**
|
|||
|
* Prism.s theme ported from highlight.js's xcode style
|
|||
|
*/
|
|||
|
pre code {
|
|||
|
padding: 1em;
|
|||
|
}
|
|||
|
.token.comment {
|
|||
|
color: #007400;
|
|||
|
}
|
|||
|
.token.punctuation {
|
|||
|
color: #999;
|
|||
|
}
|
|||
|
.token.tag,
|
|||
|
.token.selector {
|
|||
|
color: #aa0d91;
|
|||
|
}
|
|||
|
.token.boolean,
|
|||
|
.token.number,
|
|||
|
.token.constant,
|
|||
|
.token.symbol {
|
|||
|
color: #1c00cf;
|
|||
|
}
|
|||
|
.token.property,
|
|||
|
.token.attr-name,
|
|||
|
.token.string,
|
|||
|
.token.char,
|
|||
|
.token.builtin {
|
|||
|
color: #c41a16;
|
|||
|
}
|
|||
|
.token.inserted {
|
|||
|
background-color: #ccffd8;
|
|||
|
}
|
|||
|
.token.deleted {
|
|||
|
background-color: #ffebe9;
|
|||
|
}
|
|||
|
.token.operator,
|
|||
|
.token.entity,
|
|||
|
.token.url,
|
|||
|
.language-css .token.string,
|
|||
|
.style .token.string {
|
|||
|
color: #9a6e3a;
|
|||
|
}
|
|||
|
.token.atrule,
|
|||
|
.token.attr-value,
|
|||
|
.token.keyword {
|
|||
|
color: #836c28;
|
|||
|
}
|
|||
|
.token.function,
|
|||
|
.token.class-name {
|
|||
|
color: #DD4A68;
|
|||
|
}
|
|||
|
.token.regex,
|
|||
|
.token.important,
|
|||
|
.token.variable {
|
|||
|
color: #5c2699;
|
|||
|
}
|
|||
|
.token.important,
|
|||
|
.token.bold {
|
|||
|
font-weight: bold;
|
|||
|
}
|
|||
|
.token.italic {
|
|||
|
font-style: italic;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<style type="text/css">
|
|||
|
body {
|
|||
|
font-family: sans-serif;
|
|||
|
max-width: 800px;
|
|||
|
margin: auto;
|
|||
|
padding: 1em;
|
|||
|
line-height: 1.5;
|
|||
|
box-sizing: border-box;
|
|||
|
}
|
|||
|
body, .footnotes, code { font-size: .9em; }
|
|||
|
li li { font-size: .95em; }
|
|||
|
*, *:before, *:after {
|
|||
|
box-sizing: inherit;
|
|||
|
}
|
|||
|
pre, img { max-width: 100%; }
|
|||
|
pre, pre:hover {
|
|||
|
white-space: pre-wrap;
|
|||
|
word-break: break-all;
|
|||
|
}
|
|||
|
pre code {
|
|||
|
display: block;
|
|||
|
overflow-x: auto;
|
|||
|
}
|
|||
|
code { font-family: 'DejaVu Sans Mono', 'Droid Sans Mono', 'Lucida Console', Consolas, Monaco, monospace; }
|
|||
|
:not(pre) > code, code[class] { background-color: #F8F8F8; }
|
|||
|
code.language-undefined, pre > code:not([class]) {
|
|||
|
background-color: inherit;
|
|||
|
border: 1px solid #eee;
|
|||
|
}
|
|||
|
table {
|
|||
|
margin: auto;
|
|||
|
border-top: 1px solid #666;
|
|||
|
}
|
|||
|
table thead th { border-bottom: 1px solid #ddd; }
|
|||
|
th, td { padding: 5px; }
|
|||
|
thead, tfoot, tr:nth-child(even) { background: #eee; }
|
|||
|
blockquote {
|
|||
|
color: #666;
|
|||
|
margin: 0;
|
|||
|
padding-left: 1em;
|
|||
|
border-left: 0.5em solid #eee;
|
|||
|
}
|
|||
|
hr, .footnotes::before { border: 1px dashed #ddd; }
|
|||
|
.frontmatter { text-align: center; }
|
|||
|
#TOC .numbered li { list-style: none; }
|
|||
|
#TOC .numbered { padding-left: 0; }
|
|||
|
#TOC .numbered ul { padding-left: 1em; }
|
|||
|
table, .body h2 { border-bottom: 1px solid #666; }
|
|||
|
.body .appendix, .appendix ~ h2 { border-bottom-style: dashed; }
|
|||
|
.footnote-ref a::before { content: "["; }
|
|||
|
.footnote-ref a::after { content: "]"; }
|
|||
|
section.footnotes::before {
|
|||
|
content: "";
|
|||
|
display: block;
|
|||
|
max-width: 20em;
|
|||
|
}
|
|||
|
|
|||
|
@media print {
|
|||
|
body {
|
|||
|
font-size: 12pt;
|
|||
|
max-width: 100%;
|
|||
|
}
|
|||
|
tr, img { page-break-inside: avoid; }
|
|||
|
}
|
|||
|
@media only screen and (min-width: 992px) {
|
|||
|
pre { white-space: pre; }
|
|||
|
}
|
|||
|
</style>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<div class="frontmatter">
|
|||
|
<div class="title"><h1>Most probably asked questions</h1></div>
|
|||
|
<div class="author"><h2></h2></div>
|
|||
|
<div class="date"><h3></h3></div>
|
|||
|
</div>
|
|||
|
<div class="body">
|
|||
|
<div id="TOC">
|
|||
|
<ul>
|
|||
|
<li><a href="#most-probably-asked-questions">Most probably asked questions</a>
|
|||
|
<ul>
|
|||
|
<li><a href="#there-is-no-plot-coming-out-after-running-heatmap-function">There is no plot coming out after running Heatmap() function.</a></li>
|
|||
|
<li><a href="#retrieve-orders-and-dendrograms">Retrieve orders and dendrograms.</a></li>
|
|||
|
<li><a href="#how-should-i-control-the-height-or-width-of-the-heatmap-annotations">How should I control the height or width of the heatmap annotations?</a></li>
|
|||
|
<li><a href="#how-should-i-control-the-axes-of-the-annotations">How should I control the axes of the annotations?</a></li>
|
|||
|
<li><a href="#how-to-control-the-style-of-legends">How to control the style of legends?</a></li>
|
|||
|
<li><a href="#some-text-are-cut-by-the-plotting-region">Some text are cut by the plotting region.</a></li>
|
|||
|
<li><a href="#can-the-heatmaps-be-added-vertically">Can the heatmaps be added vertically?</a></li>
|
|||
|
<li><a href="#does-heatmap-title-supports-mathematical-expression">Does Heatmap title supports mathematical expression?</a></li>
|
|||
|
<li><a href="#i-have-many-heatmaps-and-i-want-to-put-them-into-different-panels-for-a-big-figure-for-my-paper">I have many heatmaps and I want to put them into different panels for a big figure for my paper.</a></li>
|
|||
|
<li><a href="#i-have-a-matrix-with-too-many-rows-and-i-want-to-simplify-the-row-dendrogram">I have a matrix with too many rows and I want to simplify the row dendrogram.</a></li>
|
|||
|
<li><a href="#i-have-a-matrix-with-huge-nunmber-of-rows-or-columns-what-is-the-efficient-way-to-visualize-it">I have a matrix with huge nunmber of rows or columns, what is the efficient way to visualize it?</a></li>
|
|||
|
<li><a href="#how-to-add-axes-for-dendrograms">How to add axes for dendrograms?</a></li>
|
|||
|
<li><a href="#i-set-row-km-column-km-and-it-gives-me-different-k-means-clusterings-for-different-runs">I set row_km/column_km and it gives me different k-means clusterings for different runs.</a></li>
|
|||
|
<li><a href="#i-only-want-to-draw-dendrograms-plus-a-list-of-annotations">I only want to draw dendrograms plus a list of annotations.</a></li>
|
|||
|
<li><a href="#i-still-have-a-problem-with-the-package-and-i-am-lost-in-the-ocean-of-the-huge-vignette">I still have a problem with the package and I am lost in the ocean of the huge vignette.</a></li>
|
|||
|
<li><a href="#can-i-also-add-heatmaps-produced-by-pheatmap">Can I also add heatmaps produced by pheatmap()?</a></li>
|
|||
|
<li><a href="#can-i-make-an-interactive-heatmap">Can I make an interactive heatmap?</a></li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<!--
|
|||
|
%\VignetteEngine{knitr}
|
|||
|
%\VignetteIndexEntry{Most probably asked questions}
|
|||
|
-->
|
|||
|
<h2 id="most-probably-asked-questions">Most probably asked questions</h2>
|
|||
|
<style type="text/css">
|
|||
|
h1, h2, h3, h4, h5 {
|
|||
|
line-height: 120%;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<h3 id="there-is-no-plot-coming-out-after-running-heatmap-function">There is no plot coming out after running Heatmap() function.</h3>
|
|||
|
<p>In this case, you need to use <code>draw()</code> function explicitly. See
|
|||
|
<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#plot-the-heatmap">https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#plot-the-heatmap</a>
|
|||
|
and
|
|||
|
<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#plot-the-heamtap-list">https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#plot-the-heamtap-list</a>.</p>
|
|||
|
<h3 id="retrieve-orders-and-dendrograms">Retrieve orders and dendrograms.</h3>
|
|||
|
<p>For retrieving orders and dendrograms from a single heatmap. See
|
|||
|
<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#get-orders-and-dendrograms-from-heatmap">https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#get-orders-and-dendrograms-from-heatmap</a>.</p>
|
|||
|
<p>For retrieving orders and dendrograms from a list of heatmaps. See
|
|||
|
<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#get-orders-and-dendrograms-from-a-list-of-heatmaps">https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#get-orders-and-dendrograms-from-a-list-of-heatmaps</a>.</p>
|
|||
|
<h3 id="how-should-i-control-the-height-or-width-of-the-heatmap-annotations">How should I control the height or width of the heatmap annotations?</h3>
|
|||
|
<p>For complex annotations generated by <code>anno_*()</code> functions, width or height
|
|||
|
should be set inside the <code>anno_*()</code> function, such as <code>anno_points(..., height = ...)</code>. The size of simple annotations is controlled by <code>anno_simple_size</code>.
|
|||
|
The <code>width</code>/<code>height</code> and <code>annotation_width</code>/<code>annotation_height</code> are used to
|
|||
|
adjust the size for multiple annotations which are put in one
|
|||
|
<code>HeatmapAnnotation</code> object. See
|
|||
|
<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/heatmap-annotations.html#multiple-annotations">https://jokergoo.github.io/ComplexHeatmap-reference/book/heatmap-annotations.html#multiple-annotations</a></p>
|
|||
|
<h3 id="how-should-i-control-the-axes-of-the-annotations">How should I control the axes of the annotations?</h3>
|
|||
|
<p>In the annotation functions <code>anno_*()</code>, the argument <code>axis_param</code> can be used
|
|||
|
to set the axes. The value should be a list and the default settings for axis
|
|||
|
can be get by:</p>
|
|||
|
<pre><code class="language-r">default_axis_param("column")
|
|||
|
default_axis_param("row")
|
|||
|
</code></pre>
|
|||
|
<h3 id="how-to-control-the-style-of-legends">How to control the style of legends?</h3>
|
|||
|
<p>The style of legends can be controlled by <code>heatmap_legend_param</code> in
|
|||
|
<code>Heatmap()</code>, or <code>annotation_legend_param</code> in <code>HeatmapAnnotation()</code>. The
|
|||
|
parameters for controlling legends are those arguments in <code>Legend()</code> function.
|
|||
|
See
|
|||
|
<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/legends.html#heatmap-and-annotation-legends">https://jokergoo.github.io/ComplexHeatmap-reference/book/legends.html#heatmap-and-annotation-legends</a>.</p>
|
|||
|
<h3 id="some-text-are-cut-by-the-plotting-region">Some text are cut by the plotting region.</h3>
|
|||
|
<p>The layout of the <strong>ComplexHeatmap</strong> is not perfect that it is still possible
|
|||
|
some of the text are drawn out of the plotting region. In this case, you can
|
|||
|
set the <code>padding</code> argument in <code>draw()</code> function to increase the blank areas
|
|||
|
around the final plot. See
|
|||
|
<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#manually-increase-space-around-the-plot">https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#manually-increase-space-around-the-plot</a>.</p>
|
|||
|
<h3 id="can-the-heatmaps-be-added-vertically">Can the heatmaps be added vertically?</h3>
|
|||
|
<p>Yes, use <code>%v%</code> instead of <code>+</code>. See <a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#vertical-concatenation">https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html#vertical-concatenation</a>.</p>
|
|||
|
<h3 id="does-heatmap-title-supports-mathematical-expression">Does Heatmap title supports mathematical expression?</h3>
|
|||
|
<p>Yes, all the text-related elements (e.g. titles, row names, legend titles, legend labels, …) allow
|
|||
|
methematical expression.</p>
|
|||
|
<h3 id="i-have-many-heatmaps-and-i-want-to-put-them-into-different-panels-for-a-big-figure-for-my-paper">I have many heatmaps and I want to put them into different panels for a big figure for my paper.</h3>
|
|||
|
<p>You can set <code>newpage = FALSE</code> in <code>draw()</code> function and use <code>grid.layout()</code> to
|
|||
|
manage the layout of your panels.</p>
|
|||
|
<pre><code class="language-r">pushViewport(viewport(layout = grid.layout(...)))
|
|||
|
pushViewport(viewport(layout.pos.row = ..., layout.pos.col = ...))
|
|||
|
draw(ht, newpage = FALSE) # or draw(ht_list, newpage = FALSE)
|
|||
|
popViewport()
|
|||
|
...
|
|||
|
</code></pre>
|
|||
|
<p>But I more suggest to use <code>grid.grabExpr()</code> to directly capture the output of
|
|||
|
the heatmap and later draw the whole plot as a single graphic element by
|
|||
|
<code>grid.draw()</code>.</p>
|
|||
|
<pre><code class="language-r">ht_grob = grid.grabExpr(draw(ht, ...))
|
|||
|
|
|||
|
pushViewport(viewport(layout = grid.layout(...)))
|
|||
|
pushViewport(viewport(layout.pos.row = ..., layout.pos.col = ...))
|
|||
|
grid.draw(ht_grob)
|
|||
|
popViewport()
|
|||
|
...
|
|||
|
</code></pre>
|
|||
|
<h3 id="i-have-a-matrix-with-too-many-rows-and-i-want-to-simplify-the-row-dendrogram">I have a matrix with too many rows and I want to simplify the row dendrogram.</h3>
|
|||
|
<p>You can first group your rows into several groups and make a group-level
|
|||
|
dendrogram on it. See following example:</p>
|
|||
|
<pre><code class="language-r">m = matrix(rnorm(1000*10), nr = 1000)
|
|||
|
hc = hclust(dist(m))
|
|||
|
group = cutree(hc, k = 6)
|
|||
|
Heatmap(m, cluster_rows = cluster_within_group(t(m), group),
|
|||
|
row_split = 6, border = TRUE) # it would be better if also set row_split
|
|||
|
</code></pre>
|
|||
|
<p><img src="data:image/png;base64,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
|
|||
|
<h3 id="i-have-a-matrix-with-huge-nunmber-of-rows-or-columns-what-is-the-efficient-way-to-visualize-it">I have a matrix with huge nunmber of rows or columns, what is the efficient way to visualize it?</h3>
|
|||
|
<p>Heatmap is used to visualize the global patterns of your matrix while not
|
|||
|
every single row or column. I suggest to random sample rows or columns into a
|
|||
|
reasonable small number, and the final heatmap should look the same as if you
|
|||
|
still insist to use the full matrix.</p>
|
|||
|
<h3 id="how-to-add-axes-for-dendrograms">How to add axes for dendrograms?</h3>
|
|||
|
<p>You need to use <code>decorate_row_dend()</code> or <code>decorate_column_dend()</code> to manually
|
|||
|
add the axes. See following examples:</p>
|
|||
|
<pre><code class="language-r">m = matrix(rnorm(100), 10)
|
|||
|
|
|||
|
ht = Heatmap(m, name = "foo",
|
|||
|
row_dend_width = unit(4, "cm"),
|
|||
|
column_dend_height = unit(4, "cm")
|
|||
|
)
|
|||
|
draw(ht, padding = unit(c(15, 2, 2, 2), "mm"))
|
|||
|
decorate_column_dend("foo", {
|
|||
|
grid.yaxis()
|
|||
|
})
|
|||
|
decorate_row_dend("foo", {
|
|||
|
vp = current.viewport()
|
|||
|
xscale = vp$xscale
|
|||
|
grid.xaxis(at = xscale[2] - 0:5, label = 0:5)
|
|||
|
})
|
|||
|
</code></pre>
|
|||
|
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfgAAAH4CAMAAACR9g9NAAAB3VBMVEUAAAAAADoAAGYAAP8AOpAAZrYBAP86AAA6ADo6AGY6OmY6OpA6ZrY6kNs7HP9IJv5eNv5mAABmADpmAGZmOgBmOpBmtv9uRP19Uf1/U/2EV/yQOgCQOjqQOmaQZPyQZgCQtpCQ29uQ2/+Zb/ubcfudc/ufdvujevqlffqmfvqogfqqg/quiPm0kPm2ZgC2Zjq2kvi22/+2//+5l/i6mPi7mvi9nPi9nfi+nvfEp/fFqfbGqvbIrPbJr/bLsfbMsvXNtfXPt/XRu/TRu/XWw/TYx/PZyPPayvPbkDrbtmbby/Pb///dzvLe0PLf0vLg1fHh1vHi2PHj2fHj2vHk2/Hm3/Do4vDq5u/r6O/u7u7v7ezx6ebx6efx6ejy6OXz5eH049/05OD14dv14dz24Nr24Nv33tf42tP52ND52tL61sz90MT/AAD/LBX/QST/RCf/UjL/WTn/ZEP/Z0b/aEf/c1P/eVn/gWH/hWb/h2j/iGn/imv/jG7/kHP/lHf/l3v/m4D/nIL/n4X/oYf/po3/p4//q5P/q5T/rJX/rZb/spz/s53/s57/tJ//tmb/tqH/tqL/uKT/u6n/vKn/vqz/wK//xbb/xrf/x7n/ybv/25D/27b//7b//9v///8xn089AAAACXBIWXMAAAsSAAALEgHS3X78AAAM4UlEQVR4nO3d93vkRhnAcfli40uMAeeCKb4jienNgGmhd1gwIQRCr6GE3nsvgUAoSyew7O7fysrOY4+0lt6Z0YxGmvf7/SEPt9boPfZz2mZLLpaksiL1X4DSBLzSgFca8ErrCX5SlO33M+zyiqHX893R36jp5kl/w9Yb+mNbtvDzWw97m3VZwCcaN9k6n5ngkQ34VOPqBzzwtXKFrz/DA18rV/ij3USDkw10LFP4xfXaSzvga2UKv/aaHvhamcKnHwx8ynEJBwOfclzCwcCnHJdwMPApxyUcDHzKcQkHA59k3OKg2Ki8oQO+VqbwR/u1D22Br5Un/PzacZrBCQc6lif8bOf2i4d6vi17WZnCb++v8HmobylT+BV69eN64GvlCT9/IvBCecKXr+p5qG8tU/j5XnGl8sIe+FqZwqcfDHzKcQkHA59yXMLBwKccl3Aw8CnHJRyc7v/pIE+xA35kg4Ef/MA4g8cGX54nXXkjD3zavfX4yV2awekGxhk8Mvi1E2mAT7y3vr5Js1dcXBBD2ffjVcPPrh7Wjnrg0+6tz7uj8jwfZHDgt8ih3ys/+pcc5N5GDh9iJ7F3O8y99QRf/oTt4kbwt3PAJ9+P1Op9fISfqwc++X7SDB4QfF+vJYAPtpMwux3ympj7iTE42Sv03NbE3E+MwckeFHJbE3M/MQYDH2hNzP3EGAx8oDUx9xNjMPCB1sTcj9zioPKdWeC1wE8K4BOtibkfsdkttwGfaE3M/Ugtrt954Pr9eOADrYm5H6nJLs/xydbE3I/QbOcE+GRrYu5H6OyXEZlXLgdeBfySt3MJ18Tcj1xe8EG+O6QD3n3woOH72UmYNTH3E2Mw8IEeWTxnxwn4/uYEXNa9WI+EPT33Au9bsqfAAYEA772Jx5oBgQDvvYnHmgGBaICfFu7XuQN+/PCzm4+N3ypsORj48cOXlfhOg4HPA/78iE/7ieaAQFTAz7adz50DPgf4+q+XBV4NvPP58cCPH748P54jPtWcgMuck8+Pt/iUPTcQDfDy4AHdUbnNCbise8AD33CDxRqfTRTOCbise8AD33CDxRqfTRTOCbise8AD33CDxRqfTRTOCbjMudl2IZwmPaA7Krc5AZe5Vn5qV17IuGXwgO6o3OYEXObatPyWbPtn9QO6o3KbE3CZT+ef1V/+8euA7qjc5gRc5tHiwDxZliO+xzkBl7k336u4A9/jnIDLnJtt134bEfAq4Nfcge9xTsBlrp1dEYNX9WnmBFzWPeCBb7jBYo3PJgrnBFzWPeCBb7jBYo3PJgrnBFzWPeCBb7jBYo3PJgrnBFzWPeC1wFdPlgW+xzkBl7k3lS6MMKA7Krc5AZc5d7RxB0d8qjkBl3l08VDP9+N7nhNwmUc8xyebE3CZR8AnmxNwmUfAJ5sTcJlHwCebE3CZR8AnmxNwWfeAB77hBos1PpsonBNwWfeAB77hBos1PpsonBNwWfeAB77hBos1PpsonBNwWfeA1wE/3ys2T1oHD+iOym1OwGWulb9tULhe/YDuqNzmBFzm2vzasXS9+gHdUbnNCbjMtdnOCefHJ5sTcJlr6xcx/pvc+8Xul/uj3D/EfiD3Y7lfiD1X7mVyViIpjvjTgFcBv/4cD7wK+PI6KNVX9cCrgF9/Hw+8Dvi1gAceeOCBBx544IEHHnjggQceeOCBBx74loAHvt+AHye8za8Abg34kcJ7rjsPeOCBBx544IEHHnjggQceeOCBBx544IGPAAg88H4BDzzwwAMPPPDAA58R/Lfl/iD2c7lfyX1Q7CG5L8i9Qeyjco/IRQUEHni/gAceeOCBBx544IEHHnjggQceeOCBBx74CIDA64Gvnu3q6X0e8OOB91x3ecADDzzwwA8fvuMVMYAfLbz9yssCHnjggQceeOCBBx544IEHHnjggQceeOBtNR02BR54v4AHHnjggQceeOCBzwj+J3K/FntA7h6594n9Re7Fcn8S+5jc0+XcNR02BR54v4AHHnjggQceeOCBBx544IFPAt/1fFngxwnf+ew54IEHHnjggQceeOCBBx544IcD73BFDOCzgrffG/DAAw888MADDzzwwAMPPPDAAw888MADb6/psCnwwPvsDXjggQceeOCBBx74QcFflv3ePiL3ebHPyd0t92Wxj8t9Su6fYm+Ue7lcZPiOewMeeOCBBx544IEHHnjggQceeOCBBx544DtS2X8eC3xe8NabAg+8FPDAAw888MADPyZ4+4DPCd4h4IEHHnjggQceeOCBBx544IEHHnjggQdeRrXZBnjgAwQ88MADDzzwwAMPfEbwd8m9Q+yVcr+X+4zYa+U+K/ew2JfkLP6tn96/i4Ni1wK1NeBHCD+7emiDarMN8COCXx3wG4cvKorHnizP/tuA2hrw44Mvj/jplZf8b2/37L9NqK0BP074yebJ8mjr7L9NqK0BP054jnil8Eue4xXCW6LabAM88AECHnjggQc+FPxXzcobJtVX9sArgZ8WwKuALzs/2lfv7nbeCbwK+OoRP792PAVeIfykvCRBRR54FfCrAh7xDte/WA/4EcNbrG0M+J7hPfCAB955bWPAAw888MCHgv+aWTNqa8CPEP7rZs2orQE/QvhvmjWjtgb8COG/ZVb+tHWxWfn5K+Azhf+O2XK6tVwe7QOvAL7se2Xnf5oArwH++2blDdPqz9YDnyn8D81Wf66fUwF8pvA/M1u9uNuv3f/AZwr/S7PlUdDvxwM/YPgHzZpRWwN+hPC/M2tGbS0K/L1ynxb7jdwn5P4qZgHyLrnniT0g90m50/u38vdvRm0N+BHC/8usGbU14EcI/2+zZtTWgB8h/FfMmlFbA36E8JW/XDNqa8CPEP5+s+XqjfxG9SpYwGcKX7n64nK6eTIdyLdlgY8LX/bhstP/Ndktz6JyxQN+hPD3mZXfkl3c8IZfC/jhwr/brNsRb3078AOAf7tZt+d44McE/2azbq/qgR8T/OvMPPGAHyH8q80a8YRTmoEfH/wrzJrhW42AHyH8C80a8YDPDv75Zo14wGcH/xyzRrxA8C6XQgE+LvwzzKLDt+6mGvBx4Z9mVt5QO30O+Ezhn2pW3lA7fQ74TOHLnlxm3ukT4LOHf5LZo/e5efoc8JnCP8FseVRs1U6fAz5T+MeblTfUTp8DPlP4x5mVN9ROnwM+U/ibzBrxgAceeOCBBx544IEHHnjggR8BvPmr54DXA1/51XOd4LucWvNSuQ+I/Vnuv3JvE7tHTr7AzcOvEnuL3Gvkzu/j6sN89VfPdYH333AJfGz4tSO+9qvngFcBf1RsTcJ9Vg/8gOEviyMeeOA1wa9bAQ98F0/g
|
|||
|
<p>Note for the left row dendrogram, the x-axis is from right to left, you need to self-define <code>at</code>
|
|||
|
and <code>label</code> in <code>grid.xaxis()</code> function.</p>
|
|||
|
<p>You can also check <code>annotation_axis_grob()</code> function (later use <code>grid.draw()</code> to draw the axes) to draw a nicer axis.</p>
|
|||
|
<h3 id="i-set-row-km-column-km-and-it-gives-me-different-k-means-clusterings-for-different-runs">I set row_km/column_km and it gives me different k-means clusterings for different runs.</h3>
|
|||
|
<p>Yes, this is what it should be expected because k-means uses random start points and it might give
|
|||
|
different results for different runs. To solve this problem, you do either way as follows:</p>
|
|||
|
<ol>
|
|||
|
<li>Always add <code>set.seed(...)</code> before making the heatmap. This makes sure the
|
|||
|
random seed is always the same for different runs.</li>
|
|||
|
<li>Set <code>row_km_repeats</code>/<code>column_km_repeats</code> to run k-means multiple times to get a
|
|||
|
final consensus k-means clustering. Note you might still get different
|
|||
|
results, but the chance is much smaller than just running k-means once.</li>
|
|||
|
</ol>
|
|||
|
<h3 id="i-only-want-to-draw-dendrograms-plus-a-list-of-annotations">I only want to draw dendrograms plus a list of annotations.</h3>
|
|||
|
<p>You need to assign the dendrograms to a zero-row/column matrix:</p>
|
|||
|
<pre><code class="language-r">hc = hclust(dist(matrix(rnorm(100), 10)))
|
|||
|
Heatmap(matrix(nc = 0, nr = 10), cluster_rows = hc,
|
|||
|
right_annotation = rowAnnotation(
|
|||
|
foo = anno_points(1:10),
|
|||
|
sth = 1:10,
|
|||
|
bar = anno_barplot(1:10)),
|
|||
|
row_split = 2)
|
|||
|
</code></pre>
|
|||
|
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfgAAAH4CAMAAACR9g9NAAAByFBMVEUAAAAAADoAAGYAOmYAOpAAZrYHgHEQgXMXg3Qihncmh3kuinwyjH01jX83joA6AAA6ADo6AGY6Ojo6OmY6OpA6ZmY6ZpA6ZrY6fGY6kJA6kLY6kNs8kII/kYRFlIdIlohLl4pRmo1UnI9XnZBcoJNfoZVkpJhmAABmADpmAGZmOgBmOjpmOmZmZjpmZmZmZpBmZrZmkLZmkNtmtrZmtttmtv9npppqp5tuqp5vqp9yrKB3r6R5sKV8sqd82/+AgICBkGaBkJCBtaqEtqyGuK2Jua+Lu7GOvLKQOgCQOjqQOmaQZjqQZmaQZpCQkGaQkLaQtraQttuQ2/+Tv7aWwLebw7ucUTqckJCdkGadxbyexr2gxr6lycGny8OqzMWvz8ix0cq2ZgC2Zjq2Zma2kDq2kGa2kJC2tpC2ttu21M2227a229u22/+2/9u2//+51c+719HB2tTD29bI3tnL4NvN4d3O4t7S5ODV5uLa6eXbkDrbkGbbkJDbtmbbtpDbtrbb25Db27bb29vb2//b/9vb///c6uff7Onk7+zn8e7s9PLu9fTx9/X2+vn5+/v7/fz/tmb/tpD/25D/27b/29v//7b//9v///9SyXiTAAAACXBIWXMAAAsSAAALEgHS3X78AAAPN0lEQVR4nO2diX8jZRmAZ5ddbwW2KMp64lEOqYDWW+vtsoBKvW9LRTwg3lcRFLAqnrXYzL9rJtm236RvJt/7Zsjkfed5fvsjTWY6/Z4+zCSdIylK6CVF1wOAbiB8TyF8TyF8T+lB+KKJ52o0z9u1SKvEshFpUjwT3rgcf8SyESG8RCwbEcJLxLIRIbxELBsRwkvEshEhvEQsGxHCS8SyESG8RCwbEVX4hl01sX5VsWxEVOG3KggfAsJLxLIRIbxELBsRwkvEshEhvEQsGxHCS8SyESG8RCwbEcJLxLIRIbxELBsRwkvEshEhvEQsG5GiOt9y1jTCx6UoZ58iS3j/zDwjmvAScWxmmrCpl4hj0xR+9jcR3j2EVxHHhvAq4tgQXkUcG8KriGNDeBVxbAivIo4N4VXEsSG8ijg2hFcRx4bwKuLYEF5FHJt2wnPtnDvaCW/5AS6JY0N4FXFsCK8ijg3hVcSxIbyKODaEVxHHhvAq4tgQXoU3m6P14zOnzw8mj8x9c+nGmJ+qQfgVZudi/X4xdXsGwkv4sxleuVy7T3gT/m0Ib8K/DeFN+LchvAn/NoQ34d+G8Cb82xDehH8bwpvwb9Nu+IbPmvP/q0rxb9Nu+K06hF9dCG/Cvw3hTfi3IbwJ/zaEN+HfhvAm/NsQ3oR/G8Kb8G9DeBP+bQhvwr8N4U34t1GGr5+NS3i/6MJPH3ghvFtOws9+2/J0bsJP8G8z14BNvYR/G2X4qWmEdwvhTfi3IbwJ/zaEN+HfhvAm/NsQ3oR/G8Kb8G9DeBP+bQhvwr8N4U34tyG8Cf82hDfh36bd8Fw754Z2wy/yg1zh34bwJvzbEN6EfxvCm/BvQ3gT/m0Ib8K/DeFN+LchvAn/NvPDN7HAvL7xb+PfoBP8/9r8G3SC/1/bYpv6F9VgU++IxV7cTYdf5Ae5wr8N4U34tyG8Cf82hDfh34bwJvzbEN6EfxvCm/BvQ3gT/m3aDc8OHDe0G35rJoRfMQhvwr8N4U34tyG8Cf82hDfh34bwJvzbEN6EfxvCm/BvQ3gT/m0Ib8K/DeFN+LdZILxwsiXh3WAPL51lS3g3nBrMOKBGeAn/NoXw1YwZzkwhvGMWCM+LO88Q3oR/G8Kb8G9DeBP+bQhvwr8N4U34tyG8Cf82hDfh34bwJvzbEN6EfxvCm/BvQ3gT/m3aDc+1c25oN3zWD4qAfxvCm/BvQ3gT/m0Ib8K/DeFN+LchvAn/NoQ34d+G8Cb82ywWfoF5fePfhvAm/NsQ3oR/G8Kb8G9DeBP+bQhvwr8N4U34tyG8Cf82hDfh36bd8A0n2vj/VaX4t2k3/NYW4Z1AeBP+beaeDUl4Cf82p70Jr8C/DeFN+LchvAn/NoQ34d+G8Cb82xDehH8bwpvwb0N4E/5t5odvcCS8X+aFb7zAmfB+qYUXLmknvIh/m3r4xhmEadP3Ce+G+eGbvnn6PuHdQHgT/m0Ib8K/DeFN+LchvAn/NoQ34d+G8Cb82xDehH8bwpvwb0N4E/5tCG/Cvw3hTfi3aTc81865od3winl949+G8Cb82xDehH8bwpvwb0N4E/5tCG/Cvw3hTfi3IbwJ/zZJeHnvS2PMH9UgvCNqsQmfi38bwpvwb0N4E/5tCG/Cv00n4Ye72wfntlXjXDEIbwo/qk74jlly+OH9RXHhz1eKc587d6m4MDAMeDUgvDL84Q3v2Z+s8cXm0fqmYcCrAeG1m/rvX19cN5hs6gnfJe2Gb3hn3JMHDtc3Cd897YbfOmFG+KM7iuI1+8+vj57jCd8pSw4fBf82hDfh34bwJvzbLDl87cOnRxzdPvpbfqdwtzeH8IuFPyjOD8qDC/ujfwtZLB3C6zf1p6t7Ofz88Oqg3Ls8WfE9QXhl+BcnVPfH4TfHN64gvDL8SxKq+6zxXbHk8C9NqO5X4XmO74Ilh39ZQnV/vI3nVX0H5IcXzsHVh395wuKD744ehRcPvKjDvyKhjeF3RbTwZ9+2vOXwr0x4AWyWRrDw4gwNc+rDvz5hwZF3Sp/CS9PU4d+QsMCoO4fwyvBvTFhg1J1DeGX4NyUsMOrOIbwy/JsTSpd/wU8gvDL8WxJKl/vsJhBeGX7ErWPGXx7etH9w0TTsriG8MvxbE8rqeLzPFZ7w2vBvSyjLvYvl4Y3OjstNILwy/NsTSpcHZCcQXhn+HQllObxSFD7PrSe8Mvx7ExYYdecQXhn+fQn2QXcP4evh514794GEBUbdOYSvh5+7nA8maIe6ShBeGf5DCdqhrhKEV4b/cIJ2qKsE4ZXhP5KgHeoqQXhl+E8kjO7uFQX76rthyeE/mVCW1RGaHZd7cAivDD/i02PGX+5tsMZ3xZLDfyZhtLaPqu+xxnfCYuFfVSMj/GcTJtEPLmuHvAr4Dz9Xod3wX0yYPMezxnfEcsN/KaEcv6p3ucITXhv+ywnaka4ShFeG/3qCdqSrBOGV4b+ZoB3pKkF4ZfhvJWhHukoQXhn+2wnaka4ShFeG/06CdqSrBOHr4WdxspzvJrRl0AWEr4ffkjkN/72E8QN7/B3fEcsNX9u1X1aX0hC+I5YbfsRPx0y+PrzpScJ3xHLD/yxh/BbGPo/REF4b/ucJ4131TnfWE14Z/hcJ4wdY47tiueF/mTB+gPBdsdzwv0poy6ALCK8M/+uEtgy6gPDK8L9NaEmgEwivDP+7hLYMuqC/4Sf739Xhf5/QpsWy6W34yZEXffi/JLTrsVxihG86qNZy+L8mLE3xBSBI+DnTxYdtm/q/JUzeA8fn+531N/xkmjr8cwlcO9cpyw0/4u9jTpbBBRUdsdzw/0gYP8BbmnbFcsP/M6G6v+OzO+G14f+VUL24c7mdLwmvDv/vhOrt6jke3xnLDf+fhBYllg7h9a/qQxDAhvAWAtgQ3kIAG8JbCGBDeAsBbFoNP/fauSn4+LHuaDW8cjl8/FiHdBmez6TpkE7Db5bDq4TvBtZ4C4TnOd4rXYbnVf3SqM5yqw6HnX7AY6fh3eLOpjrxYWe0dSX8YnizObqt2rIenB+0FP43NQi/skzCj15U/YnwC+HO5to5bnvFecIvgjub4ZVr5Qm/EAFsCG8hgA3hLQSwIbyFADaEtxDAhvAWAtgQ3kIAm1bDp++ooFiOPwLYtBo+OblSsxx/BLAhvIUANoS3EMCG8BYC2BDeQgAbwlsIYEN4CwFsCG8hgA3hLQSwIbyFADaEtxDAJi+8uPud8J7JCj/rwAvh/TIdXnzbcsJPEcDmTPiz00s29dMEsMkLP+N7Ce8XwlsIYEN4CwFsCG8hgA3hLQSwIbyFADaEtxDAhvAWAtgQ3kIAm+m9sYTPIYYN4dXEsGkvPJdQuaK98Lk/xD0xbAivJoYN4dXE
|
|||
|
<h3 id="i-still-have-a-problem-with-the-package-and-i-am-lost-in-the-ocean-of-the-huge-vignette">I still have a problem with the package and I am lost in the ocean of the huge vignette.</h3>
|
|||
|
<p>The vignette (<a href="https://jokergoo.github.io/ComplexHeatmap-reference/book/">https://jokergoo.github.io/ComplexHeatmap-reference/book/</a>)
|
|||
|
contains huge number of examples and plots showing different usage of the
|
|||
|
package. It is sometimes not easy to find the solution you are looking for. In
|
|||
|
this case, don’t hesitate to drop an issue on GitHub. I am glad to answer all of your
|
|||
|
questions!</p>
|
|||
|
<h3 id="can-i-also-add-heatmaps-produced-by-pheatmap">Can I also add heatmaps produced by pheatmap()?</h3>
|
|||
|
<p>Yes, you can refer to <a href="https://jokergoo.github.io/2020/05/06/translate-from-pheatmap-to-complexheatmap/">https://jokergoo.github.io/2020/05/06/translate-from-pheatmap-to-complexheatmap/</a>.</p>
|
|||
|
<h3 id="can-i-make-an-interactive-heatmap">Can I make an interactive heatmap?</h3>
|
|||
|
<p>Yes, please refer to <a href="https://github.com/jokergoo/InteractiveComplexHeatmap">the <strong>InteractiveComplexHeatmap</strong> package</a>.</p>
|
|||
|
</div>
|
|||
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js" defer></script>
|
|||
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js" defer></script>
|
|||
|
</body>
|
|||
|
</html>
|