import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation
import IPython10wk-036: 애니메이션
최규빈
2023-11-10
1. 강의영상
https://youtu.be/playlist?list=PLQqh36zP38-y9yXxaaoC_E512J-sCkurO&si=orvxib5Xb_wjcJAd
2. Imports
3. FuncAnimation
- 모티브
k = 6
x = np.linspace(0,10,100)
y = np.sin(0.1*k*x)
plt.plot(x,y)
\(k=1,2,3,\dots\)로 바꾸면서 변화하는 그림을 연속으로 출력되게 하여 애니메이션으로 보고 싶다. 따라서
- 하나의 고정된 그림을 정의하고
- 그림안의 내용물을 frame에 따라 바꾸는 동작을 정의하여
이들을 결합하는 전략을 생각해보자.
- 위의코드는 아래와 같다.
k = 4
x = np.linspace(0,10,100)
y = np.sin(0.1*k*x)
fig = plt.figure() # 하나의 고정된 그림을 정의하는 코드
ax = fig.gca()
ax.plot(x,y) # 고정된 그림에서 내용물을 frame에 따라서 바꾸는 동작을 정의하는 코드 
- 애니메이션
fig = plt.figure() # 하나의 고정된 그림을 정의하는 코드 <Figure size 640x480 with 0 Axes>
def func(frame):
ax = fig.gca()
ax.clear()
x = np.linspace(0,10,100)
y = np.sin(0.1*frame*x)
ax.plot(x,y) # 고정된 그림에서 내용물을 frame에 따라서 바꾸는 동작을 정의하는 코드 ani = matplotlib.animation.FuncAnimation(
fig, # 하나의 고정된 그림
func, # 고정된 그림에서 내용물을 frame에 따라서 바꾸는 동작을 함수로 정의하고, 그 함수를 넣음
frames=50
) display(IPython.display.HTML(ani.to_jshtml()))4. HW
x = np.linspace(0,10,100)
y = np.sin(5*x)
plt.plot(x,y)
위의 그림을 이용하여 애니메이션을 만들어라. 이때 frame이 짝수일경우는 color=’C0’로 frame이 홀수일 경우는 color=’C1’으로 그린 그림이 나오도록 애니메이션을 구성하라.
fig = plt.figure()<Figure size 640x480 with 0 Axes>
def func(frame):
ax = fig.gca()
ax.clear()
x = np.linspace(0,10,100)
y = np.sin(5*frame*x)
color = 'C0' if frame % 2 == 0 else 'C1'
ax.plot(x,y,color=color) # 고정된 그림에서 내용물을 frame에 따라서 바꾸는 동작을 정의하는 코드 ani = matplotlib.animation.FuncAnimation(
fig,
func,
frames=50
) display(IPython.display.HTML(ani.to_jshtml()))