mac389
mac389

Reputation: 3133

How to suppress drawing dendrograms but still cluster in seaborn?

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.

Upvotes: 29

Views: 12896

Answers (3)

NDonelli
NDonelli

Reputation: 61

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.})

Upvotes: 0

veg2020
veg2020

Reputation: 1020

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.

Upvotes: 1

mac389
mac389

Reputation: 3133

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.

Upvotes: 37

Related Questions