Нет простого способа сделать это:
import matplotlib.pyplot as plt
angles = [30, 40, 50, -60, 10, 85, -85, 72, 2, 35]
errors = [2, 10, 10, 20, 4, 30, 30, 10, 12, 4]
x = [i for i, j in enumerate(angles)]
ls = dict()
for i, error, angle in zip(x, errors, angles):
if angle > 0 and abs(angle) + error > 90:
temp = angle + error - 90
ls.update({i:temp})
if angle < 0 and abs(angle) + error > 90:
temp = abs(angle) + error - 90
ls.update({i:temp})
plt.figure()
plt.ylim(-90, 90)
plt.errorbar(x, angles, yerr=errors, fmt='C0 ', marker='o')
# plt.errorbar(list(ls.keys()), [-90, 90], yerr=list(ls.values()), fmt='C0 ')
plt.vlines(list(ls.keys())[0], list(ls.values())[0] - 90, -90, colors='C0')
plt.vlines(list(ls.keys())[1], 90 - list(ls.values())[1], 90, colors='C0')
plt.ylabel('Angle')
plt.xlabel('Time (s)')
plt.show()
l oop - найти углы, ошибки которых превышают предел 90 градусов. При этом у вас есть две опции:
# plt.errorbar(list(ls.keys()), [-90, 90], yerr=list(ls.values()), fmt='C0 ')
или
plt.vlines(list(ls.keys())[0], list(ls.values())[0] - 90, -90, colors='C0')
plt.vlines(list(ls.keys())[1], 90 - list(ls.values())[1], 90, colors='C0')
, что означает, что вам нужно добавлять вертикальные линии вручную, вы можете написать функцию для сделать это, но это первая попытка. Кстати, как вы можете видеть, визуализация не очень хорошая.