Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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中绘制两个动画正弦波的总和?_Python_Numpy_Matplotlib_Animation - Fatal编程技术网

如何在python中绘制两个动画正弦波的总和?

如何在python中绘制两个动画正弦波的总和?,python,numpy,matplotlib,animation,Python,Numpy,Matplotlib,Animation,代码:- 这是我试图达到的结果的代码。但它是静态的,也就是说它打印最终的绘图,它只在一个临时窗口中打印,并在代码执行后关闭 但是我需要一个答案,在相同的输出中有三个波,第一个正弦波和第二个正弦波相加,得到最终的正弦波 我想要一个答案,它将使用Python语言的matplotlib库numpy进行动画制作 我查看了子地块示例,但无法将matplotlib库的子地块模块与matplotlib库的动画模块合并 另外,我们如何将所有正弦波图保存为本地目录中的gif 在一个gif文件(如图像)中导出所有三

代码:-

这是我试图达到的结果的代码。但它是静态的,也就是说它打印最终的绘图,它只在一个临时窗口中打印,并在代码执行后关闭

但是我需要一个答案,在相同的输出中有三个波,第一个正弦波和第二个正弦波相加,得到最终的正弦波

我想要一个答案,它将使用Python语言的matplotlib库numpy进行动画制作

我查看了子地块示例,但无法将matplotlib库的子地块模块与matplotlib库的动画模块合并

另外,我们如何将所有正弦波图保存为本地目录中的gif

在一个gif文件(如图像)中导出所有三个波需要哪个库? 有人能解决这个问题吗?

使用matplotlib.animation中的FuncAnimation模块和matplotlib库中的PLT模块后,我的最佳答案。 代码:-


该程序之所以独特,是因为它使用基本Python库NumPy和matplotlib以及用于导出动画gif的图像处理的枕头库绘制动画正弦波。

任何人都可以自己尝试一下。上面给出的代码可以自定义为任何给定的正弦方程。因此,您还可以更改给定方程y1中的值,y2,y3。代码以.gif文件的形式导出同一工作目录中的输出。gif包含所有三个正弦波,一个接一个
import numpy as np
x = np.arange(0,10,0.01)
x2 = np.arange(0,20,0.02)
sin1 = np.sin(x)
sin2 = np.sin(x2)
sin3 = sin1+sin2
plt.plot(x,sin3)
plt.show()
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation

plt.style.use('seaborn-pastel')

fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, sharey=True)
fig.suptitle('Sine waves')

ax1.set_xlim(0, 4)
ax1.set_ylim(-4, 4)

line1, = ax1.plot([], [], color='r', lw=3)
line2, = ax2.plot([], [], color='g', lw=3)
line3, = ax3.plot([], [], color='b', lw=6)
plt.legend([line1, line2, line3],['sin(x1)', 'sin(x2)', 'sin(x1)+sin(x2)'])


def init():
    line1.set_data([], [])
    line2.set_data([], [])
    line3.set_data([], [])
    return line1, line2, line3


def animate(i):
    x1 = np.linspace(0, 4, 1000)
    y1 = np.sin(2 * np.pi * (1.1*x1 - 0.05 * i))
    line1.set_data(x1, y1)

    x2 = np.linspace(0, 4, 1000)
    y2 = np.sin(2 * np.pi * (1.21 * x2 - 0.04 * i))
    line2.set_data(x2, y2)

    x3 = np.linspace(0, 4, 1000)
    y3 = np.sin(2 * np.pi * (1.1*x3 - 0.05 * i)) + np.sin(2 * np.pi * (1.21 * x3 - 0.04 * i))
    line3.set_data(x3, y3)
    
    return line1, line2, line3


anim1 = FuncAnimation(fig, animate, init_func=init,
                     frames=200, interval=20, blit=True)

anim1.save('sine_wave.gif', writer='imagemagick')