通过您建议的链接,此处的示例可能最接近您想要的示例。您可以将示例与值一起使用,
import numpy as npfrom scipy import interpolateimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import axes3d, Axes3DX, Y = np.mgrid[-1:1:20j, -1:1:20j]Z = (X+Y) * np.exp(-6.0*(X*X+Y*Y)) + np.random.rand(X.shape[0])xnew, ynew = np.mgrid[-1:1:80j, -1:1:80j]tck = interpolate.bisplrep(X, Y, Z, s=0)znew = interpolate.bisplev(xnew[:,0], ynew[0,:], tck)fig = plt.figure(figsize=(12,12))ax = fig.gca(projection='3d')ax.plot_surface(X, Y, Z, cmap='summer', rstride=1, cstride=1, alpha=None)plt.show()fig = plt.figure(figsize=(12,12))ax = fig.gca(projection='3d')ax.plot_surface(xnew, ynew, znew, cmap='summer', rstride=1, cstride=1, alpha=None, antialiased=True)plt.show()
另外,
antialiased=True可能会使它看起来更好,但我认为默认情况下处于启用状态。第一个情节看起来像这样,
和这样的平滑图
数据中的低频噪声的问题在于,很难定义足够精细以解决问题的网格。您可以使用
s参数
interpolate.bisplrep或粗粒度/过滤数据来调整平滑程度,以仅保留主要趋势(例如,
scipy.ndimage.interpolation.zoom如果您有规则的网格数据,则使用)。或者,考虑使用其他类型的图,例如pcolormesh,因为数据本质上是2D的。



