matplotlib を用いて関数をプロットする単純な例.
1 2 3 4 5 6 |
import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.2) y = np.sin(x) plt.plot(x, y) plt.show() |
さらに簡略化された書き方として,pylab を用いて以下のように書くこともできます.”from pylab import * ” として全てのモジュールを読み込むことで,以下のように pyplot の plot や show, numpy の sin 関数等を名前空間の記述無しで呼び出すことができます.
1 2 3 4 5 |
from pylab import * x = arange(0, 10, 0.2) y = sin(x) plot(x, y) show() |
pyplot と pylab について.
http://matplotlib.org/faq/usage_faq.html#matplotlib-pylab-and-pyplot-how-are-they-related
pylab で全てインポートしてしまうのは, ipython などのインタラクティブな環境では一見便利そうですし,この方法で書いている例などもネット上にたくさんあるのですが,細かい設定を行うときに困ることがあるので,import * は使わない方がよいと思います.この点に関しては以下のような意見がありました(2014.10.29 追記).
http://carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
図の大きさの変更やサブプロットの利用,figure の変数名を指定する必要がある場合は以下のように明示的に pyplot.figure, figure.add_subplot を書きます.こちらの方が細かい設定ができて使用する機会は多いと思います.
1 2 3 4 5 6 7 8 |
import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.2) y = np.sin(x) fig = plt.figure() ax = fig.add_subplot(111) ax.plot(x, y) plt.show() |
1 2 |
fig = plt.figure() ax = fig.add_subplot(111) |
の部分は, fig, ax = plt.subplots(1,1) とも書けます.pyplot.subplots は (matplotlib.figure.Figure オブジェクト, matplotlib.axis.Axis オブジェクト(の配列)) という形のタプルを返します.
縦軸,横軸のラベルや凡例の表示等を一通り設定した例を下記に示します.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import numpy as np # 数学関数機能のインポート import matplotlib.pyplot as plt # 図の表示機能のインポート fig = plt.figure(figsize=(8, 6), dpi=100) # 図の作成 (サイズ,解像度指定) ax = fig.add_subplot(111) # サブプロットの作成 (1つ) x = np.arange(0, 10, 0.2) # x 点列の作成 y = np.sin(x) # y 点列の作成 y1 = np.sin(x+np.pi/4) y2 = np.sin(x+np.pi/2) y3 = np.sin(x+np.pi) ax.plot(x, y, label="phase $\phi=0$") # デフォルト ax.plot(x, y1, 'k--', label="phase $\phi=\pi/4$") # 'k--' 黒 破線 ax.plot(x, y2, 'ro', label="phase $\phi=\pi/2$") # 'ro' 赤 o マーカ ax.plot(x, y3, 'g+', label="phase $\phi=\pi$") # 'g+' 緑 + マーカ plt.legend(loc="upper right") # 凡例の表示 plt.xlim([0, 10.]) # x軸の範囲 plt.ylim([-1., 1.]) # y軸の範囲 ## ax.axis([0, 10., -1., 1.]) # もしくはこのように [xmin,xmax,ymin,ymax] ax.set_xlabel('xpoint label [unit]', fontsize=16, fontname='Arial') # 軸ラベルの設定 ax.set_ylabel('ypoint label [unit]', fontsize=16, fontname='Arial') # 軸ラベルの設定 ax.set_title('figure title', fontsize=18, fontname='Arial') # タイトルの設定 ax.grid(True) # グリッドの設定 ## ax.set_aspect('1.0') # x軸y軸アスペクト比の設定 (必要なら) ## plt.savefig("fig1.png", dpi=100) # 図を fig1.png という名前で保存 (必要なら) plt.show() # 図の表示 |
ラベル,目盛,凡例のフォントやフォントサイズ等の細かい設定なども可能です.ラベル中で LaTeX 形式の数式の表現もできます.