آموزش Matplotlib | انیمیشن‌سازی در Matplotlib

ایجاد انیمیشن ساده در Matplotlib

برای ایجاد یک انیمیشن ساده در Matplotlib، از ماژول animation استفاده می‌کنیم. این ماژول به شما امکان می‌دهد تا با به‌روزرسانی داده‌ها در هر فریم، نموداری متحرک تولید کنید.

مراحل ایجاد یک انیمیشن ساده:

  1. وارد کردن ماژول‌های مورد نیاز:
    ابتدا باید matplotlib.pyplot و matplotlib.animation را وارد کنید. همچنین ممکن است نیاز به numpy برای تولید داده‌های عددی داشته باشید.

    import matplotlib.pyplot as plt
    import matplotlib.animation as animation
    import numpy as np
  2. ایجاد شکل و محورهای نمودار:
    یک شکل (figure) و یک محور (axes) برای رسم نمودار ایجاد کنید. در این مثال یک نمودار خطی ساده رسم می‌کنیم.

    fig, ax = plt.subplots()
  3. تنظیم محدوده محورها:
    برای اینکه انیمیشن به‌درستی نمایش داده شود، محدوده محور X و Y را مشخص کنید.

    ax.set_xlim(0, 2 * np.pi)
    ax.set_ylim(-1.5, 1.5)
  4. ایجاد یک خط خالی:
    یک شیء خطی (line object) ایجاد کنید که در ابتدا خالی است و در هر فریم داده‌های آن به‌روزرسانی می‌شود.

    line, = ax.plot([], [], lw=2)  # کاما برای unpack کردن تابع plot
  5. تعریف تابع به‌روزرسانی:
    تابع update را بنویسید که در هر فریم فراخوانی می‌شود. این تابع یک پارامتر frame (شماره فریم) دریافت می‌کند و داده‌های جدید را به خط اختصاص می‌دهد.

    def update(frame):
       x = np.linspace(0, 2 * np.pi, 100)
       y = np.sin(x + frame * 0.1)  # با تغییر frame، موج سینوسی حرکت می‌کند
       line.set_data(x, y)
       return line,  # باید یک tuple برگردانده شود

    در این مثال، با افزایش frame، فاز موج سینوسی تغییر می‌کند و انیمیشن ایجاد می‌شود.

  6. ایجاد انیمیشن:
    از FuncAnimation برای ایجاد انیمیشن استفاده کنید. پارامترهای اصلی عبارتند از:

    • fig: شکل مورد نظر
    • func: تابع به‌روزرسانی
    • frames: تعداد فریم‌ها (مثلاً 100)
    • interval: زمان بین فریم‌ها به میلی‌ثانیه (مثلاً 50 میلی‌ثانیه)
    • repeat: آیا انیمیشن تکرار شود؟ (پیش‌فرض True)
    anim = animation.FuncAnimation(fig, update, frames=100, interval=50)
  7. نمایش انیمیشن:
    در نهایت با plt.show() انیمیشن را نمایش دهید.

    plt.show()

کد کامل مثال:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np

fig, ax = plt.subplots()
ax.set_xlim(0, 2 * np.pi)
ax.set_ylim(-1.5, 1.5)
line, = ax.plot([], [], lw=2)

def update(frame):
    x = np.linspace(0, 2 * np.pi, 100)
    y = np.sin(x + frame * 0.1)
    line.set_data(x, y)
    return line,

anim = animation.FuncAnimation(fig, update, frames=100, interval=50)
plt.show()

نکات مهم:

  • تابع update باید حتماً یک توپل از اشیاء قابل رسم (مانند line) برگرداند.
  • برای ذخیره انیمیشن به‌عنوان فایل ویدیویی یا GIF، از anim.save('filename.gif', writer='pillow') یا anim.save('filename.mp4', writer='ffmpeg') استفاده کنید.
  • اگر انیمیشن در محیط Jupyter Notebook اجرا شود، ممکن است نیاز به تنظیمات اضافی باشد (مانند استفاده از %matplotlib notebook).

این مثال یک انیمیشن ساده از یک موج سینوسی متحرک را نشان می‌دهد.

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3