
ゆうき( @BASEBALLY15 )です^^
学校で,三角関数について勉強したんだけど,このグラフの動きを見てみたいです・・・
分かりました^^
実は,Pythonを使うと,動くグラフを作ることが出来るのです.
そうなんですか!?
動くグラフの作り方を教えてください・・・
分かりました^^

目次
三角関数って何?
下の図のように,3つの三角比の関数を,『三角関数』といいます.

中学校や高校で,
『サイン,コサイン,タンジェント』
と聞いたことがあるのではないでしょうか?
今回は,Pythonを使って,以下のように,グラフに表したいと思います.

ただ単に,グラフに表すだけではなく,
動くグラフ
で表示させます.
Pythonで動くグラフを作ってみた!

このように,三角関数のグラフを動的に表示する方法をご紹介します.
(※タンジェント(tan)は,発散するため省略しています.)
それでは,コードを見ていきましょう⤵
ライブラリ
#数値計算を行うためのライブラリ
import numpy as np
#グラフを作成するためのライブラリ
import matplotlib.pyplot as plt
#グラフのアニメーションを作成するためのライブラリ
import matplotlib.animation as animation
そして,Jupiter notebook上で,動的なグラフを表示させるために,以下のコードを追加します.
#upyter上でのインタラクティブな画像表示を実現するための機能
%matplotlib nbagg
コード
グラフの準備とタイトルを用意しよう!
まずは,グラフを表示させるための準備をします.
#グラフを用意
fig = plt.figure()
#タイトルを追加
plt.title("SIN&COS")
#xラベルを追加
plt.xlabel("x")
#yラベルを追加
plt.ylabel("y")
#グラフの表示範囲を決める
x = np.arange(0, 10, 0.1)
動くグラフを作ってみよう!
まずは,値を入れるためのリストを用意します.
#リストを用意
ims = []
そして,サイン(sin)とコサイン(cos)のグラフを作ります.
#100回繰り返す
for a in range(100):
#サイン
y_sin = np.sin(x - a)
line_sin, = plt.plot(x, y_sin, color="r")
#コサイン
y_cos = np.cos(x - a)
line_cos, = plt.plot(x, y_cos, color="b")
#リストに追加していく
ims.append([line_sin, line_cos])
そして,動的なグラフを表示させるために,以下のコードを書きます.
#動的なグラフを作成する
ani = animation.ArtistAnimation(fig, ims)
凡例も表示させておきます.
#凡例を追加(loc="upper right"→右上に表示させる)
plt.legend(("sin", "cos"), loc="upper right")
すると,このように動的なグラフが完成します.

他のグラフも動的に表示させてみよう!
上のグラフだけでは面白くないので,他にも動的なグラフを表示させてみたいと思います.
例えば,以下のように
『y = sin(x) + cos(2x)』
のグラフを動的に表示させてみたいと思います.

コード
#グラフを用意
fig = plt.figure()
#タイトルを追加
plt.title("Trigonometric function")
#xラベルを追加
plt.xlabel("x")
#yラベルを追加
plt.ylabel("y")
#グラフの表示範囲を決める
x2 = np.arange(0, 10, 0.1)
#リストを用意
ims2 = []
for a in range(100):
#サイン
y2 = np.sin(x2 - a) + np.cos(2*(x2 - a))
line2, = plt.plot(x2, y2, color="g")
#リストに追加していく
ims2.append([line2])
#動的なグラフを作成する
ani2 = animation.ArtistAnimation(fig, ims2)
plt.legend(["sinx+cos2x"], loc="upper right")
これを実行すると,以下のように,『y = sin(x) + cos(2x)』のグラフを動的に表示させることが出来ます.

終わりに
今回は,Pythonを使って,動的なグラフを表示させてみました.
学校では,このように動くグラフを使って授業をする機会が少ないと思うので,
ぜひ,参考にしてみてください^^
それでは・・・