怎么在python项目中动态生成一个波形曲线

  介绍

本篇文章给大家分享的是有关怎么在python项目中动态生成一个波形曲线,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>用到的模块:

* matplotlib。pyplot
* matplotlib.animation。* numpy FuncAnimation

三个圆的半径分别为:5、2、1 .

三个点旋转的角频率分别为:1,3,5 .

<强>生成固定的圆——基础圆

xdata =, np.linspace (0, 2, *, np.pi,, 50)   无花果,ax =, plt.subplots (1,, 1,, figsize=(8, 5))   时间=b_cir  ax.plot (5, *, np.cos (xdata), 5, *, np.sin (xdata))      #,配置下画布   ax.spines[& # 39;底部# 39;].set_visible (False),, #,清除下脊   ax.spines[& # 39;顶部# 39;].set_visible (False),,,, #,清除上脊   ax.spines[& # 39;左# 39;].set_visible (False),,, #,清除左脊   ax.spines[& # 39;对# 39;].set_visible (False),,, #,清除右脊   #,取消刻度和数字标签   ax.tick_params(底部=& # 39;从# 39;,,左=& # 39;从# 39;,,labelbottom=& # 39;从# 39;,,labelleft=& # 39;从# 39;)

怎么在python项目中动态生成一个波形曲线

<强>生成第1个移动点

? ?根据圆上点的坐标公式,更新点的位置:

x =, r  *,因为(w  *, t), +, a    *=y  r 罪(w  *, t), +, b      def 更新(帧):   时间=movX1 才能;5,*,np.cos (frame  *, 1)   时间=movY1 才能;5,*,np.sin (frame  *, 1)   movp1.set_data才能(movX1, movY1),, #,更新移动点数据   return 才能;movp1,,,, #,还是得有& # 39;,& # 39;   ani =, FuncAnimation(无花果,更新,?xdata,位块传输=True)

怎么在python项目中动态生成一个波形曲线

<强>生成第1个移动圆

? ?根据坐标系中任意位置上圆的公式,计算移动的圆。

c_sub1,,=, ax.plot([],[],,动画=True)   #,修改,update 函数生成在基础圆上移动的圆   def 更新(帧):   #才能,计算移动点   #才能,计算移动圆   时间=c_sub1X 才能;2,*,np.cos (xdata), + movX1   时间=c_sub1Y 才能;2,*,np.sin (xdata), + movY1   #,才能更新移动点数据   c_sub1.set_data才能(c_sub1X, c_sub1Y)   return 才能;movp1, c_sub1,

怎么在python项目中动态生成一个波形曲线

<强>生成第2个移动点和移动圆

? ?生成的方式和前面的类似

movp2,,=, ax.plot ([], [],, & # 39; ro # 39;,,动画=True)   c_sub2,,=, ax.plot([],[],,动画=True)   def 更新(帧):   1 #,计算第个移动点和圆   #,计算第2个移动点和圆   +=movX2  movX1  2, *, np.cos (* frame  3)   +=movY2  movY1  2, *, np.sin (* frame  3)   c_sub2X =, 1, *, np.cos (xdata), + movX2   c_sub2Y =, 1, *, np.sin (xdata), + movY2      1 #,更新第个移动点和圆   #,更新第2个移动点和圆   movp2.set_data (movX2, movY2)   c_sub2.set_data (c_sub2X, c_sub2Y)   return  movp1, c_sub1, movp2,, c_sub2,

怎么在python项目中动态生成一个波形曲线

<强>生成波形曲线

? ?生成的波形曲线,其实就是3个圆生成的正弦曲线的叠加值:

sineTotal=sine1 + sine2 + sine3

sin,,=, ax.plot (xdata  +, 10日,np.zeros (50))   def 更新(帧):   1 #,计算第个移动点和圆   #,计算第2个移动点和圆   #,计算波形曲线的,y 值   时间=s  5, *, np.sin ((xdata +帧),*,1),+ \   2,才能*,np.sin ((xdata +帧),*,3),+ \   ,,1,*,np.sin ((xdata +帧),*,5)      1 #,更新第个移动点和圆   #,更新第2个移动点和圆   #,更新波形曲线   sine.set_ydata (s)   return  movp1, c_sub1, movp2,, c_sub2,, sin,

怎么在python项目中动态生成一个波形曲线

<强>加条直线指示下

? ?直线就是,第3个移动圆上的移动点与波形末端的连线。

movp3,,=, ax.plot ([], [],, & # 39; ro # 39;,,动画=True), #,添加第3个圆上的移动点   ln,,=, ax.plot([],[],,动画=True)   def 更新(帧):   1 #,计算第个移动点和圆   #,计算第2个移动点和圆   #,计算波形曲线的,y 值   3 #,计算第个移动点   +=movX3  movX2  1, *, np.cos (* frame  5)   +=movY3  movY2  1, *, np.sin (* frame  5)      1 #,更新第个移动点和圆   #,更新第2个移动点和圆   #,更新波形曲线   ln.set_data ([movX3, 10, +, 2, *, np.pi],, [movY3 movY3也])   null   null

怎么在python项目中动态生成一个波形曲线