有一个例子在 matplotlib 页面上展示了如何使用点和三角形来创建matplotlib.tri.Triangulation。由于这可能不必要地复杂,我们可以进一步简化。
我们取 4 个点,这将创建 2 个三角形。这triangles
参数将以点索引的形式指定三角形的角。正如文档所说,
triangles
:形状为 (ntri, 3) 的整数 array_like,可选
对于每个三角形,组成三角形的三个点的索引按逆时针方式排序。 [..]
考虑这段代码,其中我们有一个 (4,2) 数组,指定点坐标,具有一行中每个点的 x 和 y 坐标。然后,我们通过使用应以逆时针方式构成三角形的点的索引来创建三角形。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as mtri
xy = [[0.3,0.5],
[0.6,0.8],
[0.5,0.1],
[0.1,0.2]]
xy = np.array(xy)
triangles = [[0,2,1],
[2,0,3]]
triang = mtri.Triangulation(xy[:,0], xy[:,1], triangles=triangles)
plt.triplot(triang, marker="o")
plt.show()
第一个三角形由点组成0, 2, 1
和第二个2,0,3
。下图显示了该代码的可视化。
然后我们可以创建一个列表z
值和 3D 绘图相同。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as mtri
from mpl_toolkits.mplot3d import Axes3D
xy = [[0.3,0.5],
[0.6,0.8],
[0.5,0.1],
[0.1,0.2]]
xy = np.array(xy)
triangles = [[0,2,1],
[2,0,3]]
triang = mtri.Triangulation(xy[:,0], xy[:,1], triangles=triangles)
z = [0.1,0.2,0.3,0.4]
fig, ax = plt.subplots(subplot_kw =dict(projection="3d"))
ax.plot_trisurf(triang, z)
plt.show()