【入門】matplotlibの基本

matplotlibの基本について紹介していきます。

pythonの基本操作を行えることを想定しています。

githubにもソースコードをあげています。
https://github.com/tocom242242/aifx_blog_codes/blob/master/matplotlib_samples/matplotlib_basic.ipynb

figureとax

matplotlibの基本の基本であるfigureとaxを見てみます。
まず、単純なグラフを表示してみましょう。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
x = [0,1,2]
y = [0,1,2]
ax.plot(x,y)
plt.show()

このグラフの中でfigureとaxは下の図のようになります。

figureの中にax(グラフ本体)があるような感じです。

複数のグラフを同じfigure内に表示する

次に、同じfigure内に複数のグラフ(ax)を表示してみます。

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(221) # 2行2列の1番目のax(左上)
ax2 = fig.add_subplot(222) # 2行2列の2番目のax(右上)
ax3 = fig.add_subplot(223) # 2行2列の3番目のax(左下)
ax4 = fig.add_subplot(224) # 2行2列の4番目のax(右下)
plt.show()

上記のコードで以下のようなグラフをプロットします。

各axは以下のようになります。

subplotsメソッドでfigとaxを同時に作る

subplotsメソッドを使えば、figとaxを同時に作ることができます。

fig, ax = plt.subplots()

さらに引数に(行、列)を与えれば、

fig, axes = plt.subplots(3, 1)

スタイルを変更する

plt.style.use()を使うことによってグラフのスタイルを変更できます。

例えば、

>>> plt.style.use("bmh")  # スタイルの変更
>>> x = [0, 1, 2]
>>> y = [0, 1, 2]
>>> plt.plot(x, y)

ちなみに使えるスタイルはplt.style.availableで確認することができます。

>>> plt.style.available
['seaborn-pastel',
 'Solarize_Light2',
 'seaborn-white',
 'dark_background',
 'fivethirtyeight',
 'seaborn-paper',
 'seaborn-deep',
 'tableau-colorblind10',
 'seaborn',
 'seaborn-talk',
 'seaborn-muted',
 'seaborn-bright',
 'seaborn-darkgrid',
 'seaborn-dark-palette',
 'seaborn-ticks',
 'fast',
 'bmh',
 'seaborn-whitegrid',
 'seaborn-colorblind',
 'grayscale',
 'seaborn-dark',
 'seaborn-notebook',
 '_classic_test',
 'classic',
 'seaborn-poster',
 'ggplot']

複数のグラフを表示する

折れ線を複数表示したいと思います。
やり方は簡単で、単純に二回plotを呼ぶだけです。

>>> import numpy as np
>>> import matplotlib.pyplot as plt

>>> x = np.array([0, 1, 2])
>>> y = np.array([0, 1, 2])
>>> y2 = y*2

>>> plt.plot(x, y)
>>> plt.plot(x, y2)
>>> plt.show()

もう1つの方法としては、plot(x1, y1, x2, x2,…)といった形で複数のグラフを与える方法です。

>>> import numpy as np
>>> import matplotlib.pyplot as plt

>>> x = np.array([0, 1, 2])
>>> y = np.array([0, 1, 2])
>>> y2 = y*2

>>> plt.plot(x, y, x, y2)  # ここ
>>> plt.show()

figureオブジェクトのパラメータについて

figのパラメータは次のように設定できます。

import matplotlib.pyplot as plt

fig = plt.figure(
    figsize=(5, 5),  # figのサイズ
    dpi=100,         # 解像度
    facecolor="r",   # 塗りつぶしの色(枠内)
    edgecolor="g",   # 枠線の色
    linewidth=10,    # 枠線の太さ
    frameon=True,    # 枠線の表示
    # tight_layout=False,
    constrained_layout=True     # layoutの調整(tight_layoutより柔軟に対応)
)

ax = fig.add_subplot(111)
plt.show()

保存する時には、savefigにも同様の設定を記述する必要があります。単純にsavefigを実行すると設定が解除されてしまいます。
# 保存するときにも同じような設定をしないと設定が消えてしまう。
plt.savefig("sample.png", figsize=(5, 5),
            dpi=100,
            facecolor="r",
            edgecolor="g",
            linewidth=10,
            frameon=True,
            tight_layout=False,
            constrained_layout=False)

サブプロット間の余白の調整

例えば、以下のようにグラフを生成すると

>>> fig = plt.figure(figsize=(3,3))
>>> ax1 = fig.add_subplot(221)
>>> ax2 = fig.add_subplot(222)
>>> ax3 = fig.add_subplot(223)
>>> ax4 = fig.add_subplot(224)

とグラフが重なってしまいます。

ここで、subplots_adjustメソッドを用いる、余白の設定ができます。

>>> fig.subplots_adjust(wspace=0.5, hspace=0.5)

ここで、wspaceはサブプロット間の横幅の設定、hspaceは縦幅の設定になります。

参考文献

  1. PythonユーザのためのJupyter[実践]入門
タイトルとURLをコピーしました