matplotlib 如何从螺旋线生成3D螺旋线?

iyfjxgzm  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(130)

我有一条螺旋线的x,y和z坐标,就像图中的蓝线。坐标是一维数组。我如何将这条螺旋线转换为图中的螺旋曲面,并使用matplotlib将其绘制为曲面图?
Helix surface plot

bsxbgnwa

bsxbgnwa1#

假设螺旋线定义如下

n = 100

z = np.linspace(0, 8*np.pi, n)
x = np.cos(z)
y = np.sin(z)

你可以使用matplotlib中的plot_trisurf。首先,你需要创建外边缘点和内边缘点。例如:

inner_radius = 0.6
outer_radius = 1.4

x_inner = np.cos(z)*inner_radius
x_outer = np.cos(z)*outer_radius
x_both = np.concatenate([x_inner, x_outer])

y_inner = np.sin(z)*inner_radius
y_outer = np.sin(z)*outer_radius
y_both = np.concatenate([y_inner, y_outer])

然后是三角剖分的三角形

triangles = []
for i in range(0, n//2 - 1):
    triangles.append([i, i + 1, n + i])
    triangles.append([n + i + 1, n + i, i + 1])

最后绘制表面

fig = plt.figure(figsize=(8, 8))
ax = plt.axes(projection='3d')
ax.plot_trisurf(x_both, y_both, np.concatenate([z, z]), triangles=triangles)
plt.show()

结果:

相关问题