web-dev-qa-db-fra.com

Étiquettes pour clustermap dans seaborn?

J'ai plusieurs questions sur l'étiquetage de clustermap dans seaborn. Il est tout d'abord possible d'extraire les valeurs de distance pour le regroupement hiérarchique et de tracer la valeur sur la visualisation de la structure arborescente (peut-être uniquement les trois premiers niveaux).

Voici mon exemple de code pour créer un tracé de clustermap:

import pandas as pd
import numpy as np
import seaborn as sns
get_ipython().magic(u'matplotlib inline')

m = np.random.Rand(50, 50)
df = pd.DataFrame(m, columns=range(4123, 4173), index=range(4123, 4173))
sns.clustermap(df, metric="correlation")

enter image description here

Les deux autres questions sont les suivantes: - Comment faire pivoter les étiquettes y car elles se chevauchent.
- Comment déplacer la barre de couleur vers le bas ou la droite. (Il y avait une question pour la carte thermique, mais ne fonctionne pas pour mon cas. Ne traite pas non plus la position de la barre de couleur)

37
Bin

J'ai eu exactement le même problème avec la rotation des étiquettes sur l'axe des y et j'ai trouvé une solution. Le problème est que si vous faites plt.yticks(rotation=0) comme suggéré dans la question que vous avez référencée, cela fera pivoter les étiquettes sur votre colobar en raison de la façon dont ClusterGrid fonctionne.

Pour le résoudre et faire pivoter les bonnes étiquettes, vous devez référencer le Axes à partir du Heatmap sous-jacent et les faire pivoter:

cg = sns.clustermap(df, metric="correlation")
plt.setp(cg.ax_heatmap.yaxis.get_majorticklabels(), rotation=0)

Pour votre autre question sur le placement de la barre de couleurs, je ne pense pas que cela soit pris en charge pour le moment, comme indiqué par ce problème Github malheureusement.

Enfin, pour les valeurs de distance de regroupement hiérarchique, vous pouvez accéder aux matrices de liaison pour les lignes ou les colonnes avec:

cg = sns.clustermap(df, metric="correlation")
cg.dendrogram_col.linkage # linkage matrix for columns
cg.dendrogram_row.linkage # linkage matrix for rows
49
Charles Menguy
import seaborn as sns   
g = sns.clustermap(heatmap_df, metric="correlation") 

plt.setp(g.ax_heatmap.get_yticklabels(), rotation=0)  # For y axis
plt.setp(g.ax_heatmap.get_xticklabels(), rotation=90) # For x axis
3
Surya

vous pouvez déplacer la barre de couleur en changeant la position de son axe cax: cg.cax.set_position((.85,.1,.1,.1)), par exemple, où (a, b, c, d) sont la position de départ x, y position de départ, largeur x et hauteur y de l'axe, respectivement, en termes de coordonnées de l'axe.

1
tikacp

Une façon un peu différente de faire pivoter les étiquettes

g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)
1
Nikita Kotlov