pythonでグラフを書く

pythonにはグラフ描画用のライブラリmatplotlibがあります。
たまに使ったりはするのですが、毎回ググって既存コードをそのままコピペみたいなことが多く、内容をきちんと理解できていませんでしたので、基本的な使い方を改めて理解することにしました。

インポートは以下で行います。
グラフを描画したいときはたいていnumpyも必要になるだろうと思いますので、合わせてインポートしておくことにします。

import numpy as np
import matplotlib.pyplot as plt

単純な線形のグラフを書いてみます。

グラフのクイックな描画

# xは-10〜+10までの整数をインクリメント
# yはxの2倍
x=np.linspace(-10, 10, 21)
y=x*2

plt.plot(x, y, label='test')

plt.legend() # 凡例の定義
plt.show()

これですごく単純なグラフを描画できました。
細かい設定を行うには、この次に書くグラフをインスタンス化するほうがいいのだと思いますが、とりあえず結果を見たいという場合にはこれで十分です。

グラフをインスタンス化する

この方法を使うと、複数のグラフを同時に扱うことができます。スクリプト内に埋め込むときは、こっちのほうが扱いやすい(はず)です。

fig_1 = plt.figure()
ax_1 = fig_1.add_subplot(1,1,1)
ax_1.plot(x, y, label='test')

fig_1.legend() # 凡例を表示する
fig_1.show()

さらに、test2という名前でもうひとつグラフを作ってみます。

fig_2 = plt.figure()
ax_2 = fig_2.add_subplot(1,1,1)
ax_2.plot(x, y, label='test2')

fig_2.legend() # 凡例を表示する
fig_2.show()

インスタンス情報は”fig_1″と”fig_2″のそれぞれに保持されていますので、fig_1.show()、fig_2.show()とやることで、それぞれ表示したいグラフがきちんと表示されることがわかります。

複数のグラフを表示する

また、add_subplot()はグラフをどこに描画するかを指定するメソッドで、カッコ内の数字は順に、(グラフの分割行数、グラフの分割列数、該当のグラフの位置)を示しています。
ひとつのウィンドウにグラフをひとつだけ描画するときは、(1, 1, 1)です。

例えば、test1を上に、test2を下に描画したい場合は、test1は(2, 1, 1)、test2は(2, 1, 2)と書きます。
test1とtest2の見分けがつきやすいように、test2のほうはx*(-2)の値を取ることにします。

fig = plt.figure()
ax_1 = fig.add_subplot(2,1,1)
ax_1.plot(x, y, label='test1')
ax_1.legend()

y2 = x*(-2)
ax_2 = fig.add_subplot(2,1,2)
ax_2.plot(x, y2, label='test2')
ax_2.legend()

fig.show()

分割列数の方を2にしたときは、下図のように縦長に並んでグラフが出力されます。

ちなみに、グラフをひとつだけ描画するときも、add_subplot()は必須みたいです。コメントアウトして動かしてみたら、画像は作成されませんでした。

matplotlibは単純な描画ツールとだけの認識で、あまりじっくりとは見てきませんでした。ただ、今回調べてみて、なかなか奥が深そうだぞ、と分かりましたので、これからもう少し調べていこうと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です