Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Matplotlib入門】set_xlimとset_xboundの違いを徹底解説!X軸の範囲設定の使い分け方

MatplotlibでグラフのX軸の表示範囲を制御する際、set_xlim()set_xbound()という2つの似たメソッドがあります。一見同じように見えますが、実際には動作が異なります。この記事では、両者の違いと具体的な使い方をサンプルコード付きで解説します。

set_xlimとset_xboundの基本的な違い

set_xlim() ― X軸の表示範囲(ビューの上限・下限)を直接設定します。このメソッドを使うと、指定した範囲外のデータは表示されなくなり、X軸の自動スケーリング(オートスケール)が無効になります。

set_xbound() ― X軸の数値的な下限と上限(バウンド)を設定します。こちらは自動スケーリングを維持したまま、軸が取りうる範囲を制約する役割を持ちます。つまり、データに応じて軸は自動調整されますが、設定したバウンドの範囲内に収まります。

簡単にまとめると、set_xlim()は表示範囲を固定し、set_xbound()は自動スケーリングの上限・下限を制御するという違いがあります。

実装手順

xlimとxboundをそれぞれ設定するには、以下の手順に従います。

  • subplots(2) を使って、図(figure)と2つのサブプロットを作成します。
  • NumPyを使ってxとyのデータポイントを生成します。
  • 1つ目の軸(axes[0])で plot() メソッドによりデータをプロットします。
  • set_xlim() メソッドでX軸の表示範囲を設定します。
  • 2つ目の軸(axes[1])でも同様に plot() メソッドでデータをプロットします。
  • set_xbound() メソッドでX軸のバウンドを設定します。
  • show() メソッドで図を表示します。

サンプルコード

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

fig, axes = plt.subplots(2)

x = np.linspace(-5, 5, 100)
y = np.sin(x)

# set_xlim() でX軸の表示範囲を固定
axes[0].plot(x, y, c='g')
axes[0].set_xlim(-3, 3)

# set_xbound() でX軸のバウンドを設定
axes[1].plot(x, y, c='r')
axes[1].set_xbound(-3, 3)

plt.show()

実行結果のポイント

このコードを実行すると、2つのサイン波グラフが縦に並んで表示されます。

  • 上のグラフ(緑):set_xlim(-3, 3) を適用しているため、X軸は厳密に -3 から 3 の範囲で固定表示されます。それ以外の領域のデータは切り取られます。
  • 下のグラフ(赤):set_xbound(-3, 3) を適用していますが、自動スケーリングが有効なため、データの範囲に応じて表示が調整されつつ、バウンド値が基準として機能します。

使い分けのまとめ

メソッド主な用途自動スケーリングへの影響
set_xlim()X軸の表示範囲を明示的に固定したい場合無効になる
set_xbound()自動スケーリングを保ちつつ軸の範囲を制限したい場合有効のまま維持される

グラフの見せ方を厳密にコントロールしたい場合は set_xlim() を、データに合わせた柔軟な表示を維持したい場合は set_xbound() を選ぶとよいでしょう。状況に応じて適切に使い分けることで、より意図に沿った可視化が実現できます。

  1. Matplotlib.pyplotとMatplotlib.figureの違いとは?わかりやすく解説

    Matplotlibでグラフを描く際によく使われるmatplotlib.pyplotとmatplotlib.figure。どちらも図を作成するために使われますが、役割と仕組みが異なります。この記事では、それぞれの特徴と違いを具体例とともに解説します。 matplotlib.pyplotとは matplotlib.pyplotは、MatplotlibをMATLABのように操作できるようにする関数のコレクションです。pyplotの各関数は、図(figure)に対して何らかの変更を加えます。例えば、次のような操作が該当します。 新しい図(figure)を作成する 図の中にプロット領域(Axes)

  2. Matplotlibのplt.show()とcv2.imshow()の違いとは?画像表示の差をわかりやすく解説

    Pythonで画像を扱う際、MatplotlibとOpenCV(cv2)はどちらも画像を多次元のNumPy配列として読み込みます。しかし、両者には重要な違いがあります。Matplotlibのimreadメソッドは画像を赤(R)・緑(G)・青(B)の順(RGB順)のNumPy配列として読み込み、imshowで画面に表示します。一方、OpenCVのcv2.imreadも同様に多次元NumPy配列として画像を読み込みますが、チャンネルの並びが逆順(BGR順)になっている点が最大の特徴です。この違いを理解せずに使うと、cv2で読み込んだ画像をMatplotlibで表示した際に色が反転して見えるという現