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

Matplotlibの等高線(contour)から座標を取得する方法

Matplotlibで等高線(コンター)から座標を取得するには、以下の手順に従います。

  • 図のサイズを設定し、サブプロット間およびその周囲のパディングを調整します。
  • データポイントを格納した xym のリストを作成します。
  • plt.contour(x, y, m) を使って、x・y・m のデータポイントから等高線プロットを作成します。
  • 等高線コレクション(collections)のインスタンスを取得します。
  • コレクションからパス(path)を取り出し、等高線の頂点(座標)を取得して出力します。
  • 図を表示するには show() メソッドを使用します。

コード例

import matplotlib.pyplot as plt

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

x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
m = [[15, 14, 13, 12], [14, 12, 10, 8], [13, 10, 7, 4], [12, 8, 4, 0]]

cs = plt.contour(x, y, m)

for item in cs.collections:
   for i in item.get_paths():
      v = i.vertices
      x = v[:, 0]
      y = v[:, 1]
      print(x, y)
plt.show()

出力結果

上記のコードを実行すると、次のような等高線プロットが表示されます。

Matplotlibの等高線(contour)から座標を取得する方法Matplotlibの等高線(contour)から座標を取得する方法

さらに、ターミナル(コンソール)には等高線上の頂点の座標が出力されます。

[4.] [4.]
[4. 3.5] [3.5 4. ]
[4. 3.] [3. 4.]
[4.      3.33333333 3.     2.5 ] [2.5    3.     3.33333333 4.   ]
[4.      3. 2.66666667     2. ]  [2.     2.66666667   3.   4. ]
[4. 3. 2. 1.5] [1.5 2. 3. 4. ]
[4. 3. 2.     1.33333333 1. ] [1. 1.33333333 2. 3. 4. ]
[2. 1.] [1. 2.]

解説

この例では、plt.contour() の戻り値として得られる QuadContourSet オブジェクトから collections を参照し、さらに各コレクションが持つ get_paths() メソッドでパスを取得しています。パスオブジェクトの vertices 属性には、等高線を構成する頂点の (x, y) 座標が NumPy 配列として格納されているため、v[:, 0] と v[:, 1] でそれぞれ X 座標と Y 座標を取り出すことができます。この手法を使えば、等高線の数値データを抽出して、CSV への出力や他の解析処理への活用も可能になります。

  1. Tkinterでウィジェットの現在のX・Y座標を取得する方法

    Tkinterは、PythonでGUIアプリケーションを開発するために広く利用されている標準ライブラリです。ボタン、テキストボックス、ラベルなど、さまざまなウィジェットが用意されており、これらを組み合わせることで直感的なユーザーインターフェースを構築できます。さらに、ウィジェットの配置位置や座標も、専用の関数やライブラリを使って柔軟にカスタマイズすることが可能です。ここでは、Tkinterフレーム上に配置したウィジェットの実際の座標を取得する方法を紹介します。ウィジェットの正確な座標を知りたい場合には、Tkinterライブラリが提供するgeometry(ジオメトリ)関連のメソッドを活用します。

  2. Windows 11で最高のパフォーマンスを引き出す方法【初心者向け最適化ガイド】

    Windows 11は一般ユーザー向けに正式リリースされ、数多くの新機能が搭載されました。スタートメニューをお気に入りのアプリに合わせてカスタマイズでき、UIの変更によってこれまでとはひと味違う快適な操作体験が得られます。 また、ここ数か月の間にMicrosoftによるメモリ管理やディスク使用量の改善、CPU使用率やバッテリー駆動時間への対応などが進められ、OSのパフォーマンスにもさまざまな改良が加えられています。 しかしその一方で、Windows 11がスムーズかつ高速に動作するのは比較的新しいPCであり、セキュリティ要件を満たしている古いパソコンでは体感できるほどの改善が見られないのが実情