2015-10-28 6 views
30

का उपयोग करके एक क्षैतिज रेखा प्लॉट करें मैंने टाइम सीरीज़ को सुचारू बनाने के लिए स्पलीन इंटरपोलेशन का उपयोग किया है और साजिश में क्षैतिज रेखा भी जोड़ना चाहूंगा। लेकिन ऐसा लगता है कि मेरी पकड़ से बाहर है। कोई भी सहायता वास्तव में सहायक होगी। यहाँ मैं क्या है:matplotlib

annual = np.arange(1,21,1) 
l = np.array(value_list) # a list with 20 values 
spl = UnivariateSpline(annual,l) 
xs = np.linspace(1,21,200) 
plt.plot(xs,spl(xs),'b') 

plt.plot([0,len(xs)],[40,40],'r--',lw=2) 
pylab.ylim([0,200]) 
plt.show() 

समस्या क्षैतिज रेखा अंकन के लिए [0,len(xs)] के अपने प्रयोग के साथ हो रहा है।

उत्तर

7

आप सही हैं, मुझे लगता है कि [0,len(xs)] आपको फेंक रहा है। आप मूल एक्स-अक्ष वैरिएबल xs का पुन: उपयोग करना चाहेंगे और उसी प्लॉट की एक और numpy सरणी के साथ प्लॉट करें जिसमें आपका चर है।

annual = np.arange(1,21,1) 
l = np.array(value_list) # a list with 20 values 
spl = UnivariateSpline(annual,l) 
xs = np.linspace(1,21,200) 
plt.plot(xs,spl(xs),'b') 

#####horizontal line 
horiz_line_data = np.array([40 for i in xrange(len(xs))]) 
plt.plot(xs, horiz_line_data, 'r--') 
###########plt.plot([0,len(xs)],[40,40],'r--',lw=2) 
pylab.ylim([0,200]) 
plt.show() 

उम्मीद है कि समस्या को हल करता है!

+0

यह काम करता है। धन्यवाद! – Ibe

+2

यह काम करता है, लेकिन यह विशेष रूप से कुशल नहीं है, खासकर जब आप डेटा के आधार पर संभावित रूप से बहुत बड़ी सरणी बना रहे हैं। यदि आप इसे इस तरह से करने जा रहे हैं, तो शुरुआत में एक और अंत में दो डेटा पॉइंट होना बेहतर होगा। फिर भी, matplotlib पहले से ही क्षैतिज रेखाओं के लिए एक समर्पित समारोह है। – BlivetWidget

114

आप axhline (एक क्षैतिज अक्ष रेखा) के लिए देख रहे हैं। उदाहरण के लिए, आपको y = 0.5 पर क्षैतिज रेखा दी जाएगी।

import matplotlib.pyplot as plt 
plt.axhline(y=0.5, color='r', linestyle='-') 
plt.show() 
+1

इसका सरल और काम करता है – Ibe

+3

डॉक्स: ['axhline'] (https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axhline)। – handle