Matplotlibのax(サブプロット)を完全攻略!グラフ作成の基本から応用まで詳しく解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月: 2024年11月)

✔こんな方におすすめの記事です

「Matplotlibのaxって何だろう?」
「グラフをキレイに配置する方法を知りたい」
「複数のグラフを1枚にまとめて表示したい」

✔当記事を通じて得られること

  • Matplotlibのaxの基本的な概念と使い方
  • 複数のグラフを美しく配置する方法
  • 実践的なグラフ作成テクニック

当記事では、Matplotlibのaxの基礎知識から実践的な活用方法まで、実例を交えて幅広く解説していきます。
ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Matplotlibのaxとは?基本概念を理解しよう

Matplotlibのaxは、グラフを描画する際の重要な要素です。
効果的なデータ可視化のためには、axの基本を理解することが不可欠なのです。

  • axの基本的な概念
  • axとfigureの関係
  • axの役割と重要性

axの基本的な概念

axは、Matplotlibにおいて個々のグラフを描画するための領域を指します。
これは、ひとつのグラフを描くためのキャンバスのような役割を果たすのです。
以下が基本的なaxの作成例です。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
plt.show()

グラフを描く際は、このaxオブジェクトにプロットやスタイルの設定をおこないます。
axを使うことで、グラフの細かい制御が可能になるのです。

axとfigureの関係

figureは全体のキャンバスで、axはその中の個別のグラフ領域です。
この階層構造を理解することで、複数のグラフを効果的に配置できるようになります。

# 2x2のグリッドを作成
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
x = np.linspace(0, 10, 100)

ax1.plot(x, np.sin(x))
ax2.plot(x, np.cos(x))
ax3.plot(x, x**2)
ax4.plot(x, np.exp(x))
plt.show()

axの役割と重要性

axは単なるグラフ領域以上の機能を持っています。
タイトル、軸ラベル、凡例など、グラフの重要な要素すべてを制御できるのです。
以下のコードで、axの基本的な設定方法を確認できます。

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label='sin')
ax.set_title('Sin Wave')
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.legend()
plt.show()

グラフのレイアウトとサイズ調整

グラフの見た目は、効果的なデータ表現に重要な役割を果たします。
axを使って、グラフのレイアウトやサイズを適切に調整する方法を見ていきましょう。

  • 基本的なサイズ設定
  • グラフ間の間隔調整
  • レイアウトの最適化テクニック

基本的なサイズ設定

グラフのサイズは、figureレベルで設定することができます。
これにより、全体的なグラフの大きさを制御できるのです。

# figureサイズを指定
fig, ax = plt.subplots(figsize=(10, 6))
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
plt.show()

グラフ間の間隔調整

複数のグラフを配置する際は、間隔の調整が重要です。
plt.subplots_adjustを使用することで、グラフ間のスペースを細かく制御できます。

fig, (ax1, ax2) = plt.subplots(1, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)
x = np.linspace(0, 10, 100)
ax1.plot(x, np.sin(x))
ax2.plot(x, np.cos(x))
plt.show()

レイアウトの最適化テクニック

自動レイアウト調整機能を使用すると、グラフを美しく配置できます。
これにより、タイトルや軸ラベルが重ならないように自動調整されるのです。

fig, axs = plt.subplots(2, 2)
for ax in axs.flat:
    ax.plot(x, np.random.randn(100))
    ax.set_title('Random Data')
plt.tight_layout()
plt.show()

グラフのスタイリング

グラフの見た目は、データの理解しやすさに直結します。
axを使って、グラフを美しくカスタマイズする方法を学びましょう。

  • 線のスタイル設定
  • 色とマーカーの調整
  • 軸の設定とグリッド

線のスタイル設定

線のスタイルを変更することで、データの違いを視覚的に表現できます。
ax.plotメソッドのパラメータを使って、線の太さや種類を制御するのです。

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), linewidth=2, linestyle='--', label='sin')
ax.plot(x, np.cos(x), linewidth=2, linestyle=':', label='cos')
ax.legend()
plt.show()

色とマーカーの調整

色やマーカーを効果的に使用することで、データの視認性が向上します。
matplotlib.pyplotには、多様な色とマーカーのオプションが用意されています。

fig, ax = plt.subplots()
x = np.linspace(0, 10, 20)
ax.plot(x, np.sin(x), 'ro-', label='red circles')
ax.plot(x, np.cos(x), 'bs--', label='blue squares')
ax.legend()
plt.show()

軸の設定とグリッド

軸の設定とグリッドは、データの読み取りやすさに大きく影響します。
axオブジェクトのメソッドを使って、これらを適切に設定できるのです。

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
ax.set_xlim(0, 10)
ax.set_ylim(-1.5, 1.5)
ax.grid(True, linestyle='--', alpha=0.7)
plt.show()

複数グラフの作成と管理

データ分析では、複数のグラフを比較することが重要です。
axを使って、複数のグラフを効率的に管理する方法を解説します。

  • 基本的な複数グラフの作成
  • グラフの配置パターン
  • 共通設定の適用

基本的な複数グラフの作成

複数のグラフを作成するには、plt.subplotsを使用します。
行数と列数を指定することで、必要な数のaxオブジェクトを取得できるのです。

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
x = np.linspace(0, 5, 100)

ax1.plot(x, np.sin(x))
ax1.set_title('Sin')

ax2.plot(x, np.cos(x))
ax2.set_title('Cos')

ax3.plot(x, x**2)
ax3.set_title('Square')

ax4.plot(x, np.exp(x))
ax4.set_title('Exp')

plt.tight_layout()
plt.show()

グラフの配置パターン

グラフの配置は、データの関係性を表現する重要な要素です。
gridspecを使用することで、より柔軟なレイアウトが可能になります。

from matplotlib import gridspec

fig = plt.figure()
gs = gridspec.GridSpec(2, 2)

ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :])

ax1.plot(np.random.rand(10))
ax2.plot(np.random.rand(10))
ax3.plot(np.random.rand(10))

plt.tight_layout()
plt.show()

共通設定の適用

複数のグラフに同じ設定を適用する場合、効率的な方法があります。
forループを使用することで、同じ設定を一括して適用できるのです。

fig, axs = plt.subplots(2, 2)
x = np.linspace(0, 5, 100)

for ax in axs.flat:
    ax.plot(x, np.random.randn(100))
    ax.grid(True)
    ax.set_xlabel('X axis')
    ax.set_ylabel('Y axis')

plt.tight_layout()
plt.show()

グラフの保存と出力

作成したグラフを保存し、再利用することは重要です。
axを使用したグラフの保存方法と、その際の注意点を説明します。

  • 基本的な保存方法
  • 解像度と品質の設定
  • 複数フォーマットでの出力

基本的な保存方法

グラフを保存するには、plt.savefigメソッドを使用します。
ファイル名と拡張子を指定することで、様々な形式で保存できるのです。

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
plt.savefig('sin_wave.png')
plt.close()

解像度と品質の設定

グラフの品質は、dpiパラメータで制御できます。
高解像度が必要な場合は、適切な値を設定することが重要です。

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))
plt.savefig('high_quality.png', dpi=300, bbox_inches='tight')
plt.close()

複数フォーマットでの出力

同じグラフを異なる形式で保存することができます。
用途に応じて、最適なフォーマットを選択するのです。

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x))

# 異なる形式で保存
formats = ['png', 'pdf', 'svg']
for fmt in formats:
    plt.savefig(f'graph.{fmt}', format=fmt)
plt.close()

まとめ

当記事では、Matplotlibのaxについて詳しく学習してきました。

  • axの基本概念と使い方を理解し、グラフ作成の基礎を習得
  • 複数グラフの効果的な配置方法とレイアウト調整のテクニックを習得
  • グラフのスタイリングと保存方法について実践的な知識を獲得

これらの知識を活用することで、より効果的なデータ可視化が可能になります。
まずは簡単なグラフから始めて、徐々に複雑なグラフ作成にチャレンジしてみましょう。
データ分析の世界で、あなたの可能性を広げていってください。

タイトルとURLをコピーしました