关于plotly3D 方面(3d charts in Python)没有可以直接画出立方体的方案,所以使用Mesh (https://plotly.com/python/3d-mesh/)画出多个三角形,最终拼出一个立方体,下面是代码
import plotly.graph_objects as go
from dash import Dash, html, dcc
app = Dash(__name__)
def getfig():
fig = go.Figure(data=[
go.Mesh3d(
# 立方体的8个顶点 第0个顶点表示为(x[0],y[0],z[0])
# [0,1,2,3,4,5,6,7],
x=[0,0,1,1,0,0,1,1],
y=[0,1,1,0,0,1,1,0],
z=[0,0,0,0,1,1,1,1],
# (i[0]=0,j[0]=1,k[0]=2)表示第0个面是由顶点0,1,2组成的(三角形),其为了方便用了12个面进行表示,其中立方体一个面用2个三角形表示。下面的i,j,k可以直接复制使用(需要与上面的x,y,z对照找到对应面才行)
i=[0, 0,4,4,1,5,0,4,1,1,2,6],
j=[1, 2,5,6,2,2,3,3,5,4,3,3],
k=[2, 3,6,7,5,6,4,7,4,0,6,7],
color="pink",
showscale=True
),
])
return fig
app.layout = html.Div(
html.Div(dcc.Graph(figure=getfig()))
)
if __name__ == '__main__':
app.run_server(debug=True)
多个立方体效果: