python 轮廓矩阵_在三维numpy矩阵中绘制给定值的曲面轮廓

我有三个三维网格矩阵(X,Y,Z)对应于xyz坐标空间。在

我还有一个3D Numpy矩阵A,其中A[i,j,k]包含一个与点(x,y,z)相关联的浮点,其中x=X[i,j,k],y=Y[i,j,k],和{}。浮点值在A内是连续的(即A相邻元素之间的值变化通常很小)。在

有没有一种方法可以使用Matplotlib或任何其他基于Python的图形包来绘制与A中给定浮点值相对应的曲面吗?例如,如果给定一个值2.34,我对得到矩阵A的等高线图感兴趣,只要2.34(加上或减去一些公差)出现在哪里?在

到目前为止,我已经能够恢复A中所有值的xyz坐标,这些值在目标值的某个公差范围内,然后使用this绘制三维散点图(代码如下)。也许还有一种从这些点绘制曲面的方法?在def clean (A, t, dt):

# function for making A binary for t+-dt

# t is the target value I want in the matrix A with tolerance dt

new_A = np.copy(A)

new_A[np.logical_and(new_A > t-dt, new_A < t+dt)] = -1

new_A[new_A != -1] = 0

new_A[new_A == -1] = 1

return (new_A)

def get_surface (X, Y, Z, new_A):

x_vals = []

y_vals = []

z_vals = []

# Retrieve (x,y,z) coordinates of surface

for i in range(new_A.shape[0]):

for j in range(new_A.shape[1]):

for k in range(new_A.shape[2]):

if new_A[i,j,k] == 1.0:

x_vals.append(X[i,j,k])

y_vals.append(Y[i,j,k])

z_vals.append(Z[i,j,k])

return (np.array(x_vals), np.array(y_vals), np.array(z_vals))

cleaned_A = clean (A, t=2.5, dt=0.001)

x_f, y_f, z_f = get_surface (X, Y, Z, cleaned_A )

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d', aspect='equal')

ax.scatter(x_f, y_f, z_f, color='g', s=1)

我也试过ax.plot_trisurf(x_f,y_f,z_f),但这给了我一个连接不良的图。我猜我数组中的值的排序可能会影响到这一点,在这种情况下,是否有一个软件包可以用随机点排序(例如,通过最小化表面积之类的方法)来绘制某种三维插值曲面图在

我感兴趣的物体大致是球形的(即每(x,y)有两个z)。我似乎找不到任何工作的例子,有人在一个封闭的三维曲面上三角剖分,但也许我找的地方不对。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值