按照scikit-image doc中的示例,我使用行进立方体算法生成球面网格。我想将单位球壳居中于 x,y,z 网格定义的原点。但是,我不能这样做,因为我不知道如何将 x、y、z 信息与 mpl_toolkits.mplot3d.art3d.Poly3DCollection 一起放置。这是代码:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from skimage import measure
import numpy as np
x, y, z = np.ogrid[-4:4:20j, -4:4:20j, -4:4:20j]
r = np.sqrt(x ** 2 + y ** 2 + z ** 2)
verts, faces, normals, values = measure.marching_cubes_lewiner(r,level=1)
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')
mesh = Poly3DCollection(verts[faces])
mesh.set_edgecolor('k')
ax.add_collection3d(mesh)
plt.show()
问题是marching_cubes_lewiner
函数没有考虑x,y,z
到。如网格所暗示的那样,如何将生成的球体居中于 0,0,0?