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

PythonとMatplotlibで点群の中心座標を取得・可視化する方法

一連のポイント(点群)の中心を求めるには、リスト内のすべての要素を合計し、その合計値をリストの要素数(長さ)で割ります。この計算結果が、対応する各軸における中心座標となります。これはいわゆる「平均値」であり、点群の重心を表します。

実装の手順

  • データポイントとして x 座標と y 座標の2つのリストを作成します。

  • plot() メソッドを使って、x および y のデータポイントをプロットします。

  • x と y の各リストから、sum() と len() を組み合わせて中心座標のタプルを算出します。

  • 算出した中心点をグラフ上にプロットします。

  • annotate() メソッドを使い、中心点に「center」というラベルを注釈として付与します。

  • 最後に show() メソッドを呼び出して、図を表示します。

コード例

from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = [5, 1, 3, 2, 8]
y = [3, 6, 1, 0, 5]
plt.plot(x, y)
center = sum(x)/len(x), sum(y)/len(y)
plt.plot(center[0], center[1], marker='o')
plt.annotate(
    "center",
    xy=center, xytext=(-20, 20),
    textcoords='offset points', ha='right', va='bottom',
    bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),
    arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0'))
plt.show()

コードのポイント解説

中心座標の計算は center = sum(x)/len(x), sum(y)/len(y) の1行で行っています。x リストの平均は (5+1+3+2+8)÷5 = 3.8、y リストの平均は (3+6+1+0+5)÷5 = 3.0 となるため、中心点は (3.8, 3.0) になります。

また、plt.annotate() では矢印付きの注釈を追加しており、bbox 引数で黄色い角丸の背景ボックスを指定することで、ラベルを見やすく表示しています。

出力結果

上記のコードを実行すると、プロットされた点群の中に中心点がマーカーとして表示され、「center」というラベルが矢印とともに添えられたグラフが出力されます。

  1. Pythonで都市の緯度・経度を取得する方法|geopyライブラリの使い方を解説

    都市の緯度と経度を取得したい場合、Pythonではgeopyモジュールが便利です。geopyは、サードパーティ製のジオコーダやさまざまなデータソースを利用して、住所・都市・国などの座標情報を特定できるライブラリです。 まず、geopyモジュールがインストールされていることを確認しましょう。未インストールの場合は、以下のコマンドでインストールできます。 pip install geopy 以下の例では、Nominatimというジオコーダを使用して、都市「ハイデラバード(Hyderabad)」の緯度と経度を取得します。 手順 geopyモジュールからNominatimジオコーダをインポートします

  2. 【初心者向け】Pythonで文字列の長さを取得する方法をわかりやすく解説

    Pythonで文字列の長さを取得する基本:len()関数Pythonには、文字列やリスト、タプルといった複合オブジェクトの長さ(要素数)を取得できる組み込み関数 len() が用意されています。文字列の長さを知りたい場合は、対象の文字列をそのまま len() の引数として渡すだけでOKです。print(len(abcdefghijklmnopqrstuvwxyz))出力結果:26変数に格納した文字列の長さを取得する実際の開発では、変数に代入した文字列の長さを調べる場面が多いでしょう。次のように、変数を len() に渡すだけで簡単に取得できます。text = Hello, Python! pr