等間隔の2Dデータ(画像のようなデータ)の単一の輪郭からデータを取得したいと思います。
同様の質問で見つかった例に基づいて:等高線図(matplotlib)によってプロットされた線の(x、y)値を取得するにはどうすればよいですか?
>>> import matplotlib.pyplot as plt
>>> 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, [9.5])
>>> cs.collections[0].get_paths()
この呼び出しの結果cs.collections[0].get_paths()
は次のとおりです。
[Path([[ 4. 1.625 ]
[ 3.25 2. ]
[ 3. 2.16666667]
[ 2.16666667 3. ]
[ 2. 3.25 ]
[ 1.625 4. ]], None)]
プロットに基づくと、この結果は理にかなっており、等高線の(y、x)ペアのコレクションであるように見えます。
この戻り値を手動でループし、座標を抽出し、行の配列を組み立てる以外に、matplotlib.path
オブジェクトからデータを取得するためのより良い方法はありますか?からデータを抽出するときに注意すべき落とし穴はありmatplotlib.path
ますか?
あるいは、同様のことを行うための代替案がありますかmatplotlib
?理想的なのは、線を表す(x、y)ペアの高解像度ベクトルを取得することです。これは、一般に、上記の例のようにデータセットが小さくも単純でもないため、さらに分析するために使用できます。numpy
scipy