生成二维均匀分布的三维图报错AttributeError: 'int' object has no attribute 'ndim'?

  • 生成二维均匀分布的三维图报错

  • 代码如下:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
x=np.arange(0,1,0.01)
y=np.arange(0,1,0.01)
X,Y=np.meshgrid(x,y)
Z1=1
Z2=0
surf=ax.plot_surface(X,Y,Z1,color='b')
surf=ax.plot_surface(X,Y,Z2,color='r')

plt.show()
  • 报错信息

Traceback (most recent call last):

File "二维均匀分布.py", line 15, in

surf=ax.plot_surface(X,Y,Z1,color='b')

File "E:\DataAnalysis\python-3.7.0\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 1610, in plot_surface

if Z.ndim != 2:

AttributeError: 'int' object has no attribute 'ndim'

  • 截图

图片说明

给底面Z=0和均匀分布的平面Z=1染色,但显示这个问题,搜索了下,基本上没有与这个相似的。。。请教该如何改啊!~

改成下面就可以了,另外改了参数,100 * 100个点太多了会有点卡。所以改成0.1 ,这是一个均匀分布的3D效果图,没有实际意义

    fig=plt.figure()
    ax=fig.gca(projection='3d')
    X=np.arange(0,1,0.1)
    Y=np.arange(0,1,0.1)

    X,Y = np.meshgrid(X,Y)
    Z1=np.ones((10,10))
    Z2=np.zeros((10,10))

    surf=ax.plot_surface(X,Y,Z1,color='b')
    surf=ax.plot_surface(X,Y,Z2,color='r')

    plt.show()

_

x = np.linspace(0.2, 0.44)
y = np.linspace(-0.1, 0.15)
z = np.linspace(0.5, 0.69)
X3, Y3 = np.meshgrid(x, y)
ax.plot_surface(X=X3, Y=Y3, Z=0*X3+0.69, color='b', alpha=0.3)
需要加上0*X3,再加上想画的平面值