Pythonで自動化!matplotlibを使った動画作成チュートリアル

Pythonでデータをグラフ化したものを動画にしてみたいなあ…。matplotlibを使ってアニメーションを作れたら、もっとデータの変化をわかりやすく表現できるんだけど、やっぱり難しいのかな…。
猫男
猫男
catman
catman
心配いらないさ、猫男。Pythonmatplotlibにはアニメーション機能があるんだ。データの変化を動画として視覚化すると、プレゼンにだって効果的さ。今回は動画作成の方法を紹介するよう。

 

Pythonとmatplotlibを使った動画作成の準備

Pythonでのmatplotlibを使った動画作成の大きな流れをまず把握しておきましょう。

matplotlibはデータの可視化ツールとして非常に便利で、アニメーション機能を使って動画として保存することができます。

 

必要なライブラリのインストール

matplotlibのアニメーションを扱うためのライブラリが必要です。以下のコマンドでインストールします。

pip install matplotlib

matplotlibがインストールされていない場合は、上記のコマンドでインストールしておいてください。pipを使用することで、Pythonの環境にライブラリを簡単に追加できます。

 

matplotlibでアニメーションを作成する

実際にアニメーションを作成するために、matplotlibのアニメーション機能を利用していきましょう。

 

基本的なアニメーションの作成

簡単な折れ線グラフのアニメーションを作成します。

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np

# データを用意
x = np.linspace(0, 2*np.pi, 128)
y = np.sin(x)

fig, ax = plt.subplots()
line, = ax.plot(x, y)

# アニメーションの更新関数
def update(num, x, y, line):
    line.set_data(x[:num], y[:num])
    return line,

# アニメーションを作成
ani = animation.FuncAnimation(fig, update, frames=len(x), fargs=[x, y, line], interval=50)

plt.show()

このコードでは、numpyを使ってサインカーブのデータを生成し、それをグラフとして表示するアニメーションを作成します。

 

コードの解説

plt.subplots()は、グラフを描画するためのfigax(Axes)を作成します。

line, = ax.plot(x, y)でプロット線を用意し、アニメーションの対象とする線オブジェクトを設定してます。

animation.FuncAnimationは、アニメーションを作成するための関数で、update関数でデータを更新します。

 

すごい、こんな風にデータが動いて見えるんですね!プレゼン資料とかで使ったらインパクトありそうです!
猫男
猫男
catman
catman
そうなんだ。動くグラフでデータの変化を視覚的に表現すると、伝わりやすさが違うよう。次は、このアニメーションを動画として保存する方法を見てみよう。

 

matplotlibのアニメーションを動画として保存する

Pythonで作成したアニメーションを動画として保存するためには、mp4などの動画形式にエクスポートする必要があります。

 

動画の保存方法

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np

x = np.linspace(0, 2*np.pi, 128)
y = np.sin(x)

fig, ax = plt.subplots()
line, = ax.plot(x, y)

def update(num, x, y, line):
    line.set_data(x[:num], y[:num])
    return line,

ani = animation.FuncAnimation(fig, update, frames=len(x), fargs=[x, y, line], interval=50)

# 動画を保存
ani.save('sine_wave_animation.mp4', writer='ffmpeg')

上記のコードにあるani.save()は、作成したアニメーションを動画として保存するためのメソッドです。

 

コードの解説

ani.save('filename.mp4', writer='ffmpeg')で、アニメーションをMP4形式で保存します。ffmpegライターを使うことで、動画ファイルとして出力可能です。

writer='ffmpeg'を指定することで、ffmpegを利用して動画を作成しています。ffmpegがインストールされている必要があるので注意してください。

 

動画作成の応用

ここまでできれば、データのパラメータやグラフの種類を変えて、さまざまなアニメーション動画を作れます。

 

異なるデータセットをアニメ化

異なるデータセットや他の種類のグラフ(例:棒グラフ、散布図など)に変えて、アニメーションを作成することもできます。これにより、データの特性や変化の傾向をよりダイナミックに示すことができます。

 

まとめ

Pythonmatplotlibを組み合わせることで、データのアニメーション化と動画作成が可能になります。

  • matplotlibのアニメーション機能を活用して、データの変化をリアルタイムに可視化できる
  • 動画として保存することで、プレゼンや資料に使える素材を自動で作成できる
  • アニメーションはフレームごとにデータを更新して表示し、変化を見せる
  • ffmpegライターを用いて、アニメーションを動画ファイルに出力するのが一般的

データ可視化の幅が広がるだけでなく、より説得力のあるプレゼンテーションや教育用コンテンツを作成するのに役立ちます。

 

matplotlibのアニメーション機能ですぐにでもやってみたいです!Pythonの動画作成を応用して、いろんなデータをビジュアル化してみます!
猫男
猫男
catman
catman
その意気よう。データに動きを持たせることは、新たな気づきを与え、伝達力を向上させる大きな強みだよう。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。