可以通过以下步骤完成:
import plotly.graph_objects as go
import numpy as np
from scipy.spatial import ConvexHull
# 创建随机数据集
np.random.seed(0)
points = np.random.randn(30, 3)
hull = ConvexHull(points)
fig = go.Figure(data=[go.Scatter3d(x=points[:,0], y=points[:,1], z=points[:,2], mode='markers')])
# 绘制凸包的每个面
for i in hull.simplices:
x = points[i, 0]
y = points[i, 1]
z = points[i, 2]
x = np.append(x, x[0]) # 闭合凸包
y = np.append(y, y[0])
z = np.append(z, z[0])
fig.add_trace(go.Mesh3d(x=x, y=y, z=z, color='lightpink', opacity=0.5))
# 设置图形布局
fig.update_layout(scene=dict(aspectratio=dict(x=1, y=1, z=1),
xaxis=dict(title='X'),
yaxis=dict(title='Y'),
zaxis=dict(title='Z')))
# 显示图形
fig.show()
这样就可以使用plotly绘制3D凸包了。凸包是一个多边形,它包围着给定数据集中的点,具有以下特点:
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云