我有一条螺旋线的x,y和z坐标,就像图中的蓝线。坐标是一维数组。我如何将这条螺旋线转换为图中的螺旋曲面,并使用matplotlib将其绘制为曲面图?Helix surface plot
bsxbgnwa1#
假设螺旋线定义如下
n = 100 z = np.linspace(0, 8*np.pi, n) x = np.cos(z) y = np.sin(z)
你可以使用matplotlib中的plot_trisurf。首先,你需要创建外边缘点和内边缘点。例如:
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()
结果:
1条答案
按热度按时间bsxbgnwa1#
假设螺旋线定义如下
你可以使用
matplotlib
中的plot_trisurf
。首先,你需要创建外边缘点和内边缘点。例如:然后是三角剖分的三角形
最后绘制表面
结果: