在为X和Y设置网格网格之后,需要为Z值创建一个网格。在
我目前在代码中执行此操作的方式是:# [ (x1, y1, z1), (x2, y2, z2), ... (xN, yN, zN) ]
all_vals = ...
# (x1, x2, ... xN) , (y1, y2, ... yN) , (z1, z2, ... zN)
all_xvals, all_yvals, all_zvals = zip(*all_vals)
fig = plt.figure()
ax = Axes3D(fig)
X, Y = np.meshgrid(xvals, yvals)
# This is the part you want:
Z1 = np.zeros(X.shape, float)
for (x, y, z) in all_vals:
x = find_in_sorted_list(x, xvals)
y = find_in_sorted_list(y, yvals)
Z1[y,x] = z
surf = ax.plot_surface(X, Y, Z1, rstride=1, cstride=1, cmap=cm.jet,
linewidth=0, antialiased=False)
plt.xlabel('Blur standard deviation')
plt.ylabel('JPEG quality')
ax.w_zaxis.set_major_locator(LinearLocator(10))
ax.w_zaxis.set_major_formatter(FormatStrFormatter('%.03f'))
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
这给了我一个这样的情节:
我已经将其保存为一个文件,但是当您调用plt.show()时,您将看到一个交互式窗口,您可以在其中将视点更改为任何您想要的内容。在