zhu*_*bin 4 python matplotlib python-3.x
我正在尝试像在这个例子中那样制作 3D 表面:https : //gis.stackexchange.com/questions/66367/display-a-georeferenced-dem-surface-in-3d-matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import *
from matplotlib.mlab import griddata
from matplotlib import cm
data = np.random.random((20, 2))
z = np.random.randint(5, 30, 20)
x = data.T[0]
y = data.T[-1]
xi = np.linspace(min(x), max(x))
yi = np.linspace(min(x), max(y))
X, Y = np.meshgrid(xi, yi)
Z = griddata(x, y, z, xi, yi)
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter3D(x, y, z, c=z)
Axes3D.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, linewidth=1, antialiased=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我认为我的代码与示例类似,但它不起作用。我收到这个错误
类型错误:plot_surface() 缺少 1 个必需的位置参数:'Z'
我该如何解决?
您只需要使用 3D 轴对象进行绘图。为此,请替换
Axes3D.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, linewidth=1, antialiased=True)
Run Code Online (Sandbox Code Playgroud)
经过
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, linewidth=1, antialiased=True)
Run Code Online (Sandbox Code Playgroud)
我什至不确定为什么你在Axes3D.plot_surface定义了axkind的对象之后首先使用Axes3D。
PS:我(使用 matplotlib 版本2.2.2)也收到警告
griddata 函数在 2.2 版中已弃用。