28

के लिए seaborn में लेबलिंग के बारे में मेरे कई प्रश्न हैं। सबसे पहले पदानुक्रम क्लस्टरिंग के लिए दूरी मान निकालना संभव है, और वृक्ष संरचना दृश्यता (शायद केवल पहले तीन स्तरों) पर मूल्य प्लॉट करना संभव है।समुद्री तट में क्लस्टरमाप के लिए लेबल?

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

अन्य दो प्रश्न हैं::

यहाँ एक clustermap साजिश बनाने के लिए मेरे उदाहरण कोड है - कैसे y लेबल बारी बारी से करने के बाद से वे एक साथ चढ़ जाता है।
- कलर बार को नीचे या दाएं कैसे स्थानांतरित करें। (गर्मी के लिए question था, लेकिन मेरे मामले के लिए काम नहीं करता है। रंग बार स्थिति को संबोधित नहीं करता है)

+1

आप Seaborn के नवीनतम संस्करण का उपयोग कर रहे, आदि को घुमाने के लिए? मैंने tmpnb.org पर एक नोटबुक में अपना उदाहरण कोड चिपकाया, और दाईं ओर अक्ष लेबल क्षैतिज हैं। – jb326

+0

@ jb326, मैं बस tmpnb पर इस उदाहरण कोड का परीक्षण करता हूं जो अच्छी तरह से काम करता है। हालांकि, जब मैं अपने बहुत लंबे कार्यक्रम के अंत में अपना उदाहरण पेस्ट करता हूं, तो लेबल लंबवत हो जाते हैं। मेरे कार्यक्रम में मैंने इस से पहले कई अनुकूलित साजिश रची थी, मुझे लगता है कि कुछ अन्य साजिशों ने मैटलप्लिब या समुद्री तट की डिफ़ॉल्ट सेटिंग बदल दी है। मुझे इस संभावित स्पष्टीकरण को खोजने में मदद के लिए धन्यवाद .. – Bin

उत्तर

43

मेरे पास y-axis घुमाए जाने वाले लेबल के साथ एक ही समस्या थी और समाधान मिला । समस्या यह है कि यदि आप plt.yticks(rotation=0) करते हैं तो आपके द्वारा संदर्भित प्रश्न में सुझाए गए सुझावों के अनुसार, ClusterGrid कार्य के कारण यह आपके कोलोबार पर लेबल घुमाएगा।

इसे हल और सही लेबल घुमाने के लिए, आप संदर्भ के लिए अंतर्निहित Heatmap से Axes की जरूरत है और बारी बारी से इन करने के लिए:

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

colorbar स्थान के बारे में अपने अन्य प्रश्न के लिए, मुझे नहीं लगता कि यह है इस समय समर्थित है, जैसा दुर्भाग्य से this Github issue द्वारा इंगित किया गया है।

और अंत में श्रेणीबद्ध क्लस्टरिंग दूरी मूल्यों के लिए, आप पंक्तियों या स्तंभों के साथ के लिए लिंकेज MATRICS पहुँच सकते हैं: :

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

मैंने एक jupyter नोटबुक में 'plt.setp (cg.ax_heatmap.yaxis.get_majorticklabels(), rotation = 0) 'का उपयोग किया और यह वही किया जो इसे माना जाता था लेकिन यह भी लौटा साजिश की साजिश करने से पहले 'कोई नहीं' का लंबवत स्तंभ? – KillerSnail

+1

@ किलरनेल मैंने पाया कि 'plt.setp' के बाद 'plt.show()' जोड़ने के बाद 'कोई नहीं' गायब होने की सूची मिली है। – vsachar

+0

मैं लेबल को ऊपर के रूप में कैसे घुमा सकता हूं और एक्स और वाई अक्ष लेबल देता हूं, लेबल अंतिम सक्रिय अक्ष पर लागू होते हैं, इसलिए पौराणिक कथाओं पर जाते हैं। मैंने कुछ चीजों की कोशिश की लेकिन इसे करने का सही तरीका नहीं मिला। पुन: बनाने के लिए कोड यहां दिया गया है (यह एक भ्रम मैट्रिक्स है): cg = sns।clustermap (सेमी) plt.setp (cg.ax_heatmap.yaxis.get_majorticklabels(), रोटेशन = 0) plt.xlabel ('अनुमानित लेबल') plt.ylabel ('ट्रू लेबल') plt.show() –

1

आप इसे की स्थिति को बदलने के द्वारा चारों ओर colorbar स्थानांतरित कर सकते हैं अक्ष cax है cg.cax.set_position((.85,.1,.1,.1)), उदाहरण के लिए, जहां अक्षरों के निर्देशांक के अनुसार, क्रमशः एक्स (ए, बी, सी, डी) x प्रारंभिक स्थिति, वाई प्रारंभिक स्थिति, एक्स चौड़ाई और अक्ष की ऊंचाई है।

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

थोड़ा अलग तरह से लेबल

g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0) 
संबंधित मुद्दे