我想制作一些图表来帮助一些微积分学生,我正在辅导他们更好地想象他们找到的体积。例如,一个问题是找到三角形金字塔的体积。
下面是一些生成金字塔边的工作代码,但是你不知道一边是哪一端而另一边是从哪里开始。如何将其转换为线框以使固体更易识别?或者,或者,我如何用不同颜色为表面着色以使图形更加可见?
具体来说,我不明白如何制作三角形网格。或者,我想制作连接到每个点的线就足够了。
import numpy as np
import matplotlib.pyplot as plot
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
fig = plot.figure()
ax = Axes3D(fig)
A=[0,0,0]
B=[1,1,0]
C=[0,1,1]
D=[0,1,0]
verts=[[A,B,C],
[A,B,D],
[A,D,C],
[B,C,D]]
ax.add_collection3d(Poly3DCollection(verts))
ax.view_init(azim=-45)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plot.show()
结果图:
答案 0 :(得分:1)
如果要显示形状的边缘,可以在创建Poly3DCollection
时指定line width
Poly3DCollection(verts, lw=2)
此外,指定一些face transparency可能有助于可视化
Poly3DCollection(verts, facecolor=(0,0,1,0.2), linewidth=2, edgecolor=(0,0,0))
您还可以使用facecolors
属性为每张脸指定不同的颜色
Poly3DCollection(verts, lw=2, facecolors=['r', 'g', 'b', 'k'])