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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,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ではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。