我想根据我在代码中创建的简单数据绘制3D曲面。但是,它不断弹出一个错误,指出参数Z必须是二维的。我该如何解决?
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax =Axes3D(fig)
x=np.arange(-4,4,0.25)
y=np.arange(-4,4,0.25)
X,Y=np.meshgrid(x,y)
Z=np.sin(np.sqrt(x**2+y**2))
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='rainbow')
plot.show()
答案 0 :(得分:1)
您的问题是,您基于一维x和y定义Z。您需要使用由meshgrid
创建的2D数组。
解决方案示例
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(nrows=1, ncols=1, num=0, figsize=(16, 8),
subplot_kw={'projection': '3d'})
gridY, gridX = np.mgrid[-4:4:33 * 1j, -4:4:33 * 1j]
Z = np.sin(np.sqrt(gridX ** 2 + gridY ** 2))
pSurf = ax.plot_surface(gridX, gridY, Z, rstride=1, cstride=1, cmap='rainbow')
fig.colorbar(pSurf)
plt.show()
显示