آموزش Matplotlib | انیمیشنسازی در Matplotlib
خطای دسترسی
برای ثبت پاسخ، ابتدا باید در سایت وارد شوید.
ایجاد انیمیشن ساده در Matplotlib
برای ایجاد یک انیمیشن ساده در Matplotlib، از ماژول animation استفاده میکنیم. این ماژول به شما امکان میدهد تا با بهروزرسانی دادهها در هر فریم، نموداری متحرک تولید کنید.
مراحل ایجاد یک انیمیشن ساده:
-
وارد کردن ماژولهای مورد نیاز:
ابتدا بایدmatplotlib.pyplotوmatplotlib.animationرا وارد کنید. همچنین ممکن است نیاز بهnumpyبرای تولید دادههای عددی داشته باشید.import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np -
ایجاد شکل و محورهای نمودار:
یک شکل (figure) و یک محور (axes) برای رسم نمودار ایجاد کنید. در این مثال یک نمودار خطی ساده رسم میکنیم.fig, ax = plt.subplots() -
تنظیم محدوده محورها:
برای اینکه انیمیشن بهدرستی نمایش داده شود، محدوده محور X و Y را مشخص کنید.ax.set_xlim(0, 2 * np.pi) ax.set_ylim(-1.5, 1.5) -
ایجاد یک خط خالی:
یک شیء خطی (line object) ایجاد کنید که در ابتدا خالی است و در هر فریم دادههای آن بهروزرسانی میشود.line, = ax.plot([], [], lw=2) # کاما برای unpack کردن تابع plot -
تعریف تابع بهروزرسانی:
تابع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، فاز موج سینوسی تغییر میکند و انیمیشن ایجاد میشود. -
ایجاد انیمیشن:
ازFuncAnimationبرای ایجاد انیمیشن استفاده کنید. پارامترهای اصلی عبارتند از:fig: شکل مورد نظرfunc: تابع بهروزرسانیframes: تعداد فریمها (مثلاً 100)interval: زمان بین فریمها به میلیثانیه (مثلاً 50 میلیثانیه)repeat: آیا انیمیشن تکرار شود؟ (پیشفرض True)
anim = animation.FuncAnimation(fig, update, frames=100, interval=50) -
نمایش انیمیشن:
در نهایت با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).
این مثال یک انیمیشن ساده از یک موج سینوسی متحرک را نشان میدهد.
برای ثبت پرسش ابتدا در سایت وارد شوید.