2010-05-15 13 views
5

मैं अजगर में matplotlib उपयोग कर रहा हूँ के रूप में इस errorbars के साथ एक पंक्ति साजिश के साथ matplotlib में काटा नहीं errorbars:बनाने अजगर

plt.errorbar(xvalues, up_densities, yerr=ctl_sds, fmt='-^', lw=1.2, markersize=markersize, 
     markeredgecolor=up_color, color=up_color, label="My label", clip_on=False) 
plt.xticks(xvalues) 

मैं "xticks" का उपयोग x- अक्ष पर टिक निर्धारित किया है। हालांकि, xvalues ​​(यानी xvalues ​​[-1]) में अंतिम बिंदु की त्रुटि बार दाईं ओर फिसल गई हैं - जिसका अर्थ केवल आधा त्रुटि बार प्रकट होता है। यह clip_on = गलत विकल्प के साथ भी सच है। मैं इसे कैसे ठीक कर सकता हूं, ताकि त्रुटि बार पूर्ण रूप से दिखाई दे सकें, भले ही उनका दायां पक्ष तकनीकी रूप से xvalues ​​[-1] से बाहर हो?

धन्यवाद।

उत्तर

10

matplotlib में, विस्तृत नियंत्रण के सबसे कलाकारों के माध्यम से किया जाना चाहिए। मुझे लगता है कि यह आप क्या चाहते हैं करना चाहिए:

import matplotlib.pyplot as plt 
from random import uniform as r 

x = range(10) 
e = plt.errorbar(x, [r(2,10) for i in x], [r(.1,1) for i in x], capsize=8, color='r') 

for b in e[1]: 
    b.set_clip_on(False) 

plt.show() 

enter image description here

समस्या आप कर रहे थे कि clip_on कीवर्ड मार्करों और नहीं त्रुटि सलाखों नियंत्रित करने के लिए इस्तेमाल किया जा रहा था। Errorbars को नियंत्रित करने के लिए, plt.errorbar एक टुपल देता है, जहां दूसरा आइटम त्रुटिबार की एक सूची है। तो यहां मैं सूची के माध्यम से जाता हूं और प्रत्येक त्रुटि पट्टी के लिए क्लिपिंग बंद कर देता हूं।

+0

बहुत अच्छा। मैंने वास्तव में एक ही चीज़ की कोशिश की, लेकिन कुछ भी नहीं देखा क्योंकि मैं ठीक से पुनर्निर्मित नहीं कर रहा था। –

+3

ध्यान दें कि यह केवल कैप्स के लिए काम करता है। यदि बार में खुद को आधे में काटा जा रहा है (जैसा कि आप देखेंगे कि जब आप अक्ष को बंद करते हैं), तो आपको सभी बी के लिए भी ऐसा करना होगा [2]। – Peter

+0

@ पीटर: अच्छा बिंदु। धन्यवाद। – tom10

1

क्या इसका मतलब है? क्या आप अपनी साजिश की क्षैतिज सीमा को फिर से परिभाषित करना चाहते हैं?

plt.errorbar(range(5), [3,2,4,5,1], yerr=[0.1,0.2,0.3,0.4,0.5]) 
ax = plt.gca() 
ax.set_xlim([-0.5,4.5]) 

Matplotlib errorbar http://up.stevetjoa.com/errorbar.png

+0

नहीं, मैं चाहता हूं कि आखिरी टिक मार्क 4 (आपके उदाहरण में) और क्षैतिज एक्स-अक्ष पर समाप्त हो, इसके साथ कुछ भी नहीं। त्रुटि बार के सिरों पर क्षैतिज रेखाएं एक्स-अक्ष के अंत को थोड़ी देर तक बढ़ा दी जाएंगी लेकिन क्लिप_ऑन = झूठी उन्हें फिर भी दिखाई देनी चाहिए ... हालांकि वे नहीं करते हैं। कोई विचार मैं यह कैसे कर सकता हूं? – user248237dfsf

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