今回は、プロットのラベルや凡例などを好みの見た目に設定する方法を紹介する。

ランダムウォークをプロットする

まずは軸のカスタマイズをおこなうための準備として、ランダムウォークをプロットした図を用意しよう。

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(1000)

上記のコードを実行し、プロット用のデータを用意した後、別のセルでプロットを実行する。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

ax.plot(data.cumsum(), 'k-')

軸の目盛を変更する

では用意したプロットに対し、X軸の目盛の変更を適用してみよう。

サブプロットのset_xticksメソッドを実行したあとプロットする。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

ax.set_xticks([0, 250, 500, 750, 1000])

ax.plot(data.cumsum(), 'k-')

x軸にラベルを設定する場合は、set_xticklabelsメソッドを組み合わせて使うと良い。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

ax.set_xticks([0, 250, 500, 750, 1000])
ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'],
                   rotation=30, fontsize='small')

ax.plot(data.cumsum(), 'k-')

メソッドを少し解説すると、set_xticksでデータ範囲のどこに目盛を入れるかを設定し、set_xticklabelsで目盛の値をラベルとして設定している。

また、rotationオプションでラベルを30度回転させ、fontsizeオプションで文字サイズを設定している。

さらに、サブプロットのタイトルと、X軸の名前を設定する方法を紹介しておく。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

ax.set_xticks([0, 250, 500, 750, 1000])
ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'],
                   rotation=30, fontsize='small')

ax.set_title('Random Walk')
ax.set_xlabel('Stage')

ax.plot(data.cumsum(), 'k-')

Y軸の設定について

これまでX軸の設定方法について紹介してきたが、Y軸の場合はメソッド名の「x」を「y」に変更するだけで同様の設定が可能だ。

凡例の追加

複数の折れ線グラフをプロットした図などで、それぞれのデータを識別するために必要なのが凡例の表示だ。

凡例を表示する場合は、各データのプロットを追加する際にlabelオプションを指定する方法が簡単だ。

まずは3つのランダムウォークを用意する。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(1000)
data2 = np.random.randn(1000)
data3 = np.random.randn(1000)

次に各データをプロットし、legendメソッドでlabelに指定した凡例を生成する。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

ax.plot(data1.cumsum(), 'k', label='one')
ax.plot(data2.cumsum(), 'k--', label='two')
ax.plot(data3.cumsum(), 'k.', label='three')

ax.legend(loc='best')

legendメソッドのlocオプションでは凡例を表示する位置を設定している。

特にこだわらない場合は「best」を指定しておけば良い。
「best」は最も邪魔にならない位置を自動的に選んでくれる。