Pythonでアニメーションを作成する方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonでアニメーションを作成する方法について現役エンジニアが解説しています。MatplotlibのArtistAnimationを使ってアニメーションを作成します。Matplotlibはグラフ描画ライブラリで、折れ線グラフ、棒グラフからアニメーションまで作成することが出来ます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Pythonでアニメーションを作成する方法について解説します。

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonでアニメーションを作成する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

Matplotlibとは

ある値などからグラフなどを表示して、目で見て分かりやすいようにしたい事ってありますよね。

MatplotlibはPythonのためのグラフ描画ライブラリで、折れ線グラフ、棒グラフなどの簡単なものから3Dや複雑なグラフをアニメーションで表示する事もできます。まず最初に折れ線グラフを表示してみましょう。

例えば1年間に自分がいくらお金を使うかをグラフにしてみたいとします。今回は分かりやすくするために、2018年、2019年、2020年の3年間を対象にします。またお金の単位は1万円です。

2018年に100万円
2019年に300万円
2020年に200万円

のお金を使う事を考えます。

 

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["2018", "2019", "2020"])
y = np.array([100, 300, 200])

plt.plot(x, y)
plt.show()

アニメーションではなく、グラフを表示するだけならこれだけのコードだけでグラフを表示できます。Matplotlib便利ですね。

Matplotlibでアニメーションを作成する方法

アニメーションを作成する場合は、ArtistAnimationとFuncAnimationの2種類がありますが、今回はArtistAnimationを使用します。

[PR] Pythonで挫折しない学習方法を動画で公開中

実際に書いてみよう

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from matplotlib.animation import ArtistAnimation

fig, ax = plt.subplots()
ax.set_xlim(2018, 2020)
ax.set_ylim(0, 500)

artists = []
for index, value in enumerate([2019, 2020]):
    if index % 2 == 0:
        years = [2018, 2019]
        year_money = [100, 300]
    else:
        years = [2018, 2019, 2020]
        year_money = [100, 300, 200]
    plt.gca().get_xaxis().set_major_locator(ticker.MaxNLocator(integer=True))  # Xを整数で表示
    artists.append(ax.plot(years, year_money, lw=5))

animation = ArtistAnimation(fig, artists, interval=500, repeat_delay=1000)

plt.show()

今回はアニメーションの動作を分かりやすくするため、データをそのまま書いていたり、冗長なコードになっています。ポイントはifとelseの部分で、ifの時はyearsに2018と2019のデータがあるので、2018から2019のxの範囲に線が引かれます。

year_moneyには、100と300のデータがあるので、xの2018のyには100, xの2019のyには300を設定するため、一本の線のグラフが右上の向きに表示されることになります。

elseの時はifの時のデータに2020と200が追加されていますが、ifの時の線から2019から2020の範囲で一本の線が増えるイメージになります。

 

監修してくれたメンター

メンター木下さん

フルリモート案件をいくつかいただきながら活動しているフリーランスエンジニア。

営業、プログラミング、テスター、雑用、インフラエンジニア、ブリッジエンジニアなど何でもやります。
好きなプログラミング言語はPython, Scala, Swift, Node.js, Haskell。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間でPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。