Python中曲线绕y轴旋转

问题描述 投票:0回答:1

所以我有曲线 y=1-(x-1)**2 ,其中 x 是 [1,2] 的元素,我想绘制这条线绕 y 轴的旋转曲面。我有点卡住了,在任何地方都没有太多有用的信息。

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')

x = np.linspace(1,2,500)
y = np.linspace(0,2*np.pi,500)

U,V = np.meshgrid(x,y)

Y1 = (1-(U-1)**2)*np.cos(V)
Z1 = (1-(U-1)**2)*np.sin(V)

ax.plot_surface(Y1, U, Z1, alpha=0.3, color='red', rstride=6, cstride=12)
ax.view_init(45, 0)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.ylim(-1, 3)
plt.show()    

所以我真的不知道如何制作它,所以它符合所要求的内容..这是我第一次问问题

python matplotlib plot surface
1个回答
0
投票

更好的命名约定会对您有所帮助:您所说的 x 实际上是绘图中的半径 r,而您所说的 y 实际上是一个角度 phi。所以你确实有极坐标(在 x-z 平面上),并且

x = r cos(phi)

z = r sin(phi)

y = 1 - (r-1)^2

import numpy as np
import matplotlib.pyplot as plt

r = np.linspace( 1.0, 2.0, 100 )
phi = np.linspace( 0.0, 2 * np.pi, 100 )
R, PHI = np.meshgrid( r, phi )

X = R * np.cos( PHI )
Z = R * np.sin( PHI )
Y = 1 - ( R - 1 ) ** 2

fig = plt.figure()
ax = fig.add_subplot( 1, 1, 1, projection='3d')
ax.plot_surface( X, Y, Z, alpha=0.3, color='red' )
ax.view_init( 45, 45 )
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.ylim(-1, 3)
plt.show()

© www.soinside.com 2019 - 2024. All rights reserved.