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