4

この質問と回答のペアは、等高線図から頂点を抽出する方法を示しています。

p = cs.collections[0].get_paths()[0]
v = p.vertices
x = v[:,0]
y = v[:,1]

しかし、各パスの値 (z標高モデルなど) を取得するにはどうすればよいでしょうか?

4

1 に答える 1

5

直接的な方法はありませんが、 (目的の「z」値)とcs.collectionsまったく同じ順序です。cs.levels

したがって、次のようにするのが最も簡単です。

lookup = dict(zip(cs.collections, cs.levels))
z = lookup[line_collection_artist]

簡単なインタラクティブな例として:

import numpy as np
import matplotlib.pyplot as plt

def main():
    fig, ax = plt.subplots()
    cs = ax.contour(np.random.random((10,10)))

    callback = ContourCallback(cs)
    plt.setp(cs.collections, picker=5)
    fig.canvas.mpl_connect('pick_event', callback)

    plt.show()

class ContourCallback(object):
    def __init__(self, cs):
        self.lookup = dict(zip(cs.collections, cs.levels))

    def __call__(self, event):
        print self.lookup[event.artist]

main()
于 2013-06-12T01:50:14.847 に答える