Etykiety do clustermap w seaborn?

Mam kilka pytań dotyczących etykietowania dla clustermap w seaborn. Najpierw można wyodrębnić wartości odległości dla hierarchicznego klastrowania i wykreślić wartość na wizualizacji struktury drzewa (może tylko trzy pierwsze poziomy).

Oto mój przykładowy kod do tworzenia wykresu 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")

Tutaj wpisz opis obrazka

Pozostałe dwa pytania to: - Jak obrócić etykiety y, ponieważ nakładają się na siebie.
- Jak przenieść pasek koloru na dole lub w prawo. (Było pytanie do heatmap, ale nie działa w moim przypadku. Również nie odnosi się do koloru pozycja paska)
Author: Community, 2016-01-03

4 answers

Miałem dokładnie ten sam problem z etykietami na osi y obracanymi i znalazłem rozwiązanie. Problem polega na tym, że jeśli zrobisz plt.yticks(rotation=0) tak jak sugerowałeś w pytaniu, które przywołałeś, zmieni to etykiety na Twoim colobarze ze względu na sposób działania ClusterGrid.

Aby go rozwiązać i obrócić właściwe etykiety, musisz odwołać się do Axes z podstawowej Heatmap i obrócić te:

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

Jeśli chodzi o twoje inne pytanie dotyczące umieszczania paska kolorów, nie sądzę, że jest to obecnie obsługiwane, jak wskazuje ten problem z Githubem niestety.

I wreszcie dla hierarchicznych wartości odległości klastrowania, możesz uzyskać dostęp do macierzy powiązań dla wierszy lub kolumn za pomocą:

cg = sns.clustermap(df, metric="correlation")
cg.dendrogram_col.linkage # linkage matrix for columns
cg.dendrogram_row.linkage # linkage matrix for rows
 56
Author: Charles Menguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-09 18:44:41
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
 6
Author: Surya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-18 10:55:41

Możesz przesuwać pasek kolorów, zmieniając położenie jego osi cax : cg.cax.set_position((.85,.1,.1,.1)), Na przykład, gdzie (A, b, c, d) są odpowiednio x pozycją początkową, y pozycją początkową, x szerokością i y wysokością osi, w kategoriach współrzędnych osi.

 1
Author: tikacp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-11 11:02:26

Nieco inny sposób obracania etykiet

g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)
 1
Author: Nikita Kotlov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-26 14:36:01