Pythonを使ってグラフを動画化(MP4/GIF)するプロジェクト、ついに完成しました!
今回は、noteの累計PV推移を2記事ずつペアで登場させ、各ステップで「溜め」を作ることで、データの推移をじっくり観察できる仕様にこだわっています。50代エンジニアとしてのロジカルな分析と、視覚的な楽しさを融合させた「動くレポート」の作り方を共有します。
第1章:動画化に必要なライブラリと環境構築
グラフを動かし、さらにそれを動画ファイルとして保存するためには、いくつかのライブラリが必要です。特に動画保存には外部のエンコーダーが必要になる点に注意しましょう。
1. 使用するライブラリ
- matplotlib: グラフ描画の本体です。標準のアニメーション機能(FuncAnimation)を使用します。
- pandas: PVデータなどの時系列データを効率よく扱うために使用します。
- Pillow: GIF形式で保存する場合に必要となるバックエンドです。
2. 動画保存(MP4)に必要なツール
- ffmpeg: MP4形式で書き出すための強力な動画処理エンジンです。Pythonライブラリではなく、OS自体にインストールする必要があります。
3. インストール方法
以下のコマンドをターミナル(またはコマンドプロンプト)で実行して、環境を整えます。
# ライブラリの一括インストール pip install matplotlib pandas pillow
※ffmpegについては、公式サイトからバイナリをダウンロードし、パス(PATH)を通しておく必要があります。
第2章:こだわり抜いた「魅せる」アニメーション実装
今回のコードの肝は、単に線を引くのではなく、「2記事ずつの並走」と「ステップごとの一時停止(Hold)」を組み込んだ点です。
# 2記事ずつ表示し、終わるごとに一時停止を入れるロジック
hold_frames = 7 # 停止用のフレーム数
cycle_len = num_days + hold_frames
def update(frame):
ax.clear()
ax.set_xlim(xmin, xmax) # 4/1~4/22で固定
group_idx = frame // cycle_len
sub_frame = frame % cycle_len
# 2記事ずつのピックアップ表示
if group_idx < (num_articles // 2):
# 描画とタイトルの更新処理...
第3章:エンジニア視点での可視化のメリット
静止画のグラフでは「最終的な結果」しか見えませんが、動画にすることで「どのタイミングでどの記事が逆転したか」という時間軸の解像度が飛躍的に高まります。
特に、4/20に向けて急上昇するラインは、施策の効果やSNSでの拡散をリアルに物語っていますね。これこそがデータ分析の醍醐味と言えるでしょう。

↓動画に変更した状態

今回の動画化を経て、noteの累計PVも無事に4,000突破を記録しました。次はどのようなデータを動かしてみようか、今から楽しみです!
詳細な分析や日々の試行錯誤は、こちらのリンクもぜひご覧ください。