Matplotlib mplot3d:填充边以获得“凸面”

2024-09-28 01:31:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这就是我绘制3D曲面图的方式

数据以(x、y、z)格式存储:

tmp.dat
=======
1   1   1
2   1   4
3   1   1
1   2   4
2   2   5
3   2   4
1   3   1
2   3   4
3   3   1

要绘制它,我使用以下代码:

def getMeshGrid(dat):
    x = dat[:,0]; y = dat[:,1]; z = dat[:,2]
    xVal, xIdx = np.unique(x, return_inverse=True)
    yVal, yIdx = np.unique(y, return_inverse=True)
    zVal = np.empty(xVal.shape+yVal.shape)
    zVal.fill(np.nan)
    zVal[xIdx, yIdx] = z
    xx, yy = np.meshgrid(np.unique(x), np.unique(y))
    zz = zVal.T
    return (xx, yy, zz)

dat = np.loadtxt("tmp.dat")
X, Y, Z = getMeshGrid(dat)
fig = pl.figure()
axe = fig.add_subplot(111, projection='3d')
axe.plot_surface(X, Y, Z)
pl.show()

我得到的图是这样的(没问题):enter image description here。 然而,我想做的是填充所有正面三角形,以获得“凸面”

如果不清楚,我想用边[1,1]、[3,1]、[2,4]填充平面x=1、x=3、y=1、y=3中的三角形,并保持曲面选项板

谢谢你的建议


Tags: truereturnnp绘制tmpdatunique曲面

热门问题