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

Matplotlibを使ってPythonのプロット上にポイントの座標を表示する方法

Pythonでグラフを描画する際、プロット上の各ポイントの座標を直接表示できると、データの確認やプレゼンテーションが格段に分かりやすくなります。本記事では、Matplotlibを使ってプロット内にポイントの座標を表示する手順を解説します。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • x軸・y軸のデータポイントをリストとして作成します。
  • 赤色の星形マーカー(r*)でxとyのデータポイントをプロットします。
  • 軸の範囲などのプロパティを設定します。
  • xとyの値を反復処理し、plt.text()を使って各ポイントの座標をグラフ上に表示します。

コード例

import matplotlib.pyplot as plt

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

x = [3, 1, 2, 5]
y = [5, 2, 4, 7]

plt.plot(x, y, 'r*')
plt.axis([0, 6, 0, 20])

for i, j in zip(x, y):
    plt.text(i, j+0.5, '({}, {})'.format(i, j))

plt.show()

コードのポイント解説

  • figure.figsize:出力される図のサイズを幅7.50インチ×高さ3.50インチに指定しています。
  • figure.autolayoutTrueにすることで、ラベルやタイトルが図の外にはみ出さないよう自動的にレイアウトが調整されます。
  • plt.plot(x, y, 'r*'):赤色(red)の星形(star)マーカーでデータ点を描画します。
  • plt.axis([0, 6, 0, 20]):x軸を0〜6、y軸を0〜20の範囲に固定しています。
  • zip(x, y):xとyの要素をペアごとに取り出し、各データ点について処理を行います。
  • plt.text(i, j+0.5, ...):座標テキストをポイントの少し上方(y + 0.5)に配置することで、マーカーと文字が重なるのを防いでいます。

出力結果

このコードを実行すると、赤い星形マーカーで示された4つのデータポイントと、その近くに「(3, 5)」「(1, 2)」「(2, 4)」「(5, 7)」という形式で座標が表示されたグラフが出力されます。

Matplotlibを使ってPythonのプロット上にポイントの座標を表示する方法

応用のヒント

より多くのデータポイントを扱う場合や、見た目をカスタマイズしたい場合は、以下のような工夫も有効です。

  • フォントサイズや色を変更する:plt.text(i, j+0.5, f'({i}, {j})', fontsize=9, color='gray')
  • テキストの配置を細かく制御する:ha(水平方向)やva(垂直方向)引数を活用する
  • 大量のデータでは注釈が重なりやすいため、adjustTextなどのライブラリでラベル位置を自動調整するのもおすすめです。
  1. Python Matplotlibで単一のポイント(点)をプロットする方法

    Matplotlibを使えば、たった1つのデータポイントでも簡単にグラフ上へプロットできます。ここでは、単一の点をプロットするための基本的な手順を解説します。 単一ポイントをプロットする手順 x と y のリストを、単一の値で初期化します。 plt.xlim() および plt.ylim() を使って、X軸・Y軸の表示範囲を0〜5に設定します。 plt.grid() を呼び出して、現在の線スタイルでグリッドを描画します。 plot() メソッドでxとyをプロットし、marker=o、markeredgecolor=red、markerfacecolor=green を指定してマーカーの見た目

  2. Matplotlibで画像を背景にしてグラフを重ねて表示する方法(Python)

    Matplotlibでは、画像を背景として読み込み、その上にグラフや線を重ねて描画することができます。データを視覚的に分かりやすく表現したい場合に非常に便利なテクニックです。 実装手順 画像の背景の上にグラフをプロットするには、以下の手順に従います。 plt.imread() を使って、画像ファイルを読み込み配列として取得します。 plt.subplots() で図(fig)とサブプロット(ax)を作成し、extent=[0, 300, 0, 300] を指定して imshow() で画像を表示します。これにより、画像の座標系がx軸・y軸ともに0〜300の範囲に設定されます。 np.arra