Pythonでアニメーションを作成する方法を現役エンジニアが解説【初心者向け】
初心者向けにPythonでアニメーションを作成する方法について現役エンジニアが解説しています。MatplotlibのArtistAnimationを使ってアニメーションを作成します。Matplotlibはグラフ描画ライブラリで、折れ線グラフ、棒グラフからアニメーションまで作成することが出来ます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,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を使用します。
実際に書いてみよう
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の範囲で一本の線が増えるイメージになります。
監修してくれたメンター
メンター木下さん
フルリモート案件をいくつかいただきながら活動しているフリーランスエンジニア。 営業、プログラミング、テスター、雑用、インフラエンジニア、ブリッジエンジニアなど何でもやります。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。