2014-11-17 7 views
5

में क्षैतिज मैं Pandas उपयोग कर रहा हूँ एक scatterplot मैट्रिक्स आकर्षित करने के लिए बनाना: from pandas.tools.plotting import scatter_matrix। समस्या यह है कि DataFrame में स्तंभों के नाम बहुत लंबा है और मैं उन्हें y- अक्ष में x- अक्ष में ऊर्ध्वाधर और क्षैतिज होने के लिए तो वे फिट कर सकते हैं की जरूरत है। मैं पांडस में ऐसा करने के तरीके को समझने में सक्षम नहीं हूं। मुझे पता है कि इसे matplotlib में कैसे करें लेकिन पांडों में नहीं।scatterplot के लेबल ऊर्ध्वाधर और पांडा

मेरे कोड:

pylab.clf() 
df = pd.DataFrame(X, columns=the_labels) 
axs = scatter_matrix(df, alpha=0.2, diagonal='kde') 

संपादित करें: मैं क्योंकि मैं आंकड़े का एक बहुत की साजिश रचने रही है, इसलिए बुला pylab.figure() हर बार भी स्मृति लेने वाली है pylab.clf() उपयोग करने के लिए की जरूरत है।

+0

आप चाहते स्तंभ नाम घुमाया या टिक्स जा करने के लिए करते हैं। –

उत्तर

4

scatter_matrixmatplotlib subplots के एक दो आयामी सरणी देता है। इसका मतलब है कि आप दो सरणीओं को फिर से भरने में सक्षम होना चाहिए और अक्षों को घुमाने के लिए matplotlib फ़ंक्शंस का उपयोग करना चाहिए।

from matplotlib.artist import setp 

x_rotation = 90 
y_rotation = 90 

for row in axs: 
    for subplot in row: 
     setp(subplot.get_xticklabels(), rotation=x_rotation) 
     setp(subplot.get_yticklabels(), rotation=y_rotation) 

मैं परीक्षण करने के लिए एक अच्छा तरीका नहीं है: स्रोत scatter_matrix लागू करने के लिए इस्तेमाल किया और निजी सहायक समारोह _label_axis के आधार पर यह है जैसे कि आप के साथ सभी भूखंडों के लिए अपने रोटेशन प्रदर्शन करने के लिए सक्षम होना चाहिए लग रहा है ऐसा इसलिए है कि इसे खेलने के लिए थोड़ा सा आवश्यकता हो सकती है। इस जवाब से

6

मेजर मदद: https://stackoverflow.com/a/18994338/2632856

a = [[1,2], [2,3], [3,4], [4, 5], [1, 6], [2,7], [1,8]] 
df = pd.DataFrame(a,columns=['askdabndksbdkl','aooweoiowiaaiwi']) 
axs = pd.scatter_matrix(df, alpha=0.2, diagonal='kde') 
n = len(df.columns) 
for x in range(n): 
    for y in range(n): 
     # to get the axis of subplots 
     ax = axs[x, y] 
     # to make x axis name vertical 
     ax.xaxis.label.set_rotation(90) 
     # to make y axis name horizontal 
     ax.yaxis.label.set_rotation(0) 
     # to make sure y axis names are outside the plot area 
     ax.yaxis.labelpad = 50 

enter image description here

+0

मेरी इच्छा है कि मैं आपको इस उत्तर के लिए 10 अपवॉट दे सकता हूं – Goodword

संबंधित मुद्दे