====== 概要 ====== matplotlibの必要最低限の使い方を解説します。 ====== 関数のプロット ====== 三角関数を例に、関数のプロット方法と簡単な調節の仕方を紹介します。 ===== 初めてのプロット ===== とりあえずsin関数を書いてみましょう。 次のスクリプトを作成します。 import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) # xを-5から5まで0.1刻みで用意する y = np.sin(x) # y = sin x plt.plot(x, y) # 横軸をxとして y=y(x) のグラフをプロットする plt.show() # プロットしたグラフを画面に表示する それぞれのコードの意味はコメントを参照してください。 スクリプトができたら$ python sin.pyを実行するとグラフが表示されます。 {{:python:matplotlib:intro1.png?direct&400|}} 保存するにはグラフが表示されたウィンドウの上の方にあるフロッピーディスクのマークをクリックします([Ctrl-s]も可)。 ===== グラフの表示範囲の指定 ===== プロットしたグラフを画面に表示する際、そのままだとすべてのデータが枠内に収まるように表示されます。 表示したい範囲を制限したい場合は次のようにします。 import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y1 = np.sin(x) y2 = np.cos(x) plt.xlim(-np.pi, np.pi) # x軸は-πからπまで plt.ylim(-1.2, 1.2) # y軸は-1.2から1.2まで plt.show() {{:python:matplotlib:intro2.png?direct&400|}} ===== ラベルの作成 ===== このままだと縦軸と横軸がなんなのかわからないので、軸にラベルをつけます。 ついでにタイトルもつけます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y = np.sin(x) plt.title("graph") # グラフのタイトル plt.xlabel("x") # x軸(横軸)のラベル plt.ylabel("y") # y軸(縦軸)のラベル plt.plot(x, y) plt.xlim(-np.pi, np.pi) plt.ylim(-1.2, 1.2) plt.show() {{:python:matplotlib:intro3.png?direct&400|}} ===== 複数のグラフ ===== 複数のグラフを同時にプロットしたい場合を扱います。 例えばsin関数とcos関数を同時にプロットしたい場合は、次のようにします。 どっちのグラフがどっちの関数かわからなくなるので凡例(legend)をつけます。 import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y1 = np.sin(x) y2 = np.cos(x) plt.title("graph") plt.xlabel("x") plt.ylabel("y") plt.plot(x, y1, label="sin x") # labelに凡例に表示する文字を指定 plt.plot(x, y2, label="cos x") plt.legend() # 凡例を表示 plt.xlim(-np.pi, np.pi) plt.ylim(-1.2, 1.2) plt.show() {{:python:matplotlib:intro4.png?direct&400|}} 凡例の表示する位置は、matplotlibが適切な位置を自動的に探します。 手動で設定する場合は、例えば左上の場合は plt.legend(loc="upper left")とします。 (右下の場合は lower right とします。他も同様) ====== データのプロット ====== 次に配列に格納されているデータをプロットしてみましょう。 以下では$y=x^2$のデータを用意しました。 配列のサイズはx成分とy成分で同じにします。 import numpy as np import matplotlib.pyplot as plt x = [1,2,3, 4, 5, 6, 7, 8, 9, 10] # データのx成分 y = [1,4,9,16,25,36,49,64,81,100] # データのy成分 plt.title("graph") plt.xlabel("x") plt.ylabel("y") plt.plot(x, y) plt.show() {{:python:matplotlib:intro5.png?direct&400|}} 各データは直線で結ばれます。 もし点だけにしたいならplt.plot(x, y, "o")とします(oは丸い点の意味です。その他については別のページで解説します)。