Python matplotlib-从等高线提取值

Python matplotlib-从等高线提取值,python,matplotlib,contour,Python,Matplotlib,Contour,显示如何从等高线图中提取顶点: p = cs.collections[0].get_paths()[0] v = p.vertices x = v[:,0] y = v[:,1] 但是如何获得每条路径的值(即,立面模型的z)没有直接的方法,但是cs.collections的顺序与cs.levels的顺序完全相同(这是您所追求的“z”值) 因此,最简单的方法是: lookup = dict(zip(cs.collections, cs.levels)) z = lookup[line_colle

显示如何从等高线图中提取顶点:

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

但是如何获得每条路径的值(即,立面模型的
z

没有直接的方法,但是
cs.collections
的顺序与
cs.levels
的顺序完全相同(这是您所追求的“z”值)

因此,最简单的方法是:

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()