matplotlib入門(plot編)

matplotlib

matplotlibは、pythonから利用可能なグラフ描画ライブラリです。
numpyやpandasで行った数値解析結果を視覚化する際など、いろいろと便利です。

matplotlibでは、いろいろと細かく指定ができるようになっています。
こんなことがしたいなと思うところがあれば、公式サイトmatplotlib.pyplot.plotを調べてみてください。

今回は、x-yグラフの書き方について見ていきます。

matplotlibのインストール

pip install matplotlib

とりあえず描いてみる

x−yグラフ(折れ線グラフ)を書くときに使用するのが、matplotlib.pyplot.plot()です。

from matplotlib import pyplot as plt

x = [1, 2, 3, 4, 5, 6]
y = [1, 4, 9, 16, 25, 36]

plt.plot(x, y)
plt.show()
出力

次に、このグラフのスタイルを設定していきます。

  • マーカーを表示する
    plot()の引数に、スタイルを指定します。
  • 凡例を表示する
    plot()を実行した後で、plt.legend()を実行します。
  • グラフにタイトルをつける
    plt.title()でタイトルを指定します。
  • 軸にラベルをつける
    plt.xlabel()、plt.ylabel()で軸ラベルを設定します。
from matplotlib import pyplot as plt
from matplotlib import rcParams

rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Noto Sans CJK JP']

x = [1, 2, 3, 4, 5, 6]
y = [1, 4, 9, 16, 25, 36]

plt.title('graph title')
plt.xlabel('axis-x')
plt.ylabel('axis-y')

plt.plot(x, y, 'o-', label=u'観測値')
plt.legend()
plt.show()
出力
matplotlibで日本語を使用したい

matplotlibに設定されている初期フォントには、日本語が含まれていません。
上で作成した凡例には、「観測値」という日本語が表示されていますが、フォント設定をしておかないとこんな感じで表示されてしまいます。

日本語を使用する場合は、コードの先頭にフォント設定を入れておくと良いでしょう。
フォントの設定は、rcParamsでできます。(matplotlib.rcParamsをインポートしてください。)
上の例では、

  • rcParams[‘font.family’]で、サンセリフ体を指定
  • rcParams[‘font.sans-serif’]で、サンセリフ体で使用するフォント名を指定

plot()で使用できる主なスタイル

マーカーのスタイル

plot()にmarker引数で指定します。指定可能な値の一例を示します。(まだまだあります

表示
.m00
om02
sm12
vm03
^m04
xm18

色を指定する

color(または、c)引数で指定します。

r
g
b
cシアン
mマゼンタ
y
k
w

線の種類

linestyle(または、ls)引数で指定します。

直線
破線
-.一点鎖線
:点線
None または、”描画しない

複数のグラフを重ねて描く

plt.plot()を続けて実行するだけでOKです。

from matplotlib import pyplot as plt
from matplotlib import rcParams

rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Noto Sans CJK JP']

v1 = {
    'x': [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
    'y': [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
}
v2 = {
    'x': [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
    'y': [0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0]
}



plt.title('graph title')
plt.xlabel('axis-x')
plt.ylabel('axis-y') 

# グリッド表示を追加しています。
plt.grid(True)

plt.plot(v1['x'], v1['y'], marker='o', label='v1', color='g')
plt.plot(v2['x'], v2['y'], marker='s', label='v2', color='r')

# x軸の表示範囲を指定
plt.xlim([-1, 7])
# y軸の表示範囲を指定
plt.ylim([-1, 50])

plt.legend()
plt.show()
出力

関数の描画

やり方は、今までと同じです。y軸の値の部分に描画したい関数を指定するだけです。

from matplotlib import pyplot as plt
import numpy as np
from matplotlib import rcParams

rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Noto Sans CJK JP']

x = np.arange(-10, 10, 0.1)
y1 = np.tan(x)

y2 = np.sin(x)

y3 = np.cos(x)


plt.title('graph title')
plt.xlabel('axis-x')
plt.ylabel('axis-y') 

plt.grid(True)

plt.plot(x, y1, marker='o', label='tan', color='g', markersize=2)
plt.plot(x, y2, marker='s', label='sin', color='r', markersize=2) 
plt.plot(x, y3, marker='v', label='cos', color='b', markersize=2) 

plt.ylim([-2, 2])
plt.legend()
plt.show(
出力

今回は、plot()の基本的な使い方について見てきました。
matplotlibを使えば、この他にも散布図やヒストグラムなんかも簡単に描くことができます。
それは、また、次回以降ということで。

コメント

タイトルとURLをコピーしました