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()
を実行することで各グラフ・タイトルの位置調整を行っています。これを実施しないと軸とタイトルが重なり見づらくなるので忘れずに実施してください。スクリプトを実行すると、以下の様なグラフが現れます。
【スポンサーリンク】
グラフのその他表示例
グラフを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")
【スポンサーリンク】