스택큐힙리스트

맷플롯립 저장된 gif를 루프로 만드는 방법 본문

카테고리 없음

맷플롯립 저장된 gif를 루프로 만드는 방법

스택큐힙리스트 2024. 1. 8. 21:49
반응형

환경:



  • Matplotlib v2.2.2


코드:


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.animation import PillowWriter
fig = plt.figure()
def f(x, y):
return np.sin(x) + np.cos(y)
x = np.linspace(0, 2 * np.pi, 120)
y = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1)
# ims는 그리기 위한 아티스트들의 리스트이며, 각 행은 현재 프레임에서 그릴 아티스트들의 리스트입니다.
# 여기서는 이미지 하나만을 각 프레임에서 애니메이션화하는 것입니다.
ims = []
for i in range(20):
x += np.pi / 15.
y += np.pi / 20.
im = plt.imshow(f(x, y))
ims.append([im])
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,
repeat_delay=500)
writer = PillowWriter(fps=20)
ani.save(demo2.gif, writer=writer)
plt.show()

출력:
한 번만 재생됩니다.

이미지

답변 1

imagemagick를 작가로 사용하면 루핑 gif를 만들 수 있지만, 왜 PillowWriter에서는 작동하지 않는지 설명할 수 없습니다.


ani.save(demo2.gif, writer='imagemagick')

이미지

답변 2

Matplotlib을 사용하여 루핑된 GIF를 저장하는 방법
Matplotlib은 파이썬에서 가장 인기있는 데이터 시각화 도구 중 하나입니다. 그리고 이 훌륭한 도구를 사용하여 GIF 애니메이션을 만들 수 있다는 사실을 알고 계셨나요? Matplotlib로 만든 GIF를 루프(loop)로 재생되도록 만드는 방법을 알아보겠습니다.
먼저, Matplotlib에서 GIF 애니메이션을 만들기 위해 imageio 패키지가 설치되어 있어야 합니다. imageio를 설치하기 위해 파이썬 패키지 관리자(pip)를 사용하여 다음 명령을 실행하세요:
```
pip install imageio
```
imageio를 설치했다면, 이제 Matplotlib로 GIF를 만들 준비가 되었습니다. 코드의 첫 번째 부분에서는 Matplotlib의 기본 설정을 임포트하고, GIF 애니메이션을 저장할 파일 이름과 frames_per_second(초당 프레임 수)을 설정합니다:
```python
import matplotlib.pyplot as plt
import imageio
# 이미지 저장할 파일명과 프레임 수 설정
filename = 'my_animation.gif'
fps = 10 # 초당 10 프레임
```
이제 Matplotlib을 사용하여 그림을 그리고 각 프레임을 캡처해야 합니다. 이미지를 여러 장 그리는 예제를 만들어 보겠습니다:
```python
# 각 프레임을 저장할 빈 리스트 생성
frames = []
# 예제로 이미지를 그리고 frames 리스트에 추가하는 코드
for i in range(10):
fig, ax = plt.subplots()
ax.plot([0, i], [0, i+1], 'b-')
# 그림을 이미지에 캡처하여 frames 리스트에 추가
frames.append(imageio.imread('temp_image.png')) # 'temp_image.png'는 임시로 저장할 파일명입니다.
plt.close()
```
위의 코드는 간단한 예제로, 10개의 이미지를 그립니다. 실제로는 데이터를 시각화하고 반복문으로 이미지를 생성해야 합니다. 각 이미지는 imageio.imread() 함수를 사용하여 파일로부터 읽어온 후 frames 리스트에 추가됩니다.
이제 모든 프레임을 캡처했고, GIF 파일로 저장해야 합니다. 다음 코드로 저장할 수 있습니다:
```python
# frames 리스트의 이미지를 filename으로 저장
imageio.mimsave(filename, frames, 'GIF', fps=fps)
print(GIF animation saved as, filename)
```
위의 코드는 frames 리스트의 이미지를 filename으로 저장합니다. imageio.mimsave() 함수의 인자로는 파일명, 이미지 리스트, 파일 형식('GIF'), 그리고 초당 프레임 수(fps)를 지정합니다.
이제 Matplotlib를 사용하여 GIF 애니메이션을 루핑되도록 만들었습니다. 웹 브라우저나 이미지 뷰어에서 애니메이션을 열어보면 무한 반복되는 것을 확인할 수 있습니다. 이를 통해 데이터 시각화에 Matplotlib과 GIF를 사용하여 멋진 결과물을 만들 수 있습니다.
이제 Matplotlib로 루프가 설정된 GIF를 만들 수 있는 방법을 알게 되었습니다. Matplotlib을 사용하면 다양한 데이터 시각화 요구에 맞게 맞춤 설정할 수 있으며, 이를 활용하여 더욱 흥미로운 GIF 애니메이션을 만들 수 있습니다. 지금 바로 Matplotlib을 사용하여 멋진 GIF를 만들어보세요!

반응형
Comments