28

seaborn'da clustermap için etiketleme hakkında birkaç sorum var. Birincisi, hiyerarşik kümelenme için uzaklık değerlerini ayıklamak ve ağaç yapısı görselleştirmesi üzerindeki değeri çizmek (belki sadece ilk üç seviye) mümkündür.Deniz ortamında küme haritası için etiketler?

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

diğer iki soru vardır:

İşte clustermap arsa oluşturmak için benim kod örneği - Birlikte örtüşür beri y etiketleri döndürmek için nasıl.
- Renk çubuğunu aşağı veya yukarı doğru hareket ettirin. (Orada Sıcaklık haritası için question, ama benim durumumda için çalışmaz. Ayrıca renk bar pozisyonunu ele almaz) Ben döndürülmesi y ekseninde etiketlerle aynı sorunu vardı

+1

sen vb Seaborn son sürümlerini kullanıyor musunuz döndürmek için? Örnek kodunuzu tmpnb.org'daki bir deftere yapıştırdım ve sağdaki eksen etiketleri yatay. – jb326

+0

@ jb326, Ben sadece bu örnek kodu iyi çalışıyor tmpnb üzerinde test ediyorum. Ancak, örneğimi çok uzun programımın sonunda yapıştırdığımda etiketler dikey olur. Programımda, bundan önce pek çok kişiye özel çizim yaptım, sanırım başka bir çizim, matplotlib veya denizaltının varsayılan ayarını değiştirdi. Teşekkürler bu olası açıklama bulmak bana yardımcı oldu .. – Bin

cevap

43

ve bir çözüm buldum . Sorun, başvuruda bulunduğunuz sorunda önerilen şekilde plt.yticks(rotation=0) yaparsanız, ClusterGrid çalışma biçiminden dolayı, kolo çubuğunuzdaki etiketleri döndürecektir.

bunu çözmek ve altta yatan Heatmap den Axes başvurmak gerekir sağ etiketleri döndürmek ve bu döndürmek için: Colorbar yerleşimi konusunda diğer soru için

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

, bu olduğunu sanmıyorum Maalesef şu anda this Github issue ile belirtildiği gibi destekleniyor.

Ve nihayet hiyerarşik kümeleme mesafesi değerleri için, sizinle satır veya sütun için bağlantı MATRICS erişebilirsiniz

: : bunun pozisyonunu değiştirerek etrafında Colorbar taşıyabilirsiniz

cg = sns.clustermap(df, metric="correlation") 
cg.dendrogram_col.linkage # linkage matrix for columns 
cg.dendrogram_row.linkage # linkage matrix for rows 
+1

Ben jupyter bir dizüstü bilgisayarda 'plt.setp (cg.ax_heatmap.yaxis.get_majorticklabels(), rotation = 0)' kullanılmış ve ne gerekiyordu yaptı ama aynı zamanda bir geri döndü arsa çizmeden önce 'Yok' dikey sütun? – KillerSnail

+1

@KillerSnail 'plt.setp '' Kaybolma 'listesinin kaybolması sonrasında' plt.show()' ın eklenmesini buldum. – vsachar

+0

Etiketleri yukarıdaki şekilde nasıl döndürebilir ve x ve y ekseni etiketleri verebilir, etiketler son etkin eksene uygulanır, böylece lejandıma gider. Birkaç şey denedim ama yapmak için doğru yolu bulamadım. İşte yeniden oluşturma kodu (bir karışıklık matrisi): cg = sns.clustermap (cm) plt.setp (cg.ax_heatmap.yaxis.get_majorticklabels(), dönme = 0) plt.xlabel ('Öngörülen Etiket') plt.ylabel ('doğru Etiket') plt.show() –

1

eksen CAX var cg.cax.set_position((.85,.1,.1,.1)), mesela (a, b, c, d) eksen koordinatlarının cinsinden sırasıyla x başlangıç ​​pozisyonu, y başlangıç ​​pozisyonu, x genişliğinin ve y yüksekliğinin olduğu yerlerdir.

1
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 
1

Biraz farklı bir şekilde etiketleri

g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)