pyplot
にグラフをプロットしているnumpy
オブジェクトがPython(np
)にあります。 x
,y
およびz
の3Dグラフは、グラフがプロットされる値を含むリストです。私はz
の値が-30
に最も近いx
とy
、の値を取得したい、だからここ3D numpyオブジェクトの与えられたz値に対応するxとy値の検索
data = np.c_[x,y,z]
# regular grid covering the domain of the data
mn = np.min(data, axis=0) - 0.009
mx = np.max(data, axis=0) + 0.009
X,Y = np.meshgrid(np.linspace(mn[0], mx[0]), np.linspace(mn[1], mx[1]))
XX = X.flatten()
YY = Y.flatten()
A = np.c_[np.ones(data.shape[0]), data[:, :2], np.prod(data[:, :2], axis=1), data[:, :2] ** 2]
C, _, _, _ = scipy.linalg.lstsq(A, data[:, 2])
# evaluate it on a grid
Z = np.dot(np.c_[np.ones(XX.shape), XX, YY, XX * YY, XX ** 2, YY ** 2], C).reshape(X.shape)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.2)
ax.scatter(data[:, 0], data[:, 1], data[:, 2], c='r', s=50)
plt.xlabel('X')
plt.ylabel('Y')
ax.set_zlabel('Z')
ax.axis('equal')
ax.axis('tight')
plt.show()
: は、下記(hereから)私のコードです。これらの値を取得するにはx
とy
を入力します。
あなたの質問が正しいと分かっている場合は、こちらが参考になります。http://stackoverflow.com/questions/2566412/find-nearest-value-in-numpy-array –