はじめに
データ可視化においては、明確で読みやすいプロットが重要です。ただし、複数のサブプロットを作成すると、軸オブジェクトとラベルの間の重複を避けることが困難になる場合があります。そのような場合、Matplotlib の「制約付きレイアウト」と呼ばれる機能を使用することができます。これは、軸オブジェクトとラベルの間の重複を防ぐために、自動的にサブプロットのサイズを調整します。
VM のヒント
VM の起動が完了した後、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリのインポート
まずは、サブプロットを作成してデータをプロットするための必要なライブラリをインポートします。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
サンプルプロットの定義
x と y のラベルとタイトル付きの単純な折れ線グラフを作成する関数を定義します。
def example_plot(ax):
ax.plot([1, 2])
ax.set_xlabel('x-label', fontsize=12)
ax.set_ylabel('y-label', fontsize=12)
ax.set_title('Title', fontsize=14)
制約付きレイアウトなしでサブプロットを作成する
「制約付きレイアウト」を使用せずに、2x2 のサブプロットを持つ図を作成します。これにより、軸上のラベルが重なることになります。
fig, axs = plt.subplots(nrows=2, ncols=2, layout=None)
for ax in axs.flat:
example_plot(ax)
制約付きレイアウトでサブプロットを作成する
同じ 2x2 のサブプロットを作成しますが、今回は「制約付きレイアウト」を使用します。これにより、軸オブジェクトとラベルの間の重複を防ぐために、サブプロットが自動的に調整されます。
fig, axs = plt.subplots(nrows=2, ncols=2, layout='constrained')
for ax in axs.flat:
example_plot(ax)
制約付きレイアウトを使用したネストされたグリッドスペックの作成
制約付きレイアウトを持つネストされたグリッドスペックを使用して、より複雑な例を作成します。これにより、サブプロットのレイアウトをより細かく制御することができます。
fig = plt.figure(layout='constrained')
gs0 = gridspec.GridSpec(1, 2, figure=fig)
gs1 = gridspec.GridSpecFromSubplotSpec(3, 1, subplot_spec=gs0[0])
for n in range(3):
ax = fig.add_subplot(gs1[n])
example_plot(ax)
gs2 = gridspec.GridSpecFromSubplotSpec(2, 1, subplot_spec=gs0[1])
for n in range(2):
ax = fig.add_subplot(gs2[n])
example_plot(ax)
plt.show()
まとめ
「制約付きレイアウト」は、Matplotlib における便利な機能であり、軸オブジェクトとラベルの間の重複を防ぐためにサブプロットのサイズを自動的に調整します。特に、図に複数のサブプロットを作成する際に役立ちます。このチュートリアルで紹介した手順に従えば、重複するラベルを心配することなく、明瞭で読みやすいプロットを作成することができます。
まとめ
おめでとうございます!「制約付きレイアウトを用いた軸のサイズ変更」の実験を完了しました。スキルを向上させるために、LabEx でさらに実験を行って練習してください。