2013-07-02 5 views
8

मैं autofmt_xdate का उपयोग एक पठनीय तरीके से लंबे एक्स-अक्ष लेबलों को साजिश करने के लिए करता हूं। समस्या यह है कि, जब मैं विभिन्न सबप्लॉट्स को गठबंधन करना चाहता हूं, तो अन्य सबप्लॉट्स का एक्स-अक्ष लेबलिंग गायब हो जाता है, जिसे मैं नीचे दिए गए आंकड़े (दो पंक्तियों ऊंची) में बाएं सबप्लॉट के लिए सराहना नहीं करता हूं। क्या अन्य एक्स-अक्ष लेबलों को बुझाने से autofmt_xdate को रोकने का कोई तरीका है? या लेबल घुमाने के लिए एक और तरीका है? जैसा कि आप देख सकते हैं कि मैंने xticks और "घुमाएं" के साथ प्रयोग किया है, लेकिन परिणाम संतोषजनक नहीं थे क्योंकि लेबल उनके केंद्र के चारों ओर घुमाए गए थे, जिसके परिणामस्वरूप गन्दा लेबलिंग हुई थी।autofmt_xdate सभी सबप्लॉट्स के एक्स-अक्ष लेबल हटा देता है

स्क्रिप्ट है कि नीचे की साजिश का उत्पादन:

from matplotlib import pyplot as plt 
from numpy import arange 
import numpy 
from matplotlib import rc 

rc("figure",figsize=(15,10)) 
#rc('figure.subplot',bottom=0.1,hspace=0.1) 
rc("legend",fontsize=16) 
fig = plt.figure() 


Test_Data = numpy.random.normal(size=20) 

fig = plt.figure() 
Dimension = (2,3) 
plt.subplot2grid(Dimension, (0,0),rowspan=2) 
plt.plot(Test_Data) 
plt.subplot2grid(Dimension, (0,1),colspan=2) 
for i,j in zip(Test_Data,arange(len(Test_Data))): 
    plt.bar(i,j) 
plt.legend(arange(len(Test_Data))) 
plt.subplot2grid(Dimension, (1,1),colspan=2) 
xticks = [r"%s (%i)" % (a,b) for a,b in zip(Test_Data,Test_Data)] 
plt.xticks(arange(len(Test_Data)),xticks) 
fig.autofmt_xdate() 
plt.ylabel(r'$Some Latex Formula/Divided by some Latex Formula$',fontsize=14) 
plt.plot(Test_Data) 
#plt.setp(plt.xticks()[1],rotation=30) 
plt.tight_layout() 
#plt.show() 

Figure created by script

उत्तर

6

यह वास्तव में autofmt_xdate विधि की एक विशेषता है। autofmt_xdate के प्रलेखन से:

दिनांक टिकलबेल अक्सर ओवरलैप होते हैं, इसलिए उन्हें घुमाने और सही संरेखित करने के लिए उपयोगी होता है। साथ ही, एक सामान्य उपयोग केस साझा xaxes के साथ कई उप-स्थान हैं जहां एक्स-अक्ष दिनांक डेटा है। टिकलबेल अक्सर लंबे होते हैं, और यह को नीचे सबप्लॉट पर घुमाता है और उन्हें अन्य सबप्लॉट पर बंद कर देता है, साथ ही xlabels को बंद कर देता है।

आप केवल निचले दाएं subplot की xticklabels बारी बारी से करना चाहते हैं, का उपयोग

plt.setp(plt.xticks()[1], rotation=30, ha='right') # ha is the same as horizontalalignment 

यह ticklabels 30 डिग्री घुमाता है और सही उन्हें नीचे दाएँ के लिए (जब autofmt_xdate का उपयोग कर के रूप में ही परिणाम) संरेखित करता है सबप्लॉट, दो अन्य सबप्लॉट अपरिवर्तित छोड़कर।

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