如何在 plotly 3D 中绘制不同高度的多个正方形

how to draw multiple squares at different heights in plotly 3D

我正在尝试在 plotly 3D 中在不同高度上绘制与 xy 平面平行的区域 1 正方形。我可以做点数,基本就是散点,代码是这样的:

A=np.array([[213,254,245,217,198],[245,201,211,249,200],[211,189,32,212,227],[250,234,217,243,188],[222,243,212,209,199]])
points={}
for i in range(5):
    for j in range(5):
        points[i*5+j]={'x':i,'y':j,'z':A[i][j]}


data=pd.DataFrame(points)
data1=pd.DataFrame.transpose(data)
fig = px.scatter_3d(data1,x='x', y='y', z='z')
fig.show()

我也可以在不同高度绘制平行于xy平面的线段:

这是矩阵A的0-skeleton和1-skeleton。现在我需要绘制2个骨架,它是多个不同高度的正方形。我尝试使用 go.Surface 但这些表面覆盖了整个 space 并且它们彼此相交。我需要的是离散的区域 1 补丁,其投影是矩阵 A 或灰度,它看起来像这样:

您可以添加许多小方形曲面,如下所示:

import plotly.graph_objects as go

def add_hovering_square(fig, x0, y0, size, height):
    fig.add_trace(go.Surface(
        z=[[height,height],[height,height]],
        x=[x0,x0+size], y=[y0,y0+size],
        coloraxis='coloraxis1'
    ))

fig = go.Figure()

add_hovering_square(fig, 1, 1, 1, 1)
add_hovering_square(fig, 1, 2, 1, 2)
add_hovering_square(fig, 2, 1, 1, 3)
add_hovering_square(fig, 2, 2, 1, 4)

fig.show()