Colaboratory 환경에서 matplotlib를 사용하여 gif 동영상 저장

Colaboratory 환경에서 강화 학습 같은 것을 만들려고 생각하고,
matplotlib을 사용하여 gif 동영상을 만들려고하면 조금 빠졌습니다.

메모 대신 남겨 둡니다.

공동체에서 gif 저장



"matplotlib gif 저장"에서 구그하면 일반적으로 matplotlib에서
imagemagick이라는 소프트웨어를 통해 gif를 저장하는 것이 간단하다는 것.

imagemagick은 pip에서 설치할 수없는 것 같습니다. Colaboratory 환경에서
다음과 같이 명령을 치면 설치할 수있었습니다.
!apt-get update && apt-get install imagemagick

scatter의 주의점



Colaboratory와 관련이 없지만 plt.plot을 사용하면 다음과 같이 플롯을
추가하면 나중에 gif로 변환할 수 있습니다.
im = plt.plot(x)
ims.append(im)

그러나 plt.scatter라면 다음과 같이 []를 붙이지 않으면 오류가 발생했습니다.
im = plt.scatter(x, y)
ims.append([im])

공 포물선 그리기


import numpy as np
import os

import matplotlib.pyplot as plt
import matplotlib.animation as animation

#t秒後のボールの位置
def position(theta, v0, t):
    x_return = v0 * np.cos(theta) * t
    y_return = -0.5*9.81*(t**2) + v0*np.sin(theta)*t

    return x_return, y_return

xt = 0
yt = 0
t = 0
v0 = 10 #初速
theta = 45 #投げる角度
theta = theta*3.14/180 #ラジアンに変換

#gifファイルの保存先
path = 'movies/'
if not os.path.exists(path):
      os.mkdir(path)

#グラフの体裁
fig = plt.figure()
plt.ylim(0,6)
plt.xlim(0,10)
plt.grid(True)

ims = []

#ボールの演算
while(True):
    xt, yt = position(theta, v0, t)   # ボール位置の更新

    im = plt.scatter(xt, yt, c="b")   # ボールの位置をグラフにする
    ims.append([im])                  # グラフを配列 ims に追加

    #地面に付いたら終了
    if yt<0:
        break

    t+=0.05

# ロットを 50ms ごとに表示
ani = animation.ArtistAnimation(fig, ims, interval=50)
ani.save(path + "output.gif", writer="imagemagick")



안전하게 저장할 수있었습니다.

좋은 웹페이지 즐겨찾기