Nur eine Variante von wilywampa
‚s Antwort. Wenn Sie bereits ein vorberechnetes Gitter aus interpolierten Konturwerten haben, weil Ihre Daten spärlich sind oder wenn Sie eine riesige Datenmatrix haben, könnte dies für Sie geeignet sein.
import matplotlib.pyplot as plt
import numpy as np
resolution = 100
Z = np.arange(resolution**2).reshape(-1, resolution)
X, Y = np.mgrid[:Z.shape[0], :Z.shape[1]]
cs = plt.contourf(X, Y, Z)
Xflat, Yflat, Zflat = X.flatten(), Y.flatten(), Z.flatten()
def fmt(x, y):
# get closest point with known data
dist = np.linalg.norm(np.vstack([Xflat - x, Yflat - y]), axis=0)
idx = np.argmin(dist)
z = Zflat[idx]
return 'x={x:.5f} y={y:.5f} z={z:.5f}'.format(x=x, y=y, z=z)
plt.colorbar()
plt.gca().format_coord = fmt
plt.show()
Ex:

Dank, das ist nützlich, aber ich war für eine Live-Anzeige der Z-Wert unter dem Cursor zu fragen, die gleiche, wie sie bereits dort für X und Y ist –
können Sie nicht, das ist Teil der wxWidgets-Schnittstelle. Wenn Sie Ihre eigene UI programmieren, könnten Sie die x/y-Koordinaten erhalten, um sie in die x/y-Koordinaten auf der Achse umzuwandeln. Da Sie die Konturen von plt.contour erhalten, kennen Sie ihre Umrisse und können diejenigen erhalten, die sich in oder um diese Koordinaten befinden. – j13r
@AndreaZonca Sind Sie sicher, dass dies die Antwort ist, die Sie noch akzeptieren möchten? [wilywampa] (http://stackoverflow.com/users/752720/wilywampa) 's sehr neue [Lösung] (http://stackoverflow.com/a/42054903/2749397) tut genau das, wonach Sie gefragt haben .. – gboffi