Python 3.x 用Python实现度角和向量化

Python 3.x 用Python实现度角和向量化,python-3.x,function,matplotlib,vectorization,degrees,Python 3.x,Function,Matplotlib,Vectorization,Degrees,每次我在新数据集上运行脚本时,角度线都会移动。每次读入新数据集时,我想让两条线分别以345度(绿线)和330度(红线)成角度 我的代码有什么问题 结果应该如下所示: 第一数据集 第二数据集 剧本 导入matplotlib.pyplot作为plt 将numpy作为np导入 输入数学 从scipy输入信号 对于数据中的数字: 信号_max=(数据>np.roll(数据,1))和(数据>np.roll(数据,-1)) 信号_min=(数据

每次我在新数据集上运行脚本时,角度线都会移动。每次读入新数据集时,我想让两条线分别以345度(绿线)和330度(红线)成角度

我的代码有什么问题

结果应该如下所示:

第一数据集 第二数据集 剧本
导入matplotlib.pyplot作为plt
将numpy作为np导入
输入数学
从scipy输入信号
对于数据中的数字:
信号_max=(数据>np.roll(数据,1))和(数据>np.roll(数据,-1))
信号_min=(数据
当在绘图上可视化角度时,有一件事需要注意,那就是绘图的纵横比。如果绘图的纵横比不相等,则显示的角度将与您期望的角度不同

可以将角度的打印整理为:

angle1=np.deg2rad(345)#绿色
角度2=np.deg2rad(330)#红色
x1,y1=np.cos(角度1),np.sin(角度1)
x2,y2=np.cos(角度2),np.sin(角度2)
plt.绘图([xm,xm+x1],[ym,ym+y1],“-”,color='g'))
plt.绘图([xm,xm+x2],[ym,ym+y2],'-',color='r')
为了确保相等的纵横比,您可以使用
plt.gca()。设置纵横比('equal')

如果要更改线的长度,可以引入比例变量,如下所示:

scale=2
x1,y1=标度*np.cos(角度1),标度*np.sin(角度1)
x2,y2=标度*np.cos(角度2),标度*np.sin(角度2)
所以,如果您想让这些行到达数据的末尾,您可以设置


scale=data.size-xm

这是一个奇迹,谢谢你……但是这两行变得很短,并不像以前那样一直延伸到最新的数据点。我很高兴这对你有用:)请查看我的编辑,了解你如何根据自己的意愿改变线条的长度你是摇滚明星=DIf你坚持:):!
data = np.array([10.79,10.87,10.94,10.95,11,11.5,10.89,11.45,11.94,12.17,12.45,12.09,13.65,13.5,13.25,13.18,13.28,
             13.45,13.81,13.8,14.08,14.09,14.48,14.5,14.08,14.54,14.6,15.48,16,17.049999,17.219999,16.99,
             17.23,17.200001,17.110001,18.190001,23.540001,22.25,21.15,22.09,22.85,21.4,21.41,20.780001,18.84,
             18.389999,18.09,18.280001,17.959999,21.969999,21.120001,20.25,19.879999,21.309999,21.84])
data = np.array([12.44,12.02,12.58,12.09,12,11.98,12.19,11.75,11.44,11.4,10.68,10.46,10.95,10.6,11.44,
             10.6,10.41,10.3,11.45,12.5,12.65,11.62,11.45,11.16,10.8,12.5,12.23,13.99,12.49,13.49,12.69,12.72,
             12.81,13.1,12.89,13.50,13.35])
import matplotlib.pyplot as plt
import numpy as np
import math
from scipy import signal

for number in data:

signal_max = (data > np.roll(data,1)) & (data > np.roll(data,-1))
signal_min = (data < np.roll(data,1)) & (data < np.roll(data,-1))


xm = np.argmax(data)
ym = np.amax(data)

angle1 = 345 # green
angle2 = 330 # red

x1, y1 = xm + len(data)-xm, ym + math.tan(angle1 * math.pi/180) * len(data)-xm
x2, y2 = xm + len(data)-xm, ym + math.tan(angle2 * math.pi/180) * len(data)-xm

plt.plot( [ xm, x1 ], [ym, y1 ], '-', color='g')
plt.plot( [ xm, x2 ], [ym, y2 ], '-', color='r')
plt.plot(data)
plt.show()