Reputation: 3133
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
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
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
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