我是 Python 新手,并且尝试绘制持续时间为 300 秒的正弦曲线在 x 轴上,但我只能在短时间内绘制正确的正弦曲线。
MWE:
import numpy as np
import matplotlib.pyplot as plt
in_array = np.linspace(0, 2*np.pi, 300)
out_array = np.sin(in_array)
print("in_array : ", in_array)
print("\nout_array : ", out_array)
# red for numpy.sin()
plt.plot(in_array, out_array, color = 'red')
plt.title("numpy.sin()")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
上面的代码能够绘制所需的正弦曲线,如下所示:
如果我改变np.linspace
上面代码中的一行
in_array = np.linspace(0, 6*np.pi, 300)
...然后我就能够得到正弦曲线的3个周期,这也可以。
Problem:如果我尝试使用以下命令在 x 轴上绘制 300 秒(大约)的正弦曲线in_array = np.linspace(0, 90*np.pi, 300)
在上面的代码中,曲线包含不同的振幅(如下图),为什么以及如何纠正?
在您提到的所有情况下,都会生成相同数量的 x 轴点。
当间隔更短为 300 个点时,您会得到更密集的表示sin
,即每个局部最大值/最小值周围有足够的点来正确绘制极值。在第一个示例中,每 0.02 弧度有 1 个 x 轴点。
在上一个例子中,您仍然得到 300 分,但区间更宽。这意味着每 0.95 弧度大约有 1 个点,有时这些点不会落在极值附近,因此不会绘制它们,因此振幅明显不同。
您可以向 x 轴添加更多点(使它们更频繁)。
例如,900分看起来又不错:
in_array = np.linspace(0, 90*np.pi, 900)
out_array = np.sin(in_array)
plt.plot(in_array, out_array, color = 'red')
plt.title("numpy.sin()")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
Output:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)