Я пытаюсь определить функцию, которая генерирует график рассеяния, с полосами ошибок, для некоторых заданных значений для y и их ошибок, а также значений x с их ошибками, которые вводятся. Я относительно новичок в этом и не могу полностью расшифровать ошибки трассировки. Написанная мною функция отлично работает для scatter (), но не для errorbar (). Будем весьма благодарны за любые кивки в правильном направлении, даже если это просто объяснение следов обратной связи.
import matplotlib.pyplot as plt
import numpy as np
def definedscatter(yvalues,xax,yax):
print('When entering data, type "done" to finish input for the current variable.')
plt.figure(1)
xvalues=[]
xerrors=[]
i=1
xn=None
while True:
try:
xn=input('x value #'+str(i)+': ')
if xn=='done':
break
else:
test1=float(xn)
xnerr=input('Error in x value #'+str(i)+': ')
if xnerr=='done':
break
else:
test2=float(xnerr)
xnli=[xn]
xnerrli=[xnerr]
i=i+1
xvalues=xvalues+xnli #can't concatenate float to list, only list
xerrors=xerrors+xnerrli
except:
print('Please enter a numerical value, or type "done" if you have finished inputting data.')
plt.errorbar(xvalues,yvalues, xerr=xerrors , yerr=yerrors , fmt='o') #scatter func program works fine, but errorbar doesn't, so something wrong with func args
plt.xlabel(xax)
plt.ylabel(yax)
plt.show()
y=[1,2,4,9]
yerrors=[0.3,0.2,0.5,0.8]
xaxis=input('x axis: ')
yaxis=input('y axis: ')
definedscatter(y,xaxis,yaxis)