生成二维均匀分布的三维图报错
代码如下:
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,再加上想画的平面值