You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用matplotlib为指定边构成的四面体表面着色

四面体表面着色实现方案

你可以直接使用已经导入的Poly3DCollection类实现四面体表面着色,核心逻辑是将四面体的4个顶点组合为4个三角面,再将面集合添加到3D坐标轴中即可,具体修改如下:


步骤说明

  1. 先将你获取到的x/y/z坐标打包为顶点列表,如果返回的边坐标存在重复顶点,需要先去重得到4个独立的四面体顶点
  2. 定义四面体的4个三角面,每个面由3个顶点组成
  3. 创建Poly3DCollection实例,自定义面颜色、透明度、边样式等参数
  4. 将面集合添加到3D坐标轴中渲染

修改后完整代码

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import numpy as np

%matplotlib notebook

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
    
x,y,z = nCompoundTetra(bloch_vectors,nTetrahedron).getEdges()

x,y,z = list(x)[0],list(y)[0],list(z)[0]
# 去重得到4个独立顶点(如果你的x/y/z已经是4个不重复顶点可跳过去重步骤)
verts = list(set(zip(x, y, z)))
# 定义4个三角面
tetra_faces = [
    [verts[0], verts[1], verts[2]],
    [verts[0], verts[1], verts[3]],
    [verts[0], verts[2], verts[3]],
    [verts[1], verts[2], verts[3]]
]
# 创建面集合对象,可自定义facecolors调整每个面的颜色,alpha调整透明度
poly = Poly3DCollection(
    tetra_faces,
    facecolors=['#f8766d', '#7cae00', '#00bfc4', '#c77cff'], # 四个面分别对应不同颜色
    alpha=0.6,
    edgecolor='g',
    linewidth=1
)
ax.add_collection3d(poly)

ax.scatter3D(x, y, z, color = "black", s = 3.5)
# 原来的画线代码可以删除,因为Poly3DCollection已经设置了绿色边
# ax.plot(x,y,z, color="g",  linewidth= 1)    

ax.set_xlim([-1.1, 1.1])
ax.set_ylim([-1.1, 1.1])
ax.set_zlim([-1.1, 1.1])

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)

xs = np.outer(np.cos(u), np.sin(v))
ys = np.outer(np.sin(u), np.sin(v))
zs = np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_wireframe(xs, ys, zs, color="grey", alpha=0.15)
ax.get_proj = lambda: np.dot(Axes3D.get_proj(ax), np.diag([5, 5, 7, 7]))

ax.set_xlim([-1,1])
ax.set_ylim([-1,1])
ax.set_zlim([-1,1])
ax.set_axis_off()

plt.tight_layout()
plt.show()

注意事项

  • 如果去重后顶点顺序异常导致面渲染错误,可以自行调整tetra_faces里的顶点索引顺序
  • 你也可以给nCompoundTetra类新增getVertices()方法直接返回4个顶点,省去去重步骤更稳定

内容的提问来源于stack exchange,提问作者danuzco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:10