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」というラベルが矢印とともに添えられたグラフが出力されます。
-
Pythonで都市の緯度・経度を取得する方法|geopyライブラリの使い方を解説
都市の緯度と経度を取得したい場合、Pythonではgeopyモジュールが便利です。geopyは、サードパーティ製のジオコーダやさまざまなデータソースを利用して、住所・都市・国などの座標情報を特定できるライブラリです。 まず、geopyモジュールがインストールされていることを確認しましょう。未インストールの場合は、以下のコマンドでインストールできます。 pip install geopy 以下の例では、Nominatimというジオコーダを使用して、都市「ハイデラバード(Hyderabad)」の緯度と経度を取得します。 手順 geopyモジュールからNominatimジオコーダをインポートします
-
【初心者向け】Pythonで文字列の長さを取得する方法をわかりやすく解説
Pythonで文字列の長さを取得する基本:len()関数Pythonには、文字列やリスト、タプルといった複合オブジェクトの長さ(要素数)を取得できる組み込み関数 len() が用意されています。文字列の長さを知りたい場合は、対象の文字列をそのまま len() の引数として渡すだけでOKです。print(len(abcdefghijklmnopqrstuvwxyz))出力結果:26変数に格納した文字列の長さを取得する実際の開発では、変数に代入した文字列の長さを調べる場面が多いでしょう。次のように、変数を len() に渡すだけで簡単に取得できます。text = Hello, Python! pr