Python3 – xのn乗のグラフ(matplotlibのsubplotとアニメーション)

GIFアニメーション

matplotlibのアニメーション作成は2つ種類があって、ArtistAnimationとFuncAnimationとがある。

参考:matplotlib でアニメーションを作る

ArtistAnimation は、あらかじめ全てのグラフを配列の形で用意しておき、それを1枚ずつ流すというものである。FuncAnimationは予め完成したグラフを渡すのではなく、アニメーションの1フレームごとに関数を実行する。データが巨大すぎる場合や潜在的に無限に続く場合に便利。

ArtistAnimation

ArtistAnimationを使って、xの2乗~10乗のグラフを配列に入れて、アニメーションをつくってみる。

サンプルコード

結果

これだと、10乗のグラフのyが大きすぎて、他がみんな直線みたいになってしまった。

FuncAnimation

FuncAnimationを使ってやってみる。

結果

指数が偶数ならy軸に対称のグラフになり、奇数なら原点に対象のグラフになります。原点に対象っていうのか。

Subplot

matplotlibで複数のグラフを表示したいときにsubplotが使えます。
参考:[Python]Matplotlibで複数のグラフを描画する方法

サンプルコード

結果

Python3 – matplotlibでアニメーションGIFをつくる

matplotlib.animatioを使うとアニメーションがつくれます。自分の環境ではgifで保存しようとしたら、imagemagickがなくてエラーになりました。imagemagickのインストールとかはここに書いてありました。

Imagemagick

http://www.imagemagick.org/script/binary-releases.php#windows

Imagemagickのパスをmatplotlibに設定する必要がある。下記のようにするとmatplotlibが見ている設定ファイルの場所がわかる。

自分はユーザディレクトリ内のAnaconda3の中の下記だった。

matplotlibrcの最後の行らへんに、下記行があるので、ここにImagemagickのパスを入れる。

コメントを外して、下記のように入力します。入力の際、パスを「’」で囲むと下記のようなエラーになります。


C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py:782: UserWarning: MovieWriter imagemagick unavailable
warnings.warn(“MovieWriter %s unavailable” % writer)
Traceback (most recent call last):
File “C:/Users/hoge/hoge.py”, line 15, in
ani.save(‘sample.gif’, writer=’imagemagick’)
File “C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py”, line 810, in save
writer.grab_frame(**savefig_kwargs)
File “C:\Users\hoge\Anaconda3\lib\contextlib.py”, line 66, in __exit__
next(self.gen)
File “C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py”, line 196, in saving
self.finish()
File “C:\Users\hoge\Anaconda3\lib\site-packages\matplotlib\animation.py”, line 389, in finish
+ ‘ Try running with –verbose-debug’)
RuntimeError: Error creating movie, return code: 1 Try running with –verbose-debug

サンプルコード

Python – Matplotlibで3次元グラフを書く

下記の式をグラフ化してみる。


$$f(x_0, x_1)=x_0^2+x_1^2$$

コード

参考:matplotlibで3Dグラフを描画する

Python – matplotlibの使い方

matplotlibは、pythonでグラフとかかけるやつです。インストールは、ここに説明があります。ギャラリーみるとかなり色々なグラフをかけるようです。使い方のドキュメントはここです。

グラフを書いてみる

plot()でプロットできます。引数は1つだとyだけ、2つだと、x,yの順になるみたい。ylabelとかでラベルも設定できる。show()で表示することができる。

g1

参考:matplotlib入門

numpyと一緒につかってサインコサインとか簡単にかけるらしい。

g2

np.arangeで、-3から3までを0.1間隔でつくってる。np.sin(x)とやると、xに入ってる要素に応じた結果が配列で返ってくる。1次関数を簡単に書く方法はないのでしょうか?たとえば、y = 3x + 3という数式を入れたらパッと表示されるとか。できた。numpy便利だな。

1次関数

g3

2次関数

g4

3次関数

g5

4次関数

g6

散布図

散布図は、plot(x, y, ‘o’)といった感じで、第三引数に文字いれればできる。文字はなんでもいいわけではなく、決まりがある。o(オー)だと〇とか。roとやると赤い〇になる。dとか1とかも使えた。

g7