Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. #---------Imports
  2. from numpy import arange, sin, pi
  3. from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
  4. from matplotlib.figure import Figure
  5. import tkinter as Tk
  6. import numpy as np
  7. import matplotlib.pyplot as plt
  8. import matplotlib.animation as animation
  9. #---------End of imports
  10.  
  11. fig = plt.Figure()
  12.  
  13. x = np.arange(0, 10, 0.01) # x-array
  14.  
  15. def animate1(i):
  16. line.set_ydata(np.sin(x+i/50.0))
  17. print('1_', i)
  18. return line,
  19.  
  20. def animate2(i):
  21. line2.set_ydata(np.sin((x+i/50.0)*freq)*amp)
  22. print('2', i)
  23. return line2,
  24.  
  25. def animate3(i):
  26. y_signal = np.sin(x+i/50.0)+1
  27. y_max = max(y_signal)
  28. y_carry = np.sin((x+i/50.0)*freq)*amp*(y_signal/y_max)
  29. line3.set_ydata(y_carry)
  30. line4.set_ydata(np.sin(x+i/50.0)+1)
  31. print('3', i)
  32. return line3, line4,
  33.  
  34.  
  35. def normalize(ax):
  36. ax.set_xlim(0, 10)
  37. ax.set_ylim(-3, 3)
  38. #ax.tick_params(axis='x', which='both', bottom=False, top=False, labelbottom=False)
  39. #ax.tick_params(axis='y', which='both', right=False, left=False, labelleft=False)
  40. ax.spines['bottom'].set_position('center')
  41. ax.spines['top'].set_visible(False)
  42. ax.spines['right'].set_visible(False)
  43.  
  44. root = Tk.Tk()
  45.  
  46. Tk.Label(root,text="SHM Simulation").grid(column=0, row=0)
  47.  
  48. canvas = FigureCanvasTkAgg(fig, master=root)
  49. canvas.get_tk_widget().grid(column=0,row=1)
  50.  
  51. ax = fig.add_subplot(311)
  52. ax2 = fig.add_subplot(312)
  53. ax3 = fig.add_subplot(313)
  54. normalize(ax)
  55. normalize(ax2)
  56. normalize(ax3)
  57. freq = 10
  58. amp = 2
  59. line, = ax.plot(x, np.sin(x))
  60. max_signal_amp = max(np.sin(x))
  61. line2, = ax2.plot(x, np.sin(x*freq)*amp)
  62.  
  63. y_max = max(np.sin(x)+1)
  64. y_signal = np.sin(x) + 1
  65. y_carry = np.sin(x*freq)*amp*(y_signal/y_max)
  66. line3, = ax3.plot(x, y_carry)
  67. line4, = ax3.plot(x, y_signal)
  68.  
  69. ani1 = animation.FuncAnimation(fig, animate1, np.arange(1, 312), interval=20, blit=True)
  70. ani2 = animation.FuncAnimation(fig, animate2, np.arange(1, 250), interval=20, blit=True) #if speed = 10.0 => range = 125, interval =20
  71. ani3 = animation.FuncAnimation(fig, animate3, np.arange(1, 312), interval=20, blit=True)
  72.  
  73. Tk.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement