sonoshouのまじめなブログ

情報系大学生からのウェブ見習い人生の記録

matplotlib を使ってグラフを簡単表示

機械学習の勉強をしていく中でグラフを描画して、
機械学習の過程と結果を見たいことが増えてきました。

というわけで、
Pythonを使って簡単にグラフ描画できるライブラリと高水準の数学関数ライブラリを導入してみたいと思います。

Matplotlib (簡単にグラフ描画できるライブラリ)
Wikipedia:Matplotlib

Numpy (数学関数ライブラリ)
Wikipedia:Numpy


前提:
・筆者の環境はWindows (MacやLinuxでも導入可能)
pythonが動く環境

Numpyに関するサンプルコードやインストール方法は
機械学習 はじめよう 第6回 Numpyの導入
を参考にしています。
また、リンク先のサイトでもインストール方法が解説されています。
特にMacの方はリンク先サイトの方がわかりやすいと思いますので、合わせてご覧下さい。


Matplotlibの導入

http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/
からダウンロード。
ご自身の環境に合うものをダウンロードしてください。
例)私はpython2.5 + windows + 64bitだったので、
  matplotlib-1.1.0.win-amd64-py2.5.exe をダウンロードしました。

注意)32bitと64bitでダウンロードすべきファイルが違うので注意して下さい。
   僕はこの罠にハマりましたので。

Numerical Pythonの導入

ダウンロード

http://sourceforge.net/projects/numpy/files/NumPy/1.6.1/numpy-1.6.1-win32-superpack-python2.5.exe/download
からダウンロード。
ご自身の環境に合うものをダウンロードして下さい。
例)私はpython2.5 + windows + 64bitだったので・・・・・・、
  未対応でした・・・・・・。

NumPyはwindowsの64bit版には公式で対応していないようです。
有志が64bit版に再度コンパイルし直したものがあるので、そちらを使いましょう。
ただし、自己責任になりますので、注意して下さい。
http://www.lfd.uci.edu/~gohlke/pythonlibs/

python上でnumpyのテスト

コマンドラインなどで、

import numpy
numpy.test()

とテストを走らせ、正常に表示されれば成功。
(正常な表示は先の参考サイトを参照して下さい。)

noseのインストール

上のテストが動かず、

Need nose >= 0.10.0 for tests

というエラーが出たらnoseをダウンロードしよう。
http://readthedocs.org/docs/nose/en/latest/

私の環境(windows)の場合は、

  1. ファイルをダウンロードする
  2. 適当な場所に展開する
  3. 解凍したフォルダ内で、python setup.py install

でインストールできました。

再度

import numpy
numpy.test()

とテストを走らせ、正常に表示されれば成功。
(正常な表示は先の参考サイトを参照して下さい。)

PyDevでサンプル

コマンドライン上での開発は大変ですよね。
というわけで、EclipseのPyDevで走らせてみましょう。
特別な操作は要りません。
適当にプロジェクトを作り、以下のソースコードを書いてください。

import numpy as np
np.version.version
np.lookfor('array')

実行してみましょう。
arrayの機能が列挙されたら成功です。


Matplotlib


いよいよMatplotlibのサンプルに移ります。
サンプルコードをコピペして動かしてみましょう。

こちらもインストールが正常に完了していれば、
Eclipse上のPyDevでサンプルコードを動かすことができます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pylab import *
# -10 から 10 まで 0.1 刻みの配列をつくる (numpy.arange )
x  = arange(-10.0, 10.0, 0.1)
# 関数 numpy.sin : x の各要素に Math.sin を適用して配列オブジェクトを生成
y = sin(x)
# x,y を描画
plot(x,y)
# 描画
show()

出典:Matplotlib サンプル集

サインカーブが表示されれば成功です。