2012-05-22 19 views
6

के साथ xerr और yerr के साथ स्कैटरप्लॉट मैं एक दूसरे के साथ दो सरणी की स्थिति को देखने के लिए देख रहा हूं। मेरे टेबल इसmatplotlib

Number   Description  value_1 value_2 err_1 err_2 
     1   descript_1  124.46 124.46 22.55 54.2 
     2   Descript_2  8.20  50.2  0.37 0.1 
     3   Descript_2  52.55 78.3  3.77 2.41 
     4   Descript_2  4.33  778.8 0.14 1.78 

तरह लग रहा है क्या मैं मूल रूप से चाहते हैं कुछ इस तरह है: 1. xerror बार 2. yerror बार 3: scatterplot with two errorbars

तो इस साजिश में हर बिंदु मूल रूप से तीन गुण है वर्णन करें कि यह बिंदु क्या दर्शाता है।

मुझे एहसास है कि यह matplotlib के साथ सुंदर ढंग से किया जा सकता है, और जब मैंने कुछ चीजों को एररबार्स के साथ करने की कोशिश की जो मुझे काफी उम्मीद नहीं थी जो मुझे उम्मीद थी। और मुझे अभी तक पता नहीं चला है कि एक साजिश में कैप्शन कैसे रखें।

उत्तर

8

ऐसा लगता है जैसे आप ऐसा कुछ चाहते हैं?

import matplotlib.pyplot as plt 

x = [124.46, 8.20, 52.55, 4.33] 
y = [124.46, 50.2, 78.3, 778.8] 
xerr = [54.2, 0.1, 2.41, 1.78] 
yerr = [22.55, 0.37, 3.77, 0.14] 

descrip = ['Atom 1', 'Atom 2', 'Atom 3', 'Atom 4'] 


plt.errorbar(x, y, xerr, yerr, capsize=0, ls='none', color='black', 
      elinewidth=2) 

for xpos, ypos, name in zip(x, y, descrip): 
    plt.annotate(name, (xpos, ypos), xytext=(8, 8), va='bottom', 
       textcoords='offset points') 

plt.show() 

enter image description here

errorbar सिर्फ plot की तरह काम करता है। यदि आप "स्कैटर" प्लॉट चाहते हैं तो आपको linestyle='none' (या समकक्ष, ls='none') निर्दिष्ट करना होगा। आपके ड्राइंग के आधार पर, आप एररबार पर कैप्स नहीं चाहते हैं, इसलिए मैंने capsize=0 निर्दिष्ट किया है। इसी प्रकार, आप त्रुटिबारों के लिए काफी मोटी रेखाएं चाहते हैं, इस प्रकार elinewidth=2

यदि आप त्रुटिबंद के अलावा एक मार्कर चाहते हैं, तो (या कोई भी मार्कर शैली जिसे आप चाहें) errorbar पर निर्दिष्ट करें।

annotate प्लॉट पर अंक एनोटेट करने का सबसे आसान तरीका है। यहां, मैंने निर्दिष्ट किया है कि एनोटेशन 8 अंक ऊपर और प्रत्येक माप के दाईं ओर रखा जाना चाहिए।

0

import matplotlib.pyplot as plt 

x = [100, 200, 300, 400] 
y = [100, 200, 300, 400] 
xerr = [100, 100, 100, 100] 
yerr = [20, 20, 20, 20] 

plt.errorbar(x, y, xerr, yerr, ls='none') 
plt.show() 

अर्थ नहीं है त्रुटि सलाखों गलत अक्ष पर कर रहे हैं?

pyplot.errorbar: - yerr = xerr, xerr = yerr

matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt=u'', ecolor=None, elinewidth=None, capsize=3, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, hold=None, **kwargs) 

ध्यान दें कि yerr xerr से पहले आती है, तो

plt.errorbar(x, y, xerr, yerr, ls='none') 

अपने त्रुटि सलाखों पीछे की ओर हो बनाता है। नामित तर्कों का उपयोग करने के लिए एक अच्छा समय:

plt.errorbar(x, y, xerr=xerr, yerr=yerr, ls='none')