Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python计算直线(带坡度x)和水平线之间的角度(度)_Python_Numpy_Math_Time Series_Angle - Fatal编程技术网

用Python计算直线(带坡度x)和水平线之间的角度(度)

用Python计算直线(带坡度x)和水平线之间的角度(度),python,numpy,math,time-series,angle,Python,Numpy,Math,Time Series,Angle,我需要计算直线和水平线之间的角度。我的高中数学似乎不及格 import matplotlib.pyplot as plt import numpy as np x = [8450.0, 8061.0, 7524.0, 7180.0, 8247.0, 8929.0, 8896.0, 9736.0, 9658.0, 9592.0] y = range(len(x)) best_fit_line = np.poly1d(np.polyfit(y, x, 1))(y) slope = (y[-1]

我需要计算直线和水平线之间的角度。我的高中数学似乎不及格

import matplotlib.pyplot as plt
import numpy as np

x = [8450.0, 8061.0, 7524.0, 7180.0, 8247.0, 8929.0, 8896.0, 9736.0, 9658.0, 9592.0]
y = range(len(x))

best_fit_line = np.poly1d(np.polyfit(y, x, 1))(y)

slope = (y[-1] - y[0]) / (x[-1] - x[0])
angle = np.arctan(slope)

print 'slope: ' + str(slope)
print 'angle: ' + str(angle)

plt.figure(figsize=(8,6))
plt.plot(x)
plt.plot(best_fit_line, '--', color='r')
plt.show()
结果如下:

slope: 0.00788091068301
angle: 0.00788074753125

我需要水平线和红色虚线之间的角度。只要看一看,它可能是30-45度之间的东西。我做错了什么


*关于
slope=(y[-1]-y[0])/(x[-1]-x[0])
,我也尝试了
numpy.diff
scipy.stats.linregresse
,但也没有成功。

这条线在x方向从0到9,在y方向从7500到9500。因此,在大约30°的情况下,
坡度仅为0.00788091068301,而不是0.57。您的计算是正确的,但最好使用arctan2:

angle = np.rad2deg(np.arctan2(y[-1] - y[0], x[-1] - x[0]))

您忘了说明图表的比例。另外,请使用!嗨,班德斯,我如何解释我的图表的规模?