2017-02-24 12 views
6

मैं दो बार श्रृंखला की योजना बना रहा हूं और कंप्यूटिंग उनके लिए सूचकांक बदलती है।पायथन प्लॉट के बाहर पाठ कैसे डालें?

पाइथन में annotation या text का उपयोग करके साजिश के बाहर इन भूखंडों के लिए इन इंडेक्स को कैसे लिखें?

नीचे मेरी कोड

import matplotlib.pyplot as plt 

obs_graph=plt.plot(obs_df['cms'], '-r', label='Observed') 
plt.legend(loc='best') 
plt.hold(True) 
sim_graph=plt.plot(sim_df['cms'], '-g', label="Simulated") 
plt.legend(loc='best') 
plt.ylabel('Daily Discharge (m^3/s)') 
plt.xlabel('Year') 
plt.title('Observed vs Simulated Daily Discharge') 
textstr = 'NSE=%.2f\nRMSE=%.2f\n'%(NSE, RMSE) 
# print textstr 
plt.text(2000, 2000, textstr, fontsize=14) 
plt.grid(True) 
plt.show() 

मैं भूखंडों के बाहर teststr प्रिंट करना चाहते है।

Here is the plot

files

उत्तर

0

ऐसा लगता है कि पाठ नहीं है, लेकिन यह आंकड़ा सीमा के बाहर स्थित है। उपयोग subplots_adjust() पाठ के लिए जगह बनाने के लिए:

import matplotlib.pyplot as plt 

textstr = 'NSE=%.2f\nRMSE=%.2f\n'%(1, 2) 
plt.xlim(2002, 2008) 
plt.ylim(0, 4500) 
# print textstr 
plt.text(2000, 2000, textstr, fontsize=14) 
plt.grid(True) 
plt.subplots_adjust(left=0.25) 
plt.show() 

enter image description here

+0

मैं 'subplots_adjust()' का उपयोग करने के बाद भी पाठ नहीं देख सका। क्या मुझे 'xlim' और' ylim' को परिभाषित करने की आवश्यकता है? – dSb

+0

नहीं, मैंने उन लोगों का उपयोग आपके डेटा के बिना एक ही अक्ष श्रेणी प्राप्त करने के लिए किया था। यदि आप मेरा उदाहरण चलाते हैं तो क्या आप पाठ देखते हैं? Matplotlib के शायद अलग संस्करण? मैं संस्करण 1.5.2 का उपयोग करता हूं (पायथन 3 पर, लेकिन यह अप्रासंगिक होना चाहिए)। आप 'बाएं', 'दाएं', 'शीर्ष' और 'नीचे' के विभिन्न मानों के साथ भी खेल सकते हैं - शायद टेक्स्ट कहीं और है। – kazemakase

+0

मैंने ऊपर, बाएं, नीचे और दाएं कोशिश की, लेकिन पाठ नहीं मिला। मैं पायथन 2.7.11 और matplotlib संस्करण 1.5.1 का उपयोग कर रहा हूँ। हां मैं आपके उदाहरण में पाठ देख सकता हूं। मैंने अपनी फ़ाइल को संपादित में अपलोड किया है, क्या आप उन्हें मेरे कोड से चेक कर सकते हैं। – dSb

12

यह शायद आंकड़े में स्थिति निर्देशांक डेटा निर्देशांक के बजाय आप शायद अपनी स्थिति को बदलने के लिए जब पाठ नहीं करना चाहता था के रूप में परिभाषित करने के लिए सबसे अच्छा है डेटा बदल रहा है।

का उपयोग आंकड़ा निर्देशांक या तो आंकड़ा बदलने (fig.transFigure)

plt.text(0.02, 0.5, textstr, fontsize=14, transform=plt.gcf().transFigure) 

या बजाय कुल्हाड़ियों की इस बात का आंकड़ा की text विधि का उपयोग कर निर्दिष्ट करके किया जा सकता है।

plt.gcf().text(0.02, 0.5, textstr, fontsize=14) 

दोनों ही मामलों में टेक्स्ट रखने का विकल्प निर्देशांक आंकड़ा निर्देशांक में, जहां (0,0) नीचे छोड़ दिया है और (1,1) आंकड़ा के शीर्ष सही है कर रहे हैं।

अंत में आप अभी भी plt.subplots_adjust(left=0.3) या तो उपयोग करके अक्ष के बगल में फ़िट होने के लिए कुछ अतिरिक्त स्थान प्रदान करना चाहेंगे।

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