반응형

파이썬 Matplotlib을 이용한 데이터 시각화 프로그래밍16 - Matplotlib 애니메이션으로 라이브 그래프 그리기




Matplotlib은 애니메이션 기능을 제공하여 라이브 그래프를 그릴 수 있게 해줍니다. 아래의 코드를 보시죠~




이 코드는 삼각함수 사인그래프를 오른쪽 방향으로 움직이게 합니다. 자, 아래의 수학 함수를 생각해봅니다.




이 함수는 주기가 1인 사인 곡선을 양수 t의 값을 연속적으로 증가시키면 사인 곡선 전체를 오른쪽으로 움직이게 하는 효과를 발휘합니다. 이는 고등학교 수학을 충실히 학습한 분들은 모두 알 수 있을 겁니다.


위 코드는 이 함수를 Matplotlib 애니메이션으로 시각화하는 코드입니다. Matplotlib에서 애니메이션을 수행하는 함수는 FuncAnimation()입니다. 이 함수의 주요 인자를 살펴보면


  • fig: 애니메이션을 수행할 루트 플롯
  • func: 반복적으로 호출하여 애니메이션을 위한 그래프를 그리는 함수
  • init_func: 초기화 함수로써 프레임이 리셋될 때 호출됨. 보통 아무것도 그리지 않은 상태를 만드는 함수가 쓰임
  • frames: 초당 프레임수
  • interval: 애니메이션의 리셋 간격. 단위는 밀리초(ms)이며 이 값이 커지면 애니메이션이 느려지고, 이 값이 작아지면 애니메이션이 빨라짐
  • blit: 이 값이 True이면 func와 init_func는 프레임 클리어를 위해 그려질 대상값을 리턴해야 함


아래는 interval의 값이 20, 30, 10일 때 결과입니다.


interval = 20

 


interval = 30



interval = 10

 



만약 Jupyter Notebook을 활용하고, Jupyter Notebook 내에 애니메이션 결과를 나타내고자 하면 아래의 코드와 같이 작성하면 됩니다.


Jupyter에서 Matplotlib 애니메이션이 가능하게 하려면

  • from IPython.display import HTML
  • FuncAnimation() 호출 후 HTML(ani.to_html5_video()) 호출





아래는 Matplotlib 애니메이션으로 표현할 수 있는 다양한 애니메이션 예입니다. 각 애니메이션에 대한 소스코드를 설명하기에는 수학적인 지식이 필요하고, 포스팅에 많은 시간이 필요할 것 같아서 실제 소스코드의 링크만 걸어둡니다. 필요하신 분들은 소스코드를 참고하시어 응용하시면 되겠네요~



Decay  - 소스코드 바로가기



Basic - 소스코드 바로가기





Dynamic Image - 소스코드 바로가기



Unchained - 소스코드 바로가기 



Subplots - 소스코드 바로가기

 



Strip Chart - 소스코드 바로가기

 



Bayes_update - 소스코드 바로가기



Double_pendulum - 소스코드 바로가기



Histogram - 소스코드 바로가기



Rain - 소스코드 바로가기



Random 3D animation - 소스코드 바로가기




이와 같이 Matplotlib으로 표현할 수 있는 애니메이션은 매우 다양합니다. 데이터를 분석하고 이를 어떻게 사용자에게 보여줄 것인지 잘 기획한 다음 최적의 효과를 낼 수 있도록 해보세요~


반응형

+ Recent posts