skm*_*skm 3 python numpy matplotlib
我是 Python 新手,尝试在 x 轴上绘制持续时间为 300 秒的正弦曲线,但我只能在短时间内绘制正确的正弦曲线。
微量元素:
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()
Run Code Online (Sandbox Code Playgroud)
上面的代码能够绘制所需的正弦曲线,如下所示:
如果我将np.linspace上面代码中的行更改为
in_array = np.linspace(0, 6*np.pi, 300)
Run Code Online (Sandbox Code Playgroud)
...然后我就能够得到正弦曲线的3个周期,这也可以。
问题:如果我尝试使用上面的代码在 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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |