2011-09-29 8 views
31

Matplotlib में त्रुटि बार कैप्स की रेखा चौड़ाई कैसे बदला जा सकता है?matplotlib में त्रुटि बार कैप्स की रेखा चौड़ाई कैसे सेट करें?

मैं निम्नलिखित कोड की कोशिश की:

(_, caplines, _) = matplotlib.pyplot.errorbar(
    data['distance'], data['energy'], yerr=data['energy sigma'], 
    capsize=10, elinewidth=3) 

for capline in caplines: 
    capline.set_linewidth(10) 
    capline.set_color('red') 

pp.draw() 

दुर्भाग्य से, इस टोपी का रंग अपडेट हो जाता है, लेकिन नहीं अद्यतन लाइन टोपियां की चौड़ाई करता है!

जिसके परिणामस्वरूप प्रभाव निम्न छवि में "वसा त्रुटि बार लाइनों/पतली टोपी" के समान है: enter image description here

यह "वसा" बार टोपियां, मामले में है करने के लिए अच्छा होगा; Matplotlib में यह कैसे किया जा सकता है? बार कैप्स को मैन्युअल रूप से ड्रॉइंग करना, plot() के साथ एक-एक करके काम करेगा, लेकिन एक आसान विकल्प सबसे अच्छा होगा।

उत्तर

9

यह @ जोकिन के जवाब पर आधारित है, लेकिन एक छोटे से अधिक संक्षिप्त (यदि आपने अभी कोई विशेष स्टाइल के साथ सादे त्रुटि टोपियां चाहते हैं):

distance = [1,3,7,9] 
energy = [10,20,30,40] 
sigma = [1,3,2,5] 

plt.errorbar(distance, 
    energy, 
    sigma, 
    capsize=5, 
    elinewidth=2, 
    markeredgewidth=2) 

enter image description here

29

EOL, तुम बहुत करीब थे ..,

distance = [1,3,7,9] 
energy = [10,20,30,40] 
sigma = [1,3,2,5] 

(_, caps, _) = plt.errorbar(distance, energy, sigma, capsize=20, elinewidth=3) 

for cap in caps: 
    cap.set_color('red') 
    cap.set_markeredgewidth(10) 

plt.show 

enter image description here

set_markeredgewidth टोपी लाइनों की चौड़ाई निर्धारित करता है।

Matplotlib ऑब्जेक्ट्स में इतनी सारी विशेषताएं हैं जो किसी दिए गए ऑब्जेक्ट के लिए सही लोगों को याद रखना मुश्किल होता है। IPython introspecting matplotlib के लिए एक बहुत ही उपयोगी उपकरण है। मैंने इसे त्रुटि कैप लाइनों में correponding 2Dlines के गुणों का विश्लेषण करने के लिए उपयोग किया और मैंने पाया कि और अन्य मार्कर गुण।

चीयर्स

+0

धन्यवाद एक बहुत ! हमने एक ही विधि का उपयोग किया, लेकिन मैंने किसी भी तरह 'set_markeredgewidth' को याद किया। :) तो, कैप्स वास्तव में 2 डी लाइनों के विपरीत, Matplotlib के लिए मार्कर हैं। ऐसा लगता है कि 'errorbar() 'का' कैप्सिज़ 'तर्क' cap.set_markersize() 'के बराबर है, इसलिए बाद वाले को हटाया जा सकता है, नहीं? – EOL

+0

जब आप टिप्पणी कर रहे थे मैं भी इसे महसूस कर रहा था। मैंने तस्वीर भी बदल दी। – joaquin

+0

@joaquin, आप "introspecting matplotlib" के लिए iPython का उपयोग कैसे करते हैं। यह एक बहुत ही उपयोगी कौशल की तरह लगता है। – Blink

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