首页 > 解决方案 > Matplotlib mplot3d:填充边缘以获得“凸面”

问题描述

这就是我绘制 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()

我得到的情节看起来像这样(没关系)在此处输入图像描述:。然而,我想做的是也填充所有正面三角形以获得“凸面”。

如果不清楚,我想用边 [1,1]、[3,1]、[2,4] 填充平面 x=1、x=3、y=1、y=3 中的三角形维护表面调色板。

谢谢你的任何建议。

标签: pythonmatplotlibmplot3d

解决方案


推荐阅读