logo

رسم بياني في بايثون | مجموعة 3

رسم بياني في بايثون | مجموعة 1 رسم بياني في بايثون | مجموعة 2 Matplotlib هي مكتبة واسعة جدًا تدعم الرسوم المتحركة من الرسوم البيانية كذلك. تتمحور أدوات الرسوم المتحركة حول matplotlib.animation فئة أساسية توفر إطارًا يتم بناء وظيفة الرسوم المتحركة حوله. الواجهات الرئيسية هي الرسوم المتحركة الموقوتة و FuncAnimation والخروج من الاثنين FuncAnimation هو الأكثر ملاءمة للاستخدام. تثبيت:
    ماتبلوتليب: الرجوع إلى رسم بياني في بايثون | مجموعة 1 نومبي: You can install numpy module using following pip command:
    pip install numpy
    FFMPEG: إنه مطلوب فقط لحفظ الرسوم المتحركة كفيديو. يمكن تنزيل الملف القابل للتنفيذ من هنا .
تطبيق: Python
# importing required modules import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np # create a figure axis and plot element fig = plt.figure() ax = plt.axes(xlim=(-50 50) ylim=(-50 50)) line = ax.plot([] [] lw=2) # initialization function def init(): # creating an empty plot/frame line.set_data([] []) return line # lists to store x and y axis points xdata ydata = [] [] # animation function def animate(i): # t is a parameter t = 0.1*i # x y values to be plotted x = t*np.sin(t) y = t*np.cos(t) # appending new points to x y axes points list xdata.append(x) ydata.append(y) # set/update the x and y axes data line.set_data(xdata ydata) # return line object return line # setting a title for the plot plt.title('A growing coil!') # hiding the axis details plt.axis('off') # call the animator  anim = animation.FuncAnimation(fig animate init_func=init frames=500 interval=20 blit=True) # save the animation as mp4 video file anim.save('animated_coil.mp4' writer = 'ffmpeg' fps = 30) # show the plot plt.show() 
Here is how the output animation looks like: Now let us try to understand the code in pieces:
  • fig = plt.figure() ax = plt.axes(xlim=(-50 50) ylim=(-50 50)) line = ax.plot([] [] lw=2)
    Here we first create a figure i.e a top level container for all our subplots. Then we create an axes element الفأس الذي يعمل بمثابة حبكة فرعية. يتم أيضًا تحديد النطاق/الحد للمحور x وy أثناء إنشاء عنصر المحاور. وأخيراً نقوم بإنشاء حبكة عنصر اسمه خط . في البداية تم تعريف نقاط المحور x وy كقوائم فارغة وعرض الخط (وزن) تم تعيينه على أنه 2.
  • def init(): line.set_data([] []) return line
    Now we declare a initialization function حرارة . يتم استدعاء هذه الوظيفة بواسطة الرسوم المتحركة لإنشاء الإطار الأول.
  • def animate(i): # t is a parameter t = 0.1*i # x y values to be plotted x = t*np.sin(t) y = t*np.cos(t) # appending new points to x y axes points list xdata.append(x) ydata.append(y) # set/update the x and y axes data line.set_data(xdata ydata) # return line object return line
    This is the most important function of above program. تحريك () يتم استدعاء الوظيفة مرارًا وتكرارًا بواسطة الرسوم المتحركة لإنشاء كل إطار. يتم تحديد عدد المرات التي سيتم فيها استدعاء هذه الوظيفة من خلال عدد الإطارات التي تم تمريرها إطارات حجة للرسوم المتحركة. تحريك () function takes the index of ith frame as argument.
    t = 0.1*i
    Here we cleverly use the index of current frame as a parameter!
    x = t*np.sin(t) y = t*np.cos(t)
    Now since we have the parameter ر we can easily plot any parametric equation. For example here we are plotting a spiral using its parametric equation.
    line.set_data(xdata ydata) return line
    Finally we use مجموعة_البيانات () وظيفة لتعيين بيانات x و y ثم إرجاع كائن الرسم خط .
  • anim = animation.FuncAnimation(fig animate init_func=init frames=500 interval=20 blit=True)
    Now we create the FuncAnimation object ستة . يستغرق الأمر حججًا مختلفة موضحة أدناه: تين : الشكل المراد رسمه. تحريك : الوظيفة التي سيتم استدعاؤها بشكل متكرر لكل إطار . init_func : الوظيفة المستخدمة لرسم إطار واضح. يتم استدعاؤه مرة واحدة قبل الإطار الأول. إطارات : عدد الإطارات. (ملحوظة: إطارات يمكن أن يكون أيضًا قابلاً للتكرار أو مولدًا.) فاصلة : المدة بين الإطارات (بالميلي ثانية) يقضي : الإعداد blit=True يعني أنه سيتم رسم الأجزاء التي تغيرت فقط.
  • anim.save('animated_coil.mp4' writer = 'ffmpeg' fps = 30)
    Now we save the animator object as a video file using يحفظ() وظيفة. ستحتاج إلى كاتب أفلام لحفظ فيديو الرسوم المتحركة. في هذا المثال استخدمنا كاتب الفيلم FFMPEG. لذا الكاتب تم تعيينه كـ "ffmpeg". إطارا في الثانية لتقف على الإطار في الثانية.
مثال 2 This example shows how one can make a rotating curve by applying some simple mathematics! Python
# importing required modules import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np # create a figure axis and plot element fig = plt.figure() ax = plt.axes(xlim=(-25 25) ylim=(-25 25)) line = ax.plot([] [] lw=2) # initialization function def init(): # creating an empty plot/frame line.set_data([] []) return line # set of points for a star (could be any curve) p = np.arange(0 4*np.pi 0.1) x = 12*np.cos(p) + 8*np.cos(1.5*p) y = 12*np.sin(p) - 8*np.sin(1.5*p) # animation function def animate(i): # t is a parameter t = 0.1*i # x y values to be plotted X = x*np.cos(t) - y*np.sin(t) Y = y*np.cos(t) + x*np.sin(t) # set/update the x and y axes data line.set_data(X Y) # return line object return line # setting a title for the plot plt.title('A rotating star!') # hiding the axis details plt.axis('off') # call the animator  anim = animation.FuncAnimation(fig animate init_func=init frames=100 interval=100 blit=True) # save the animation as mp4 video file anim.save('basic_animation.mp4' writer = 'ffmpeg' fps = 10) # show the plot plt.show() 
Here is how the output of above program looks like: Here we have used some simple mathematics to rotate a given curve.
  • يتم الحصول على شكل النجمة بوضع k = 2.5 و 0p = np.arange(0 4*np.pi 0.1) x = 12*np.cos(p) + 8*np.cos(1.5*p) y = 12*np.sin(p) - 8*np.sin(1.5*p)
  • Now in each frame we rotate the star curve using concept of rotation in complex numbers. Let x y be two ordinates. Then after rotation by angle theta the new ordinates are: {x}' = xcos theta - ysin theta {y}' = xsin theta + ycos theta The same has been applied here:
    X = x*np.cos(t) - y*np.sin(t) Y = y*np.cos(t) + x*np.sin(t)
بشكل عام، تعد الرسوم المتحركة أداة رائعة لإنشاء أشياء مذهلة ويمكن إنشاء العديد من الأشياء باستخدامها. هذه هي الطريقة التي يمكن بها إنشاء المخططات المتحركة وحفظها باستخدام Matplotlib. إنشاء اختبار