【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() を選ぶとよいでしょう。状況に応じて適切に使い分けることで、より意図に沿った可視化が実現できます。
-
Matplotlib.pyplotとMatplotlib.figureの違いとは?わかりやすく解説
Matplotlibでグラフを描く際によく使われるmatplotlib.pyplotとmatplotlib.figure。どちらも図を作成するために使われますが、役割と仕組みが異なります。この記事では、それぞれの特徴と違いを具体例とともに解説します。 matplotlib.pyplotとは matplotlib.pyplotは、MatplotlibをMATLABのように操作できるようにする関数のコレクションです。pyplotの各関数は、図(figure)に対して何らかの変更を加えます。例えば、次のような操作が該当します。 新しい図(figure)を作成する 図の中にプロット領域(Axes)
-
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で表示した際に色が反転して見えるという現