Я пытаюсь определить угол в градусах прямой линии из двух точек, я нашел много решений в Интернете, но ни одно из них не сработало для меня, рассмотрим этот фрагмент кода
import matplotlib.pyplot as plt
data = np.array([7405.,7447.4,7433.99,7410.,7443.15,7429.4,7590.03,7550.,7566.32,7619.62,7549.71,7551.8,7530,7522.99,7499.75,7453.99,7542.16,7564.,7552.77,7552])
y = [7606.672474,7570.240928]
plt.plot(data)
plt.plot([6,17], y)
plt.show()
Целевая линия y
должна быть около -5 градусов, просто глядя на нее. Похоже, что большинство онлайн-решений предполагают, что мы можем найти угол, выполнив
degree = np.math.atan2(y[-1] - y[0], x[-1] - x[0])
degree = np.degrees(degree)
Я опустил другие значения y только до первой и последней точки для простоты, поэтому часть x[-1] - x[0]
здесь будет 11 = 17-6, что является длиной линии y по оси x, это то, что предлагает большинство онлайн-решений, однако все подходы не смогли получить правильный угол для этого, я должен отметить, что во время моих тестов некоторые подходы, казалось, давали правильный угол для данного блока данных, например, в то время как полностью терпели неудачу в другом блоке данных, таком как
data = [52.3384984,53.04757978,52.04276249,51.77348257,49.93056673,52.24062341,55.74022485,60.77761392,60.89290148,60.1995072,60.40524964,59.00590344,59.67589831,56.49266698,49.02464746,51.53876823,57.77368203,59.48092106,56.63155446,56.0648491 ]
y = [51.337288,50.331895]
plt.plot(data)
plt.plot([3,15], y)
plt.show()
Я также пытался нормализовать данные по минимуму и максимуму, но безуспешно, поэтому, учитывая, что у нас есть первая и последняя точки линии и ее длина, как мы можем или возможно определить ее угол в градусах?