5.4.18 · D1 · HinglishScientific Computing (Python)

FoundationsAnimation — FuncAnimation

4,184 words19 min read↑ Read in English

5.4.18 · D1 · Coding › Scientific Computing (Python) › Animation — FuncAnimation

Is page par assume kiya gaya hai ki tum kuch nahi jaante. Line line, = ax.plot([], []) padhne se pehle tumhe jaanna chahiye ki Figure, Axes, artist, set_data, generator, frame, update function, init_func, event loop, aur yahan tak ki akela trailing comma actually kya hain. Hum har ek ko ek picture se build karte hain, us order mein jahan har ek pehle wale par tikaa hota hai, aur ant mein hum sab ko real FuncAnimation(...) call mein wire karke chalate hain.

Recall Required pre-reading vs. self-contained

Ye deep dive self-contained hai: neeche har pitfall aur mechanic yahan poori tarah explain ki gayi hai. Linked notes (jaise Artists in Matplotlib, Generators in Python) optional enrichment hain, prerequisites nahi — tum yeh page bina unhe khole khatam kar sakte ho.


0. Woh picture jisme pura topic rehta hai

Figure — Animation — FuncAnimation
  • Cards ka stack → frames ka sequence.
  • Ek card → ek frame (ek still picture).
  • Flip karne ki speedinterval (har card kitne time tak dikhaya jaata hai).
  • "Card n ke liye, dot yahan rakho" ka rule → tumhara update function.
  • Flip karne wala robotevent loop / timer.

Is figure ko dhyaan mein rakho; har symbol iske upar map hota hai.


1. Canvas: fig aur ax

Kuch bhi move hone se pehle, hume koi surface chahiye jis par draw kar sakein. Matplotlib ise do nested cheezein mein split karta hai.

Figure — Animation — FuncAnimation

Picture mein: pale outer rectangle Figure hai; tick marks wala inner boxed region Axes hai. Code

fig, ax = plt.subplots()   # plt = matplotlib.pyplot (see imports above)

dono ek saath deta hai: fig = paper, ax = us par ek drawing box.

Poori anatomy ke liye dekho Matplotlib Figure and Axes.


2. Woh cheez jo actually draw hoti hai: ek artist

Tum pixels haath se nahi draw karte. Balki, matplotlib tumhe aise objects deta hai jo khud khud draw karna jaante hain. Inhe artists kehte hain.

Figure — Animation — FuncAnimation

Jab tum likhte ho

line, = ax.plot([], [])

tum axes par ek Line2D puppet create kar rahe ho. Abhi yeh empty data ([] aur []) hold karta hai, toh kuch draw nahi karta — lekin puppet exist karta hai, bataye jaane ke liye ready ki kahan hona hai.

Line2D, markers, aur blitting ke baare mein aur padhne ke liye Artists in Matplotlib dekho.


3. Puppet ko rebuild kiye bina hilana: set_data

Yeh pure topic ka sabse important verb hai.

  • xs — x-coordinates ki sequence (left-right).
  • ys — matching sequence of y-coordinates (up-down).
  • Dono same length ke hone chahiye: point k par hai.

4. Per-frame numbers kahan se aate hain: linspace aur phase shift

Poori wave move karne ke liye hume kaafi x-points aur har ek par ek y-value chahiye.

Yahan (np.pi) sirf number hai; sine wave ka ek full turn hai. Hum choose karte hain taaki exactly ek hump-and-trough screen par fit ho.

Wave ko travel karane ke liye, hum likhte hain np.sin(x - 0.1*frame). Subtract kyun?

Kyunki ek NumPy expression sab 400 y-values ek saath compute karta hai, hum NumPy linspace and broadcasting par lean karte hain.


5. Ek still picture ke liye do words: frame aur frames

Toh jab tum likhte ho frames=200, update function ko frame = 0, phir 1, … 199 tak milta hai. Jab tum likhte ho frames=frame_gen, generator ka har yielded value frame banta hai.


6. Ek machine jo ek baar mein ek value deti hai: generator

Figure — Animation — FuncAnimation

Figure mein, generator ek vending slot hai: har "next!" agla value pop out karta hai (, phir , phir …) aur phir mid-code freeze ho jaata hai agli request tak.

def frame_gen():
    t = 0.0
    while t < 6.28:
        yield t      # hand out t, then FREEZE here
        t += 0.05    # on next request, resume from here

Deeper mechanics: Generators in Python.


7. Ek card ka rule: update function (func)

Ab show ka star. FuncAnimation khud kuch nahi draw karta — woh sirf tumhari function ko har frame mein call karta hai aur us function ko puppets reposition karne deta hai.


8. Clean pehla page: init_func

Pehle real frame se bilkul pehle, matplotlib ek jaani pehchani blank starting state chahta hai — flip-book ka cover sochho, "frame 0 se pehle" wali picture.


9. Speed trick: blitting (blit=True)


10. Akela comma: line, = ... aur return line,

Har beginner ko do commas confuse karti hain. Yeh rahi, defused.


11. Robot ki stopwatch: interval, FPS, aur event loop

Frames-per-second (ek second mein kitne cards flip hote hain) hai:

Stopwatch kaun fire karta hai? Event loop.

Dekho Event Loops / GUI backends kyun blocking loops "hung" lagte hain.


12. Sab kuch wire karna: real FuncAnimation(...) call

Ab har part exist karta hai. Yeh hai poori signature, phir complete runnable program jo upar har cheez use karta hai.


13. Actually start karna — aur alive rakhna

anim banana khud se kuch move nahi karta; yeh sirf timer register karta hai. Event loop start karna padega.

Movie save karne ke liye tum frames ko ffmpeg (mp4) ya pillow (gif) ko dete ho. Dekho Saving figures and ffmpeg.


14. save_count — endless generator ko cap karna


Prerequisite map

Figure and Axes - the canvas

Artists - Line2D puppet

set_data - move the puppet

linspace - the x points

update func - one frame rule

Generators - yield values

frames - which cards

init_func - clean background

FuncAnimation call

Event loop - the timer

interval and FPS

Blitting - return artists

plt.show starts the loop

anim.save via ffmpeg and save_count

Keep the anim reference


Equipment checklist

Figure aur Axes mein kya fark hai?
Figure = poora sheet/window; Axes = uske andar ek plotting rectangle (ticks aur grid ke saath).
Artist kya hota hai, aur plotted line kis type ki hoti hai?
Ek self-drawing object jise matplotlib manage karta hai; plotted line ek Line2D hoti hai.
line.set_data(xs, ys) kya karta hai?
Existing line ko in-place naye x/y points par mutate karta hai — same puppet, naya pose.
ax.plot ko update function ke bahar EK BAAR kyun call karein?
Ek artist ko set_data se reuse karne ke liye; ise per frame call karne se naye artists pile up hote hain aur blit toot jaata hai.
np.linspace(0, 2*np.pi, 400) kya produce karta hai?
0 se 2π tak inclusive 400 evenly spaced numbers.
np.sin(x - 0.1*frame) wave ko right kyun move karta hai?
Bada shift peak (input = π/2) ko bade x par push karta hai, toh features right slide karte hain.
Generator kya hai aur yield kya karta hai?
Ek function jo ek value hand back karta hai phir pause karta hai, agli request par resume karta hua.
Update function func kya hai aur iska argument kya hai?
Ek function jo tum likhte ho jo current frame leta hai, set_data se puppets reposition karta hai, aur changed artists return karta hai.
init_func kis kaam aata hai, aur woh kaunsa argument leta hai?
Yeh frame 0 se pehle clean empty background draw karta hai; koi frame argument nahi leta aur artists return karta hai.
FuncAnimation ka doosra positional argument kya hai?
func, tumhara update function.
interval=20 ms ko FPS mein convert karo.
1000/20 = 50 FPS.
Per-frame timer kaun fire karta hai?
GUI event loop, jo window ko bhi responsive rakhta hai.
Screen par animation actually START kaise karte ho?
plt.show() call karo, jo event loop chalata hai (aur window band hone tak block karta hai).
blit=True ke saath, func (aur init_func) ko kya return karna chahiye?
Changed artists ka ek iterable, jaise return line,.
line, = ax.plot(...) mein trailing comma kya karta hai?
ax.plot return karne wali single-element list ko line mein unpack karta hai.
anim = FuncAnimation(...) kyun rakhna zaroori hai?
Warna yeh garbage-collect ho jaata hai, timer ruk jaata hai, aur animation freeze/blank ho jaati hai.
save_count kis kaam aata hai?
Generator-driven animation SAVE karte waqt kitne frames grab karne hain iska cap; live playback ke dauran ignore hota hai.

Connections

  • Animation — FuncAnimation — woh parent topic jiske liye yeh page tumhe prepare karta hai.
  • Matplotlib Figure and Axesfig/ax canvas.
  • Artists in MatplotlibLine2D, set_data, blitting.
  • Generators in Pythonframes ke peeche yield machine.
  • Event Loops / GUI backends — woh timer jo har frame fire karta hai.
  • NumPy linspace and broadcasting — per-frame arrays banana.
  • Saving figures and ffmpeg — mp4/gif mein export karna.