Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复';参数Z必须是二维的';使用python绘制三维曲面时_Python_Matplotlib - Fatal编程技术网

如何修复';参数Z必须是二维的';使用python绘制三维曲面时

如何修复';参数Z必须是二维的';使用python绘制三维曲面时,python,matplotlib,Python,Matplotlib,我想根据我在代码中创建的简单数据绘制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(

我想根据我在代码中创建的简单数据绘制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()

这里的问题是基于一维x和y定义Z。您需要使用由
meshgrid
创建的二维阵列

示例解决方案

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()
哪个显示

它需要是
Z=np.sin(np.sqrt(X**2+Y**2))
而不是
Z=np.sin(np.sqrt(X**2+Y**2))