Python Code Notes

Information by python engineer

【matplotlib.pyplot】subplotsを使ってグラフを描画する方法【Python】

subplotsで作成したグラフ例

pyplot.subplotsは主に複数のグラフを描画する際に使用します。 公式サイトを参考に、基本的な使い方を整理しました。

グラフをPythonの標準GUIツールであるTkinter内に表示させる例となっており、matplotlibとnumpyがインストールされていれば利用できます。matplotlibのグラフをTkinter内に表示させる方法については、こちらをご覧ください。


【スポンサーリンク】


pyplot.subplotsの基本

subplotsモジュールを用いて、4種類のグラフを格子状に並べた例を示します。

subplotsを実行する際、オプションとして列・行に表示するグラフの数を設定することができます。今回のケースでは、17行目でncols=2, nrows=2をオプションとして設定することで、合計4個のグラフを格子状に表示するように設定しています。

実行するとグラフ表示領域全体のオブジェクト(Figureオブジェクト)と各グラフのオブジェクト(Axesオブジェクト)が生成されるので、それらを変数"fig"と"ax"にそれぞれ格納しています。

How to use matplotlib-subplots

表示するグラフを8~11行目で設定し、全体タイトルと各グラフのタイトルの設定を24~28行目で実施しています。最後にplt.tight_layout()を実行することで各グラフ・タイトルの位置調整を行っています。これを実施しないと軸とタイトルが重なり見づらくなるので忘れずに実施してください。スクリプトを実行すると、以下の様なグラフが現れます。

4つのグラフを格子状に表示

[↑ 目次へ]


【スポンサーリンク】


グラフのその他表示例

グラフを2x2の格子状に表示させる例以外の使用例をまとめました。使用データは上の例と同じです。

グラフを一つだけ表示する場合

グラフを一つだけ表示する場合は、subplots実行時に引数を空欄にしておきます。この場合、Axesオブジェクトは一つだけしか作成されないため、グラフ表示させる際のインデックス指定は不要となります。

    #create graph objects
    fig, ax = plt.subplots()
    ax.plot(x,y)

    #set title
    fig.suptitle("fig object")
    ax.set_title("only one graph")

グラフを一つだけ表示

グラフを縦に並べて表示する場合

縦方向に複数グラフを並べる場合は、nrowsオプションを表示するグラフの数に設定します。この場合、Axesオブジェクトはグラフの数だけ生成され、Axesオブジェクトのリストが返されることにご注意ください。

    #create graph objects
    fig, ax = plt.subplots(nrows=2)
    ax[0].plot(x,y)
    ax[1].scatter(x,y)    

    #set title
    fig.suptitle("fig object")
    ax[0].set_title("nrows 0")
    ax[1].set_title("nrows 1")

ちなみに、nrowsオプションは明示不要で、数字だけそのまま渡しても大丈夫です。

グラフを縦に並べて表示

グラフを横に並べて表示する場合

横方向に複数グラフを並べる場合は、ncolsオプションを表示するグラフの数に設定します。そのほかは縦に並べるときと同じです。

    #create graph objects
    fig, ax = plt.subplots(ncols=2)
    ax[0].plot(x,y)
    ax[1].scatter(x,y)    

    #set title
    fig.suptitle("fig object")
    ax[0].set_title("ncols 0")
    ax[1].set_title("ncols 1")

グラフを横に並べて表示

[↑ 目次へ]


【スポンサーリンク】