matplotlibを使う

前回は、numpyで行列を扱いました。
今回は、matploblibで折れ線グラフを書きます。
軸の名前とか色とかそういうグラフの体裁周りの話はまた今度書きます。
他のヒストグラムとかも次回にします。


以前のお話はこちら
matplotlibでグラフを書く - たこ焼き食べた.net

はじめに(pylabとmatplotlib)

グラフの描画にはmatplotlibというライブラリを用います。
これには、pylabというモジュールが用意されています。
これは、

  • matplotlib.pyplot内にあるプロット用の関数
  • numpyの関数
  • matplotlib.mlabにある関数

を提供しているので非常に使い勝手が良いです。
というわけで、ここから先、しばらくは、

from pylab import *

としてpylabをインポートしていきます。


matplotlibのサンプルを見ていると、

import matplotlib.pyplot as plt
import numpy as np

というようにインポートしていることもなります。
サンプルで使われているこれらの関数は、pylabをインポートすれば使えると思います(多分)。
例えば、

plt.plot(x, y)

なんてなってるものは、

plot(x, y)

となります。

今回参考にしたページ

主としてpyplot tutorialを参考にしています。。

基本の折れ線グラフ

簡単なプロット

折れ線グラフのプロットには関数plotを使います。
pyplot — Matplotlib 2.0.2 documentation


例えば、引数にリストを与えてあげると、

>>> from pylab import *
>>> x = arange(0, 10, 0.1)
>>> plot(x)
[<matplotlib.lines.Line2D object at 0x...>]
>>> show()

以下のようなグラフになります。

plot関数は、線のオブジェクトを作成します。
これが配置された図(つまりグラフ)を表示するには、show関数を使います。


というわけで、plot関数は引数が一つのとき、これをy軸としたグラフを作成します。
x軸はmatplotlib側で勝手に作成してくれます。


x軸を指定したい時には、引数を二つ与えてあげます。

plot(xのリスト, yのリスト)

ここではリストと書きましたが、これはnumpyのarrayでも構いません。
というより、matplotlib内ではarrayとして処理されるようです。
さて、ではx, y軸を指定するサンプルです。

>>> from pylab import *
>>> x = arange(1, 10, 0.1)
>>> y = cos(x)
>>> plot(x, y)
[<matplotlib.lines.Line2D object at 0x017F1830>]
>>> show()

ここでは、コサインを計算させています。
このcos関数はnumpy内で定義されています。
numpyで定義されているcos関数はarrayの計算に用いることができます。
なお、cos以外にも、sinやらlogやら、asinやらいろいろ用意されています。
上のサンプルの実行結果を下図に示します。


なお、たくさんのグラフを表示したい時は、

plot(x1, y1, x2, y2, x3, y3, .....)

のように対となるx, yのリストを順番に書いていきます。
もしくは、matplotlibは図を重ねて書いていくので、

plot(x1, y1)
plot(x2, y2)
plot(x3, y3)
...

のようにすればどんどん図が重なっていきます。

プロットの色、マーカーの形の指定

plot関数には更にいくつかの引数を与えることで、線の種類等を指定することができます。
例えば以下のようにします。

>>> from pylab import *
>>> x = arange(0, 10, 1)
>>> y = sin(x)
>>> plot(x, y, "ro-")
[<matplotlib.lines.Line2D object at 0x....>]
>>> show()

この時以下のような図が出力されます。


これは、plot関数の3つ目の引数によるものです。
この文字列は、色とマーカーの種類、線種を指定するものです。
まず"ro-"の"r"で色redを指定しています。
"o"はマーカーの形が丸いことを指示しています。
更に"-"で線で結ぶことを指定しています。
このように、3つ目の引数を指定することで様々にグラフを変化させることができます。
これについては上に示した公式の関数のドキュメントを見るのが良いかと思います。
また、サンプルをたくさん書いてくださっているブログも紹介します。
たくさん載っていて分かりやすいかと思います。
良いもの。悪いもの。: matplotlibによる線種や色などの指定方法


一応主なものを表にしてみます。

記号
r
g
b
y 黄色
k
記号 マーカー、線種
- 普通の線
-- 点線
o
^ 三角
x バツ
s 四角
その他の指定

その他にも、線の幅等を指定することができます。
例えば

>>> from pylab import *
>>> x = arange(0, 10, 1)
>>> y = sin(x)
>>> plot(x, y, "ro-", linewidth=10, markersize=15)
[<matplotlib.lines.Line2D object at 0x....>]
>>> show()

というように、plot関数にキーワード引数を渡してやることで線の詳細な設定をすることができます。
今回の例は以下のようになります。


これで良く使うのは線の幅を決めるlinewidthだと思います。
他にはそんな使ったことがないです。。
他にも様々な設定ができますので、知りたい方は、公式ドキュメントを参照してください。