How to suppress drawing dendrograms but still cluster in seaborn?

Question:

I want to plot a clustermap in seaborn, clustered by both rows and columns. I do not want to draw the dendrograms.

Setting row_cluster=False or col_cluster=False removes the dendrograms, but also stops the clustering.

How do I still 2D cluster but suppress the dendrograms?

This question provides a hack of setting the width of the dendrogram lines to 0. This hack does not work in seaborn 0.7.1.

Asked By: mac389

||

Answers:

The answer is buried in the documentation.

Let cg be the clustermap instance returned by Seaborn.

After drawing the clustermap, type the following to remove the row dendrogram.

cg.ax_row_dendrogram.set_visible(False)

If you want to preserve the legend, type:

cg.ax_row_dendrogram.set_xlim([0,0])

This is a hack, but set_axis_off() does not seem to do in Seaborn what it does in matplotlib.

Answered By: mac389

To build on the answer by mac389, if you want to suppress the dendrogram in both columns and rows do the following:

cg.ax_row_dendrogram.set_visible(False) #suppress row dendrogram

cg.ax_col_dendrogram.set_visible(False) #suppress column dendrogram

You can also suppress the cbar as indicated by Yacine.

Answered By: veg2020

Actually the easiest way to do that would be by using the tree_kwd argument to set the linewidts parameter of the underlying matplotlib.collections.LineCollection object to zero.

clustermap(YOUR_DATA, tree_kws={"linewidths": 0.})
Answered By: NDonelli
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.