Python 具有三维多集合的子地块网格

Python 具有三维多集合的子地块网格,python,matplotlib,grid,jupyter-notebook,subplot,Python,Matplotlib,Grid,Jupyter Notebook,Subplot,使用mplot3d Polycollection(或其他mplot3d库)创建三维子地块的网格 下面是一个简单的mplot3d示例(您可以在此处看到:): 现在我有大量的切片,我想在几个子图形中绘制它们。我已经尝试了一些代码(例如,请参见),包括: verts = [] zs = np.arange(1000) for z in zs: df = rfft(tiles[z]) ys = 2.0/100 * np.abs(df[0:100//2]) ys[0], ys[-1] =

使用mplot3d Polycollection(或其他mplot3d库)创建三维子地块的网格

下面是一个简单的mplot3d示例(您可以在此处看到:):

现在我有大量的切片,我想在几个子图形中绘制它们。我已经尝试了一些代码(例如,请参见),包括:

verts = []
zs = np.arange(1000)
for z in zs:
    df = rfft(tiles[z])
    ys = 2.0/100 * np.abs(df[0:100//2])
ys[0], ys[-1] = 0, 0
verts.append(list(zip(xs, ys)))
fig = plt.figure(figsize=(15,8))
for i in range(40):
    plt.subplot(20, 2, i)
    ax = fig.gca(projection='3d') 
    poly = PolyCollection(verts[i*25:(i+1)*25],lw=1)
    ax.add_collection3d(poly, zs=np.arange(25), zdir='y')
但结果,我得到的只是一系列正常的垂直数字。根本没有子图形。 那么,如何将子绘图与三维打印结合起来(这里使用的是polycollection)
谢谢

我将使用
plt.subplot()
传递参数
subplot\u kw=dict(projection='3d')
来创建轴,以直接将所有子地块创建为Axes3D对象。然后,只需在轴上迭代并根据需要填充它们

xs = np.arange(0, 10, 0.4)
verts = []
zs = [0.0, 1.0, 2.0, 3.0]
for z in zs:
    ys = np.random.rand(len(xs))
    ys[0], ys[-1] = 0, 0
    verts.append(list(zip(xs, ys)))


fig, axs = plt.subplots(2,2,figsize=(10,10), subplot_kw=dict(projection='3d'))
for i,ax in enumerate(axs.flat):
    poly = PolyCollection(verts,lw=1, closed=False)
    poly.set_alpha(0.7)
    ax.add_collection3d(poly, zs=zs, zdir='y')
    ax.set_xlabel('X')
    ax.set_xlim3d(0, 10)
    ax.set_ylabel('Y')
    ax.set_ylim3d(-1, 4)
    ax.set_zlabel('Z')
    ax.set_zlim3d(0, 2)
    ax.view_init(elev=10.+i*10, azim=25+i*25)

什么是
df=rfft(tiles[z])
?我在我的类似问题结束后来到这里,谢谢你的回答。
xs = np.arange(0, 10, 0.4)
verts = []
zs = [0.0, 1.0, 2.0, 3.0]
for z in zs:
    ys = np.random.rand(len(xs))
    ys[0], ys[-1] = 0, 0
    verts.append(list(zip(xs, ys)))


fig, axs = plt.subplots(2,2,figsize=(10,10), subplot_kw=dict(projection='3d'))
for i,ax in enumerate(axs.flat):
    poly = PolyCollection(verts,lw=1, closed=False)
    poly.set_alpha(0.7)
    ax.add_collection3d(poly, zs=zs, zdir='y')
    ax.set_xlabel('X')
    ax.set_xlim3d(0, 10)
    ax.set_ylabel('Y')
    ax.set_ylim3d(-1, 4)
    ax.set_zlabel('Z')
    ax.set_zlim3d(0, 2)
    ax.view_init(elev=10.+i*10, azim=25+i*25)