図示、可視化モジュール ~ pylab と numpy を ちょっと~
pylab とは? ・数学や統計的なグラフを生成するモ ジュール ・インストール pip や easy install からのインストールを推奨 →numpy モジュールなどの前提としている。 Anaconda の場合は標準
読み込みの注意 ・ numpy を呼び出すことによる不具合 %pylab inline や from pylab import * → 組み込み関数が一部上書きされる。 numpy を二重に呼び出す。 %matplotlib inline や import pylab as pl を推奨
- 描画 - シンプルなコードで図を書くことができる import pylab as pl pl.plot([1,2,3,4,5,6]) 出力結果 →
- 描画 - 引数に 2 つのデータを与えることで、 x と y そ れぞれを指定することも可能。 pl.plot([1,3,4,6],[2,6,3,4]) 出力結果 →
-numpy でデータを作る - numpy モジュールを使えば、数学的な計算 を簡単にできる。 ・連続したデータ ・三角関数のデータ 上の 2 つを例に説明する。 import numpy as np と呼び出した状態で説明する。
- 連続したデータ - 組み込み関数の range() 同様に使える関数と して、 arange() を紹介する。 np.arange(5) →array([0, 1, 2, 3, 4]) 返り値は numpy の array というデータ型 →list 型同様に連続した要素なので、 plot() の データとして利用可能。
- 連続したデータ - numpy の linspace(a,b,c) を使うと、 a から b まで の数を c 個に分けた array を返す。 np.linspace(0,10,5) →array([ 0., 2.5, 5., 7.5, 10. ])
- 三角関数のデータ - 直感的な操作で三角関数を扱える x=np.linspace(1,10,100) pl.plot(x,np.sin(x)) 出力結果 →
-random でデータを作る - 不規則なデータが欲しい時もあるだろう ・一様な乱数 ・正規分布に従う乱数 上の 2 つを例に説明する。 import random as rd と呼び出した状態で説明する。
- 一様な乱数 - random() は 0 から 1 までの数をランダムに返 す。 randint(start,end) を使うと start から end-1 の範 囲でランダムな整数を返します。 rd.random() → (結果は毎回異な る) rd.randint(5,30) →15 (結果は毎回異なる)
- 正規分布に従う乱数 - normalvariate(mu, sigma) は、平均 mu 、標準 偏差 sigma の正規分布に従う数値をランダム に返す。 rd.normalvariate(0,10) → (結果は毎回異なる)
- グラフを整える - ここまでに、グラフとデータを作る方法に ついて紹介した。 レポート等で利用するには、グラフの体裁 を整える必要がある。 ここからはその方法を項目ごとに紹介する。
- タイトル - タイトルをつけるには pylab の title(“graph title”) を指定します。 pl.title("Line1",fontsize=20) pl.plot(range(10))
- タイトル - 引数を指定することで、大きさや表示場所 を調整可能
- 軸ラベル - 軸ラベルをつけるには pylab の xlabel("label name"),ylabel("label name") を指定します。 pl.xlabel("x-axis",fontsize=15) pl.ylabel("y-axis") pl.plot(range(10))
- 軸ラベル - 引数を指定することで、大きさや表示場所 を調整可能
- 凡例 - 凡例をつけるには pylab の legend(['Data name1','Data name2'...]) を指定します。 pl.plot(range(10)) pl.legend(['data1'],fontsize=15)
- 凡例 - 引数を指定することで、大きさや表示場所 を調整可能
- マーカーの調整 - 描画する線やマーカーの調整には pylab の plot(data,“strings”) と “strings” を指定する。
- マーカーの調整 - 他に指定できる要素
- マーカーの調整 - マーカーや線の調整の例 pl.plot(range(10),"r--") 出力結果 →
- ヒストグラム - prot(data) 同様に hist(data) を使うと data 内に 現れるデータの数を棒グラフとして表示可 能 data = [rd.normalvariate(0,10) for i in range(100)] hi = pl.hist(data)
- 散布図 - scatter(data_x,data_y) は、複数の点の (x,y) 座 標を表すデータを入力すると散布図を返す。 data_x = [rd.random() for i in range(100)] data_y = [rd.random() for i in range(100)] sc = pl.scatter(data_x,data_y)
- 複数のグラフを表示 - 1 つの画面に複数のグラフを配置するために は subplot(n,m,k) を使う。 n×m の領域の k 番目に図を入れることを表す。
- 複数のグラフを表示 - pl.subplot(2, 2, 1) pl.plot(range(10)) pl.title("plot1") pl.subplot(2, 2, 2) pl.plot(range(10,0,-1)) pl.title("plot2") pl.subplot(2, 2, 3) pl.plot([1,3,5,4,2,6,9,8]) pl.title("plot3")
- 複数のグラフを表示 - 出力結果 このままでは plot3 のタイトルが被るので、 最後に pl.tight_layout() と書くことで自動調整 する。
- 複数のグラフを表示 - 出力結果
- グラフの保存 - このような発表資料を作るためには図を保 存することが必要 pylab の savefig(“file_name”) を使うとカレント ディレクトリに図が保存される。 “file_name” には拡張子も含め、 pdf も含む豊 富な画像形式をサポートしている。
おわりに ここまでの説明 → 残念ながら図示の話だけ 数値計算なども可能 → 自分で勉強してください。 3 次元の図も作成可能 → 自分で勉強してください。
おわり。